/api/public/scrim-requestsSans authPropose un scrim public a une de nos equipes (anti-bot captcha + honeypot).
Corps de la requête
Référence générée · v1.0.0
Générée automatiquement depuis notre spécification OpenAPI — toujours à jour avec les endpoints réellement servis. Importez la spec dans Postman ou votre outil de génération de code.
https://www.lacotedazurelympique.frTélécharger la spec OpenAPI (JSON)/api/public/scrim-requestsSans authPropose un scrim public a une de nos equipes (anti-bot captcha + honeypot).
Corps de la requête
/api/public/newsletter/subscribeSans authInscription newsletter (double opt-in) — anti-bot captcha + honeypot.
Enregistre (ou re-arme) un abonne `pending` avec un `confirm_token` aleatoire et envoie l'email de confirmation. Reponse toujours generique `{ success: true }` (enumeration-safe) : ne revele jamais si l'adresse existait deja. Un honeypot rempli est silencieusement absorbe (200).
Corps de la requête
/api/public/newsletter/confirmSans authConfirme une inscription newsletter (double opt-in) via le lien email.
Cible du lien de confirmation. Passe l'abonne a `confirmed` puis redirige (302) vers `/newsletter/merci`. Token manquant / invalide / introuvable → redirige vers `/newsletter/merci?status=invalid`. Pas de captcha (clic sur un lien).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
tokenrequis | requête | string | Le `confirm_token` recu par email. |
Réponses
| Statut | Schéma | Description |
|---|---|---|
| 302 | — | Redirection vers la page de remerciement (ou `?status=invalid`). |
/api/public/openapiSans authSpécification OpenAPI publique (machine-readable).
Spec OpenAPI 3.1 filtrée à la surface publique (`/api/public/*`), dérivée de la spec canonique `docs/openapi.yaml`. Anonyme, CORS `*`, rate-limitée (120 req/min/IP). `?format=yaml` pour la variante YAML. À importer dans Postman / un générateur de code.
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
format | requête | enum(json | yaml) |
/api/public/webhook-eventsSans authCatalogue public des types d'événements webhook souscriptibles.
Catalogue anonyme des event types qu'un tenant peut recevoir en webhook sortant, + la convention de signature. Dérivé du sous-ensemble PUBLIC des noms d'événements outbox (les événements Discord internes n'y figurent jamais). Anonyme, CORS `*`, edge-caché (`s-maxage=3600`).
/api/public/v1/tournamentsSans authListe des tournois publics (published/running/completed).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
status | requête | enum(published | running | completed) | |
game | requête | string | |
limit | requête | integer | |
offset | requête | integer |
/api/public/v1/tournaments/{id}Sans authDétail d'un tournoi public + résumé des stages.
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string | Id (UUID) ou slug du tournoi. |
/api/public/v1/tournaments/{id}/matchesSans authMatches d'un tournoi (overlays de bracket).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string | Id (UUID) ou slug du tournoi. |
stageId | requête | string | |
status | requête | enum(pending | ongoing | finished) |
/api/public/v1/tournaments/{id}/standingsSans authClassement final du tournoi (vide si non finalisé).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string | Id (UUID) ou slug du tournoi. |
/api/public/v1/tournaments/{id}/arbitrationSans authMétriques d'arbitrage agrégées (non-nominatives) du tournoi.
Agrégat de l'activité d'arbitrage (litiges) d'un tournoi public : volume, résolution, respect du SLA, répartition des litiges ouverts. AUCUN identifiant ni raison — que des nombres. 404 si le tournoi n'est pas public (draft / archived / inconnu).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string | Id (UUID) ou slug du tournoi. |
Réponses
/api/public/v1/matches/{id}/resultToken requisPose le score final d'un match (écriture publique authentifiée).
Écriture publique autoritaire (pas de consensus capitaine) — réutilise `applyMatchScore`. Idempotent (`Idempotency-Key`). Requiert le scope `matches:write`.
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string <uuid> | Id (UUID) du match. |
Corps de la requête
| Propriété | Type | Description |
|---|---|---|
team1Scorerequis | integer | |
team2Scorerequis | integer |
Réponses
| Statut | Schéma | Description |
|---|---|---|
| 200 | object | Match finalisé. |
| 400 | Error | Requête invalide (validation zod, JSON mal formé, etc.). |
| 401 | Error | Auth manquante ou invalide (clé, session ou bearer). |
| 403 | Error | Authentifié mais rôle/permissions insuffisants. |
| 404 | Error | Ressource introuvable (UUID inconnu, route inexistante). |
| 409 | Error | État incompatible (idempotency mismatch, lock détenu). |
| 429 | Error | Rate-limit dépassé (par-actor ou par-route). |
/api/public/v1/matches/{id}Sans authDétail d'un match public + games (map par map).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string <uuid> | Id (UUID) du match. |
/api/public/v1/teams/{id}Sans authÉquipe publique + roster public (sans données privées).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
idrequis | chemin | string | Id (UUID) ou slug de l'équipe. |
/api/public/v1/leaderboardSans authClassement Glicko-2 public des joueuses.
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
limit | requête | integer | |
offset | requête | integer |
/api/public/v1/players/{userId}Sans authProfil public d'une joueuse (rating, historique, H2H, achievements).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
userIdrequis | chemin | string <uuid> | Id (UUID) de la joueuse. |
/api/public/v1/leaguesSans authListe des leagues publiques.
/api/public/v1/leagues/{slug}Sans authDétail public d'une league (standings + tournois liés).
Paramètres
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
slugrequis | chemin | string |
| Propriété | Type | Description |
|---|---|---|
errorrequis | string | Message lisible côté client. |
code | string | Code machine (ex. `MISSING_TENANT_ID`, `UNKNOWN_TENANT`). |
details | object |
| Propriété | Type | Description |
|---|---|---|
targetTeamId | string <uuid> | |
targetTeamSlug | string | |
fromTeamName | string | |
requesterNamerequis | string | |
requesterEmail | string <email> | |
requesterDiscord | string | |
preferredDate | string <date-time> | |
format | string | |
messagerequis | string | |
honeypot | string | Doit etre vide (anti-bot). |
captchaToken | string | |
captchaAnswer | string |
| Propriété | Type | Description |
|---|---|---|
emailrequis | string <email> | |
source | string | Provenance libre (ex. `footer`, `landing`). Defaut `public`. |
honeypot | string | Doit etre vide (anti-bot). |
captchaToken | string | |
captchaAnswer | string |
| Propriété | Type | Description |
|---|---|---|
userIdrequis | string | |
displayName | string | null | |
battleTag | string | null | |
avatarUrl | string | null | |
ratingrequis | number | |
rdrequis | number | |
gamesPlayedrequis | integer | |
winsrequis | integer | |
lossesrequis | integer | |
rankrequis | integer |
| Propriété | Type | Description |
|---|---|---|
playerrequis | object | |
historyrequis | array<object> | |
recentMatchesrequis | array<object> | |
h2hrequis | array<object> | |
achievementsrequis | object | Badges, palmarès (placements en tournoi) et historique de saison dérivés du parcours du joueur par le réducteur pur utils/profile/achievements.ts. Toujours présent (bloc vide si rien à agréger). |
| Propriété | Type | Description |
|---|---|---|
idrequis | string <uuid> | |
tenant_idrequis | string <uuid> | |
namerequis | string | |
slugrequis | string | |
description | string | null | |
game | string | null | |
statusrequis | enum(draft | active | finished | archived) | |
start_date | string | null | |
end_date | string | null | |
points_tablerequis | object | |
is_publicrequis | boolean | |
created_at | string | |
updated_at | string |
| Propriété | Type | Description |
|---|---|---|
leaguerequis | League | |
standingsrequis | array<object> | |
tournamentsrequis | array<object> |
| Propriété | Type | Description |
|---|---|---|
limitrequis | integer | |
offsetrequis | integer | |
countrequis | integer | Nombre total d'éléments avant pagination (tournois) ou nombre d'éléments retournés dans la page (leaderboard). |
| Propriété | Type | Description |
|---|---|---|
idrequis | string <uuid> | |
namerequis | string | |
slug | string | null | |
game | string | null | |
statusrequis | string | |
start_date | string | null | |
end_date | string | null | |
format | string | null |
| Propriété | Type | Description |
|---|---|---|
idrequis | string <uuid> | |
name | string | null | |
stage_type | string | null | |
statusrequis | string | Dérivé de `is_active` (active | inactive). |
any
| Propriété | Type | Description |
|---|---|---|
idrequis | string <uuid> | |
stage_id | string | null | |
round_number | integer | null | |
bracket_side | string | null | |
team1_id | string | null | |
team1_name | string | null | |
team1_logo_url | string | null | Public team logo URL (may be null). |
team2_id | string | null | |
team2_name | string | null | |
team2_logo_url | string | null | Public team logo URL (may be null). |
team1_score | integer | null | |
team2_score | integer | null | |
winner_team_id | string | null | |
statusrequis | string | |
scheduled_at | string | null |
| Propriété | Type | Description |
|---|---|---|
map_name | string | null | |
map_order | integer | null | |
team1_score | integer | null | |
team2_score | integer | null | |
winner_team_id | string | null |
any
| Propriété | Type | Description |
|---|---|---|
rankrequis | integer | |
teamIdrequis | string <uuid> | |
teamName | string | null | |
teamSlug | string | null | |
logoUrl | string | null | |
prize | string | null |
Métriques d'arbitrage AGRÉGÉES et NON-NOMINATIVES d'un tournoi. Aucun identifiant (équipe / match / joueur), aucune raison de litige : que des compteurs, durées et taux.
| Propriété | Type | Description |
|---|---|---|
totalDisputesrequis | integer | Matchs ayant eu un litige (opened_at set OU status=disputed OU résolus). |
openrequis | integer | Litiges non résolus (status=disputed). |
resolvedrequis | integer | Litiges avec un timestamp de résolution. |
avgResolutionMinutes | integer | null | Temps moyen de résolution (minutes) sur les résolus ; null si aucun. |
medianResolutionMinutes | integer | null | Temps médian de résolution (minutes) sur les résolus ; null si aucun. |
withinSlaCountrequis | integer | Litiges résolus dans le SLA (durée <= slaMinutes). |
slaComplianceRate | number | null | withinSlaCount / resolved (0..1) ; null si resolved=0. |
openBreakdownrequis | object | Répartition SLA des litiges OUVERTS. |
slaMinutesrequis | integer | Fenêtre SLA (minutes) du tenant utilisée pour le calcul. |
| Propriété | Type | Description |
|---|---|---|
tournamentIdrequis | string <uuid> | |
tournamentNamerequis | string | |
tournamentSlug | string | null | |
metricsrequis | PublicV1ArbitrationMetrics |
| Propriété | Type | Description |
|---|---|---|
display_name | string | null | |
role | string | null | |
is_substitute | boolean |
| Propriété | Type | Description |
|---|---|---|
idrequis | string <uuid> | |
namerequis | string | |
short_name | string | null | |
slug | string | null | |
logo_url | string | null | |
rosterrequis | array<PublicV1TeamMember> |
Cette page est générée depuis docs/openapi.yaml à chaque déploiement — elle ne peut pas dériver du comportement réel de l'API.