← Vissza a Billbookhoz

Távoli Könyvelési API

Utolsó frissítés: 2026. május 10.

Rögzíts bejegyzéseket cURL-ből, iOS Parancsokból vagy automatizálási szkriptekből személyes API-tokennel. A token csak írásra szól — beszúrhat tranzakciókat, és olvashatja a kategória- / címkelistákat, de nem olvashat és nem törölhet semmilyen tranzakciós adatot.

1. Token beszerzése

Jelentkezz be adminként, nyisd meg a Beállítások → 🔑 Távoli Könyvelési API menüt, és kattints a „Token generálása" gombra.

A nyílt szövegű token csak egyszer jelenik meg — másold ki azonnal. A szerver csak a SHA-256 hash-t tárolja, így az elveszett token csak rotálással cserélhető (ami érvényteleníti a régit).

Token formátuma: bb_<userId>_<secret>. Minden kérésben küldd Authorization: Bearer <token> formában.

2. POST /api/ingest — egy tranzakció beszúrása

A kérés törzse egy JSON objektum a következő mezőkkel:

  • title (string, kötelező) — a tranzakció neve
  • amount (number, kötelező) — pozitívnak kell lennie
  • type (string, opcionális, alapértelmezett expense) — egy a következőkből: expense / income / prepaid_expense / pending_income
  • category (string, opcionális) — kategórianév
  • note (string, opcionális) — szabad szöveges megjegyzés
  • created_at (string, opcionális) — ISO 8601; alapértelmezett a mostani idő
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 — kategóriák listázása

Visszaadja az admin kategórianeveit az irányítópult legördülő menüjének sorrendjében. A válasz csak a neveket tartalmazza — nincsenek benne ids, user ids vagy tranzakciós adatok.

curl https://billbook.me/api/ingest/categories \
  -H "Authorization: Bearer bb_<userId>_<secret>"

# response: 200
{ "categories": ["Food", "Rent", "..."] }

4. GET /api/ingest/tags — nemrég használt címkék

Visszaadja a legutóbb frissített címke-előtagokat (a címekbe ágyazott #XXX jelölőket). Alapértelmezetten 20; használd a ?limit= paramétert a felülbíráláshoz (max. 100).

Üres tömböt ad vissza hiba helyett, ha a tag_prefixes tábla még nem létezik.

curl "https://billbook.me/api/ingest/tags?limit=20" \
  -H "Authorization: Bearer bb_<userId>_<secret>"

# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }

5. Hibakódok

Minden hiba JSON: { "error": "üzenet" }.

  • 401 — hiányzó engedély, hibás formátumú token, visszavont vagy nem egyező
  • 402 — az előfizetés lejárt; az íráshoz megújítás szükséges
  • 405 — nem támogatott metódus (pl. GET a /api/ingest végponton)
  • 501 — a szerverről hiányzik a SUPABASE_SERVICE_ROLE_KEY
  • 500 — egyéb belső hiba

6. Biztonság és korlátok

Tervezésénél fogva a token csak a saját szervezetébe írhat — nem adhatja ki magát más orgs-nak, és nem olvashat meglévő adatokat:

  • A user_id mindig a token tulajdonosa; nem hamisítható
  • Az org_id mindig a tulajdonos org-ja; az orgs közötti írás lehetetlen
  • A tokeneket csak az admin szerepkör kapja (a manager / staff 403-at kap)
  • A válaszok soha nem szivárogtatnak ki más sorokat — csak { id, created_at } kerül vissza
  • A visszavonás azonnali; bármikor rotálható a Beállításokból

7. iOS Parancs példa

Adj hozzá egy „URL tartalmának lekérése" műveletet, URL https://billbook.me/api/ingest, metódus POST, fejlécek Authorization: Bearer bb_... és Content-Type: application/json, a kérés törzse JSON-ként: {"title":"Kávé","amount":120,"type":"expense"}. Kösd a title és amount mezőket a Parancs bemenetéhez vagy „Kérdezés minden alkalommal" változókhoz.

Ez a dokumentum gyors referencia; a tényleges viselkedésre nézve a backend kód az irányadó.