Spätné volania
Prijímajte podpísané, idempotentné udalosti server-to-server a dokončené výsledky asynchronizácie.
Spätné volania
Nakonfigurujte adresu URL spätného volania v Profil → Spätné volania a asynchronné výsledky. Model Gate odosiela HTTPS POST žiadosti o aktivované upozornenia účtu a dokončené požiadavky na natívne asynchrónne odvodenie. Doručovanie spätného volania je nezávislé od spracovania odvodzovania a prebieha cez vyhradenú odolnú pracovnú frontu Model Gate.
URL pre spätné volanie a odchádzajúce zabezpečenie
Použite verejne dostupný koncový bod HTTPS. Overenie adresy URL spätného volania je hranicou zabezpečenia smerom von. Spätná slučka, súkromná, lokálna linka, NAT na úrovni operátora, dokumentácia/test, multicast, nešpecifikované a vyhradené rozsahy IP sú odmietnuté. Názov hostiteľa sa overí pri uložení a znova počas doručovania; presmerovania sú znovu overené. Nesmerujte spätné volania na interné služby ani presmerovania do súkromných sietí.
Obálka spoločnej udalosti
Každé spätné volanie používa rovnakú obálku:
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {}
}
event_id je stabilný pri každom opakovaní jednej logickej udalosti. Deduplikovať doručenie do event_id; neodvodzujte identitu porovnaním zvyšku užitočného zaťaženia. occurred_at je UTC RFC3339. Užitočné zaťaženie môže časom získať ďalšie polia, takže spotrebitelia musia ignorovať neznáme polia.
Každá dodávka tiež obsahuje rovnaké ID udalosti X-Model-Gate-Event-ID.
Katalóg podujatí
account.balance_low
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"balance": "10.1234567890",
"threshold": "20.0000000000",
"currency": "USD"
}
}
key.spend_limit_threshold_reached
{
"event_id": "01J...",
"event": "key.spend_limit_threshold_reached",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"key_id": "KEY_PUBLIC_ID",
"key_name": "Bank integration",
"usage": "80.1234567890",
"spend_limit": "100.0000000000",
"threshold_percent": 80,
"currency": "USD"
}
}
group.spend_limit_threshold_reached
Užitočné zaťaženie využíva group_id, group_name, presné desatinné usage, presné desatinné spend_limit, celé číslo threshold_percenta currency = "USD".
request.completed
{
"event_id": "01J...",
"event": "request.completed",
"occurred_at": "2026-08-28T07:00:00.123456Z",
"data": {
"request_id": "01J...",
"status": "completed",
"response_status": 200,
"response": {"id":"msg_...","type":"message"}
}
}
response_status má nulovú hodnotu, ak neexistuje žiadny stav HTTP na serveri. Medzi neúspešné/zrušené/vypršané výsledky asynchronizácie môžu patriť data.error.
Finančné hodnoty v užitočných zaťaženiach spätného volania sú presné desatinné reťazce; nie sú to zobrazované hodnoty zaokrúhlené podľa používateľského rozhrania.
Prahové výstrahy sú znovu zapnuté, keď monitorovaná hodnota opustí svoj prahový stav. Prahový pracovník vyhodnocuje podmienky približne raz za minútu, mimo inferenčnej horúcej cesty, takže spätné volania prahu nie sú signálom prekračujúcim milisekundy v reálnom čase.
Formát žiadosti
POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Event-ID: 01J...
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256
Overenie podpisu
Vypočítajte HMAC-SHA256 cez presný reťazec <timestamp>.<raw_body> pomocou tajného volania vygenerovaného v profile. Úplné tajomstvo sa zobrazí iba pri vygenerovaní alebo otočení a v pokoji je uložené zašifrované. Porovnajte hexadecimálny podpis v konštantnom čase a odmietnite časové pečiatky mimo akceptovaného okna prehrávania. Časová pečiatka HMAC je špecifická pre pokus o doručenie; a event_id zostáva stabilný počas opakovaných pokusov.
Doručenie, odpoveď a pokusy
Akýkoľvek HTTP 2xx odpoveď prijíma udalosť. HTTP 200 s prázdnym telom sa odporúča. Chyby prenosu, časové limity a každá odpoveď iná ako 2xx sú zlyhania.
Každá udalosť má max Spolu 6 pokusov: prvý pokus plus päť pokusov. Nasledujú neúspešné pokusy 1–5 5 sekúnd, 30 sekúnd, 2 minúty, 10 minút a 1 hodinu. Každý pokus je ťažký 15-sekundový celkový časový limit. Po šiestom neúspešnom pokuse sa udalosť stane terminálnou failed a neexistuje žiadny ďalší automatický pokus. Zastarané nároky pracovníkov sa automaticky vrátia do trvalého radu.
Pred reakciou nevykonávajte dlhotrvajúcu prácu. Overte podpis, zachovajte / zrušte duplikáciu podľa event_id, vrátiť 2xxa spracovávať asynchrónne.