Tokovi događaja
Klik Račun nudi dva namjenski odvojena toka. SSE je dio Public API-ja i javlja promjene asinkronih operacija. TLS/TCP je zasebno ugovoreni kanal za pouzdanu sinkronizaciju dokumenata. Ne koriste istu adresu, vjerodajnice ni oblik poruke.
SSE - promjene operacija
Potrebna je ovlast events:read. Bearer token šalje se isključivo u zaglavlju Authorization; token u URL-u nije podržan. Tok je vezan uz istog API klijenta i OIB kao ostali zaštićeni resursi.
curl --no-buffer 'https://iiproxy.sekkun.co/public/v1/events' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Last-Event-ID: $LAST_EVENT_ID"
Pri prvom spajanju izostavite Last-Event-ID. Poslužitelj postavlja početnu točku na trenutačno stanje i najprije šalje stream.ready. Nakon toga šalje samo nove promjene:
retry: 3000
event: stream.ready
data: {"type":"stream.ready","transport":"SSE","cursor":null}
id: eyJ1cGRhdGVkQXQiOiIuLi4ifQ
event: operation.updated
data: {"type":"operation.updated","at":"2026-09-27T10:00:00.000Z","operation":{"operationId":"...","kind":"ISSUE","status":"ISSUED"}}
id je neproziran pokazivač. Spremite ga tek nakon uspješne obrade cijelog događaja. Nakon prekida pošaljite ga kao Last-Event-ID; Klik Račun tada ponavlja kasnije promjene redoslijedom kojim su spremljene. Ne rastavljajte niti izrađujte vlastitu vrijednost pokazivača.
Mogući događaji:
| Naziv | Značenje |
|---|---|
stream.ready | Autentikacija je prošla i početna točka je postavljena |
operation.updated | Promijenjen je status operacije u vlasništvu klijenta |
stream.closed | Token ili ovlast opozvani su tijekom veze; automatsko ponovno spajanje nije dopušteno |
stream.error | Privremena pogreška toka; ponovno se spojite s posljednjim obrađenim id-jem |
Poslužitelj šalje komentare za održavanje veze. Zanemarite retke koji počinju dvotočkom. Token se ponovno provjerava tijekom otvorene veze, pa rotacija tajne ili deaktivacija klijenta prekida tok.
Standardni preglednički EventSource ne može postaviti zaglavlje Authorization. Ovaj je tok namijenjen poslužiteljskim klijentima koji mogu poslati bearer zaglavlje. Token nemojte premještati u upit URL-a.
GET /public/v1/operations/{operationId} ostaje sigurna pričuvna mogućnost za dohvat pojedinačnog stanja.
TLS/TCP - sinkronizacija dokumenata
TCP kanal nije REST ruta pod https://iiproxy.sekkun.co/public/v1. Uključuje se zasebnim ugovaranjem, a Klik Račun pri uključivanju izdaje adresu, priključak, identifikator instance i vjerodajnicu. Može se zahtijevati i klijentski certifikat.
Kanal koristi TLS 1.3 i JSON zapise razdvojene novim retkom. Prva poruka mora stići unutar deset sekundi:
{"v":1,"type":"authenticate","instanceId":"erp-prod-1","credential":"issued-secret","resumeAfter":1842}
Poslužitelj dopušta samo OIB-ove dodijeljene toj instanci. Vjerodajnica se ponovno provjerava tijekom veze. resumeAfter ne može preskočiti zadnju trajno potvrđenu poziciju.
{"v":1,"type":"ready","sessionId":"...","resumeAfter":1842,"heartbeatSeconds":30}
{"v":1,"type":"event","sequence":1843,"event":{"id":"...","type":"DOCUMENT_RECORDED","at":"...","document":{}}}
{"v":1,"type":"acknowledge","sequence":1843}
{"v":1,"type":"acknowledged","sequence":1843}
Klijent potvrđuje samo potpuno i trajno obrađene poruke. Nakon ponovnog spajanja poslužitelj ponavlja događaje iza zadnje potvrđene pozicije. ping vraća pong.
Sadržaj dokumenta ne šalje se automatski u svakoj obavijesti. Ovlašteni klijent ga dohvaća porukom fetch-payload; odgovor dolazi u dijelovima payload s Base64 sadržajem i SHA-256 sažetkom, a završava porukom payload-complete. Dohvat je ponovno ograničen na dopuštene OIB-ove.
| Svojstvo | SSE | TLS/TCP |
|---|---|---|
| Namjena | Promjene Public API operacija | Sinkronizacija dokumenata i kontrolirani dohvat sadržaja |
| Pristup | OAuth bearer token i events:read | Izdana vjerodajnica instance, po potrebi mTLS |
| Nastavak | Last-Event-ID | resumeAfter i trajna potvrda acknowledge |
| Adresa | /public/v1/events | Zasebno izdana TLS adresa i priključak |