Foutcatalogus¶
Elke fout in application/problem+json heeft een type dat zegt welke soort fout het is. Deze
pagina somt de soorten op: de status waarmee elke soort binnenkomt, wanneer ze optreedt en wat je
eraan doet. Het foutformaat zelf staat op
Fouten, paginering en herhalen.
Zo lees je type¶
Publiceert je omgeving deze handleiding, dan is type het adres van de soort op deze pagina:
{
"type": "https://docs.example.nl/en/reference/errors/#not-found",
"title": "Not Found",
"status": 404,
"detail": "The prompt was not found.",
"request_id": "req_5Tn8..."
}
- Vergelijk
typeals één hele tekenreeks als je het adres van de handleiding van je omgeving kent, en vergelijk anders het deel na#. Dat deel is de soort en is in elke omgeving hetzelfde; het deel ervoor is het adres van de handleiding van de omgeving die antwoordde. - Een soort verandert nooit: niet met een nieuwe versie, niet met de taal van je verzoek en niet
als de tekst van
titleofdetailverandert. Beslis optypeenstatus, en opreason_codewaar een soort hieronder er een noemt, en toondetailaan mensen. Eenreason_codekan er een waarde bij krijgen: behandel een waarde die je niet kent als een gewoon probleem van zijnstatus. - Het adres wijst altijd naar de Engelse pagina. Deze Nederlandse pagina heeft dezelfde soorten
onder dezelfde ankers: vervang
/en/in het adres door/nl/. - Een omgeving die geen handleiding publiceert, antwoordt bij elke fout
"type": "about:blank".about:blanknoemt geen soort: val terug opstatus. - Een antwoord dat de gateway vóór Core zelf schrijft, draagt zijn soort op dezelfde manier
waar de omgeving haar handleiding publiceert, en
about:blankwaar ze dat niet doet. Dat geldt voorrequest-timeout,request-header-fields-too-large,bad-gatewayengateway-timeout, die alleen de gateway geeft, en voor elke andere soort wanneer de gateway die zelf geeft. Zo'n antwoord heeft geenX-Request-Id-header. - De vijf modelroutes antwoorden met fouten in de vorm van de leverancier, behalve de antwoorden
die daar staan. In die vorm is
typehet woord van de leverancier (invalid_request_error) en geen van de soorten hieronder. De uitzonderingen zijn problem+json zoals overal, met eentypezoals op elke andere route.
De soorten¶
| Status | Soort |
|---|---|
400 |
bad-request |
401 |
unauthenticated |
403 |
forbidden, policy-denied |
404 |
not-found |
405 |
method-not-allowed |
408 |
request-timeout |
409 |
conflict, still-referenced |
412 |
precondition-failed |
413 |
content-too-large |
415 |
unsupported-media-type |
416 |
range-not-satisfiable |
422 |
unprocessable-content, contradicts-stored |
429 |
too-many-requests, usage-cap-reached |
431 |
request-header-fields-too-large |
500 |
internal-error |
502 |
bad-gateway |
503 |
service-unavailable |
504 |
gateway-timeout |
bad-request¶
- Status:
400 - Wanneer: Het verzoek kan niet worden uitgevoerd zoals het is verstuurd: het HTTP-verzoek zelf klopt niet, of een login waarbij de persoon zelf inlogt keerde terug met een toestand die niet meer geldig is.
- Wat je doet: Corrigeer het verzoek. Mislukte het inloggen, laat de persoon het dan vanaf het begin opnieuw doen.
unauthenticated¶
- Status:
401, metWWW-Authenticate: Bearer - Wanneer: De sleutel of het token ontbreekt, is onjuist, verlopen of ingetrokken.
- Wat je doet: Controleer de secret van de API-sleutel, of meld je opnieuw aan voor een nieuw token. Herhalen met dezelfde gegevens geeft hetzelfde antwoord.
forbidden¶
- Status:
403 - Wanneer: Je bent herkend, maar mag dit niet, en de reden is geen beleid
(
policy-denied): de bewerking staat bijvoorbeeld niet open voor jouw rol, of de organisatie of een organisatie erboven is opgeschort. Een opschorting draagt"reason_code": "organisation_suspended"en hetdetailThe organisation this key belongs to is suspended. Ask its administrator.; op de Responses-routes staat hetzelfde woord inerror.code. Een subjecttoken wordt ook zo geweigerd op een route die hij niet mag bereiken, en bij een verzoek dat een andere persoon noemt dan de zijne:A subject token may not reach this route. - Wat je doet: Lees
detail. Gebruik gegevens die dit wel mogen. Bijorganisation_suspendedis je sleutel in orde: vraag wie de organisatie beheert om haar weer te activeren, en probeer het tot dan niet opnieuw.
policy-denied¶
- Status:
403 - Wanneer: Het beleid van je sleutel, of van de organisatie waar hij bij hoort, verbiedt deze
handeling: een model, een tool, een host of een resource die het beleid niet toestaat. Het is ook
het antwoord als je een ding mag zien maar de acties
van een regel de persoon het niet laten gebruiken, wijzigen of verwijderen, en als aanmaken,
hernoemen of nieuwe labels een ding een naam of labels zou geven die geen
write-regel toestaat. Er wordt niets geschreven. - Wat je doet: Lees
detail; daar staat wat is geweigerd. Pas het verzoek aan, of laat een beheerder het beleid aanpassen.
not-found¶
- Status:
404 - Wanneer: De resource bestaat niet, is van een andere organisatie, of ligt buiten het bereik van je sleutel: de capability staat uit of het beleid noemt de resource niet. Het antwoord is in alle drie de gevallen hetzelfde.
- Wat je doet: Controleer met
GET /keywat je sleutel bereikt, en daarna het id en het pad.
method-not-allowed¶
- Status:
405 - Wanneer: Het pad bestaat, maar niet met deze HTTP-methode.
- Wat je doet: Zoek de bewerking op in de API-referentie.
request-timeout¶
- Status:
408, beantwoord door de gateway - Wanneer: Het verzoek was, met de body erbij, na 300 seconden nog niet volledig aangekomen (tijdslimiet).
- Wat je doet: Stuur een kleinere body, of verstuur hem over een snellere verbinding.
conflict¶
- Status:
409 - Wanneer: De huidige toestand weigert het verzoek: een naam die al bestaat, een stap die niet
volgt uit de toestand van de resource, een organisatie die nog wordt ingericht of verwijderd,
een datastorerecord waarvan het unieke veld een waarde heeft die een ander record al heeft
(
detailnoemt het veld), of een schrijfactie waarvanIf-Matcheen versie noemt die niet meer de opgeslagen versie is. Die laatste draagt"reason_code": "stale_version"in de body; de andere oorzaken dragen geenreason_code. - Wat je doet: Lees
detail. Lees de resource opnieuw en beslis op haar huidige toestand; is de organisatie nog niet klaar, probeer het dan later opnieuw. Bijstale_versionlees je opnieuw en herhaal je je wijziging op wat nu is opgeslagen (sleutels).
still-referenced¶
- Status:
409, met een lijstconflicts - Wanneer: Je verwijdert iets dat nog in gebruik is, zoals een tool die een agent noemt.
- Wat je doet: Haal elk gebruik in
conflictsweg en verwijder daarna opnieuw. Elk item draagt eenreason_codeuit een vaste lijst waarop je client kan schakelen (iets verwijderen dat nog in gebruik is).
precondition-failed¶
- Status:
412 - Wanneer: Een schrijfactie noemt in een header de toestand die ze verwacht, en wat is
opgeslagen is nu niet in die toestand:
If-Matchdraagt eenETagdie het record niet meer heeft, omdat iemand het sinds je het las heeft geschreven of verwijderd, ofIf-None-Match: *vraagt een record aan te maken dat al bestaat. Er is niets geschreven. - Wat je doet: Lees het record opnieuw, beslis op wat het nu bevat en stuur de schrijfactie
met de nieuwe
ETag(datastores). Is bij een schrijfactie die alleen mag aanmaken de sleutel bezet, lees dan het record onder die sleutel en vervang het met zijnETag, of kies een andere sleutel.
content-too-large¶
- Status:
413 - Wanneer: De body of de upload is groter dan de route aanneemt. Voor de meeste routes geeft de gateway dit antwoord; voor modelaanroepen en uploads antwoordt Core, en noemt de limiet waar dat kan.
- Wat je doet: Stuur minder. Hetzelfde verzoek wordt opnieuw geweigerd.
unsupported-media-type¶
- Status:
415 - Wanneer: De body is geen soort bestand dat deze route aanneemt. Core beslist op de bytes
zelf, niet op de header
Content-Type. - Wat je doet: Stuur een van de typen die
detailnoemt.
range-not-satisfiable¶
- Status:
416, metContent-Range: bytes */<grootte> - Wanneer: Een download vroeg om een
Rangedie voorbij het einde van het bestand begint. - Wat je doet: Lees de grootte uit
Content-Rangeen vraag een bereik daarbinnen.
unprocessable-content¶
- Status:
422, meestal met een lijsterrors - Wanneer: Het verzoek is begrepen, en een of meer waarden erin zijn geweigerd: een ontbrekend veld, een verkeerd type, of een waarde die Core niet aanneemt.
- Wat je doet: Corrigeer elk veld in
errors(foutformaat). Zonder lijst lees jedetail. Een schrijfactie die de schrijffunctie van een datastore weigerde, draagt de reden inrefusal. Een schrijfactie waarover de functie niets besliste, draagterror_code:trapped,fuel_exhausted,memory_exceeded,timeout,invalid_arguments,invalid_response, ofexecutor_failedals de functie helemaal niet kon draaien (verwijderd, geen gepubliceerde versie met dat nummer, haar laatste versie leest of schrijft nu, of op dat moment geen ruimte om haar te draaien). Een tool die op een computer draait, genoemd waar je installatie er geen heeft voor je organisatie, draagt"reason_code": "computer_not_configured"in de body, met hetdetailThis tool is not configured on this deployment.; op de Responses-routes is hetzelfde woorderror.code. Niets in het verzoek lost dat op.
contradicts-stored¶
- Status:
422, met een lijstconflicts - Wanneer: Het verzoek is goed gevormd, maar iets dat al is opgeslagen spreekt het tegen: bijvoorbeeld een smaller vocabulaire terwijl sleutels nog een label gebruiken dat zou vervallen.
- Wat je doet: Pas aan wat je stuurt, of pas eerst elke rij in
conflictsaan. Alle tegenspraken staan er in één keer, tot en met de eerste honderd. Elke rij draagt eenreason_code; de enige waarde die een422nu gebruikt isoutside_vocabulary.
too-many-requests¶
- Status:
429, soms metRetry-After - Wanneer: Je verstuurt verzoeken sneller dan de omgeving toestaat; je organisatie, of één persoon erin, houdt al zoveel eventstreams open als mag; of je organisatie heeft al zoveel workflowruns open, of zoveel workflowtriggers, als de omgeving toestaat.
- Wat je doet: Wacht zo lang als
Retry-Afterzegt als die er is, en herhaal anders met oplopende wachttijden. Sluit een stream die je niet meer leest, laat een run eindigen, of verwijder een trigger.
usage-cap-reached¶
- Status:
429, metRetry-After - Wanneer: De maandlimiet van je organisatie of van je sleutel is bereikt.
detailzegt welke. - Wat je doet:
Retry-Afterbevat de seconden tot de limiet opnieuw begint; eerder herhalen geeft hetzelfde antwoord. Laat de limiet verhogen als het werk niet kan wachten (je maandlimiet).
request-header-fields-too-large¶
- Status:
431, beantwoord door de gateway - Wanneer: De headers van het verzoek zijn samen groter dan de gateway aanneemt.
- Wat je doet: Stuur minder of kortere headers.
internal-error¶
- Status:
500 - Wanneer: Er ging iets mis dat Core niet voorzag. De body zegt nooit wat.
- Wat je doet: Bewaar het
request_iden meld de fout als die blijft terugkomen. Kijk eerst wat je veilig kunt herhalen.
bad-gateway¶
- Status:
502, beantwoord door de gateway - Wanneer: De gateway kreeg geen bruikbaar antwoord van Core, bijvoorbeeld tijdens een herstart.
- Wat je doet: Herhaal met oplopende wachttijden, binnen wat je veilig kunt herhalen.
service-unavailable¶
- Status:
503, soms metRetry-After - Wanneer: Iets wat Core nodig heeft is even onbereikbaar, een ander verzoek wijzigt op dat moment hetzelfde, of de gateway weert verzoeken omdat hij overbelast is.
- Wat je doet: Wacht zo lang als
Retry-Afterzegt als die er is, en herhaal anders met oplopende wachttijden.
gateway-timeout¶
- Status:
504, beantwoord door de gateway - Wanneer: Core antwoordde niet binnen de tijd die de route toestaat.
- Wat je doet: Het verzoek kan toch zijn uitgevoerd. Lees de resource voordat je opnieuw verstuurt, of herhaal met een idempotentiesleutel.