API

Tīmekļa āķi

Tīmekļa āķis ir HTTP pieprasījums, ko FoodSoul nosūta uz jūsu sistēmas adresi, kad kontā notiek kāds notikums: jauns pasūtījums, statusa maiņa, atsauksme un citi.

Abonements ar adresi un notikumiem tiek izveidots ar metodi:

POST Izveidot tīmekļa āķa abonementu

Adrese — URL no abonementa, metode — POST.

Formāts, paraksts un atkārtojumi

Webhook pieprasījuma korpuss. Katrs pieprasījums ir POST ar Content-Type: application/json uz abonementa URL. URL jābūt ar https sākumu. Galvenes: X-Webhook-Event — notikuma kods, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= un HMAC-SHA256 sākotnējā pieprasījuma korpusa hex formātā ar filiāles slepeno atslēgu (webhooks_subscriptions.generate_secret). Pārbaudiet parakstu pēc sākotnējā korpusa pirms JSON parsēšanas: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Parakstā nav laika zīmoga, kanāls ir aizsargāts ar HTTPS. Piegāde tiek uzskatīta par pieņemtu ar jebkuru 2xx atbildi 10 sekunžu laikā. Pāradresācijas netiek veiktas. Pretējā gadījumā piegāde tiek atkārtota: 7 mēģinājumi, pirmais uzreiz, pēc tam pēc 1, 5, 15, 60, 180 un 360 minūtēm. Visos vienas piegādes mēģinājumos ir tas pats X-Webhook-ID. Atkārtota nosūtīšana no žurnāla (webhooks_logs.resend) satur to pašu X-Webhook-ID — pēc tā ignorējiet jau apstrādātās piegādes. 20 neveiksmīgas piegādes pēc kārtas atslēdz abonementu (blocked), un konta īpašnieks un sistēmas administrators saņem e-pastu. webhooks_subscriptions.unblock atkal ieslēdz abonementu. Korpuss satur notikuma datus: klients, atsauksme un pasūtījuma karte tiek nodoti pilnībā. Bonusa bilance netiek nodota: tā ir kopīga tīkla baseinam, to jāsaņem caur API.

Galvenes

X-Webhook-Eventstringobligāts

Piemērs: order.created

X-Webhook-IDstringobligāts

Piemērs: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringobligāts

Piemērs: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Notikumi

  • 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

Pieprasījuma saturs

object (WebhookPayload)
eventstringobligāts

Vērtības:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Piemērs: order.status_changed

event_uuidstringobligāts

Piemērs: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) obligāts

Piemērs: 2024-05-02 08:31:16

branch_idintegerobligāts

Piemērs: 8412

dataoneOfobligāts
Viens no variantiem
object (WebhookDataClientRegistered)

client.registered — jauns tālrunis vai pirmā konta pieteikšanās šajā filiālē

client_branch_profile_idintegerobligāts

Piemērs: 730112

namestringvar būt null

Piemērs: John Doe

phonestringobligāts

Tālruņa numurs starptautiskajā formātā, bez formatēšanas

Piemērs: +79114579423

genderstringvar būt null

Vērtības:womanman

Piemērs: man

date_of_birthstringvar būt null

Dzimšanas datums formātā Y-m-d

Piemērs: 1982-01-03

Ķermeņa piemērs

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

Jūsu sistēmas atbilde

2XX

Pieņemts

default

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