Errori
Gestisci il contratto delle risposte di errore e correla le richieste.
Gli errori seguono il contratto JSON dei problemi della RFC 9457, con il tipo di media 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 è l'identificatore stabile del problema; title e detail lo descrivono. status corrisponde allo stato HTTP. Le voci facoltative di errors contengono un JSON Pointer e dettagli di validazione; un puntatore vuoto indica l'intero corpo. Riporta request_id (anche in X-Request-Id) quando segnali un problema.
Tutti i tipi seguenti iniziano con https://www.ninjabuy.com/api/v1/problems/.
| Suffisso del tipo | HTTP | Significato / azione |
|---|---|---|
bad-json | 400 | Il corpo non è JSON valido. Correggi la sintassi. |
bad-body | 400 | Il corpo, i parametri di query o il cursore non superano la validazione. Leggi errors. |
bad-idempotency-key | 400 | Usa da 1 a 255 caratteri ASCII stampabili per Idempotency-Key. |
unauthorized | 401 | Fornisci un token bearer valido; WWW-Authenticate fornisce i metadati di discovery. |
not-found | 404 | La risorsa non è disponibile, è sconosciuta o non appartiene a questo account. |
method-not-allowed | 405 | Usa il metodo indicato in Allow. |
idempotency-key-in-progress | 409 | La prima richiesta con questa chiave è in corso. Attendi il tempo di Retry-After. |
upload-too-large | 413 | I byte caricati superano la dimensione dichiarata o il limite di 20 MiB. |
unsupported-media-type | 415 | Invia Content-Type: application/json. |
idempotency-key-reused | 422 | Questa chiave è stata usata con un’altra richiesta. Usa una nuova chiave. |
invalid-workbook | 422 | Il file caricato non è un XLSX/CSV leggibile entro i limiti. Leggi errors. |
upload-expired | 422 | La prenotazione di caricamento è scaduta. Carica di nuovo il file. |
rate-limited | 429 | Attendi i secondi indicati in Retry-After prima di riprovare. |
search-rate-limited | 429 | La finestra di ricerca per parole chiave è piena. Attendi il tempo di Retry-After. |
service-unavailable | 503 | Riprova a breve; rispetta Retry-After se presente. |
internal-error | 500 | Riprova più tardi; conserva l'identificatore della richiesta se il problema persiste. |
Una richiesta riuscita può comunque contenere errori relativi ai singoli input. Gestisci gli stati dei link separatamente dagli errori HTTP. Usa Idempotency-Key per riprodurre una richiesta di creazione; senza chiave, ripetere l’invio di un batch crea un’altra operazione.