Webhook
अंतिम अपडेट: 22 जून 2026
Webhook एक ऐसी सेटिंग है जो Space में कोई घटना होने पर (उदाहरण के लिए Content का बनना या प्रकाशन) पहले से तय किए गए बाहरी URL पर HTTP अनुरोध भेजती है। इसका उपयोग बाहरी सिस्टम के एकीकरण या स्वचालन के लिए होता है। उदाहरण के लिए, जब भी कोई उत्पाद Content प्रकाशित हो, इसे कंपनी के अंदरूनी सूचना सर्वर को कॉल करने या किसी बाहरी API को कॉल करने के लिए कॉन्फ़िगर किया जा सकता है।
Webhook केवल अनुरोध भेजने तक सीमित नहीं रहता; यह उस अनुरोध की प्रतिक्रिया प्राप्त करके उसे वापस Content या Media में लिखने वाले WriteBack तक की सेटिंग की अनुमति देता है। बाहरी API के परिणाम को Space के अंदर के डेटा में समाहित करने वाला अतुल्यकालिक कार्य प्रवाह इसी तरह बनाया जाता है। Webhook CMA में Space का अधीनस्थ संसाधन है, और इसका पथ /spaces/{spaceId}/webhooks को आधार मानता है।
संसाधन संरचना
नीचे Webhook "उत्पाद परिवर्तन सूचना" की एकल पठन प्रतिक्रिया दी गई है। यह sys (सिस्टम गुण) के साथ-साथ भेजने का लक्ष्य, सदस्यता वाली घटनाएँ, और ट्रिगर शर्त जैसी सेटिंग फ़ील्ड रखता है।
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7PWhk01Examp",
"type": "Webhook",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-18T11:30:00.000Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-18T11:30:00.000Z",
"version": 1
},
"name": "उत्पाद परिवर्तन सूचना",
"filters": [
{ "doc": "sys.contentType.sys.id", "op": "EQ", "value": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA" }
],
"headers": [
{ "key": "X-Source", "value": "weegloo", "secret": false }
],
"httpBasicUsername": "dailywear",
"topics": ["Content.Create", "Content.Publish"],
"transformation": { "method": "POST", "contentType": "application/json", "includeBody": true },
"url": "https://api.dailywear.example/webhooks/products",
"activate": true
}मुख्य कुंजियाँ:
sys.id: Webhook का अद्वितीय पहचानकर्ता। यह एकल पठन, संशोधन, और विलोपन पथ के{webhookId}में जाता है।url: घटना होने पर कॉल किया जाने वाला बाहरी लक्ष्य URL।topics: किन घटनाओं की सदस्यता लेनी है, यह तय करने वाला सरणी (array)। प्रारूप नीचे topics में बताया गया है।filters: सदस्यता वाली घटनाओं में से वास्तव में किन्हें ट्रिगर करना है, इसकी शर्तें। नीचे filters में बताया गया है।transformation: बाहर जाने वाले अनुरोध के स्वरूप (मेथड, बॉडी आदि) को बदलने वाली सेटिंग। नीचे transformation में बताया गया है।writeBacks: बाहरी प्रतिक्रिया प्राप्त करके Content या Media में वापस लिखने वाले कार्यों का सरणी। ऊपर के उदाहरण में यह नहीं है। नीचे writeBacks में बताया गया है।
सिस्टम गुण (sys)
हर Webhook सामान्य सिस्टम गुणों को sys ऑब्जेक्ट में रखता है। space, createdBy, और updatedBy Refer स्वरूप ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं।
| गुण | प्रकार | विवरण |
|---|---|---|
id | string | संसाधन का अद्वितीय पहचानकर्ता। |
type | string | संसाधन का प्रकार। Webhook के लिए हमेशा "Webhook"। |
space | Refer<Space> | वह Space जिससे यह Webhook संबंधित है। |
createdBy | Refer<User> | बनाने वाला उपयोगकर्ता। |
createdAt | string (date-time) | बनाने का समय। |
updatedBy | Refer<User> | अंतिम बार संशोधित करने वाला उपयोगकर्ता। |
updatedAt | string (date-time) | अंतिम संशोधन का समय। |
version | integer (≥1) | संसाधन का संस्करण। हर संशोधन पर 1 बढ़ता है। |
Webhook एक सेटिंग संसाधन है, इसलिए इसमें प्रकाशन की अवधारणा नहीं है। Content या Content Type के विपरीत इसमें publish, archive, status जैसे प्रकाशन-स्थिति गुण नहीं होते, केवल परिवर्तन ट्रैक करने वाला version होता है। चालू और बंद करना प्रकाशन से नहीं, बल्कि बॉडी फ़ील्ड activate से नियंत्रित होता है।
बॉडी गुण
Webhook की बॉडी (बनाते और संशोधित करते समय भेजे जाने वाले, और प्रतिक्रिया में लौटने वाले सेटिंग मान) निम्न फ़ील्ड से बनी होती है।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
name | string (1~64) | ✅ | Webhook का नाम। |
url | string (url) | ✅ | घटना होने पर कॉल किया जाने वाला बाहरी लक्ष्य URL। |
activate | boolean | ✅ | चालू है या नहीं। false होने पर घटना होने पर भी अनुरोध नहीं भेजा जाता। |
topics | string[] | ✅ | सदस्यता ली जाने वाली घटनाओं का सरणी। नीचे topics देखें। |
filters | Filter[] | ✅ | ट्रिगर शर्तों का सरणी। खाली रखने पर सदस्यता वाली सभी घटनाएँ ट्रिगर होती हैं। नीचे filters देखें। |
headers | WebhookHeader[] (0~30) | ✅ | अनुरोध के साथ भेजे जाने वाले HTTP हेडर का सरणी। |
httpBasicUsername | string (1~32) | HTTP Basic प्रमाणीकरण का उपयोगकर्ता नाम। | |
httpBasicPassword | string (1~32) | HTTP Basic प्रमाणीकरण का पासवर्ड। यह केवल-लेखन है। प्रतिक्रिया में नहीं आता। | |
transformation | Transformation | ✅ | बाहर जाने वाले अनुरोध का अनुकूलन। नीचे transformation देखें। |
writeBacks | WriteBack[] | प्रतिक्रिया प्राप्त करके किए जाने वाले लेखन कार्यों का सरणी। नीचे writeBacks देखें। |
headers का हर आइटम key (आवश्यक), value (आवश्यक), और secret (वैकल्पिक, boolean) से बना होता है। जिस हेडर का secret true होता है, उसका मान प्रतिक्रिया में छिपा दिया जाता है। API कुंजी जैसे मान, जिन्हें उजागर नहीं होना चाहिए, उन्हें secret: true हेडर में रखें।
topics
topics का हर आइटम {संसाधन}.{क्रिया} प्रारूप में होता है। उदाहरण: Content.Create, Content.Publish, Media.Create।
क्रिया निम्न में से कोई एक होती है, या संसाधन की सभी क्रियाओं को दर्शाने वाला * होता है (उदाहरण: Content.*)।
| क्रिया | अर्थ |
|---|---|
All | सभी क्रियाएँ। |
Create | बनाना। |
Read | पढ़ना। |
Edit | संपादन। |
Save | सहेजना (संशोधन)। संशोधन घटना Save है। Update नहीं। |
Delete | विलोपन। |
Publish | प्रकाशन। |
Unpublish | प्रकाशन रद्द करना। |
Archive | संग्रहण। |
Unarchive | संग्रहण से बाहर करना। |
filters
filters एक ऐसा सरणी है जो सदस्यता वाले topics में से वास्तव में Webhook को ट्रिगर करने वाली शर्तों को सीमित करता है। हर फ़िल्टर का स्वरूप इस प्रकार है।
{ "doc": "sys.contentType.sys.id", "op": "EQ", "value": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA" }doc: तुलना किए जाने वाले फ़ील्ड का पथ।sys.id,sys.contentType.sys.id,sys.createdBy.sys.id,sys.updatedBy.sys.idमें से एक होता है।op: तुलना संकारक।EQ,NE,IN,NOT_IN,REGEX,NOT_REGEXमें से एक होता है।value: तुलना मान।EQ,NE,REGEX,NOT_REGEXको एक स्ट्रिंग दें, औरIN,NOT_INको स्ट्रिंग का सरणी दें।
कई फ़िल्टर रखने पर ट्रिगर के लिए सभी का संतुष्ट होना आवश्यक है (AND)। filters खाली रखने पर सदस्यता वाले topics की सभी घटनाएँ ट्रिगर होती हैं।
transformation
transformation बाहर जाने वाले HTTP अनुरोध के स्वरूप को बदलता है। निर्दिष्ट न करने पर संसाधन का पूरा पेलोड डिफ़ॉल्ट POST के रूप में ज्यों का त्यों बाहर जाता है।
| कुंजी | प्रकार | विवरण |
|---|---|---|
method | string | HTTP मेथड। GET, POST, PUT, DELETE, PATCH में से एक। |
contentType | string | अनुरोध बॉडी का Content-Type। |
body | object | भेजी जाने वाली बॉडी को JSON Pointer टेम्पलेट से बनाने वाला ऑब्जेक्ट। |
includeBody | boolean | ट्रिगर संसाधन की बॉडी साथ भेजनी है या नहीं। |
writeBacks
writeBacks एक ऐसा क्रमबद्ध सरणी है जो Webhook द्वारा प्राप्त बाहरी प्रतिक्रिया का उपयोग करके Content या Media में वापस लिखने वाले कार्यों को रखता है। यह केवल तभी क्रम से चलता है जब बाहरी API 2xx के साथ प्रतिक्रिया देता है। हर आइटम में $content (WriteBackContent) या $media (WriteBackMedia) में से एक होता है।
WriteBackContent ($content) की कुंजियाँ:
| कुंजी | प्रकार | विवरण |
|---|---|---|
action | string | Create, Update, Delete, Publish, Unpublish, Archive, Unarchive में से एक। |
contentType | Refer<ContentType> | Create के समय बनाया जाने वाला Content Type। केवल sys.id देना पर्याप्त है। |
target | string | Update, Delete आदि में लक्ष्य Content के sys.id को इंगित करने वाला JSON Pointer टेम्पलेट (उदाहरण: { /response/id })। इसे { } से घेरना आवश्यक है, घेरा न जाए तो इसे शाब्दिक (literal) माना जाता है। छोड़ देने पर Webhook को ट्रिगर करने वाले संसाधन को लक्ष्य बनाया जाता है। |
locale | string | Create, Update के समय मान लिखे जाने वाला locale। locale कोड या पॉइंटर टेम्पलेट। छोड़ देने पर Space का डिफ़ॉल्ट locale। |
fields | object | Create, Update के समय लक्ष्य फ़ील्ड कुंजी → स्रोत अभिव्यक्ति का मानचित्र। कुंजी लक्ष्य Content फ़ील्ड का apiName होती है। |
publish | boolean | Create, Update के बाद प्रकाशित करना है या नहीं। डिफ़ॉल्ट मान true। |
unpublish | boolean | Delete के समय विलोपन से पहले प्रकाशन रद्द करना है या नहीं। डिफ़ॉल्ट मान true। |
WriteBackMedia ($media) की कुंजियाँ:
| कुंजी | प्रकार | विवरण |
|---|---|---|
action | string | Create, Delete, Publish, Unpublish, Archive, Unarchive में से एक। |
source | string | Create के समय Media में लाए जाने वाले मान का पॉइंटर टेम्पलेट (उदाहरण: { /response/data/0/url })। इसे { } से घेरना आवश्यक है। |
encoding | string | Create के समय source की व्याख्या करने का तरीका। Url, Base64, Binary में से एक। |
locale | string | Create के समय फ़ाइल, शीर्षक, विवरण लिखे जाने वाला locale। छोड़ देने पर Space का डिफ़ॉल्ट locale। |
title | string | Create के समय Media का शीर्षक (स्रोत अभिव्यक्ति या शाब्दिक)। |
description | string | Create के समय Media का विवरण। |
target | string | Delete आदि में लक्ष्य Media के sys.id को इंगित करने वाला पॉइंटर टेम्पलेट। छोड़ देने पर ट्रिगर संसाधन लक्ष्य बनता है। |
publish | boolean | Create के समय प्रसंस्करण पूरा होने के बाद प्रकाशित करना है या नहीं। डिफ़ॉल्ट मान true। |
unpublish | boolean | Delete के समय विलोपन से पहले प्रकाशन रद्द करना है या नहीं। डिफ़ॉल्ट मान true। |
नीचे बाहरी प्रतिक्रिया JSON से मान निकालकर एक Content बनाने वाला writeBacks उदाहरण दिया गया है।
"writeBacks": [
{
"$content": {
"action": "Create",
"contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA" } },
"locale": "ko-KR",
"fields": {
"productName": "{ /response/title }",
"price": "{ /response/price }"
},
"publish": true,
"unpublish": true
}
}
]{ /response/... } Webhook द्वारा प्राप्त प्रतिक्रिया JSON से मान निकालने वाला JSON Pointer टेम्पलेट है। fields की कुंजियाँ (productName, price) लक्ष्य Content फ़ील्ड का apiName हैं। ऊपर का उदाहरण प्रतिक्रिया के title को Content के productName में, और price को price में भरकर Content बनाता है और फिर प्रकाशित करता है।
API
नीचे दिए गए सभी एंडपॉइंट का आधार URL https://cma.weegloo.com/v1 है, और Authorization हेडर में CMA को प्रमाणित करने वाला Bearer टोकन आवश्यक है। संशोधन (PUT) और आंशिक संशोधन (PATCH) के लिए आशावादी समवर्तीता नियंत्रण हेतु X-Weegloo-Version हेडर (संसाधन का वर्तमान sys.version) भी भेजना आवश्यक है।
