Tournaments
Base path: /api/tournaments
Players and teams can view ongoing tournaments, browse fixtures, see standings, and register their team.
Tournament Statuses
| Status | Description |
|---|---|
registration_open | Accepting team registrations |
registration_closed | Registration period ended |
ongoing | Tournament matches in progress |
completed | Tournament finished |
cancelled | Tournament cancelled |
Tournament Formats
| Format | Description |
|---|---|
league | Round-robin group stage |
knockout | Single-elimination bracket |
group_knockout | Group stage + knockout rounds |
Endpoints
GET /api/tournaments
List all tournaments.
Auth: Not required
Response 200:
{
"data": [
{
"id": 1,
"name": "Kathmandu Futsal Cup 2025",
"description": "Annual city championship",
"format": "knockout",
"sport_type": "futsal",
"max_teams": 16,
"registered_teams": 12,
"registration_fee": "500.00",
"prize_pool": "50000.00",
"starts_at": "2025-07-01",
"ends_at": "2025-07-15",
"status": "registration_open",
"venue": { "id": 1, "name": "Champions Futsal", "slug": "champions-futsal" },
"created_at": "2025-05-01 10:00:00"
}
]
}GET /api/tournaments/{tournament}
Get full details of a tournament including teams and standings.
Auth: Not required
Response 200:
{
"data": {
"id": 1,
"name": "Kathmandu Futsal Cup 2025",
"format": "knockout",
"sport_type": "futsal",
"max_teams": 16,
"registered_teams": 12,
"registration_fee": "500.00",
"prize_pool": "50000.00",
"starts_at": "2025-07-01",
"ends_at": "2025-07-15",
"status": "registration_open",
"venue": { ... },
"teams": [
{
"id": 1,
"name": "FC Warriors",
"captain_name": "Arjun Thapa",
"contact_phone": "9801234567",
"player_count": 7,
"registered_at": "2025-05-15 10:00:00"
}
],
"standings": [],
"created_at": "2025-05-01 10:00:00"
}
}GET /api/tournaments/{tournament}/fixtures
Get match fixtures (schedule) for the tournament.
Auth: Not required
Response 200:
{
"data": [
{
"id": 1,
"round": "Quarter Final",
"match_number": 1,
"team_a": { "id": 1, "name": "FC Warriors" },
"team_b": { "id": 3, "name": "City Strikers" },
"scheduled_at": "2025-07-05 10:00:00",
"status": "scheduled",
"result": null
}
]
}GET /api/tournaments/{tournament}/standings
Get current standings / points table.
Auth: Not required
Response 200:
{
"data": [
{
"rank": 1,
"team": { "id": 1, "name": "FC Warriors" },
"played": 3,
"won": 3,
"drawn": 0,
"lost": 0,
"goals_for": 12,
"goals_against": 4,
"points": 9
}
]
}POST /api/tournaments/{tournament}/teams [Auth required]
Register a team in a tournament.
Request body:
{
"name": "FC Warriors",
"captain_name": "Arjun Thapa",
"contact_phone": "9801234567",
"players": [
{ "name": "Arjun Thapa", "position": "GK" },
{ "name": "Sujit Karki", "position": "FW" }
]
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Team name |
captain_name | string | Yes | Captain's name |
contact_phone | string | No | Contact number |
players | array | No | List of player names and positions |
Response 201:
{
"data": {
"id": 5,
"name": "FC Warriors",
"captain_name": "Arjun Thapa",
"contact_phone": "9801234567",
"player_count": 2,
"registered_at": "2025-05-20 09:00:00"
}
}Response 422 — registration closed or team limit reached:
{ "message": "Tournament registration is closed." }TournamentResource — Field Reference
| Field | Type | Notes |
|---|---|---|
id | integer | |
name | string | |
description | string or null | |
format | string | league, knockout, group_knockout |
sport_type | string | e.g. futsal, basketball |
max_teams | integer | Maximum teams allowed |
registered_teams | integer | Current registration count |
registration_fee | decimal string | NPR |
prize_pool | decimal string | NPR |
starts_at | date string | YYYY-MM-DD |
ends_at | date string | YYYY-MM-DD |
status | string | See statuses table |
venue | object | Venue hosting the tournament |
teams | array | When loaded |
standings | array | When loaded |
created_at | datetime string |