API REST

Erreurs

Gérez le contrat des réponses de problèmes et corrélez les requêtes.

Les erreurs suivent le contrat JSON de problèmes de la RFC 9457, avec le type de média application/problem+json.

{
  "type": "https://www.ninjabuy.com/api/v1/problems/bad-body",
  "title": "Invalid request",
  "status": 400,
  "detail": "The request did not match the expected shape.",
  "request_id": "REQUEST_ID",
  "errors": [{"pointer": "/links", "detail": "Validation detail"}]
}

type est l'identifiant stable du problème ; title et detail le décrivent. status correspond au statut HTTP. Les entrées facultatives de errors contiennent un JSON Pointer et des détails de validation ; un pointeur vide désigne le corps entier. Indiquez request_id (également dans X-Request-Id) lorsque vous signalez un problème.

Tous les types ci-dessous commencent par https://www.ninjabuy.com/api/v1/problems/.

Suffixe du typeHTTPSignification / action
bad-json400Le corps n'est pas du JSON valide. Corrigez sa syntaxe.
bad-body400Le corps, les paramètres de requête ou le curseur échouent à la validation. Lisez errors.
bad-idempotency-key400Utilisez de 1 à 255 caractères ASCII imprimables pour Idempotency-Key.
unauthorized401Fournissez un jeton bearer valide ; WWW-Authenticate fournit les métadonnées de découverte.
not-found404La ressource est indisponible, inconnue ou n'appartient pas à ce compte.
method-not-allowed405Utilisez la méthode indiquée dans Allow.
idempotency-key-in-progress409La première requête avec cette clé est en cours. Attendez le délai de Retry-After.
upload-too-large413Les octets téléversés dépassent la taille déclarée ou la limite de 20 MiB.
unsupported-media-type415Envoyez Content-Type: application/json.
idempotency-key-reused422Cette clé a été utilisée avec une autre requête. Utilisez une nouvelle clé.
invalid-workbook422Le fichier téléversé n’est pas un XLSX/CSV lisible dans les limites. Lisez errors.
upload-expired422La réservation de téléversement a expiré. Téléversez le fichier à nouveau.
rate-limited429Attendez le nombre de secondes de Retry-After avant de réessayer.
search-rate-limited429La fenêtre de recherche par mots-clés est pleine. Attendez le délai de Retry-After.
service-unavailable503Réessayez sous peu ; respectez Retry-After s'il est présent.
internal-error500Réessayez plus tard ; conservez l'identifiant de requête si le problème persiste.

Une requête réussie peut encore contenir des échecs propres à certaines entrées. Gérez les statuts des liens séparément des erreurs HTTP. Utilisez Idempotency-Key pour reproduire une requête de création ; sans clé, répéter la soumission d’un lot crée une autre tâche.