Codes d'erreur
Toutes les erreurs API suivent un format cohérent. Les réponses REST utilisent des codes de statut HTTP accompagnés de corps d'erreur structurés. Les réponses gRPC incluent les champs error_code et error_message.
Format des réponses d'erreur
{
"success": false,
"error": {
"code": "MARKET_NOT_FOUND",
"message": "Market with id abc-123 not found",
"details": {}
}
}
Erreurs de marché
| Code | Statut HTTP | Description |
|---|---|---|
MARKET_NOT_FOUND | 404 | Le marché avec l'identifiant fourni n'existe pas |
MARKET_NOT_OPEN | 400 | Le marché n'est pas au statut OPEN — les transactions ne sont pas autorisées |
MARKET_ALREADY_RESOLVED | 409 | Le marché a déjà été résolu |
MARKET_INVALID_STATUS_TRANSITION | 400 | Changement de statut invalide (par exemple, tenter d'ouvrir un marché déjà fermé) |
VALIDATION_ERROR | 400 | La devise n'est pas dans la liste supportedCurrencies de l'opérateur |
Erreurs d'ordre
| Code | Statut HTTP | Description |
|---|---|---|
ORDER_NOT_FOUND | 404 | L'ordre avec l'identifiant fourni n'existe pas |
ORDER_INVALID_PRICE | 400 | Le prix est en dehors de la plage autorisée (0.01–0.99) |
ORDER_INVALID_SHARES | 400 | Le nombre de parts est en dehors de la plage autorisée (1–100 000) |
ORDER_INSUFFICIENT_FUNDS | 400 | Fonds insuffisants pour passer l'ordre |
ORDER_CANNOT_CANCEL | 400 | L'ordre n'est pas dans un statut annulable (doit être PENDING ou PARTIAL) |
ORDER_NO_LIQUIDITY | 400 | Aucun ordre correspondant disponible pour un ordre au marché |
Erreurs de position
| Code | Statut HTTP | Description |
|---|---|---|
POSITION_NOT_FOUND | 404 | La position n'existe pas |
POSITION_INSUFFICIENT_SHARES | 400 | L'opérateur ne détient pas suffisamment de parts pour vendre |
Erreurs de catégorie
| Code | Statut HTTP | Description |
|---|---|---|
CATEGORY_NOT_FOUND | 404 | La catégorie avec l'identifiant fourni n'existe pas |
CATEGORY_DUPLICATE_SLUG | 409 | Une catégorie avec ce slug existe déjà pour l'opérateur |
Erreurs de règlement
| Code | Statut HTTP | Description |
|---|---|---|
SETTLEMENT_FAILED | 500 | Le traitement du règlement a rencontré une erreur |
SETTLEMENT_ALREADY_COMPLETED | 409 | Le règlement a déjà été effectué |
Erreurs d'authentification
| Code | Statut HTTP | Description |
|---|---|---|
UNAUTHORIZED | 401 | Identifiants d'authentification manquants ou invalides |
Erreurs générales
| Code | Statut HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | La validation du corps de la requête a échoué — consultez le message d'erreur pour plus de détails |
INTERNAL_ERROR | 500 | Une erreur interne inattendue s'est produite |
NOT_FOUND | 404 | La ressource demandée est introuvable |
FORBIDDEN | 403 | Vous n'avez pas la permission d'effectuer cette action |
CONFLICT | 409 | La requête est en conflit avec l'état actuel de la ressource |
Erreurs de validation d'ordre
Ces erreurs sont retournées lorsque le passage d'un ordre échoue à la validation :
| Message d'erreur | Description |
|---|---|
Market not found | Le marketId spécifié n'existe pas |
Market is not open for trading | Le statut du marché n'est pas OPEN |
Trading has not started yet | L'heure actuelle est antérieure à tradingStartsAt |
Trading has ended | L'heure actuelle est postérieure à tradingEndsAt |
Invalid outcome for this market | L'outcomeId n'appartient pas à ce marché |
Shares must be greater than 0 | La valeur des parts est nulle ou négative |
Shares must be at least {min} | Inférieur au nombre minimum de parts |
Shares must be at most {max} | Supérieur au nombre maximum de parts |
Price is required for LIMIT orders | L'ordre LIMIT ne contient pas de champ de prix |
Price must be between {min} and {max} | Prix en dehors de la plage autorisée |
Insufficient shares to sell | L'ordre SELL dépasse la position de l'opérateur |
Récapitulatif des codes de statut HTTP
| Statut | Utilisation |
|---|---|
200 | Récupération ou mise à jour réussie |
201 | Création réussie (marchés, ordres, catégories) |
400 | Erreur de validation ou requête incorrecte |
401 | Authentification requise |
403 | Permissions insuffisantes |
404 | Ressource introuvable |
409 | Conflit d'état |
500 | Erreur interne du serveur |