API

Webhooky

Webhook je HTTP požadavek, který FoodSoul odešle na adresu vašeho systému, když v účtu dojde k události: nová objednávka, změna stavu, recenze a další.

Předplatné s adresou a událostmi se vytváří metodou:

POST Vytvořit odběr webhooku

Adresa — URL z předplatného, metoda — POST.

Formát, podpis a opakování

Tělo požadavku webhooku. Každý požadavek je POST s Content-Type: application/json na URL předplatného. URL musí začínat na https. Hlavičky: X-Webhook-Event — kód události, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= a HMAC-SHA256 původního těla požadavku v hex s tajemstvím pobočky (webhooks_subscriptions.generate_secret). Ověřte podpis podle původního těla před zpracováním JSON: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Časové razítko v podpisu není, kanál je chráněn přes HTTPS. Doručení je považováno za přijaté při jakékoliv odpovědi 2xx do 10 sekund. Přesměrování nejsou prováděna. Jinak se doručení opakuje: 7 pokusů, první ihned, poté po 1, 5, 15, 60, 180 a 360 minutách. Všechny pokusy jednoho doručení obsahují stejný X-Webhook-ID. Opětovné odeslání z logu (webhooks_logs.resend) obsahuje stejný X-Webhook-ID — podle něj ignorujte již zpracovaná doručení. 20 neúspěšných doručení v řadě deaktivuje předplatné (blocked) a vlastník i systémový administrátor účtu obdrží e-mail. webhooks_subscriptions.unblock znovu aktivuje předplatné. Tělo obsahuje data události: klient, recenze a karta objednávky jsou předány celé. Bonusový zůstatek není předán: je společný pro pool sítí, je třeba jej získat přes API.

Záhlaví

X-Webhook-Eventstringpovinné

Příklad: order.created

X-Webhook-IDstringpovinné

Příklad: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringpovinné

Příklad: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Události

  • 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

Tělo požadavku

object (WebhookPayload)
eventstringpovinné

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

Příklad: order.status_changed

event_uuidstringpovinné

Příklad: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) povinné

Příklad: 2024-05-02 08:31:16

branch_idintegerpovinné

Příklad: 8412

dataoneOfpovinné
Jedna z možností
object (WebhookDataClientRegistered)

client.registered — nové telefonní číslo nebo první přihlášení účtu v této pobočce

client_branch_profile_idintegerpovinné

Příklad: 730112

namestringmůže být null

Příklad: John Doe

phonestringpovinné

Telefon v mezinárodním formátu, bez formátování

Příklad: +79114579423

genderstringmůže být null

Hodnoty:womanman

Příklad: man

date_of_birthstringmůže být null

Datum narození ve formátu Y-m-d

Příklad: 1982-01-03

Příklad těla

{
  "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"
  }
}

Odpověď vašeho systému

2XX

Přijato

default

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