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विवरण
idstringresource का विशिष्ट पहचानकर्ता।
typestringresource का प्रकार। Content Type हमेशा "ContentType"
spaceRefer<Space>वह Space जिससे यह Content Type संबंधित है।
createdByRefer<User>बनाने वाला उपयोगकर्ता।
createdAtstring (date-time)बनाने का समय।
updatedByRefer<User>अंतिम बार संपादित करने वाला उपयोगकर्ता।
updatedAtstring (date-time)अंतिम संपादन का समय।
versioninteger (≥1)resource का संस्करण। बनाने, संपादन, 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छोटा एक-पंक्ति टेक्स्ट।सटीक कीवर्ड पठन के लिए उपयुक्त।
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 के आकार का न्यूनतम और अधिकतम।
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 अक्षर तक, वैकल्पिक।
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) भी भेजना आवश्यक है।