Portail développeur

API publique v1

Une API REST publique, en lecture seule, pour consommer les données de tournois, matchs, équipes, classements et ligues. Sans clé, versionnée, prête à intégrer dans vos overlays, bots et sites.

Vue d'ensemble

Lecture seule

Toutes les routes sont en GET. Aucune écriture, aucune mutation possible.

Sans authentification

Aucune clé d’API ni jeton requis. Appelez directement les endpoints.

CORS ouvert

En-tête Access-Control-Allow-Origin: * — utilisable depuis un navigateur.

Versionnée

Préfixe /api/public/v1. La v1 reste stable ; toute rupture passera par une v2.

Rate-limit

Environ 120 requêtes par minute et par adresse IP. Au-delà : erreur RATE_LIMITED.

Réponses JSON en enveloppe

Le contenu est toujours sous { data: ... }. Les listes ajoutent un objet pagination.

Base URL

L'API est servie depuis l'origine du site. Toutes les routes sont préfixées par /api/public/v1.

https://owwomenscup.fr/api/public/v1

Format des erreurs

Une erreur renvoie un statut HTTP adapté et un corps JSON { error, code }.

codeSignification
NOT_FOUNDRessource introuvable.
BAD_REQUESTParamètres invalides ou manquants.
METHOD_NOT_ALLOWEDMéthode HTTP non autorisée (seul GET est supporté).
RATE_LIMITEDLimite de requêtes dépassée. Réessayez plus tard.
INTERNALErreur interne du serveur.

Exemple rapide

Récupérer les tournois en cours. La réponse expose la liste sous data et les métadonnées de pagination sous pagination.

curl
curl -s "https://owwomenscup.fr/api/public/v1/tournaments?status=running&limit=10"
JavaScript (fetch)
const res = await fetch(
  "https://owwomenscup.fr/api/public/v1/tournaments?status=running&limit=10"
);
const { data, pagination } = await res.json();
// data       -> TournamentSummary[]
// pagination -> { limit, offset, count }
console.log(data.length, pagination.count);

Référence des endpoints

Tournois

Liste, détail et déroulé compétitif d'un tournoi. L'identifiant accepte l'UUID ou le slug.

GET/api/public/v1/tournaments

Liste des tournois publics.

Paramètres de /api/public/v1/tournaments
ParamètreEmplacementDescription
statusrequêteFiltre par statut (ex. running, completed).
gamerequêteFiltre par jeu (ex. overwatch).
limitrequêteTaille de page (pagination).
offsetrequêteDécalage de départ (pagination).

Réponse

{
  "data": [
    {
      "id": "uuid",
      "name": "OW Women's Cup 2026",
      "slug": "ow-womens-cup-2026",
      "game": "overwatch",
      "status": "running",
      "start_date": "2026-01-01",
      "end_date": "2026-02-01",
      "format": "single_elimination"
    }
  ],
  "pagination": { "limit": 20, "offset": 0, "count": 42 }
}
GET/api/public/v1/tournaments/{id}

Détail d’un tournoi et ses phases (stages).

Paramètres de /api/public/v1/tournaments/{id}
ParamètreEmplacementDescription
idrequischeminIdentifiant du tournoi : UUID ou slug.

Réponse

{
  "data": {
    "id": "uuid",
    "name": "OW Women's Cup 2026",
    "slug": "ow-womens-cup-2026",
    "game": "overwatch",
    "status": "running",
    "start_date": "2026-01-01",
    "end_date": "2026-02-01",
    "format": "single_elimination",
    "stages": [
      { "id": "uuid", "name": "Phase de groupes", "stage_type": "group", "status": "completed" }
    ]
  }
}
GET/api/public/v1/tournaments/{id}/matches

Matchs d’un tournoi.

Paramètres de /api/public/v1/tournaments/{id}/matches
ParamètreEmplacementDescription
idrequischeminUUID ou slug du tournoi.
stageIdrequêteFiltre par phase (id de stage).
statusrequêteFiltre par statut de match.

Réponse

{
  "data": [
    {
      "id": "uuid",
      "stage_id": "uuid",
      "round_number": 1,
      "bracket_side": "upper",
      "team1_id": "uuid",
      "team1_name": "Team A",
      "team2_id": "uuid",
      "team2_name": "Team B",
      "team1_score": 2,
      "team2_score": 1,
      "winner_team_id": "uuid",
      "status": "finished",
      "scheduled_at": "2026-01-05T18:00:00Z"
    }
  ]
}
GET/api/public/v1/tournaments/{id}/standings

Classement final d’un tournoi (vide tant qu’il n’est pas finalisé).

Paramètres de /api/public/v1/tournaments/{id}/standings
ParamètreEmplacementDescription
idrequischeminUUID ou slug du tournoi.

Réponse

{
  "data": [
    {
      "rank": 1,
      "teamId": "uuid",
      "teamName": "Team A",
      "teamSlug": "team-a",
      "logoUrl": "https://.../logo.png",
      "prize": "500 €"
    }
  ]
}

Matchs

Détail d’un match, avec le score par carte (games).

GET/api/public/v1/matches/{id}

Détail d’un match et ses cartes.

Paramètres de /api/public/v1/matches/{id}
ParamètreEmplacementDescription
idrequischeminUUID du match.

Réponse

{
  "data": {
    "id": "uuid",
    "stage_id": "uuid",
    "round_number": 1,
    "bracket_side": "upper",
    "team1_id": "uuid",
    "team1_name": "Team A",
    "team2_id": "uuid",
    "team2_name": "Team B",
    "team1_score": 2,
    "team2_score": 1,
    "winner_team_id": "uuid",
    "status": "finished",
    "scheduled_at": "2026-01-05T18:00:00Z",
    "games": [
      { "map_name": "Ilios", "map_order": 1, "team1_score": 2, "team2_score": 1, "winner_team_id": "uuid" }
    ]
  }
}

Équipes

Fiche publique d’une équipe et son roster. L’identifiant accepte l’UUID ou le slug.

GET/api/public/v1/teams/{id}

Détail d’une équipe et sa composition.

Paramètres de /api/public/v1/teams/{id}
ParamètreEmplacementDescription
idrequischeminUUID ou slug de l’équipe.

Réponse

{
  "data": {
    "id": "uuid",
    "name": "Team A",
    "short_name": "TMA",
    "slug": "team-a",
    "logo_url": "https://.../logo.png",
    "roster": [
      { "display_name": "Joueuse", "role": "tank", "is_substitute": false }
    ]
  }
}

Classement & profils

Classement des joueuses (rating Glicko-2) et profil individuel : historique, matchs récents, confrontations et distinctions.

GET/api/public/v1/leaderboard

Classement des joueuses.

Paramètres de /api/public/v1/leaderboard
ParamètreEmplacementDescription
limitrequêteTaille de page (pagination).
offsetrequêteDécalage de départ (pagination).

Réponse

{
  "data": [
    {
      "userId": "uuid",
      "displayName": "Joueuse",
      "battleTag": "Joueuse#1234",
      "avatarUrl": "https://.../avatar.png",
      "rating": 1650,
      "rd": 80,
      "gamesPlayed": 42,
      "wins": 28,
      "losses": 14,
      "rank": 1
    }
  ],
  "pagination": { "limit": 20, "offset": 0, "count": 120 }
}
GET/api/public/v1/players/{userId}

Profil détaillé d’une joueuse.

Paramètres de /api/public/v1/players/{userId}
ParamètreEmplacementDescription
userIdrequischeminIdentifiant de la joueuse.

Réponse

{
  "data": {
    "player": { "userId": "uuid", "displayName": "Joueuse", "rating": 1650 },
    "history": [ /* évolution du rating */ ],
    "recentMatches": [ /* derniers matchs */ ],
    "h2h": [ /* confrontations directes */ ],
    "achievements": { /* distinctions */ }
  }
}

Ligues

Liste des ligues publiques et détail d’une ligue (classement + tournois rattachés).

GET/api/public/v1/leagues

Liste des ligues publiques.

Réponse

{
  "data": [
    { "id": "uuid", "name": "Ligue Élite", "slug": "ligue-elite", "status": "running" }
  ]
}
GET/api/public/v1/leagues/{slug}

Détail d’une ligue.

Paramètres de /api/public/v1/leagues/{slug}
ParamètreEmplacementDescription
slugrequischeminSlug de la ligue.

Réponse

{
  "data": {
    "league": { "id": "uuid", "name": "Ligue Élite", "slug": "ligue-elite" },
    "standings": [ /* classement de la ligue */ ],
    "tournaments": [ /* tournois rattachés */ ]
  }
}

À noter

  • API en lecture seule.
  • Le contrat de référence est décrit dans openapi.yaml.
  • Les endpoints sont susceptibles d'évoluer ; la version v1 reste stable.

Une question ou un cas d'usage ? Contactez-nous.