API

Webhook'lar

Webhook, hesabınızda bir olay gerçekleştiğinde (yeni sipariş, durum değişikliği, yorum ve benzeri) FoodSoul'un sisteminizin adresine gönderdiği bir HTTP isteğidir.

Abonelik, adres ve etkinliklerle şu yöntemle oluşturulur:

POST Webhook aboneliği oluştur

Adres — abonelikten alınan URL, yöntem — POST.

Format, imza ve tekrarlar

Webhook isteği gövdesi. Her istek, abonelik URL’sine Content-Type: application/json ile POST olarak gönderilir. URL https ile başlamalıdır.
Başlıklar: X-Webhook-Event — olay kodu, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= ve şube sırrı (webhooks_subscriptions.generate_secret) ile orijinal istek gövdesinin HMAC-SHA256 hex değeri.
İmzayı, JSON ayrıştırmadan önce orijinal gövde üzerinden doğrulayın: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). İmzada zaman damgası yoktur, kanal HTTPS ile korunur.
Teslimat, 10 saniye içinde alınan herhangi bir 2xx yanıt ile kabul edilir. Yönlendirme yapılmaz. Aksi halde teslimat tekrar edilir: 7 deneme, ilki hemen, ardından 1, 5, 15, 60, 180 ve 360 dakika sonra. Aynı teslimatın tüm denemelerinde aynı X-Webhook-ID kullanılır. Günlükten tekrar gönderim (webhooks_logs.resend) de aynı X-Webhook-ID içerir — bu ID ile zaten işlenmiş teslimatları atlayın.
Arka arkaya 20 başarısız teslimat aboneliği devre dışı bırakır (blocked), hesap sahibi ve sistem yöneticisine e-posta gönderilir. webhooks_subscriptions.unblock ile abonelik tekrar etkinleştirilebilir.
Gövde, olay verilerini içerir: müşteri, yorum ve sipariş kartı tam olarak iletilir. Bonus bakiyesi iletilmez: ağ havuzu için ortaktır, API üzerinden alınmalıdır.

Başlıklar

X-Webhook-Eventstringzorunlu

Örnek: order.created

X-Webhook-IDstringzorunlu

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

X-Webhook-Signaturestringzorunlu

Örnek: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Olaylar

  • 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

İstek gövdesi

object (WebhookPayload)
eventstringzorunlu

Değerler:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Örnek: order.status_changed

event_uuidstringzorunlu

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

date_creationstring (DataTimeFormatSQL) zorunlu

Örnek: 2024-05-02 08:31:16

branch_idintegerzorunlu

Örnek: 8412

dataoneOfzorunlu
Seçeneklerden biri
object (WebhookDataClientRegistered)

client.registered — yeni telefon veya bu şubede hesabın ilk girişi

client_branch_profile_idintegerzorunlu

Örnek: 730112

namestringnull olabilir

Örnek: John Doe

phonestringzorunlu

Uluslararası formatta, biçimlendirme olmadan

Örnek: +79114579423

genderstringnull olabilir

Değerler:womanman

Örnek: man

date_of_birthstringnull olabilir

Doğum tarihi, Y-m-d formatında

Örnek: 1982-01-03

Örnek gövde

{
  "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 yanıtı

2XX

Kabul edildi

default

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