Feil
Feil bruker HTTP-statuskoder og en brødtekst etter RFC 9457 med
Content-Type: application/problem+json:
{ "type": "https://bonafidesign.com/problems/validation-error", "title": "Validation failed", "status": 422, "detail": "The request is invalid.", "errors": [ { "pointer": "/recipients/0/email", "message": "Invalid email address" }, { "pointer": "/recipients", "message": "Missing recipient for role 'company'." }, { "pointer": "/recipients/1/role", "message": "Unknown role 'cfo'.", "hint": "Template roles: client, company" } ], "requestId": "req_V1StGXR8Z5jdHi6BmyT2"}| Medlem | Betydning |
|---|---|
type |
Stabil identifikator: https://bonafidesign.com/problems/<slug>. Forgrein på denne (eller på slugen), ikke på title eller detail |
title |
Kort sammendrag av typen |
status |
HTTP-statusen |
detail |
Lesbar forklaring av akkurat denne forekomsten |
errors |
Valideringsproblemer: pointer (en JSON Pointer inn i forespørselens brødtekst, eller inn i spørringen eller variablene), message, valgfritt hint |
requestId |
Finnes også i headeren x-request-id. Oppgi den til kundestøtte |
upgradeUrl |
Ved plangrenser (402, 403 plan-upgrade-required): hvor du legger inn et kort eller oppgraderer |
Alle valideringsproblemene i en forespørsel rapporteres samtidig, så en klient kan vise hvert av dem ved riktig felt.
Feiltyper
Section titled “Feiltyper”| Status | Slug | Når |
|---|---|---|
| 400 | bad-request |
Ugyldig forespørsel, for eksempel en brødtekst som ikke er gyldig JSON |
| 401 | unauthorized |
Manglende, ugyldig formatert, tilbakekalt eller utløpt legitimasjon |
| 402 | payment-required |
Et Free-arbeidsområde har fullført de inkluderte konvoluttene for perioden; legg inn et kort eller oppgrader (testmodus påvirkes ikke) |
| 403 | forbidden |
Autentisert, men ikke tillatt: en manglende tillatelse, en API-nøkkel på et endepunkt som bare godtar dashbordet, en forespørsel på tvers av nettsteder |
| 403 | plan-upgrade-required |
Funksjonen er ikke med i arbeidsområdets plan |
| 403 | verification-required |
En signatar sendte inn før engangskoden var bekreftet |
| 404 | not-found |
Ressursen finnes ikke i organisasjonen din, eller ruten finnes ikke |
| 409 | invalid-state |
Handlingen passer ikke med gjeldende tilstand, f.eks. annullering av en fullført konvolutt eller oppretting av en økt for en mottaker som har signert |
| 409 | not-your-turn |
En signatar sendte inn før tidligere rutinggrupper var ferdige |
| 409 | document-mismatch |
Dokumentet er endret siden signataren fikk se det (viewedDocumentHash) |
| 409 | already-signed |
E-postadressen har allerede signert denne faste lenken |
| 409 | in-use |
Sletting av en mal som brukes av konvolutter eller signeringslenker |
| 409 | no-draft |
Publisering av en mal som ikke har noe utkast |
| 409 | idempotency-in-progress |
En forespørsel med samme Idempotency-Key kjører fortsatt |
| 409 | conflict |
Andre konflikter |
| 410 | gone |
En signeringsøkt som allerede er brukt eller har utløpt |
| 413 | payload-too-large |
En opplasting over grensen (25 MB for malfiler) |
| 415 | unsupported-media-type |
En opplasting av en type som ikke støttes |
| 422 | validation-error |
Brødteksten, spørringen eller variablene er ugyldige; se errors |
| 422 | idempotency-key-reused |
Samme Idempotency-Key ble brukt med en annen forespørsel |
| 422 | conversion-failed |
Et Word-dokument kunne ikke konverteres |
| 429 | rate-limited |
For mange forespørsler; vent i Retry-After sekunder når den finnes |
| 500 | internal |
Uventet feil. Trygt å prøve på nytt med samme Idempotency-Key |
| 501 | not-implemented |
Funksjonen finnes i skjemaet, men ikke ennå (f.eks. SMS-koder) |
| 503 | converter-unavailable, billing-unavailable |
En avhengighet er midlertidig utilgjengelig; prøv igjen senere |
Håndtere feil
Section titled “Håndtere feil”const res = await fetch('https://api.bonafidesign.com/v1/envelopes', { method: 'POST', headers, body });if (!res.ok) { const problem = await res.json(); // application/problem+json const slug = problem.type.split('/').pop(); if (slug === 'validation-error') { for (const e of problem.errors) form.setError(e.pointer, e.message); } else if (slug === 'payment-required') { showUpgrade(problem.upgradeUrl); } else { throw new Error(`${problem.title} (${problem.requestId})`); }}