Authentification
Toutes les requêtes doivent inclure la clé API dans le header x-api-key. La clé est fournie par PTM lors de l'onboarding partenaire.
Ne jamais exposer la clé API côté client. Tous les appels doivent transiter par votre backend.
Codes d'erreur
| Code | Signification | Description |
|---|---|---|
| 200 | OK | Succès — y compris les cas métier (not_found, multiple…) |
| 201 | Created | Inscription créée avec succès |
| 400 | Bad Request | Paramètre requis manquant |
| 401 | Unauthorized | Clé API absente, invalide ou désactivée |
| 404 | Not Found | Ressource inexistante ou non publiée sur Pista |
| 409 | Conflict | Doublon d'inscription ou liste d'attente pleine |
| 500 | Server Error | Erreur interne PTM |
Les cas métier de /players/verify (joueur introuvable, homonymie…) retournent toujours HTTP 200 avec un champ status dans le body. Seules les erreurs d'infrastructure utilisent les codes 4xx/5xx.
Liste des tournois
Retourne la liste des tournois publiés sur Pista avec les inscriptions ouvertes (registration_open = true).
available_spots peut être null si le tournoi n'a pas de limite de paires définie.
Détail d'un tournoi
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | uuid | requis | Identifiant du tournoi |
Vérification de licence
Un seul appel au clic bouton — PTM interroge l'API officielle FFT (TenUp) et retourne une réponse normalisée. Tous les cas métier retournent HTTP 200 avec un champ status.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| first_name | string | requis | Prénom du joueur |
| last_name | string | requis | Nom du joueur |
| licence | string | optionnel | Numéro de licence FFT. Si fourni, affine la recherche et détecte les incohérences. |
Inscription d'une paire
Si des places sont disponibles → status: confirmed, la paire est ajoutée au tableau. Si le tournoi est complet → status: waitlist avec position en liste d'attente. Aucune validation manuelle requise.
| Champ | Type | Description |
|---|---|---|
| tournament_id | uuid | ID du tournoi cible |
| player1.licence_number | string | Licence FFT joueur 1 |
| player1.first_name | string | Prénom joueur 1 |
| player1.last_name | string | Nom joueur 1 |
| player1.phone | string | Téléphone joueur 1 |
| player1.email | string | Email joueur 1 |
| player2.* | — | Idem pour le joueur 2 |