Foutmeldingen
Elke mislukte aanroep antwoordt met JSON in dezelfde vorm, wat je Accept-header ook zegt. Bepaal je reactie aan de hand van de code.
De foutmelding
Een fout bevat een leesbare message en een vaste code:
{
"code": "missing_ability",
"message": "Invalid ability provided."
}
Bij een validatiefout komt daar errors bij: per veld de meldingen over wat er niet aan klopt.
{
"code": "validation_failed",
"message": "The lines field is required.",
"errors": {
"lines": ["The lines field is required."]
}
}
De message is bedoeld voor mensen en kan veranderen. De code hoort bij het contract: er komen alleen codes bij, ze worden nooit hernoemd of verwijderd. Komt je koppeling een code tegen die ze niet kent, ga dan uit van de HTTP-status.
Alle codes
| Code | Status | Wat er gebeurde | Wat je doet |
|---|---|---|---|
validation_failed |
422 | De body of query bevat een veld dat Picked niet kan accepteren. errors zegt welk. |
Verbeter het verzoek. Ongewijzigd opnieuw sturen mislukt opnieuw. |
bad_request |
400 | Het verzoek is onjuist opgebouwd, bijvoorbeeld een Picked-Dry-Run-header die niet true of false is. Ook voor elke andere 4xx-status die niet in deze tabel staat. |
Verbeter het verzoek. |
unauthenticated |
401 | Het token ontbreekt, is verkeerd overgenomen of is ingetrokken, of het teamlid dat het uitgaf is uit de werkruimte verwijderd. | Stop, en controleer welk token je koppeling meestuurt. |
missing_ability |
403 | Het token is geldig, maar mist het recht dat dit endpoint nodig heeft. | Stop, en geef een token uit met het juiste recht. Zie Authenticatie en rechten. |
forbidden |
403 | Het token mag hier niets, bijvoorbeeld omdat je er het adres van een andere werkruimte mee aanriep. | Stop, en controleer het adres en het token. |
not_found |
404 | Het adres bestaat niet, of wat je opvroeg staat niet in je werkruimte: een onbekende SKU, een onbekend ontvangst-id. | Verbeter het verzoek. Probeer het niet opnieuw. |
method_not_allowed |
405 | Het adres bestaat, maar niet voor deze HTTP-methode. | Verbeter het verzoek. |
conflict |
409 | Een Idempotency-Key is al gebruikt voor een ander verzoek, of een verzoek met die sleutel wordt nog afgehandeld. |
Stuur een nieuwe sleutel; wordt het verzoek nog afgehandeld, probeer het dan zo opnieuw. |
gone |
410 | Waar je op terugbelde, wacht niet meer op je: het terugbellen van een stap nadat de tijd om was of die op een andere manier eindigde. | Stop: het werk is zijn eigen weg gegaan. Probeer het niet opnieuw. |
rate_limited |
429 | Je werkruimte deed deze minuut te veel aanroepen. | Wacht het aantal seconden uit Retry-After en probeer het dan opnieuw. Zie Rate limits. |
temporarily_unavailable |
503 | De aanroep liep tegen een gelijktijdige aanroep aan, of het werk waarop je terugbelde kan nog niet verder. | Wacht het aantal seconden uit Retry-After en probeer het dan opnieuw. |
server_error |
500 | Er ging iets mis aan de kant van Picked. | Probeer het een paar keer opnieuw, met steeds een langere pauze. Blijft het misgaan, neem dan contact met ons op. |
Veilig opnieuw proberen
Alleen rate_limited, temporarily_unavailable en server_error zijn het waard om opnieuw te proberen, altijd met een pauze ertussen. Bij elke andere code mislukt hetzelfde verzoek op dezelfde manier, met twee uitzonderingen die Idempotentie uitlegt: een ontvangst waarvan de reference op hetzelfde moment twee keer binnenkwam, en een procesgebeurtenis die Picked aannam maar nog niet kon verwerken.
Stuur een schrijfaanroep alleen opnieuw als Picked de herhaling herkent; op dezelfde pagina staat welke schrijfaanroepen het herkent.
Zoek een mislukte aanroep op
De pagina API-tokens toont de recente aanroepen van elk token onder Verzoeken. Je ziet alleen de mislukte, tot je Alleen fouten uitzet. Bij een fout bewaart Picked het antwoord dat het gaf; bij een 5xx alleen de code. Zo zie je het snelst welke aanroep misging en waarom.