Zpětná volání
Přijímejte podepsané, idempotentní události mezi servery a dokončené výsledky asynchronizace.
Zpětná volání
Nakonfigurujte adresu URL zpětného volání v Profil → Zpětná volání a asynchronní výsledky. Model Gate odesílá HTTPS POST požadavky na aktivovaná oznámení o účtu a dokončené požadavky na nativní asynchronní odvození. Doručování zpětného volání je nezávislé na zpracování odvození a probíhá prostřednictvím vyhrazené odolné pracovní fronty Model Gate.
URL zpětného volání a odchozí zabezpečení
Použijte veřejně dostupný koncový bod HTTPS. Ověření URL zpětného volání je odchozí bezpečnostní hranicí. Loopback, private, link-local, carrier-grade NAT, dokumentace/test, multicast, nespecifikované a vyhrazené IP rozsahy jsou odmítnuty. Název hostitele je ověřen při uložení a znovu během doručení; přesměrování jsou znovu ověřena. Nesměrujte zpětná volání na interní služby nebo přesměrování do privátních sítí.
Obálka společné události
Každé zpětné volání používá stejnou obálku:
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {}
}
event_id je stabilní při každém opakování jedné logické události. Odstranit duplicitní dodávky od event_id; neodvozujte identitu porovnáním zbytku užitečného zatížení. occurred_at je UTC RFC3339. Užitná zatížení mohou časem získat další pole, takže spotřebitelé musí ignorovat neznámá pole.
Každá dodávka také obsahuje stejné ID události X-Model-Gate-Event-ID.
Katalog akcí
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žitná zátěž využívá group_id, group_name, přesná desítková usage, přesná desítková 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á hodnotu null, pokud neexistuje žádný stav HTTP pro odesílání. Neúspěšné/zrušené/vypršené výsledky asynchronní mohou zahrnovat data.error.
Finanční hodnoty v užitečné zátěži zpětného volání jsou přesné desetinné řetězce; nejsou to zobrazované hodnoty zaokrouhlené podle uživatelského rozhraní.
Výstrahy prahu jsou znovu aktivovány poté, co monitorovaná hodnota opustí svůj prahový stav. Prahový pracovník vyhodnocuje podmínky přibližně jednou za minutu, mimo inferenční horkou cestu, takže zpětná volání prahu nejsou signálem překračování milisekund v reálném čase.
Formát požadavku
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
Ověření podpisu
Vypočítejte HMAC-SHA256 přes přesný řetězec <timestamp>.<raw_body> pomocí tajemství zpětného volání generovaného v profilu. Úplné tajemství se zobrazí pouze při vygenerování nebo otočení a v klidu je uloženo zašifrováno. Porovnejte hexadecimální podpis v konstantním čase a odmítněte časová razítka mimo přijaté okno přehrávání. Časové razítko HMAC je specifické pro pokus o doručení; a event_id zůstává stabilní během opakování.
Doručení, odezva a opakování
Jakýkoli HTTP 2xx odpověď přijímá událost. HTTP 200 s prázdným tělem se doporučuje. Chyby přenosu, časové limity a každá odpověď jiná než 2xx jsou selhání.
Každá akce má max Celkem 6 pokusů: první pokus plus pět pokusů. Následují neúspěšné pokusy 1–5 5 sekund, 30 sekund, 2 minuty, 10 minut a 1 hodina. Každý pokus je těžký 15 sekund celkový časový limit. Po šestém neúspěšném pokusu se událost stane terminální failed a neexistuje žádné další automatické opakování. Zastaralé nároky pracovníků jsou automaticky vráceny do trvalé fronty.
Než odpovíte, neprovádějte dlouhotrvající práci. Ověřte podpis, zachovejte/deduplikujte pomocí event_id, vrátit 2xxa zpracovávat asynchronně.