Playbook
Napi könyvelési szinkron pollinggal
Külső könyvelési rendszer napi szinten szinkronizál a QUiCK-kel, amikor webhook nem elérhető vagy nem használható.
Ez a playbook egy egyszerű, robusztus polling-alapú szinkron mintát mutat be, amikor a webhook nem elérhető. A módszer az utoljára sikeres futás dátumát tárolja, és from_date-tel csak a változásokat kéri le.
Előfeltételek
- Public API token
- Perzisztens tároló az utolsó szinkron-dátumhoz (DB, kv, fájl)
1. Az utolsó szinkron dátum betöltése
Olvasd ki a helyi tárolóból a legutóbbi sikeres futás időpontját (ISO 8601). Ha nincs, kezdd 2024-01-01-től.
2. Költségek lapozott lekérése
curl -H "Authorization: Token $QUICK_TOKEN" \
"https://api.quick.riport.co.hu/1/expenses/?date_field=created&from_date=2026-07-13&ordering=-created&page_size=100"A válasz tartalmazza results, next, previous, count mezőket.
3. Lapozás a next URL-en
Kövesd a next URL-t addig, amíg null lesz — így minden lapot behúzol:
let url = `${BASE}/1/expenses/?date_field=created&from_date=${from}&ordering=-created&page_size=100`;
while (url) {
const res = await fetch(url, { headers: { Authorization: `Token ${TOKEN}` }});
const page = await res.json();
for (const row of page.results) upsertLocal(row);
url = page.next;
}4. Dedup id alapján
Az inkrementális szinkron során előfordulhat, hogy ugyanaz az id több futáson át visszajön (pl. módosítás). Használj INSERT ... ON CONFLICT (id) DO UPDATE mintát.
5. Bevételek szinkronja
Ugyanaz a minta bevételekre:
curl -H "Authorization: Token $QUICK_TOKEN" \
"https://api.quick.riport.co.hu/1/incomes/?from_date=2026-07-13"6. Pulse egyenleg
Zárásként kérd le a napi egyenleget:
curl -H "Authorization: Token $QUICK_TOKEN" https://api.quick.riport.co.hu/1/pulse/7. Szinkron-dátum frissítése
Ha minden lekérdezés sikeres, mentsd el az új szinkron-dátumot (a futás kezdetét, nem a végét — így nem csúsznak ki tételek).
Kapcsolódó endpointok
- GET/1/expenses/
- GET/1/incomes/
- GET/1/pulse/
Gyakori hibák
Átfedés nélküli időablak
Ha a szinkron-dátumot a futás **végére** állítod, az futás közben létrejött tételek kimaradnak. Mindig a futás kezdetét mentsd, vagy hagyj 1 perc bufferrel visszavezetést.
Túl sűrű polling
Percenkénti polling `429 Too Many Requests` hibát ad. Napi egyszeri (vagy óránkénti) futás elég a legtöbb esethez; kezeld a `429`-et exponenciális backoff-fal.