Webhook ਐਂਡਪੌਇੰਟ
ਐਂਡਪੌਇੰਟ-ਆਧਾਰਿਤ ਵੈੱਬਹੁੱਕ ਸਿਸਟਮ ਤੁਹਾਨੂੰ ਪ੍ਰਤੀ ਸੰਗਠਨ ਕਈ ਮੰਜ਼ਿਲਾਂ ਰਜਿਸਟਰ ਕਰਨ ਦਿੰਦਾ ਹੈ, ਹਰ ਇੱਕ ਦਾ ਆਪਣਾ ਸੀਕ੍ਰੇਟ, ਆਪਣੀ ਸਥਿਤੀ, ਅਤੇ ਇਵੈਂਟ ਕਿਸਮਾਂ ਦੇ ਇੱਕ ਉਪਸੈੱਟ ਲਈ ਆਪਣੀ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਹੁੰਦੀ ਹੈ। ਇਹ ਸਾਰੀਆਂ ਨਵੀਆਂ ਇੰਟੀਗ੍ਰੇਸ਼ਨਾਂ ਲਈ ਸਿਫ਼ਾਰਸ਼ ਕੀਤਾ ਮਾਡਲ ਹੈ।
ਇਸਦੀ ਤੁਲਨਾ ਪੁਰਾਣੇ ਸਿੰਗਲ-URL ਵੈੱਬਹੁੱਕ ਨਾਲ ਕਰੋ, ਜੋ ਪਿਛਲੀ ਅਨੁਕੂਲਤਾ ਲਈ ਰੱਖਿਆ ਗਿਆ ਹੈ ਪਰ ਪ੍ਰਤੀ ਸੰਗਠਨ ਸਿਰਫ਼ ਇੱਕ URL ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
ਐਂਡਪੌਇੰਟ
| ਤਰੀਕਾ | ਪਾਥ | ਲੋੜੀਂਦੀ ਭੂਮਿਕਾ | ਵੇਰਵਾ |
|---|---|---|---|
GET | /v1/developer/webhook-endpoints | admin+ | ਐਂਡਪੌਇੰਟਾਂ ਦੀ ਸੂਚੀ |
POST | /v1/developer/webhook-endpoints | admin+ | ਇੱਕ ਐਂਡਪੌਇੰਟ ਬਣਾਓ |
PATCH | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | ਲੇਬਲ / URL / ਇਵੈਂਟ / ਸਥਿਤੀ ਅੱਪਡੇਟ ਕਰੋ |
DELETE | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | ਇੱਕ ਐਂਡਪੌਇੰਟ ਮਿਟਾਓ |
POST | /v1/developer/webhook-endpoints/{endpoint_id}/test | admin+ | ਸਾਈਨ ਕੀਤੀ ਟੈਸਟ ਡਿਲਿਵਰੀ ਭੇਜੋ |
ਐਂਡਪੌਇੰਟ ਆਬਜੈਕਟ
{
"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"
}
| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|---|---|---|
id | UUID | ਐਂਡਪੌਇੰਟ id |
label | string | ਡਿਸਪਲੇ ਨਾਮ, 1–120 ਅੱਖਰ |
url | string | HTTPS URL; ਡਿਵੈਲਪਮੈਂਟ ਲਈ http://localhost ਮਨਜ਼ੂਰ ਹੈ |
events | ਸਟਰਿੰਗ ਦੀ ਐਰੇ | ਸਬਸਕ੍ਰਾਈਬ ਕੀਤੀਆਂ ਇਵੈਂਟ ਕਿਸਮਾਂ (ਵੈਧ ਮੁੱਲ ਵੇਖੋ)। ਖਾਲੀ ਐਰੇ ਸਾਰੇ ਇਵੈਂਟਾਂ ਦੀ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਕਰਦੀ ਹੈ |
status | string | active, disabled (ਹੱਥੀਂ ਰੋਕਿਆ ਗਿਆ), ਜਾਂ failing (ਜਦੋਂ ਕੋਈ ਡਿਲਿਵਰੀ ਇੱਕ ਵੀ 2xx ਤੋਂ ਬਿਨਾਂ ਆਪਣਾ 24 ਘੰਟਿਆਂ ਦਾ ਰੀਟ੍ਰਾਈ ਸ਼ਡਿਊਲ ਖਤਮ ਕਰ ਲੈਂਦੀ ਹੈ ਤਾਂ ਆਪਣੇ ਆਪ ਸੈੱਟ ਹੁੰਦਾ ਹੈ) |
secret_hint | string | ਸਾਈਨਿੰਗ ਸੀਕ੍ਰੇਟ ਦੇ ਪਹਿਲੇ 4 ਅਤੇ ਆਖਰੀ 4 ਅੱਖਰ, ਵਿਚਕਾਰ ਅੰਡਾਕਾਰ ਚਿੰਨ੍ਹ ਦੇ ਨਾਲ (a1b2…9f0e) — ਪੂਰਾ ਮੁੱਲ ਦਿਖਾਏ ਬਿਨਾਂ, ਤੁਹਾਡੇ ਵੱਲੋਂ ਲੋਕਲ ਤੌਰ 'ਤੇ ਸੰਭਾਲੇ ਸੀਕ੍ਰੇਟ ਨਾਲ ਮਿਲਾਣ ਲਈ ਕਾਫ਼ੀ |
created_at, updated_at | ਟਾਈਮਸਟੈਂਪ |
ਵੈਧ ਇਵੈਂਟ ਕਿਸਮਾਂ
events ਨੂੰ ਇਸ ਸਟੀਕ ਸੈੱਟ ਦੇ ਵਿਰੁੱਧ ਵੈਲੀਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ — ਸੂਚੀ ਤੋਂ ਬਾਹਰ ਦੇ ਮੁੱਲ
400 ਵਾਪਸ ਕਰਦੇ ਹਨ। ਹਰ ਕਿਸਮ ਦੇ ਪੇਲੋਡ ਆਕਾਰ ਲਈ ਇਵੈਂਟ ਕੈਟਾਲੌਗ ਵੇਖੋ।
telephony.incoming,telephony.complete,telephony.toolweb.incoming,web.complete,web.toolcall.gradedissue.reportedtest-call.completedalert.triggered
ਐਂਡਪੌਇੰਟ ਸਥਿਤੀਆਂ
active— ਡਿਲਿਵਰੀਆਂ ਆਮ ਤਰ੍ਹਾਂ ਚਲਦੀਆਂ ਹਨ।disabled—PATCHਰਾਹੀਂ ਹੱਥੀਂ ਰੋਕਿਆ ਗਿਆ। ਕੋਈ ਰਿਕਵੈਸਟ ਨਹੀਂ ਭੇਜੀ ਜਾਂਦੀ। ਅਸੀਂ ਕਦੇ ਵੀdisabledਐਂਡਪੌਇੰਟ ਦੀ ਸਥਿਤੀ ਨਹੀਂ ਬਦਲਦੇ; ਇਸਨੂੰ ਵਾਪਸactiveਕਰਨਾ ਹਮੇਸ਼ਾ ਤੁਹਾਡਾ ਫ਼ੈਸਲਾ ਹੁੰਦਾ ਹੈ।failing— ਜਦੋਂ ਐਂਡਪੌਇੰਟ ਲਈ ਡਿਲਿਵਰੀ ਨੂੰ ਇੱਕ ਵੀ 2xx ਮਿਲੇ ਬਿਨਾਂ ਆਪਣਾ ਪੂਰਾ ਰੀਟ੍ਰਾਈ ਸ਼ਡਿਊਲ (24 ਘੰਟਿਆਂ ਵਿੱਚ 8 ਕੋਸ਼ਿਸ਼ਾਂ) ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਆਪਣੇ ਆਪ ਸੈੱਟ ਹੁੰਦਾ ਹੈ। ਇੱਕ ਫੇਲ੍ਹ ਹੋ ਰਹੇ ਐਂਡਪੌਇੰਟ ਨੂੰ ਹੋਰ ਕੋਈ ਟ੍ਰੈਫਿਕ ਨਹੀਂ ਮਿਲਦਾ। ਐਂਡਪੌਇੰਟ ਠੀਕ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਇਸਦੀ ਸਥਿਤੀ ਨੂੰPATCHਰਾਹੀਂ ਵਾਪਸactiveਕਰੋ; ਜਿਨ੍ਹਾਂ ਡਿਲਿਵਰੀਆਂ ਦਾ ਰੀਟ੍ਰਾਈ ਸ਼ਡਿਊਲ ਅਜੇ ਖਤਮ ਨਹੀਂ ਹੋਇਆ, ਉਹ ਉੱਥੋਂ ਮੁੜ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ ਜਿੱਥੇ ਉਹ ਰੁਕੀਆਂ ਸਨ।
ਐਂਡਪੌਇੰਟਾਂ ਦੀ ਸੂਚੀ
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"
ਐਂਡਪੌਇੰਟ ਆਬਜੈਕਟਾਂ ਦੀ ਇੱਕ ਐਰੇ ਵਾਪਸ ਕਰਦਾ ਹੈ।
ਇੱਕ ਐਂਡਪੌਇੰਟ ਬਣਾਓ
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"]
ਬੇਨਤੀ ਫੀਲਡਾਂ
| ਫੀਲਡ | ਕਿਸਮ | ਲਾਜ਼ਮੀ | ਵੇਰਵਾ |
|---|---|---|---|
label | ਸਟਰਿੰਗ | ਹਾਂ | 1–120 ਅੱਖਰ |
url | ਸਟਰਿੰਗ | ਹਾਂ | HTTPS URL (http ਸਿਰਫ਼ localhost / 127.0.0.1 ਲਈ ਮਨਜ਼ੂਰ ਹੈ) |
events | ਐਰੇ | ਨਹੀਂ | ਖਾਲੀ/ਛੱਡਣ 'ਤੇ ਸਾਰੀਆਂ ਘਟਨਾਵਾਂ ਦੀ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਹੁੰਦੀ ਹੈ। ਵੈਧ ਘਟਨਾ ਕਿਸਮਾਂ ਵਿੱਚ ਦਿੱਤੇ ਮੁੱਲ ਵਰਤਣੇ ਲਾਜ਼ਮੀ ਹਨ; ਡੁਪਲੀਕੇਟ ਹਟਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ |
ਐਂਡਪੌਇੰਟ ਆਬਜੈਕਟ ਦੇ ਨਾਲ 201 Created ਵਾਪਸ ਕਰਦਾ ਹੈ, ਨਾਲ ਹੀ
ਇੱਕ ਵਾਧੂ ਟੌਪ-ਲੈਵਲ secret ਫੀਲਡ ਹੁੰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਕੱਚੀ ਸਾਈਨਿੰਗ ਕੁੰਜੀ ਹੁੰਦੀ ਹੈ — ਇੱਕ
48-ਅੱਖਰਾਂ ਦੀ ਹੈਕਸ ਸਟਰਿੰਗ:
{
"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"]
}'
| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|---|---|---|
label | ਸਟਰਿੰਗ | |
url | ਸਟਰਿੰਗ | |
events | ਐਰੇ | |
status | ਸਟਰਿੰਗ | active ਜਾਂ 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 ਨੂੰ ਡਿਲਿਵਰੀ ਤੁਰੰਤ ਰੁਕ ਜਾਂਦੀ ਹੈ;
ਚੱਲ ਰਹੀਆਂ ਮੁੜ-ਕੋਸ਼ਿਸ਼ਾਂ ਛੱਡ ਦਿੱਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।