CONTRACT v1 · ثابت

قرارداد وب‌هوک تحویل لیاد

لیاد یادآور را زمان‌بندی می‌کند و برای هر کانال یک درخواست یکسان به وب‌هوک شما می‌فرستد.

اصل

Don’t want a webhook? Use Simple Messages (POST /v1/messages — Liad sends SMS on managed rails.

نمونه URLهای پایدار

کانال Method URL
smsPOSThttps://liom.app/liad-hooks/v1/sms
telegramPOSThttps://liom.app/liad-hooks/v1/telegram
balePOSThttps://liom.app/liad-hooks/v1/bale
whatsappPOSThttps://liom.app/liad-hooks/v1/whatsapp
eitaaPOSThttps://liom.app/liad-hooks/v1/eitaa
rubikaPOSThttps://liom.app/liad-hooks/v1/rubika

سرویس‌گیرنده باید URLهای خودش را در پنل ثبت کند.

بدنه درخواست (ثابت)

{
  "event": "liad.delivery.request",
  "version": 1,
  "deliveryAttemptId": "uuid",
  "fireEventId": "uuid",
  "reminderId": "uuid",
  "tenantId": "uuid",
  "channel": "sms|telegram|bale|whatsapp|eitaa|rubika",
  "kind": "main|pre",
  "externalUserId": "your-user-id",
  "title": "reminder title",
  "body": "short sendable text",
  "recipient": {
    "endpoint": "fcm-token | chat-id (optional)",
    "phone": "+15551234567",
    "telegramId": "123456789",
    "baleId": "123456789"
  },
  "sentAt": "2026-08-07T12:00:00Z"
}

title = عنوان · body = متن کوتاه ارسال‌شونده

گیرنده بر اساس کانال

کانال الزامی یادداشت
smsrecipient.phone / endpointشماره موبایل
telegramrecipient.telegramId / endpointچت‌آیدی تلگرام
balerecipient.phone / baleIdموبایل یا چت‌آیدی بله
whatsapprecipient.phone / endpointشماره موبایل
eitaarecipient.phone / endpointشماره موبایل
rubikarecipient.phone / endpointشماره موبایل

هدرها

هدر الزامی معنی
Content-Typeبلهapplication/json
X-Liad-Signatureتوصیه می‌شودsha256= + HMAC-SHA256
X-Liad-Delivery-Attempt-Idاختیاریشناسه تلاش تحویل
X-Liad-Channelاختیارینام کانال
X-Liad-Tenant-Idاختیاریشناسه مستأجر

پاسخ موفق (2xx)

{
  "ok": true,
  "providerRef": "string-or-null",
  "channel": "sms"
}

پاسخ خطا (4xx / 5xx)

{
  "ok": false,
  "error": "missing_recipient",
  "detail": "…"
}

لیاد فقط وضعیت HTTP را برای صورتحساب موفق می‌خواند.

تنظیم در پنل

در پنل ادمین → مستأجر → تب وب‌هوک تحویل برای هر کانال:

API: PUT /v1/admin/tenants/{id}/channels/{channel}