API

Vebhuklar

Vebhuk — FoodSoul hesabınızda hadisə baş verdikdə (yeni sifariş, statusun dəyişməsi, rəy və s.) sisteminizin ünvanına göndərilən HTTP sorğusudur.

Abunə ünvan və hadisələrlə bu metod vasitəsilə yaradılır:

POST Vebhuk abunəliyi yarat

Ünvan — abunəlikdən olan URL, metod — POST.

Format, imza və təkrarlar

Webhook sorğusunun gövdəsi. Hər bir sorğu — Content-Type: application/json ilə POST, abunə URL-ə göndərilir. URL https ilə başlamalıdır.
Başlıqlar: X-Webhook-Event — hadisə kodu, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= və filialın sirri (webhooks_subscriptions.generate_secret) ilə sorğunun orijinal gövdəsinin HMAC-SHA256 heks formatında imzası.
İmzanı yoxlayın: JSON-u ayrışdırmadan əvvəl orijinal gövdəyə görə yoxlayın: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). İmzaya zaman etiketi daxil deyil, kanal HTTPS ilə qorunur.
Çatdırılma, 10 saniyə ərzində istənilən 2xx cavabı ilə qəbul edilmiş sayılır. Yönləndirmələr icra olunmur. Əks halda çatdırılma təkrarlanır: 7 cəhd, birincisi dərhal, sonra 1, 5, 15, 60, 180 və 360 dəqiqədən sonra. Bir çatdırılmanın bütün cəhdlərində eyni X-Webhook-ID olur. Jurnaldan təkrar göndərmə (webhooks_logs.resend) də eyni X-Webhook-ID ilə olur — artıq işlənmiş çatdırılmaları bu ID ilə buraxın.
Ardıcıl 20 uğursuz çatdırılma abunəni söndürür (blocked), sahib və hesabın sistem administratoruna e-poçt göndərilir. webhooks_subscriptions.unblock abunəni yenidən aktiv edir.
Gövdədə hadisənin məlumatları olur: müştəri, rəy və sifariş kartı tam ötürülür. Bonus balansı ötürülmür: o, şəbəkələr hovuzu üçün ümumidir, onu API vasitəsilə əldə etmək lazımdır.

Başlıqlar

X-Webhook-Eventstringmütləq

Nümunə: order.created

X-Webhook-IDstringmütləq

Nümunə: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringmütləq

Nümunə: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Hadisələr

  • 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

Sorğu gövdəsi

object (WebhookPayload)
eventstringmütləq

Dəyərlər:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Nümunə: order.status_changed

event_uuidstringmütləq

Nümunə: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) mütləq

Nümunə: 2024-05-02 08:31:16

branch_idintegermütləq

Nümunə: 8412

dataoneOfmütləq
Variantlardan biri
object (WebhookDataClientRegistered)

client.registered — yeni telefon və ya bu filialda hesabın ilk girişi

client_branch_profile_idintegermütləq

Nümunə: 730112

namestringnull ola bilər

Nümunə: John Doe

phonestringmütləq

Telefon beynəlxalq formatda, formatlaşdırılmadan

Nümunə: +79114579423

genderstringnull ola bilər

Dəyərlər:womanman

Nümunə: man

date_of_birthstringnull ola bilər

Doğum tarixi Y-m-d formatında

Nümunə: 1982-01-03

Bədən nümunəsi

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

Sisteminizin cavabı

2XX

Qəbul edildi

default

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