Обратни повиквания

Получавайте подписани известия от сървър към сървър и завършени асинхронни резултати.

Обратни повиквания

Конфигурирайте URL адрес за обратно извикване в Профил → Обратни повиквания и асинхронни резултати. Model Gate изпраща HTTPS POST заявки за активирани известия за акаунти и за завършени заявки за асинхронни изводи.

Callback URL

Използвайте публично достъпна HTTPS крайна точка. Крайната точка трябва да прочете необработеното тяло на заявката, да провери подписа, да обработи събитието идемпотентно и да върне HTTP 200 веднага щом събитието бъде прието.

събития

Обратните повиквания могат да включват:

  • завършени резултати от асинхронен извод;
  • известия за ниско салдо по сметката, когато е активирано;
  • Известия за ограничение на разходите на API-ключ, когато е активирано;
  • уведомления за ограничение на разходите за ключови групи, когато е активирано.

Доставката на асинхронен резултат е активирана винаги, когато е конфигуриран URL адрес за обратно извикване. Квадратчетата за отметка за уведомяване в Профил контролират само съответните сигнали за баланс и лимит.

Формат на заявката

POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256

Примерен полезен товар за асинхронни резултати:

{
  "event":"async.completed",
  "request_id":"01J...",
  "status":"completed",
  "response":{"id":"msg_...","type":"message"}
}

Полетата за полезен товар могат да се разширяват с времето. Игнорирайте неизвестните полета.

Проверка на подписа

Заглавката на подписа има следния формат:

X-Model-Gate-Signature: t=<unix>,v1=<hmac_sha256>

Изчислете HMAC-SHA256 върху точния низ <timestamp>.<raw_body> използвайки тайната за обратно извикване, показана в Профил. Сравнете шестнадесетичния подпис със сравнение в постоянно време и отхвърлете времевите клейма извън вашия приет прозорец за повторение.

Доставка и повторни опити

Връщане на HTTP 200 след безопасно приемане на събитието. Отговорите, различни от 2xx, и неуспешните връзки могат да бъдат опитани повторно. Вашата крайна точка следователно трябва да бъде идемпотентна; използване request_id заедно с event като ключ за дедупликация.

Не извършвайте продължителна работа, преди да отговорите. Подредете събитието вътрешно, връщане 200и го обработва асинхронно.

Свързана документация