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विवरण
idstringसंसाधन का विशिष्ट पहचानकर्ता।
typestringसंसाधन का प्रकार। Content Type हमेशा "ContentType"
spaceRefer<Space>वह Space जिससे यह Content Type संबंधित है।
createdByRefer<User>बनाने वाला उपयोगकर्ता।
createdAtstring (date-time)बनाने का समय।
updatedByRefer<User>अंतिम बार संपादित करने वाला उपयोगकर्ता।
updatedAtstring (date-time)अंतिम संपादन का समय।
versioninteger (≥1)संसाधन का संस्करण। बनाने, संपादन, publish, publish रद्द जैसे हर परिवर्तन पर 1 बढ़ता है।
statusstring (enum)publish स्थिति। Draft, Changed, Published, Archived में से एक।
publishobjectpublish इतिहास। नीचे keys देखें।

publish object की keys:

keytypeविवरण
versionintegerअंतिम बार publish हुए समय का sys.version
atstring (date-time)अंतिम publish का समय।
firstAtstring (date-time)पहली बार publish का समय। publish रद्द करने पर भी यह सुरक्षित रहता है।
counterintegerसंचयी publish की संख्या।
byRefer<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) होती है।

keytypeविवरण
idstring (1~64)field का विशिष्ट पहचानकर्ता। बनाते समय स्वतः दिया जाता है।
namestring (1~50)कंटेंट स्टूडियो में दिखने वाला field नाम (उदाहरण: उत्पाद नाम)।
apiNamestring (1~64)API में इस field की ओर इशारा करने वाली key। पैटर्न ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (अंग्रेज़ी अक्षर या अंक से शुरू, उसके बाद अंग्रेज़ी अक्षर, अंक, -, _)।
typestring (enum)field का type। नीचे field के प्रकार (type) देखें।
localizedbooleanबहुभाषी मान रख सकता है या नहीं।
requiredbooleanअनिवार्य इनपुट है या नहीं।
validationsarrayमान पर लागू होने वाले validation नियमों की सूची। कोई नियम न हो तो खाली array []। नीचे validation (validations) देखें।
disabledbooleanनिष्क्रिय है या नहीं।
targetTypestring (enum)केवल तब जब type Refer हो। संदर्भ का लक्ष्य Content है या Media
itemsobjectकेवल तब जब 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 -9090, longitude -180180
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 के आकार का न्यूनतम और अधिकतम।
uniquebooleanएक ही Content Type के भीतर मान का दोहराव निषेध करता है।
regexp{ "pattern", "flags" }मान का regular expression पैटर्न से मेल खाना अनिवार्य। pattern आवश्यक।
prohibitRegexp{ "pattern", "flags" }मान regular expression पैटर्न से मेल खाए तो अस्वीकार। pattern आवश्यक।
inarrayअनुमत मानों की सूची। सूची में मौजूद मान ही पास होते हैं।
range{ "min", "max" }संख्यात्मक मान का न्यूनतम और अधिकतम।
dateRange{ "min", "max", "after", "before" }तिथि मान की अनुमत सीमा।
mediaMimetypeGrouparrayRefer (Media) field में अनुमत फ़ाइल प्रकारों की सूची। नीचे enum देखें।
mediaImageDimensions{ "width", "height" }चित्र की चौड़ाई और ऊँचाई (पिक्सेल) पर बाधा।
mediaFileSize{ "min", "max" }फ़ाइल आकार (बाइट) का न्यूनतम और अधिकतम।
referContentTypearrayRefer (Content) field में संदर्भ की अनुमति देने वाले Content Type की सूची। हर आइटम Refer<ContentType> आकार का।
messagestringvalidation विफल होने पर दिखाया जाने वाला कस्टम संदेश।

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अर्थ
Draftpublish न हुई स्थिति।
Changedपहले publish हुआ था परंतु उसके बाद का बदलाव अभी publish नहीं हुआ।
Publishedpublish है और कोई अप्रकाशित बदलाव नहीं है।
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 अक्षर, अनिवार्य।
description128 अक्षर तक, वैकल्पिक।
fields1~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 रद्द करना ही इस कोड से अस्वीकार हो जाता है।
WGL422009publish स्थिति (Published, Changed) वाले Content Type को publish रद्द किए बिना हटाने का प्रयास किया गया।
WGL422006publish स्थिति में न होने वाले Content Type का publish रद्द करने का प्रयास किया गया।
WGL400002fields की संख्या अनुमत सीमा से अधिक है। बनाने, संपादन, और आंशिक संपादन, तीनों पर यह जाँच लगती है।
WGL400045displayField में लिखा गया मान उस 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) भी भेजना आवश्यक है।