Statuscodes
| Code | Betekenis | Wat te doen |
|---|---|---|
200 | Gelukt | — |
201 | Aangemaakt | Bewaar het id uit data |
401 | Sleutel ontbreekt, is ongeldig, ingetrokken of verlopen | Controleer de header; maak zo nodig een nieuwe sleutel |
402 | Organisatie niet geactiveerd of abonnement verlopen | De organisatie moet haar betaling afronden |
403 | Organisatie inactief, functie niet in het pakket of geen recht | Lees error.code; niet automatisch herhalen |
404 | Bestaat niet binnen deze organisatie | Controleer het ID en de organisatie van de sleutel |
409 | De boekhouding is nog niet ingericht (alleen /accounting) | Richt de Administratie eerst in de webapp in |
422 | Validatiefout, ongeldige statusovergang of pakketlimiet bereikt | Toon message en errors; pas het verzoek aan |
429 | Te veel verzoeken | Wacht Retry-After seconden en probeer opnieuw |
500 | Serverfout | Probeer later opnieuw met oplopende wachttijd |
503 | Tijdelijk niet beschikbaar (onderhoud) | Probeer later opnieuw |
Validatiefouten
Bij 422 door validatie bevat het antwoord een message en per veld een lijst meldingen in errors. Velden in lijsten krijgen hun positie mee, zoals lines.0.unit_price. Validatiemeldingen zijn Engelstalig; meldingen over bedrijfsregels zijn Nederlands.
{
"message": "The lines.0.unit_price field must be at least 0. (and 1 more error)",
"errors": {
"lines.0.unit_price": [
"The lines.0.unit_price field must be at least 0."
],
"customer_id": [
"The selected customer id is invalid."
]
}
}Bedrijfsregels
Een verzoek dat technisch klopt maar niet mag, geeft 422 met alleen een message. Voorbeelden:
Alleen conceptfacturen kunnen bewerkt worden.Alleen verzonden of verlopen offertes kunnen geaccepteerd worden.Deze statusovergang is niet toegestaan.(abonnementen)- Een klant verwijderen met open documenten geeft ook
blockers, bijvoorbeeld["2 open facturen", "actieve klantenportaaltoegang"].
Pakket- en limietfouten
Zit een functie niet in het pakket, dan krijg je 403 met package_feature_unavailable. Is een limiet van het pakket bereikt (bijvoorbeeld het maximum aantal klanten), dan krijg je 422 met subscription_limit_reached.
{
"message": "De limiet van je huidige pakket is bereikt. Upgrade je pakket om meer toe te voegen.",
"error": {
"code": "subscription_limit_reached",
"feature": "customers",
"resource": "customers",
"current_usage": 50,
"limit": 50,
"upgrade_url": "https://factora.one/subscription"
}
}De message is bedoeld voor mensen en kan veranderen. Bouw je logica op error.code en de HTTP-status.
Wanneer opnieuw proberen
- Wel herhalen:
429,500,502,503,504en netwerkfouten, met oplopende wachttijd (bijvoorbeeld 1, 2, 4, 8 seconden). - Niet herhalen:
400–422; het verzoek moet eerst anders. - Let op bij `POST`: na een time-out weet je niet zeker of het object is aangemaakt. Zoek het eerst op voordat je opnieuw verstuurt. Memoriaalboekingen ondersteunen
idempotency_key.
Lees ook
- LimietenPer API-sleutel 120 verzoeken per minuut. Zo lees je de limietheaders en ga je om met 429.
- Rechten en pakkettenWelke endpoints beschikbaar zijn hangt af van het pakket van de organisatie. Overzicht per onderdeel.
- Verzoeken en antwoordenHeaders, gegevensformaten, bedragen in centen, datums, paginering, filters en sorteren.