Responskoder og feilhåndtering

APIet benytter HTTP-responskoder for å gi tilbakemelding på om forespørselen gikk bra eller ikke.

HTTP-responskoder

Responskoder for en forespørsel som gikk OK

Kode HTTP-betydning Betydning i API
200 OK Respons på en GET/PUT-metode som gikk bra
201 Created Respons på en POST-metode som gikk bra
203 No Content Respons på en DELETE-metode som gikk bra

Responskoder for en forespørsel med feil

Kode HTTP-betydning Betydning i API
400 Bad Request Feil i input-data til metode
401 Unauthorized Manglende pålogging, feil brukernavn/token
403 Forbidden Manglende tilgang uavhengig av pålogging / Konto stengt.
404 Not Found Fant ingen ressurs med denne URLen
405 Method Not Allowed Metoden er ikke tilgjengelig for denne ressursen.
500 Internal Server Error Uventet feil
503 Service Unavailable Throttle-grense overskredet/ nedetid eller oppgradering av APIet

Hvordan vet jeg om forespørselen gikk bra?

Du må alltid sjekke HTTP-returkoden du får tilbake fra APIet. Dersom koden ikke er 200, 201 eller 203 har det skjedd en feil som du må håndtere.
  • for kall med HTTP-metodene GET eller PUT : Sjekk at koden er 200 (OK)
  • for kall med HTTP-metoden DELETE: Sjekk at koden er 203 (No content)
  • for kall med HTTP-metoden POST: Sjekk at koden er 201 (Created)

Hvordan vet jeg hva som er feil?

Det vanligste er feil i validering av inputdata, dvs parametere mangler eller er feil. I slike tilfeller returnerer APIet responskoden 400 Bad Request sammen med en XML som forklarer feilen.

Eksempel 1: Respons når input-XML mangler i POST

<?xml version="1.0" encoding="utf-8"?>
<response status="error" http_code="400">
  <errors>
    <error>
      <message>Invalid input XML structure or encoding.</message>
    </error>
  </errors>
</response>

Eksempel 2: Respons når obligatoriske felter er ikke fylt ut i input-XML

<?xml version="1.0" encoding="utf-8"?>
<response status="error" http_code="400">
  <errors>
    <error>
      <message>The num_due_days field is required.</message>
      <field>num_due_days</field>
      <row_index/>
    </error>
    <error>
      <message>At least one invoice line is required.</message>
      <field>invoice_lines</field>
      <row_index/>
    </error>
    <error>
      <message>A main recipient is required.</message>
      <field>recipient_id</field>
      <row_index/>
    </error>
  </errors>
</response>
Opp til toppen av siden