API

Vebhuklar

Vebxuk — bu FoodSoul sizning tizimingiz manziliga HTTP-so‘rov yuboradigan jarayon bo‘lib, akkauntda qandaydir hodisa yuz berganda: yangi buyurtma, holatning o‘zgarishi, fikr-mulohaza va boshqalar.

Obuna manzili va voqealari bilan quyidagi usul orqali yaratiladi:

POST Webhook obunasini yaratish

Manzil — obunadan olingan URL, usul — POST.

Format, imzo va takrorlar

Webhook so‘rovi tanasi. Har bir so‘rov — Content-Type: application/json bilan POST, obuna URL manziliga yuboriladi. URL https bilan boshlanishi kerak. Sarlavhalar: X-Webhook-Event — hodisa kodi, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= va filial sirli kaliti (webhooks_subscriptions.generate_secret) bilan so‘rov tanasining asl ko‘rinishidan HMAC-SHA256 hex formatida. Imzoni JSONni tahlil qilishdan oldin asl tana bo‘yicha tekshiring: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Imzoda vaqt belgisi yo‘q, kanal HTTPS orqali himoyalangan. Yetkazib berish 10 soniya ichida 2xx javob olinganda qabul qilingan hisoblanadi. Yo‘naltirishlar bajarilmaydi. Aks holda yetkazib berish takrorlanadi: 7 urinish, birinchisi darhol, keyin 1, 5, 15, 60, 180 va 360 daqiqadan so‘ng. Bir yetkazib berishning barcha urinishlarida bir xil X-Webhook-ID bo‘ladi. Jurnaldan qayta yuborish (webhooks_logs.resend) ham shu X-Webhook-ID bilan bo‘ladi — shu orqali allaqachon qayta ishlangan yetkazib berishlarni o‘tkazib yuboring. Ketma-ket 20 ta muvaffaqiyatsiz yetkazib berish obunani o‘chiradi (blocked), va akkaunt egasi hamda tizim administratori xat oladi. webhooks_subscriptions.unblock obunani qayta yoqadi. Tana hodisa ma’lumotlarini o‘z ichiga oladi: mijoz, sharh va buyurtma kartochkasi to‘liq yuboriladi. Bonus balansi yuborilmaydi: u tarmoq havzasi uchun umumiy, uni API orqali olish kerak.

Sarlavhalar

X-Webhook-Eventstringmajburiy

Misol: order.created

X-Webhook-IDstringmajburiy

Misol: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringmajburiy

Misol: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Voqealar

  • 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

So‘rov tanasi

object (WebhookPayload)
eventstringmajburiy

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

Misol: order.status_changed

event_uuidstringmajburiy

Misol: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) majburiy

Misol: 2024-05-02 08:31:16

branch_idintegermajburiy

Misol: 8412

dataoneOfmajburiy
Variantlardan biri
object (WebhookDataClientRegistered)

client.registered — yangi telefon yoki ushbu filialda akkauntga birinchi kirish

client_branch_profile_idintegermajburiy

Misol: 730112

namestringnull bo‘lishi mumkin

Misol: John Doe

phonestringmajburiy

Telefon xalqaro formatda, formatlashsiz

Misol: +79114579423

genderstringnull bo‘lishi mumkin

Qiymatlar:womanman

Misol: man

date_of_birthstringnull bo‘lishi mumkin

Tug‘ilgan sana Y-m-d formatida

Misol: 1982-01-03

Tana misoli

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

Sizning tizimingizning javobi

2XX

Qabul qilindi

default

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