API

Вебхуки

Вебхук — HTTP-захтев који FoodSoul шаље на адресу вашег система када се у налогу догоди неки догађај: нова поруџбина, промена статуса, рецензија и други.

Pretplata sa adresom i događajima se kreira metodom:

POST Креирај претплату на вебхук

Адреса — URL из претплате, метода — POST.

Формат, потпис и понављања

Тело захтева вебхука. Сваки захтев је POST са Content-Type: application/json на URL претплате. URL мора почети са https.
Заглавља: X-Webhook-Event — код догађаја, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= и HMAC-SHA256 оригиналног тела захтева у hex са тајном филијале (webhooks_subscriptions.generate_secret).
Проверавајте потпис на оригиналном телу пре обраде JSON: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Временска ознака није укључена у потпис, канал је заштићен преко HTTPS.
Испорука се сматра прихваћеном за сваки 2xx одговор у року од 10 секунди. Преусмеравања се не извршавају. У супротном, испорука се понавља: 7 покушаја, први одмах, затим након 1, 5, 15, 60, 180 и 360 минута. Сви покушаји једне испоруке садрже исти X-Webhook-ID. Поновно слање из дневника (webhooks_logs.resend) садржи исти X-Webhook-ID — по њему прескачите већ обрађене испоруке.
20 узастопних неуспелих испорука онемогућава претплату (blocked), а власник и системски администратор налога добијају е-поруку. webhooks_subscriptions.unblock поново активира претплату.
Тело садржи податке догађаја: клијент, рецензија и картица поруџбине се преносе у целости. Бонусни биланс се не преноси: он је заједнички за пул мрежа, потребно га је добити преко API.

Заглавља

X-Webhook-Eventstringобавезно

Пример: order.created

X-Webhook-IDstringобавезно

Пример: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringобавезно

Пример: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Događaji

  • client.registered
  • client.updated
  • client.bonuses_changed
  • order.created
  • order.status_changed
  • order.payment_status_changed
  • feedback.created
  • courier.assigned
  • item.stop_list_changed
  • branch.work_status_changed

Telo zahteva

object (WebhookPayload)
eventstringобавезно

Vrednosti:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Пример: order.status_changed

event_uuidstringобавезно

Пример: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) обавезно

Пример: 2024-05-02 08:31:16

branch_idintegerобавезно

Пример: 8412

dataoneOfобавезно
Једна од опција
object (WebhookDataClientRegistered)

client.registered — нови телефон или прва пријава налога у овој филијали

client_branch_profile_idintegerобавезно

Пример: 730112

namestringможе бити null

Пример: John Doe

phonestringобавезно

Телефон у међународном формату, без форматирања

Пример: +79114579423

genderstringможе бити null

Vrednosti:womanman

Пример: man

date_of_birthstringможе бити null

Датум рођења у формату Y-m-d

Пример: 1982-01-03

Primer tela

{
  "event": "order.status_changed",
  "event_uuid": "5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41",
  "date_creation": "2024-05-02 08:31:16",
  "branch_id": 8412,
  "data": {
    "client_branch_profile_id": 730112,
    "name": "John Doe",
    "phone": "+79114579423",
    "gender": "man",
    "date_of_birth": "1982-01-03"
  }
}

Odgovor vašeg sistema

2XX

Prihvaćeno

default

Не принято, доставка повторяется