# `GameServer.Accounts.User`
[🔗](https://github.com/appsinacup/game_server/blob/v1.0.26/lib/game_server/accounts/user.ex#L1)

User struct from GameServer.

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

## Fields

- `id` - User ID (integer)
- `email` - User email (string)
- `display_name` - Display name (string, optional)
- `profile_url` - Profile URL/avatar (string, optional)
- `metadata` - Arbitrary user metadata (map)
- `is_admin` - Whether the user is an admin (boolean)
- `is_online` - Whether the user is currently online (boolean)
- `last_seen_at` - Last seen timestamp (DateTime, optional)
- `lobby_id` - Current lobby ID (integer, optional)
- `party_id` - Current party ID (integer, optional)
- `inserted_at` - Creation timestamp
- `updated_at` - Last update timestamp

# `t`

```elixir
@type t() :: %GameServer.Accounts.User{
  display_name: String.t() | nil,
  email: String.t() | nil,
  id: integer() | nil,
  inserted_at: DateTime.t(),
  is_admin: boolean(),
  is_online: boolean(),
  last_seen_at: DateTime.t() | nil,
  lobby_id: integer() | nil,
  metadata: map(),
  party_id: integer() | nil,
  profile_url: String.t() | nil,
  updated_at: DateTime.t()
}
```

# `email_changeset`

```elixir
@spec email_changeset(t(), map(), keyword()) :: no_return()
```

Builds an email change changeset for a user.

This function exists in the real GameServer implementation.
In the SDK it is provided as a stub so documentation references can resolve.

# `password_changeset`

```elixir
@spec password_changeset(t(), map(), keyword()) :: no_return()
```

Builds a password change changeset for a user.

This function exists in the real GameServer implementation.
In the SDK it is provided as a stub so documentation references can resolve.

---

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