Återuppringningar
Ta emot signerade, idempotenta server-till-server-händelser och slutförda asynkroniseringsresultat.
Återuppringningar
Konfigurera en återuppringnings-URL i Profil → Återuppringningar och asynkroniserade resultat. Model Gate skickar HTTPS POST förfrågningar om aktiverade kontoaviseringar och slutförda begäranden om inbyggd asynkron slutledning. Återuppringningsleverans är oberoende av slutledningsbearbetning och går genom en dedikerad hållbar Model Gate-arbetarkö.
Callback URL och utgående säkerhet
Använd en offentligt tillgänglig HTTPS-slutpunkt. Validering av återuppringnings-URL är en utgående säkerhetsgräns. Loopback, privat, länklokalt, operatörsgradig NAT, dokumentation/test, multicast, ospecificerat och reserverat IP-intervall avvisas. Värdnamnet valideras när det sparas och igen under leverans; omdirigeringar valideras om. Rikta inte återuppringningar till interna tjänster eller omdirigeringar till privata nätverk.
Gemensamt evenemangskuvert
Varje återuppringning använder samma kuvert:
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {}
}
event_id är stabil för varje nytt försök av en logisk händelse. Deduplicera leveranser av event_id; dra inte slutledning om identitet genom att jämföra resten av nyttolasten. occurred_at är UTC RFC3339. Nyttolaster kan få ytterligare fält med tiden, så konsumenter måste ignorera okända fält.
Varje leverans inkluderar också samma händelse-ID i X-Model-Gate-Event-ID.
Evenemangskatalog
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
Nyttolasten använder group_id, group_name, exakt decimal usage, exakt decimal spend_limit, heltal threshold_percent, och 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 är nullbar när det inte finns någon uppströms HTTP-status. Misslyckade/avbrutna/utgångna asynkresultat kan inkludera data.error.
Finansiella värden i återuppringningsnyttolaster är exakta decimalsträngar; de är inte UI-avrundade visningsvärden.
Tröskelvarningar aktiveras igen efter att det övervakade värdet lämnar sitt tröskelläge. Tröskelarbetaren utvärderar förhållanden ungefär en gång per minut, utanför den varma slutledningsvägen, så tröskelåteruppringningar är inte en realtidssignal för millisekunder.
Format för begäran
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
Signaturverifiering
Beräkna HMAC-SHA256 över den exakta strängen <timestamp>.<raw_body> med hjälp av återuppringningshemligheten som genereras i profil. Hela hemligheten visas endast när den genereras eller roteras och lagras krypterad i vila. Jämför den hexadecimala signaturen i konstant tid och avvisa tidsstämplar utanför ditt accepterade reprisfönster. HMAC-tidsstämpeln är specifik för ett leveransförsök; de event_id förblir stabil över återförsök.
Leverans, svar och försök igen
Alla HTTP 2xx svar accepterar händelsen. HTTP 200 med en tom kropp rekommenderas. Transportfel, timeouts och varje icke-2xx-svar är misslyckanden.
Varje evenemang har högst 6 försök totalt: det första försöket plus fem försök. Misslyckade försök 1–5 följs av 5 sekunder, 30 sekunder, 2 minuter, 10 minuter och 1 timme. Varje försök har ett svårt 15 sekunder total timeout. Efter det sjätte misslyckade försöket blir händelsen terminal failed och det finns inget automatiskt nytt försök. Inaktuella arbetaranspråk återförs automatiskt till den varaktiga kön.
Utför inte långvarigt arbete innan du svarar. Verifiera signaturen, bestå/avduplicera genom event_id, återvända 2xx, och bearbeta asynkront.