Content Type
अंतिम अपडेट: 3 जुलाई 2026
Content Type वह ढाँचा (स्कीमा) है जिसका content अनुसरण करता है। यह तय करता है कि कौन-कौन से field होंगे, और हर field का type, बहुभाषी होना या न होना, अनिवार्य होना या न होना, और validation नियम क्या होंगे। किसी कपड़े की दुकान के ऑनलाइन शॉपिंग मॉल के "उत्पाद" को उदाहरण के तौर पर लें, तो उत्पाद का नाम, कीमत, विस्तृत विवरण, मुख्य चित्र जैसे आइटमों की संरचना को एक ही Content Type "उत्पाद" परिभाषित करता है, और हर वास्तविक अलग-अलग उत्पाद इस ढाँचे का अनुसरण करने वाले Content के रूप में बनता है।
CMA में Content Type, Space का अधीनस्थ resource है, और इसका path /spaces/{spaceId}/content-types को आधार बनाता है। बनाना, संपादन, और publish रद्द करना जैसे प्रबंधन कार्य CMA में किए जाते हैं, और publish किया गया snapshot CDA को पहुँचाया जाता है। हालाँकि Content Type बनाने और संपादित करने पर स्वतः publish हो जाता है, इसलिए Content के विपरीत किसी अलग publish कॉल के बिना भी यह तुरंत Published स्थिति में आ जाता है (नीचे स्थिति और स्वतः publish देखें)।
resource संरचना
नीचे 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 करते समय लेखक की जानकारी साथ रखनी है या नहीं। डिफ़ॉल्ट मानfalseहै।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 | resource का विशिष्ट पहचानकर्ता। |
type | string | resource का प्रकार। 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) | resource का संस्करण। बनाने, संपादन, 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 | छोटा एक-पंक्ति टेक्स्ट। | सटीक कीवर्ड पठन के लिए उपयुक्त। |
LongText | लंबा मुख्य टेक्स्ट। | full-text समानता खोज का समर्थन करता है। |
RichText | स्वरूपण वाला मुख्य टेक्स्ट। | खोज का लक्ष्य नहीं, स्वरूपण की अभिव्यक्ति के लिए। |
Long | पूर्णांक। | उदाहरण: कीमत price। |
Number | वास्तविक संख्या (दशमलव सहित)। | |
Boolean | सही/गलत। | |
Date | तिथि और समय। | |
Json | मनमानी JSON संरचना। | |
Location | स्थान (निर्देशांक)। | |
Refer | किसी अन्य resource की ओर इशारा करने वाला संदर्भ। | targetType से Content या Media निर्दिष्ट करें। |
Array | कई मान रखने वाली array। | items के साथ घटक की परिभाषा देता है। |
"उत्पाद" उदाहरण में उत्पाद नाम ShortText है, मूल्य Long है, विवरण RichText है, फ़ोटो Refer (targetType: Media) है, और ब्रांड Refer (targetType: 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, संपादन के समय कम से कम 1। |
name (field) | 1~50 अक्षर, अनिवार्य। |
apiName (field) | 1~64 अक्षर, पैटर्न ^[a-zA-Z0-9][a-zA-Z0-9-_]*$, अनिवार्य। |
हटाने का guard: हटाने के लिए दोनों शर्तें पूरी होनी चाहिए।
- यदि इस Content Type का उपयोग करने वाला एक भी Content मौजूद है तो इसे हटाया नहीं जा सकता (
WGL422010)। पहले उस Content को सब हटा दें। यह जाँच सबसे पहले लगती है। - publish स्थिति (
Published,Changed) वाले Content Type को सीधे नहीं हटाया जा सकता (WGL422009)। पहले publish रद्द (DELETE .../publish) करके इसेDraftबनाएँ, फिर हटाएँ (Archivedस्थिति को भी हटाया जा सकता है)।
API
नीचे दिए गए सभी endpoint का आधार URL https://cma.weegloo.com/v1 है, और Authorization header में CMA को प्रमाणित करने वाला Bearer token आवश्यक है। संपादन, आंशिक संपादन, publish, और publish रद्द में आशावादी समवर्ती नियंत्रण (optimistic concurrency control) के लिए X-Weegloo-Version header (वर्तमान resource का sys.version) भी भेजना आवश्यक है।
संबंधित दस्तावेज़
- Content मॉडलिंग: Content Type को कंटेंट स्टूडियो में बनाने का तरीका।
- स्थिति और publish: publish और version का अर्थ।
