Webhook এন্ডপয়েন্ট

এন্ডপয়েন্ট-ভিত্তিক webhook সিস্টেমটি আপনাকে প্রতি সংগঠনে একাধিক গন্তব্য নিবন্ধন করতে দেয়, প্রতিটির নিজস্ব secret, নিজস্ব স্ট্যাটাস এবং ইভেন্ট টাইপের একটি উপসেটে নিজস্ব সাবস্ক্রিপশনসহ। সব নতুন ইন্টিগ্রেশনের জন্য এটিই প্রস্তাবিত মডেল।

পুরোনো একক-URL webhook-এর সঙ্গে তুলনা করুন, যেটি পশ্চাদ্‌সামঞ্জস্যের জন্য রাখা হয়েছে, তবে প্রতি সংগঠনে শুধুমাত্র একটি URL সমর্থন করে।

এন্ডপয়েন্ট

পদ্ধতিপাথপ্রয়োজনীয় ভূমিকাবিবরণ
GET/v1/developer/webhook-endpointsadmin+এন্ডপয়েন্টের তালিকা
POST/v1/developer/webhook-endpointsadmin+একটি এন্ডপয়েন্ট তৈরি করুন
PATCH/v1/developer/webhook-endpoints/{endpoint_id}admin+লেবেল / URL / ইভেন্ট / স্ট্যাটাস আপডেট করুন
DELETE/v1/developer/webhook-endpoints/{endpoint_id}admin+একটি এন্ডপয়েন্ট মুছুন
POST/v1/developer/webhook-endpoints/{endpoint_id}/testadmin+একটি স্বাক্ষরিত পরীক্ষামূলক ডেলিভারি পাঠান

এন্ডপয়েন্ট অবজেক্ট

{
  "id": "c4d5e6f7-...",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z"
}
ফিল্ডধরনবিবরণ
idUUIDএন্ডপয়েন্ট id
labelstringপ্রদর্শনের নাম, 1–120 অক্ষর
urlstringHTTPS URL; ডেভেলপমেন্টের জন্য http://localhost অনুমোদিত
eventsstring-এর arrayসাবস্ক্রাইব করা ইভেন্ট টাইপ (বৈধ মান দেখুন)। খালি array সব ইভেন্টে সাবস্ক্রাইব করে
statusstringactive, disabled (ম্যানুয়ালি স্থগিত), অথবা failing (কোনো ডেলিভারি একটি 2xx না পেয়ে তার 24 ঘণ্টার পুনঃচেষ্টা সূচি শেষ করলে স্বয়ংক্রিয়ভাবে সেট হয়)
secret_hintstringস্বাক্ষরকারী secret-এর প্রথম 4 এবং শেষ 4 অক্ষর, মাঝখানে ellipsis-সহ (a1b2…9f0e) — সম্পূর্ণ মান প্রকাশ না করে স্থানীয়ভাবে সংরক্ষিত secret-এর সঙ্গে মিলিয়ে দেখার জন্য যথেষ্ট
created_at, updated_attimestamp

বৈধ ইভেন্ট টাইপ

events এই সঠিক সেটের বিপরীতে যাচাই করা হয় — তালিকার বাইরের মান 400 ফেরত দেয়। প্রতিটি টাইপের payload-এর কাঠামোর জন্য ইভেন্ট ক্যাটালগ দেখুন।

এন্ডপয়েন্ট স্ট্যাটাস


এন্ডপয়েন্টের তালিকা

curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

এন্ডপয়েন্ট অবজেক্ট-এর একটি array ফেরত দেয়।


একটি এন্ডপয়েন্ট তৈরি করুন

curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call events",
    "url":    "https://example.com/thunderphone/hook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
result = requests.post(
    "https://api.thunderphone.com/v1/developer/webhook-endpoints",
    headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
    json={
        "label":  "Production — Call events",
        "url":    "https://example.com/thunderphone/hook",
        "events": ["telephony.incoming", "telephony.complete"],
    },
).json()
secret = result["secret"]
endpoint_id = result["id"]

রিকোয়েস্ট ফিল্ড

ফিল্ডধরনপ্রয়োজনীয়বিবরণ
labelstringহ্যাঁ1–120 অক্ষর
urlstringহ্যাঁHTTPS URL (http কেবল localhost / 127.0.0.1-এর জন্য অনুমোদিত)
eventsarrayনাখালি রাখলে/বাদ দিলে সব ইভেন্টে সাবস্ক্রাইব হবে। বৈধ ইভেন্টের ধরন-এ তালিকাভুক্ত মান ব্যবহার করতে হবে; ডুপ্লিকেট সরিয়ে দেওয়া হয়

এন্ডপয়েন্ট অবজেক্ট-এর সঙ্গে অতিরিক্ত শীর্ষ-স্তরের secret ফিল্ডসহ 201 Created ফেরত দেয়, যেখানে কাঁচা সাইনিং কী থাকে — একটি 48-অক্ষরের hex স্ট্রিং:

{
  "id": "c4d5e6f7-…",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z",
  "secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}

একটি এন্ডপয়েন্ট আপডেট করুন

curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call + Grade events",
    "events": ["telephony.incoming", "telephony.complete", "call.graded"]
  }'
ফিল্ডধরনবিবরণ
labelstring
urlstring
eventsarray
statusstringactive অথবা disabled। সার্ভার failing হিসেবে চিহ্নিত করা এন্ডপয়েন্ট পুনরায় সক্রিয় করতে active সেট করুন

আপডেট করা এন্ডপয়েন্ট অবজেক্ট-সহ 200 OK ফেরত দেয়।


একটি পরীক্ষামূলক ডেলিভারি পাঠান

ক্যানোনিক্যাল JSON সিরিয়ালাইজেশন, X-ThunderPhone-Signature, ডেলিভারি রেকর্ডিং এবং পুনঃচেষ্টার হিসাবসহ স্বাভাবিক ডেলিভারি পাইপলাইন ব্যবহার করে একটি এন্ডপয়েন্টে সিনথেটিক webhook.test ইভেন্ট পাঠান। পরীক্ষাটি নির্বাচিত এন্ডপয়েন্টকে লক্ষ্য করে, তার events ফিল্টার নির্বিশেষে।

curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

এন্ডপয়েন্টটি এ ধরনের একটি এনভেলপ পায়:

{
  "data": {
    "message": "ThunderPhone webhook test",
    "sent_at": "2026-07-17T20:12:34.567890+00:00"
  },
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "type": "webhook.test"
}

গন্তব্য ত্রুটি ফেরত দিলেও প্রথম প্রচেষ্টার পরে API 200 OK ফেরত দেয়। ডেলিভারির ফলাফল জানতে success, status, response_code এবং error পরীক্ষা করুন:

{
  "success": true,
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "event_type": "webhook.test",
  "status": "delivered",
  "response_code": 204,
  "error": ""
}

webhook.test সিনথেটিক এবং এটি কোনো এন্ডপয়েন্টের events সাবস্ক্রিপশনে যোগ করা যায় না। প্রথম প্রচেষ্টা ব্যর্থ হলে, ডেলিভারি স্বাভাবিক ইভেন্ট ডেলিভারির মতো একই পুনঃচেষ্টা সূচি অনুসরণ করে।


একটি এন্ডপয়েন্ট মুছুন

curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

204 No Content ফেরত দেয়। URL-এ ডেলিভারি অবিলম্বে বন্ধ হয়ে যায়; চলমান পুনরায় চেষ্টা পরিত্যাগ করা হয়।


সম্পর্কিত