API documentatie
REST API voor het ophalen van club-, seizoen- en teamdata.
Inhoudsopgave
Authenticatie
Roep eerst POST /api/v1/license/verify aan met je licentiesleutel. Je ontvangt een bearer_token terug. Stuur die token mee als Authorization: Bearer ... header bij alle verdere verzoeken.
Authorization: Bearer TI-A3F2-9KL1-8MNQ-7ZXP
Zonder geldige token retourneert de API 401 Unauthorized.
Basis-URL
https://teamindeling.nl/api/v1
De {club}-parameter in de URL is de slug van de club, bijv. sv-rood-wit-zwolle.
Licentie verifiëren
/api/v1/license/verify
Controleert of een licentiesleutel geldig is voor een bepaalde club. Geeft bij succes een <code>bearer_token</code> terug waarmee alle overige endpoints beveiligd zijn. Slaat het verificatietijdstip op.
Parameters
| Naam | Type | Vereist | Omschrijving |
|---|---|---|---|
| license_key | string | ja | De licentiesleutel |
| club_slug | string | ja | Slug van de club |
Voorbeeld respons
{
"valid": true,
"bearer_token": "aBcDeFgHiJkLmNoPqRsTuVwXyZ...",
"club": {
"name": "SV Rood-Wit Zwolle",
"slug": "sv-rood-wit-zwolle",
"domain": "sv-rood-wit-zwolle.nl"
},
"expires_at": "2027-06-30"
}
Foutcodes
Seizoenen — lijst
Auth vereist/api/v1/clubs/{club}/seasons
Geeft standaard alleen het actieve seizoen terug. Stuur ?all=true mee voor alle seizoenen.
Parameters
| Naam | Type | Vereist | Omschrijving |
|---|---|---|---|
| all | boolean | nee | true = alle seizoenen, false (standaard) = alleen actief |
Voorbeeld respons
{
"data": [
{
"id": 14,
"name": "2025/2026",
"start_date": "2025-08-01",
"end_date": "2026-06-30",
"is_active": true
}
]
}
Seizoen — detail
Auth vereist/api/v1/clubs/{club}/seasons/{season}
Geeft een seizoen terug inclusief alle teams en hun spelers.
Voorbeeld respons
{
"data": {
"id": 14,
"name": "2025/2026",
"start_date": "2025-08-01",
"end_date": "2026-06-30",
"is_active": true,
"teams": [
{
"id": 38,
"name": "Heren 1",
"short_name": "H1",
"slug": "heren-1",
"sort_order": 0,
"season_id": 14,
"finalized_at": "2025-09-01 00:00:00",
"category": {
"id": 1,
"name": "Senioren"
},
"players": [ ... ],
"staff": [ ... ]
}
]
}
}
Foutcodes
Categorieën
Auth vereist/api/v1/clubs/{club}/categories
Geeft alle teamcategorieën van de club terug, gesorteerd op volgorde. Inclusief het aantal teams per categorie.
Voorbeeld respons
{
"data": [
{
"id": 1,
"name": "Senioren",
"sort_order": 0,
"teams_count": 4
},
{
"id": 2,
"name": "Jeugd",
"sort_order": 1,
"teams_count": 8
}
]
}
Teams — lijst
Auth vereist/api/v1/clubs/{club}/teams
Geeft alle teams terug inclusief spelers, staf en categorie. Elk teamlid bevat naam, e-mail, telefoon, geboortedatum, lengte en rugnummer. Filter op seizoen met ?season_id of op categorie met ?category_id.
Parameters
| Naam | Type | Vereist | Omschrijving |
|---|---|---|---|
| season_id | integer | nee | Filter op seizoen-ID |
| category_id | integer | nee | Filter op categorie-ID |
Voorbeeld respons
{
"data": [
{
"id": 38,
"name": "Heren 1",
"short_name": "H1",
"slug": "heren-1",
"sort_order": 0,
"season_id": 14,
"finalized_at": "2025-09-01 00:00:00",
"category": {
"id": 1,
"name": "Senioren"
},
"players": [
{
"id": 112,
"first_name": "Sander",
"last_name": "Vermeulen",
"email": "s.vermeulen@svroodzwit.nl",
"phone": "06-48271053",
"date_of_birth": "1998-04-12",
"height": 192,
"jersey_number": 7,
"position": "Setter",
"sort_order": 0,
"photo_url": "https://teamindeling.nl/storage/photos/sander-vermeulen.jpg"
}
],
"staff": [
{
"id": 7,
"first_name": "Karin",
"last_name": "Drost",
"email": null,
"phone": null,
"date_of_birth": null,
"height": null,
"jersey_number": null,
"position": "Head coach",
"sort_order": 0,
"photo_url": null
}
]
}
]
}
Team — detail
Auth vereist/api/v1/clubs/{club}/teams/{team}
Geeft één team terug inclusief alle spelers, staf en categorie. Bevat ook short_name en finalized_at. De {team}-parameter is het team-ID.
Voorbeeld respons
{
"data": {
"id": 38,
"name": "Heren 1",
"short_name": "H1",
"slug": "heren-1",
"sort_order": 0,
"season_id": 14,
"finalized_at": "2025-09-01 00:00:00",
"category": {
"id": 1,
"name": "Senioren"
},
"players": [ ... ],
"staff": [ ... ]
}
}
Foutcodes
Spelers
Auth vereist/api/v1/clubs/{club}/players
Geeft alle spelers van de club terug, gesorteerd op achternaam. Inclusief geboortedatum, lengte, rugnummer, can_play_multiple_teams, sportlink_id, registratiedatum, registratieteam, posities en foto-URL.
Voorbeeld respons
{
"data": [
{
"id": 112,
"first_name": "Sander",
"last_name": "Vermeulen",
"full_name": "Sander Vermeulen",
"email": "s.vermeulen@svroodzwit.nl",
"phone": "06-48271053",
"date_of_birth": "1998-04-12",
"height": 192,
"jersey_number": 7,
"can_play_multiple_teams": false,
"sportlink_id": "48271",
"registered_at": "2025-08-15",
"registration_team": "Heren 1",
"positions": ["Setter"],
"photo_url": "https://teamindeling.nl/storage/photos/sander-vermeulen.jpg"
},
{
"id": 98,
"first_name": "Lotte",
"last_name": "Bakker",
"full_name": "Lotte Bakker",
"email": "l.bakker@svroodzwit.nl",
"phone": "06-31047829",
"date_of_birth": "2001-11-03",
"height": 174,
"jersey_number": 14,
"can_play_multiple_teams": true,
"sportlink_id": null,
"registered_at": null,
"registration_team": null,
"positions": ["Libero"],
"photo_url": null
}
]
}