# `GameServer.Tournaments.Tournament`
[🔗](https://github.com/appsinacup/game_server/blob/v1.0.26/lib/game_server/tournaments/tournament.ex#L1)

Tournament struct from GameServer.

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

## Fields

- `id` - Tournament ID (UUIDv7 string)
- `slug` - Identifier shared by every occurrence of a recurring tournament
- `title` - Display title (string)
- `description` - Description (string)
- `icon_url` - Optional icon URL; nil means clients show their type default
- `state` - `"scheduled"`, `"registration"`, `"running"`, `"finished"` or `"cancelled"`
- `registration_opens_at` - When registration opens (nil = open immediately)
- `starts_at` - When the bracket is drawn (nil = started manually)
- `ends_at` - Optional hard stop
- `recur` - Cron expression spawning the next occurrence (nil = one-shot)
- `max_entries` - Optional cap on registrations
- `team_size` - Advisory; enforced by game hooks, not by the server
- `bracket_size` - Slots per bracket (power of two); extra entries fill more brackets
- `round_window_sec` - Play window per round
- `deadline_policy` - Fallback when a match is unresolved at its deadline
- `metadata` - Arbitrary metadata (map)
- `inserted_at` - Creation timestamp
- `updated_at` - Last update timestamp

# `state`

```elixir
@type state() :: String.t()
```

# `t`

```elixir
@type t() :: %GameServer.Tournaments.Tournament{
  bracket_size: integer(),
  deadline_policy: String.t(),
  description: String.t(),
  ends_at: DateTime.t() | nil,
  icon_url: String.t() | nil,
  id: String.t(),
  inserted_at: DateTime.t(),
  max_entries: integer() | nil,
  metadata: map(),
  recur: String.t() | nil,
  registration_opens_at: DateTime.t() | nil,
  round_window_sec: integer(),
  slug: String.t(),
  starts_at: DateTime.t() | nil,
  state: state(),
  team_size: integer(),
  title: String.t(),
  updated_at: DateTime.t()
}
```

---

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