Hopp til innhold
skribbskribb

Utviklere

Feil

Alt er JSON, også feilene. Koden er den du bygger logikk på.
Alle sidene

Formen

Alt er JSON, også feilene. error er koden du skiller på i koden din, og den eneste du bør bygge logikk rundt. message forklarer på norsk hva som er galt, field peker på feltet når feilen gjelder ett bestemt, og docs lenker rett til avsnittet her som svarer på det.

En typisk feil
{
  "error": "bad-carrier",
  "message": "Ukjent fraktselskap. Gyldige verdier er posten, postnord og helthjem.",
  "field": "carrier",
  "docs": "https://skribb.no/utviklere/referanse/bestillinger"
}

Noen svar har et felt til som sier hva tilstanden faktisk er, så du kan avstemme i stedet for å prøve igjen på noe som aldri kan gå.

Koder som følger et mønster

Noen koder lages av et feltnavn i stedet for å være skrevet én for én. Regelen under lar deg kjenne igjen en kode du aldri har sett før.

missing-scope:<scope>403
Nøkkelen mangler tilgangen ruta krever, og koden navngir den. missing-scope:orders:read betyr at du må huke av for orders:read på en ny nøkkel.
bad-<felt>422
Feltet gikk ikke an å bruke slik det ble sendt. field i svaret navngir det, så du slipper å lete. De feltene som trenger en mer presis forklaring enn dette, står oppført hver for seg over.
shipping_rates-<hva>422
En fraktrad går ikke an å bruke, og resten av koden sier hvorfor: shipping_rates-service-required, shipping_rates-amount_ore-too-large og så videre. Hele kallet avvises, så tabellen står urørt.
shipping_countries-<hva>422
Landlista går ikke an å bruke. Landene må være ISO-3166 alfa-2, og lista kan ikke være tom.
download_ttl_hours-out-of-range422
Nedlastingsgrensene er utenfor det som er lov: 1 til 8760 timer, og 1 til 1000 nedlastinger. download_max_count-out-of-range er den samme feilen for det andre feltet.

Alle kodene

Kodene står gruppert etter statusen de kommer tilbake med, og hver gruppe sier hva du bør gjøre med den. Verdien i error er den eksakte strengen rutene svarer med, så du kan sammenligne på den direkte. Hver kode har sin egen lenke, og det er den docs i feilsvaret peker på.

400Bad Request

Vi klarte ikke å lese bodyen du sendte i det hele tatt. Ingenting ble lagret. Sjekk at du faktisk sender det du tror, og at Content-Type stemmer.

  • bad-json

    Bodyen er ikke gyldig JSON. Vi kom aldri så langt som til å se på feltene.

  • bad-multipart

    Skjemaet gikk ikke an å lese. Content-Type sa multipart/form-data, men innholdet var ikke et skjema vi kunne pakke ut.

401Unauthorized

Ikke prøv igjen med den samme nøkkelen. Den er enten borte, ukjent eller trukket tilbake, og et nytt forsøk gir det samme svaret.

  • missing-bearer

    Det var ingen Authorization: Bearer på forespørselen i det hele tatt.

  • invalid-key

    Nøkkelen finnes ikke. Som regel er den avkortet under kopiering: en hel nøkkel er skribb_sk_ og 43 tegn til.

  • revoked-key

    Nøkkelen er trukket tilbake. Lag en ny under Innstillinger, fanen API.

  • expired-token

    Tokenet var gyldig, men levetiden er ute. Dette gjelder tokens en klient har fått godkjent av eieren; en nøkkel du har laget selv utløper ikke.

403Forbidden

Nøkkelen er gyldig, men rekker ikke hit. Lag en ny med riktig avhuking, eller godta avtalen ruta ber om. Å prøve igjen uendret hjelper ikke.

  • account-inactive

    Kontoen som eier publikasjonen er stengt eller midlertidig sperret. Dette henger på kontoen, ikke på nøkkelen, så en ny nøkkel løser det ikke.

  • dpa-not-accepted

    Eieren av publikasjonen må godta Tillegg E i databehandleravtalen før abonnentlista kan leses. Dette henger på personen, ikke på nøkkelen, så en ny nøkkel løser det ikke.

404Not Found

Det finnes ingenting med den id-en i din publikasjon. En id som hører til en annen publikasjon svarer også 404, ikke 403, fordi svaret ellers ville røpet at den finnes.

  • not-found

    Ingenting med den id-en i din publikasjon.

409Conflict

Forespørselen er forståelig, men går ikke an akkurat nå. Å prøve igjen uendret hjelper ikke. Noen av disse svarer med hva tilstanden faktisk er, så du kan avstemme i stedet for å gjette.

  • duplicate-code

    Du har allerede en rabattkode med dette navnet. To regler kan ikke dele kode i samme butikk, siden kunden bare skriver inn den ene strengen.

  • shop-not-enabled

    Nettbutikken er ikke slått på for denne publikasjonen. /me forteller deg det uten å måtte prøve.

  • not-a-site-publication

    Sider og meny finnes bare på en publikasjon av typen nettsted. En blogg har ingen.

  • komplett-plan-required

    Nettstedet har ikke noe abonnement. Da vises verken kontaktskjemaet eller chat-vinduet for besøkende, så det finnes ingen meldinger å hente. Enkel holder, tross navnet på koden: den er fra da skjemaet fulgte Komplett, og står fordi noen kan ha bygget mot den.

  • no-custom-font

    font eller heading_font ble satt til custom, som er skriftfilen publikasjonen har lastet opp selv, og det ligger ingen der. Nøkkelen står i vokabularet fordi en publikasjon som allerede bruker den, skal beholde skriften sin om filen en dag blir borte. Feltet det gjelder står i field.

  • plan-required

    Planlegging er en betalt fordel på publikasjonen, og eieren har ingen aktiv pakke. Enhver av dem holder: Pro, Enkel eller Komplett. /me forteller deg hvilken publikasjonen har.

  • already-published

    Du kan ikke sette et publisert innlegg i kø. Det er kladder som venter på et tidspunkt, og et innlegg som er ute, har ingenting å vente på.

  • not-published

    Bare et publisert innlegg kan sendes som nyhetsbrev. En kladd har ingen side å lenke til, så et brev om den ville sendt hver abonnent til en adresse som ikke finnes. Publiser først, send etterpå.

  • already-sent

    Innlegget har gått ut som nyhetsbrev én gang, og svaret sier når. Det finnes ingen force her: en ny utsending ville lagt det samme brevet i de samme innboksene, og det kan ikke gjøres om. Publiserte du med send_newsletter: false, teller sperren som en utsending, og innlegget kan ikke sendes senere over API-et.

  • email-quota-reached

    Utsendingen ville gått forbi taket for e-post denne måneden, så vi stanser den før noe er sendt. Svaret bærer recipient_count og quota_remaining, så du ser hvor mye som mangler. Taket vokser med abonnentene og kan utvides med et tillegg i oversikten, og det nullstilles ved månedsskiftet.

  • already-scheduled

    Innlegget står allerede i kø, og svaret sier når. Ett innlegg kan bare stå i kø én gang: skal du flytte tidspunktet, avlys først og legg det inn på nytt.

  • slug-taken

    Det finnes allerede et innlegg på den adressen. Sender du slug ved opprettelse, er det nettopp dette svaret som gjør kallet trygt å gjenta: den andre gangen lager vi ikke en tvilling, vi sier fra. Skal du endre innlegget som ligger der, hent det og bruk PATCH.

  • not-a-physical-product

    Bare fysiske produkter har lager. Et digitalt produkt har ingen beholdning å justere.

  • inventory-not-tracked

    Produktet har ingen beholdning å endre på. Sett et tall med set før du begynner å justere med delta.

  • would-go-negative

    Trekket ville gjort beholdningen negativ. Svaret bærer inventory med beholdningen slik den faktisk er, så du kan avstemme mot ditt eget tall i stedet for å prøve igjen på noe som ikke kan gå.

  • not-fulfillable

    Bestillingen kan ikke merkes som sendt fra statusen den har nå. Svaret bærer status, så du ser hvorfor. Som regel er den alt merket, og da er dette det som hindrer at kjøperen får to beskjeder.

  • not-refundable

    Bare betalte og sendte bestillinger kan refunderes.

  • too-many-pages

    Publikasjonen har alt så mange egne sider som den får ha. Slett en før du lager en til.

  • idempotency-key-in-progress

    En forespørsel med den samme Idempotency-Key kjører allerede. Vent et øyeblikk og spør på nytt: da får du svaret den første ga.

  • page-in-menu

    Sida kan ikke slettes så lenge menyen peker på den, for da ville lenka i toppen gått til ingenting. menu i svaret lister lenkene det gjelder, med index, label og href. Ta dem ut med PUT /v1/menu, og prøv igjen. Vi rydder ikke menyen for deg: hva som skal stå der, er ditt valg.

413Content Too Large

Filen er større enn vi tar imot. Komprimer eller skaler den ned.

415Unsupported Media Type

Innpakningen er ikke den ruta venter. Dette er om formatet, ikke om innholdet.

  • type

    Filtypen støttes ikke. Bruk PNG, JPG, WebP, SVG eller GIF.

  • expected-multipart

    /media tar imot en fil, ikke JSON. Send multipart/form-data med feltene purpose og file.

422Unprocessable Content

Vi leste bodyen, men kan ikke bruke den. Koden navngir hva som er galt, og feltet står i field når feilen gjelder ett bestemt. Ingenting ble lagret, heller ikke delvis.

  • send_newsletter-needs-publish

    send_newsletter betyr bare noe sammen med publish: true. Vi avviser den heller enn å overse den: en utsendingssperre som blir stilltiende ignorert, er nettopp slik en e-post går til alle abonnentene uten at noen skjønner hvorfor.

  • publish_at-in-the-past

    Tidspunktet har vært. Et innlegg lagt inn bakover i tid ville blitt publisert på første kryss, som aldri er det noen mente med å planlegge det.

  • empty-update

    Du sendte ingen felt å endre. Kommer den når du trodde du sendte noe, mangler som regel Content-Type: application/json, og da ble bodyen aldri lest.

  • need-exactly-one-of-delta-or-set

    Lagerjustering tar enten delta eller set. Begge, eller ingen, og vi måtte gjettet hva du mente.

  • content-and-markdown

    Brødteksten kom både som content og som markdown. Vi velger ikke for deg hvilken som gjelder. Send én av dem.

  • digital-needs-delivery

    Et digitalt produkt må levere noe når det blir kjøpt. Sett delivery_file_key, delivery_reveal_text eller begge.

  • shadowed-slug

    Den adressen eier skribb selv. Sida ville blitt lagret og så aldri vist, fordi den faste ruta vinner over din.

  • empty

    Filen er tom.

  • missing-file

    Skjemaet hadde ikke noe file-felt.

  • bad-purpose

    purpose må være image, delivery eller post. from-url tar bare image og post.

  • url-required

    from-url trenger en url.

  • url-malformed

    Adressen lot seg ikke lese som en adresse.

  • url-too-long

    Adressen er lengre enn 2000 tegn.

  • url-must-be-https

    Vi henter bare over https.

  • url-no-credentials

    Adressen har brukernavn eller passord i seg, og det sender vi ikke videre.

  • url-not-public

    Adressen peker inn i et privat nett, på maskinen selv eller på et internt navn. Den kan vi ikke hente fra. Gjelder også en adresse som sender oss videre dit.

  • url-is-skribb

    Adressen peker på skribb selv.

  • url-too-many-redirects

    Adressen sendte oss videre mer enn tre ganger.

  • url-not-an-image

    Det som kom tilbake, var ikke et bilde vi tar. Vi tar PNG, JPG, WebP og GIF, og det er innholdstypen som avgjør, ikke hva adressen slutter på.

  • url-svg-not-allowed

    SVG er et dokument som kan kjøre kode, og det ville blitt servert fra vårt eget mediedomene. Send det som PNG i stedet.

  • bad-carrier

    Ukjent fraktselskap. Gyldige verdier er posten, postnord og helthjem.

  • bad-status

    Ukjent status å filtrere på. Bestillinger tar paid, fulfilled, canceled og refunded; abonnenter tar venter, bekreftet og avmeldt.

  • bad-format

    Gyldig verdi er markdown.

  • bad-kind

    kind må være kontakt eller chat.

  • bad-limit

    limit må være et heltall innenfor det ruta tillater. Grensa står på hver rute.

  • bad-cursor

    Cursoren er ikke lesbar, eller den hører til en annen liste. En cursor fra produkter virker ikke på bestillinger.

  • bad-updated_since

    updated_since må være et tidspunkt på ISO 8601-form.

  • bad-slug

    Adressen kan bare inneholde små bokstaver, tall og bindestrek.

  • bad-note

    Notatet trenger en tittel, og en eventuell link_url må begynne med http:// eller https://.

  • bad-categories

    Hver kategori må ha en slug av små bokstaver, tall og bindestrek, og et navn. Vi lagrer ikke bare de gyldige.

  • too-many-categories

    Flere kategorier enn en publikasjon får ha.

  • too-many-items

    Flere menylenker enn det er plass til. max i svaret sier hvor mange det er.

  • no-such-page

    En menylenke peker på en side nettstedet ikke har. slug i svaret er den vi ikke fant, index er lenka det gjelder, og pages lister sidene som finnes. Lenker med flere ledd (/posts/min-artikkel) og adresser ut av nettstedet blir ikke vurdert.

  • bad-taxonomy

    Ukjent kategoritype. Innlegg tar categories og tags, og ikke noe annet.

  • bad-idempotency-key

    Idempotency-Key er for lang. Hold deg under 255 tegn.

  • idempotency-key-required

    Send en Idempotency-Key du finner på selv, så er det trygt å prøve igjen. Andre steder er hodet valgfritt, fordi et svar som går tapt der, koster en dublett du kan slette. Her koster det det samme brevet én gang til i alle innbokser, og det er bare du som vet at de to forespørslene var den samme.

  • idempotency-key-reused

    Den Idempotency-Key er brukt før, med en annen body. Velg en ny per forespørsel, ikke per forsøk.

429Too Many Requests

Retry-After sier hvor lenge du bør vente. Et minutt holder alltid.

  • rate-limited

    For mange forespørsler på kort tid. Retry-After sier hvor lenge du bør vente.

502Bad Gateway

Feilen er på vår side eller hos noen vi snakker med. Dette er verdt å prøve igjen, gjerne med litt venting mellom forsøkene.

  • newsletter-suppression-failed

    Du ba om publisering uten nyhetsbrev, og vi fikk ikke stanset utsendingen. Da publiserer vi ikke: innlegget står som kladd, ingenting er sendt, og du kan prøve igjen. «Ingen e-post gikk ut» og «en e-post gikk til alle» er ikke to nyanser av det samme, og bare den ene kan gjøres om.

  • url-unreachable

    Vi nådde ikke fram til adressen.

  • tenant-error

    Vi nådde ikke fram til publikasjonen din.

  • unreachable

    Publikasjonen svarte ikke. Som regel forbigående.

  • no-id

    Publikasjonen svarte uten å oppgi en id for det som ble laget.

  • bad-shape

    Publikasjonen svarte med noe vi ikke kjente igjen. Det er en feil på vår side.

  • not-configured

    Publikasjonen mangler nøkkelen vi bruker for å skrive innhold til den. Dette må vi rette. Si fra, så ordner vi det.

  • no-pat

    Publikasjonen ga oss ingen skrivenøkkel da vi spurte. Som regel forbigående, så det er verdt et forsøk til.

  • domain-status-unavailable

    Domenet er koblet til, men tjenesten som kjenner statusen og DNS-postene, svarte ikke. Vi svarer heller ikke halvveis: et domene uten poster i svaret ser ut som et domene som ikke trenger noen, og det er den misforståelsen som koster mest her.

  • refund-failed

    Stripe tok ikke imot refusjonen. Bestillingen står som før, så ingen penger er på vei noe sted.

503Service Unavailable

Noe i oppsettet mangler. Å prøve igjen hjelper ikke før det er gjort ferdig i oversikten.