# `GameServer.Quests.QuestProgress`
[🔗](https://github.com/appsinacup/game_server/blob/v1.0.26/lib/game_server/quests/quest_progress.ex#L1)

Quest progress struct from GameServer.

This is a stub module for SDK type definitions. The actual struct
is provided by GameServer at runtime.

## Fields

- `id` - Progress row ID (UUID string)
- `user_id` - The user (UUID string)
- `quest_key` - The quest definition's key (string)
- `period_key` - Reset bucket: `"2026-07-22"` (daily), `"2026-W30"` (weekly) or `"static"`
- `objective_progress` - Map of objective index (string) to count
- `status` - `"active" | "completed" | "claimed"`
- `completed_at` - When every objective met its target (DateTime or nil)
- `claimed_at` - When rewards were claimed (DateTime or nil)
- `rewards_granted_at` - When every reward entry finished granting (DateTime or nil)
- `metadata` - Arbitrary metadata (map)
- `inserted_at` - Creation timestamp
- `updated_at` - Last update timestamp

# `t`

```elixir
@type t() :: %GameServer.Quests.QuestProgress{
  claimed_at: DateTime.t() | nil,
  completed_at: DateTime.t() | nil,
  id: String.t(),
  inserted_at: DateTime.t(),
  metadata: map(),
  objective_progress: %{required(String.t()) =&gt; non_neg_integer()},
  period_key: String.t(),
  quest_key: String.t(),
  rewards_granted_at: DateTime.t() | nil,
  status: String.t(),
  updated_at: DateTime.t(),
  user_id: String.t()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
