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ó neveamount(number, kötelező) — pozitívnak kell lennietype(string, opcionális, alapértelmezettexpense) — egy a következőkből:expense/income/prepaid_expense/pending_incomecategory(string, opcionális) — kategórianévnote(string, opcionális) — szabad szöveges megjegyzéscreated_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éges405— nem támogatott metódus (pl. GET a/api/ingestvégponton)501— a szerverről hiányzik aSUPABASE_SERVICE_ROLE_KEY500— 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_idmindig a token tulajdonosa; nem hamisítható - Az
org_idmindig 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ó.