Fjernregnskap-API
Sist oppdatert: 10. mai 2026
Logg oppføringer fra cURL, iOS-snarveier eller automatiseringsskript med en personlig API-token. Tokenet er kun for skriving — kan sette inn transaksjoner og lese kategori- / tag-lister, men kan ikke lese eller slette transaksjonsdata.
1. Hent et token
Logg inn som admin, åpne Innstillinger → 🔑 Fjernregnskap-API, og klikk "Generer token".
Klartekst-tokenet vises kun én gang — kopier det umiddelbart. Serveren lagrer bare SHA-256-hashen, så et tapt token kan kun erstattes ved rotasjon (som ugyldiggjør det gamle).
Token-format: bb_<userId>_<secret>. Send det med hver forespørsel som Authorization: Bearer <token>.
2. POST /api/ingest — sett inn én transaksjon
Forespørselsbody er et JSON-objekt med følgende felter:
title(string, påkrevd) — transaksjonsnavnamount(number, påkrevd) — må være positivtype(string, valgfritt, standardexpense) — en avexpense/income/prepaid_expense/pending_incomecategory(string, valgfritt) — kategorinavnnote(string, valgfritt) — fritt notatcreated_at(string, valgfritt) — ISO 8601; standard er nå
curl -X POST https://billbook.me/api/ingest \
-H "Authorization: Bearer bb_<userId>_<secret>" \
-H "Content-Type: application/json" \
-d '{"title":"Coffee","amount":120,"type":"expense","category":"Food"}'
# response: 201
{ "id": "...", "created_at": "..." }3. GET /api/ingest/categories — liste kategorier
Returnerer admins kategorinavn i samme rekkefølge som dropdown i dashbordet. Svaret inneholder bare navn — ingen ids, user ids eller transaksjonsdata.
curl https://billbook.me/api/ingest/categories \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "categories": ["Food", "Rent", "..."] }4. GET /api/ingest/tags — nylig brukte tagger
Returnerer de nylig oppdaterte tag-prefiksene (#XXX-markørene innebygd i titler). Standard 20; bruk ?limit= for å overstyre (maks 100).
Returnerer en tom array i stedet for en feil hvis tabellen tag_prefixes ikke finnes ennå.
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. Feilkoder
Alle feil er JSON: { "error": "melding" }.
401— manglende autorisasjon, feil token-format, tilbakekalt eller ikke samsvarer402— abonnement utløpt; fornyelse kreves for å skrive405— metode ikke støttet (f.eks. GET på/api/ingest)501— serveren manglerSUPABASE_SERVICE_ROLE_KEY500— annen intern feil
6. Sikkerhet og begrensninger
Etter design kan tokenet kun skrive til sin egen organisasjon — kan ikke utgi seg for andre orgs eller lese eksisterende data:
user_ider alltid token-eieren; kan ikke forfalskesorg_ider alltid eierens org; skriving mellom orgs er umulig- Tokens utstedes kun til admin-rollen (manager / staff får 403)
- Svar lekker aldri andre rader — kun
{ id, created_at }returneres - Tilbakekalling er umiddelbar; roter når som helst fra Innstillinger
7. iOS-snarvei eksempel
Legg til en "Hent innhold fra URL"-handling, URL https://billbook.me/api/ingest, metode POST, headers Authorization: Bearer bb_... og Content-Type: application/json, og body som JSON: {"title":"Kaffe","amount":120,"type":"expense"}. Koble title og amount til Snarvei-inndata eller "Spør hver gang"-variabler.
Dette dokumentet er en hurtigreferanse; backend-koden er fasit for faktisk atferd.