Content Type
Content Type वह ढाँचा (स्कीमा) है जिसका content अनुसरण करता है। यह तय करता है कि कौन-कौन से field होंगे, और हर field का type, बहुभाषी होना या न होना, अनिवार्य होना या न होना, और validation नियम क्या होंगे। किसी कपड़े की दुकान के ऑनलाइन शॉपिंग मॉल के "उत्पाद" को उदाहरण के तौर पर लें, तो उत्पाद का नाम, कीमत, विस्तृत विवरण, मुख्य चित्र जैसे आइटमों की संरचना को एक ही Content Type "उत्पाद" परिभाषित करता है, और हर वास्तविक अलग-अलग उत्पाद इस ढाँचे का अनुसरण करने वाले Content के रूप में बनता है।
CMA में Content Type, Space का अधीनस्थ संसाधन है, और इसका path /spaces/{spaceId}/content-types को आधार बनाता है। बनाना, संपादन, और publish रद्द करना जैसे प्रबंधन कार्य CMA में किए जाते हैं, और publish किया गया snapshot CDA को पहुँचाया जाता है। हालाँकि Content Type बनाने और संपादित करने पर स्वतः publish हो जाता है, इसलिए Content के विपरीत किसी अलग publish कॉल के बिना भी यह तुरंत Published स्थिति में आ जाता है (नीचे स्थिति और स्वतः publish देखें)।
संसाधन संरचना
नीचे Content Type "उत्पाद" के एकल पठन (single read) का response दिया गया है। sys (सिस्टम गुण) के साथ इसमें name, displayField, publishWithAuthor, fields जैसे मुख्य गुण होते हैं।
{
"sys": {
"id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA",
"type": "ContentType",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"publish": {
"version": 7,
"at": "2026-06-17T03:13:49.973Z",
"firstAt": "2026-06-14T17:04:46.953Z",
"counter": 4,
"by": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } }
},
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-14T17:04:46.846Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-17T03:13:49.973Z",
"version": 8,
"status": "Published"
},
"name": "उत्पाद",
"displayField": "productName",
"publishWithAuthor": false,
"fields": [
{ "id": "5n06s7ocmwdi", "name": "उत्पाद नाम", "apiName": "productName", "type": "ShortText", "localized": true, "required": true, "validations": [], "disabled": false },
{ "id": "1gecyz8g4llwf", "name": "मूल्य", "apiName": "price", "type": "Long", "localized": false, "required": false, "validations": [], "disabled": false },
{ "id": "3ow4popgz54zg", "name": "विवरण", "apiName": "description", "type": "RichText", "localized": true, "required": false, "validations": [], "disabled": false },
{ "id": "2alxdptmdub1s", "name": "फ़ोटो", "apiName": "photo", "type": "Refer", "localized": false, "required": false, "validations": [], "disabled": false, "targetType": "Media" },
{
"id": "2a80lehazfx3t",
"name": "ब्रांड",
"apiName": "brand",
"type": "Refer",
"localized": false,
"required": false,
"validations": [
{ "referContentType": [ { "sys": { "id": "3trmXRM3RqbgSnifyg7OveRYWnJWEG", "type": "Refer", "targetType": "ContentType" } } ] }
],
"disabled": false,
"targetType": "Content"
}
]
}मुख्य keys:
sys.id: Content Type का विशिष्ट पहचानकर्ता। यह एकल पठन, संपादन, और हटाने के path के{contentTypeId}में जाता है।name: Content Type का नाम (उदाहरण:उत्पाद)।displayField: कंटेंट स्टूडियो की सूची में हर Content का प्रतिनिधित्व करके दिखाए जाने वाले field काapiName(उदाहरण:productName)।publishWithAuthor: Content को publish करते समय publish snapshot में लेखक की जानकारी (sys.createdByऔरsys.updatedBy) साथ रखनी है या नहीं। डिफ़ॉल्ट मानfalseहै, और इस स्थिति में CDA/ACDA को पहुँचाए जाने वाले snapshot में लेखक शामिल नहीं होता। यह मान publish के समय लागू होता है और पूर्वप्रभावी नहीं होता, इसलिए बाद मेंtrueकर देने पर भी पहले से publish किए गए Content में लेखक तभी भरता है जब उसे फिर से publish किया जाए। प्रबंधन API (CMA/ACMA) जिन draft को संभालता है उनमें इस सेटिंग से स्वतंत्र रूप सेsys.createdByमौजूद रहता है। delivery response में लेखक (byline) दिखाने के लिए, या अनुमति नियमों केcreatedByफ़िल्टर (:selfसहित) को CDA/ACDA में जाँचने के लिए, इस मान कोtrueरखना आवश्यक है (SpaceRole और ServiceUserRole केcreatedByफ़िल्टर का विवरण देखें)।fields: इस ढाँचे द्वारा परिभाषित field की सूची। हर आइटम की संरचना नीचे field में समझाई गई है।
photo field का type Refer है और targetType Media है, इसलिए यह अपलोड की गई फ़ाइल asset की ओर इशारा करता है। brand field Refer + targetType: Content है, और validations के referContentType के ज़रिए केवल किसी विशिष्ट Content Type (यहाँ "ब्रांड") के Content को ही संदर्भित करने तक सीमित करता है।
सिस्टम गुण (sys)
हर Content Type सामान्य सिस्टम गुण और Content Type के विशिष्ट गुण sys object में रखता है। space, createdBy, updatedBy Refer आकार ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं।
| गुण | type | विवरण |
|---|---|---|
id | string | संसाधन का विशिष्ट पहचानकर्ता। |
type | string | संसाधन का प्रकार। Content Type हमेशा "ContentType"। |
space | Refer<Space> | वह Space जिससे यह Content Type संबंधित है। |
createdBy | Refer<User> | बनाने वाला उपयोगकर्ता। |
createdAt | string (date-time) | बनाने का समय। |
updatedBy | Refer<User> | अंतिम बार संपादित करने वाला उपयोगकर्ता। |
updatedAt | string (date-time) | अंतिम संपादन का समय। |
version | integer (≥1) | संसाधन का संस्करण। बनाने, संपादन, publish, publish रद्द जैसे हर परिवर्तन पर 1 बढ़ता है। |
status | string (enum) | publish स्थिति। Draft, Changed, Published, Archived में से एक। |
publish | object | publish इतिहास। नीचे keys देखें। |
publish object की keys:
| key | type | विवरण |
|---|---|---|
version | integer | अंतिम बार publish हुए समय का sys.version। |
at | string (date-time) | अंतिम publish का समय। |
firstAt | string (date-time) | पहली बार publish का समय। publish रद्द करने पर भी यह सुरक्षित रहता है। |
counter | integer | संचयी publish की संख्या। |
by | Refer<User> | अंतिम बार publish करने वाला उपयोगकर्ता। |
publish रद्द (DELETE .../publish) करने पर publish से version, at, by हट जाते हैं और केवल firstAt, counter शेष रहते हैं।
Content Type के sys में वह contentType (स्व-संदर्भ) गुण नहीं होता जो Content के sys में होता है। ऐसा इसलिए क्योंकि Content Type स्वयं ही ढाँचा है। archive गुण भी नहीं होता।
field
fields इस Content Type द्वारा परिभाषित field की सूची है। हर आइटम की निम्नलिखित संरचना (FieldDefinition) होती है।
| key | type | विवरण |
|---|---|---|
id | string (1~64) | field का विशिष्ट पहचानकर्ता। बनाते समय स्वतः दिया जाता है। |
name | string (1~50) | कंटेंट स्टूडियो में दिखने वाला field नाम (उदाहरण: उत्पाद नाम)। |
apiName | string (1~64) | API में इस field की ओर इशारा करने वाली key। पैटर्न ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (अंग्रेज़ी अक्षर या अंक से शुरू, उसके बाद अंग्रेज़ी अक्षर, अंक, -, _)। |
type | string (enum) | field का type। नीचे field के प्रकार (type) देखें। |
localized | boolean | बहुभाषी मान रख सकता है या नहीं। |
required | boolean | अनिवार्य इनपुट है या नहीं। |
validations | array | मान पर लागू होने वाले validation नियमों की सूची। कोई नियम न हो तो खाली array []। नीचे validation (validations) देखें। |
disabled | boolean | निष्क्रिय है या नहीं। |
targetType | string (enum) | केवल तब जब type Refer हो। संदर्भ का लक्ष्य Content है या Media। |
items | object | केवल तब जब type Array हो। array के घटक की परिभाषा (Refer घटक या ShortText घटक)। |
field के प्रकार (type)
type तय करता है कि मान किस तरीके से संग्रहीत और पढ़ा जाता है। कुछ type में खोज का व्यवहार अलग होता है।
type | अर्थ | मान सीमा | टिप्पणी |
|---|---|---|---|
ShortText | छोटा एक-पंक्ति टेक्स्ट। | 64 अक्षर | सटीक कीवर्ड पठन के लिए उपयुक्त। |
LongText | लंबा मुख्य टेक्स्ट। | 5,120 अक्षर | full-text समानता खोज का समर्थन करता है। |
RichText | स्वरूपण वाला मुख्य टेक्स्ट। | 204,800 अक्षर | खोज का लक्ष्य नहीं, स्वरूपण की अभिव्यक्ति के लिए। |
Long | पूर्णांक। | उदाहरण: कीमत price। | |
Number | वास्तविक संख्या (दशमलव सहित)। | केवल परिमित मान | अनंत और NaN स्वीकार नहीं किए जाते। |
Boolean | सही/गलत। | ||
Date | तिथि और समय। | ||
Json | मनमानी JSON संरचना। | क्रमांकित रूप में 5,120 अक्षर | संरचना के भीतर की संख्याएँ भी परिमित होनी चाहिए। |
Location | स्थान (निर्देशांक)। | latitude -90longitude -180 | |
Refer | किसी अन्य संसाधन की ओर इशारा करने वाला संदर्भ। | targetType से Content या Media निर्दिष्ट करें। | |
Array | कई मान रखने वाली array। | 64 घटक | items के साथ घटक की परिभाषा देता है। |
"उत्पाद" उदाहरण में उत्पाद नाम ShortText है, मूल्य Long है, विवरण RichText है, फ़ोटो Refer (targetType: Media) है, और ब्रांड Refer (targetType: Content) है।
मान सीमा वह प्लेटफ़ॉर्म-स्तरीय ऊपरी सीमा है जिसे type तय करता है, और यह Content Type बनाते समय नहीं बल्कि Content में मान लिखते समय जाँची जाती है। validations के size से इससे बड़ी ऊपरी सीमा लिख देने पर भी प्लेटफ़ॉर्म-स्तरीय सीमा पहले लागू होती है। Array के घटकों पर घटक type की वही सीमा ज्यों की त्यों लागू होती है, इसलिए जिस array का items.type ShortText है उसका हर एक घटक 64 अक्षर से अधिक नहीं हो सकता। सीमा से अधिक मान के साथ Content लिखने पर वह अस्वीकार हो जाता है, और उसका कोड Content की त्रुटियाँ में है।
validation (validations)
validations field के मान पर लागू होने वाले नियमों की array है। हर आइटम निम्नलिखित keys में से किसी एक को रखता है।
| key | आकार | विवरण |
|---|---|---|
size | { "min", "max" } | टेक्स्ट की लंबाई या array के आकार का न्यूनतम और अधिकतम। |
unique | boolean | एक ही Content Type के भीतर मान का दोहराव निषेध करता है। |
regexp | { "pattern", "flags" } | मान का regular expression पैटर्न से मेल खाना अनिवार्य। pattern आवश्यक। |
prohibitRegexp | { "pattern", "flags" } | मान regular expression पैटर्न से मेल खाए तो अस्वीकार। pattern आवश्यक। |
in | array | अनुमत मानों की सूची। सूची में मौजूद मान ही पास होते हैं। |
range | { "min", "max" } | संख्यात्मक मान का न्यूनतम और अधिकतम। |
dateRange | { "min", "max", "after", "before" } | तिथि मान की अनुमत सीमा। |
mediaMimetypeGroup | array | Refer (Media) field में अनुमत फ़ाइल प्रकारों की सूची। नीचे enum देखें। |
mediaImageDimensions | { "width", "height" } | चित्र की चौड़ाई और ऊँचाई (पिक्सेल) पर बाधा। |
mediaFileSize | { "min", "max" } | फ़ाइल आकार (बाइट) का न्यूनतम और अधिकतम। |
referContentType | array | Refer (Content) field में संदर्भ की अनुमति देने वाले Content Type की सूची। हर आइटम Refer<ContentType> आकार का। |
message | string | validation विफल होने पर दिखाया जाने वाला कस्टम संदेश। |
mediaMimetypeGroup में प्रयोग किए जा सकने वाले मान (12 प्रकार): Attachment, Plaintext, Image, Audio, Video, RichText, Presentation, Spreadsheet, PdfDocument, Archive, Code, Markup।
"उत्पाद" उदाहरण का brand field referContentType के ज़रिए केवल "ब्रांड" Content Type (जिसका sys.id 3trmXRM3RqbgSnifyg7OveRYWnJWEG है) को संदर्भित करने तक सीमित करता है।
स्थिति और स्वतः publish
Content Type बनाने, संपादन, और आंशिक संपादन पर स्वतः publish हो जाता है। यही बात Content से अलग है। Content बनने के बाद एक अलग publish कॉल होने पर ही delivery path पर आता है, जबकि Content Type का create response तुरंत status: "Published" के साथ लौटता है।
status निम्नलिखित 4 में से एक होता है।
status | अर्थ |
|---|---|
Draft | publish न हुई स्थिति। |
Changed | पहले publish हुआ था परंतु उसके बाद का बदलाव अभी publish नहीं हुआ। |
Published | publish है और कोई अप्रकाशित बदलाव नहीं है। |
Archived | संग्रहीत स्थिति। |
sys.version हर परिवर्तन पर 1 बढ़ता है। Content Type में संपादन और publish एक साथ होते हैं, इसलिए एक बार का संपादन version को 2 बढ़ा देता है (संपादन स्वयं +1, स्वतः publish +1)। उदाहरण "सूचना" में बनने के तुरंत बाद version 2 होता है (create +1, स्वतः publish +1) और publish.counter 1 होता है। इसके बाद संपादन करने पर version 4 हो जाता है और publish.counter 2 हो जाता है।
Content Type के Draft बनने का एकमात्र रास्ता स्पष्ट publish रद्द (DELETE .../publish) है। publish रद्द करने पर status Draft हो जाता है, और publish object से version, at, by हट जाते हैं तथा केवल firstAt, counter शेष रहते हैं।
बाधाएँ
| लक्ष्य | बाधा |
|---|---|
name (Content Type) | 1~64 अक्षर, अनिवार्य। |
description | 128 अक्षर तक, वैकल्पिक। |
fields | 1~80 field। बनाने, संपादन, और आंशिक संपादन, तीनों में यह सीमा माननी होती है। |
name (field) | 1~50 अक्षर, अनिवार्य। |
apiName (field) | 1~64 अक्षर, पैटर्न ^[a-zA-Z0-9][a-zA-Z0-9-_]*$, अनिवार्य। |
हटाने का guard: हटाने के लिए दोनों शर्तें पूरी होनी चाहिए।
- यदि इस Content Type का उपयोग करने वाला एक भी Content मौजूद है तो इसे हटाया नहीं जा सकता। पहले उस Content को सब हटा दें। यह जाँच सबसे पहले लगती है।
- publish स्थिति (
Published,Changed) वाले Content Type को सीधे नहीं हटाया जा सकता। पहले publish रद्द (DELETE .../publish) करके इसेDraftबनाएँ, फिर हटाएँ (Archivedस्थिति को भी हटाया जा सकता है)।
त्रुटियाँ
ये कोड Content Type के साथ काम करते समय मिलते हैं। सभी संसाधनों में समान रूप से मिलने वाले कोड के लिए सामान्य त्रुटियाँ देखें।
| कोड | शर्त |
|---|---|
WGL422010 | इस Content Type का उपयोग करने वाला Content अभी भी मौजूद है, और उसी स्थिति में Content Type को हटाने का प्रयास किया गया। publish रद्द करने पर भी यही जाँच लगती है, इसलिए Content बचा रहने पर publish रद्द करना ही इस कोड से अस्वीकार हो जाता है। |
WGL422009 | publish स्थिति (Published, Changed) वाले Content Type को publish रद्द किए बिना हटाने का प्रयास किया गया। |
WGL422006 | publish स्थिति में न होने वाले Content Type का publish रद्द करने का प्रयास किया गया। |
WGL400002 | fields की संख्या अनुमत सीमा से अधिक है। बनाने, संपादन, और आंशिक संपादन, तीनों पर यह जाँच लगती है। |
WGL400045 | displayField में लिखा गया मान उस Content Type के fields के किसी भी apiName से मेल नहीं खाता। |
WGL400046 | जिस field के साथ उसका जोड़ीदार गुण भी लिखना अनिवार्य है, उस field में वह गुण मौजूद नहीं है। Array के लिए items और Refer के लिए targetType आवश्यक है। |
WGL400040 | एक ही apiName वाले field एक से अधिक हैं। |
API
नीचे दिए गए सभी endpoint का आधार URL https://cma.weegloo.com/v1 है, और Authorization header में CMA को प्रमाणित करने वाला Bearer token आवश्यक है। संपादन, आंशिक संपादन, publish, और publish रद्द में आशावादी समवर्ती नियंत्रण (optimistic concurrency control) के लिए X-Weegloo-Version header (वर्तमान संसाधन का sys.version) भी भेजना आवश्यक है।
संबंधित दस्तावेज़
- Content मॉडलिंग: Content Type को कंटेंट स्टूडियो में बनाने का तरीका।
- स्थिति और publish: publish और version का अर्थ।
