सिस्टम प्रॉपर्टी (sys)

अंतिम अपडेट: 3 जुलाई 2026

WEEGLOO के हर रिसोर्स का रिस्पॉन्स दो भागों में बँटा होता है। एक ओर fields जैसा उस रिसोर्स का मुख्य डेटा होता है, और दूसरी ओर सिस्टम द्वारा प्रबंधित मेटाडेटा होता है। यह सारा मेटाडेटा sys ऑब्जेक्ट में रखा जाता है।

sys में रिसोर्स का पहचानकर्ता (id), प्रकार (type), बनाने और बदलने का समय, वर्शन, और दूसरे रिसोर्स के साथ संबंध आते हैं। यह पेज sys की उस संरचना को, जो हर रिसोर्स में समान रूप से होती है, और रिसोर्स के प्रकार के अनुसार आने वाले अंतरों को एक ही जगह संकलित करता है। हर अलग रिसोर्स की रेफ़रेंस उस रिसोर्स की अपनी sys कुंजियों को ही अलग से समझाती है, और साझा हिस्से के लिए इस पेज का संदर्भ देती है।

साझा फ़ील्ड

लगभग हर रिसोर्स का sys निम्नलिखित फ़ील्ड रखता है। createdBy, updatedBy और space दूसरे रिसोर्स की ओर इशारा करने वाले Refer रूप ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं। विस्तृत रूप नीचे Refer रूप में दिया गया है।

प्रॉपर्टीटाइपविवरण
idstringरिसोर्स का अनूठा पहचानकर्ता। एकल पठन, संशोधन और विलोपन पथ के {...Id} स्थान पर आता है।
typestringरिसोर्स का प्रकार। उस रिसोर्स के प्रकार का नाम मान होता है (उदाहरण: "Content", "Media", "Tag")।
createdByRefer<User>बनाने वाला उपयोगकर्ता।
updatedByRefer<User>अंतिम बार संशोधन करने वाला उपयोगकर्ता।
createdAtstring (date-time)बनाने का समय।
updatedAtstring (date-time)अंतिम संशोधन का समय।
versioninteger (≥1)वर्तमान वर्शन। रिसोर्स में हर संशोधन पर 1 बढ़ता है।
spaceRefer<Space>वह Space जिससे यह रिसोर्स संबंधित है। केवल Space के अधीनस्थ रिसोर्स ही इसे रखते हैं।

version का उपयोग एक साथ होने वाले संशोधन के टकराव को रोकने में भी होता है। संशोधन और प्रकाशन जैसे परिवर्तन वाले अनुरोधों में वर्तमान version मान को X-Weegloo-Version हेडर में भेजना ज़रूरी है। विस्तृत नियम के लिए नियमावली देखें।

Organization किसी Space के अधीनस्थ नहीं है, इसलिए वह space नहीं रखता। इसके बदले वह अपने प्लान की ओर इशारा करने वाला plan (Refer<Plan>) और आधिकारिक होने या न होने का isOfficial (boolean) रखता है। Space अपने ऊपर के Organization की ओर इशारा करने वाला organization (Refer<Organization>) और plan रखता है।

Refer रूप

sys के भीतर दूसरे रिसोर्स की ओर इशारा करने वाला संदर्भ हमेशा एक ही रूप में होता है। type "Refer" पर तय रहता है, और targetType यह बताता है कि वह किस प्रकार के रिसोर्स की ओर इशारा कर रहा है।

{
  "sys": {
    "id": "HnQ32YiH",
    "type": "Refer",
    "targetType": "Space"
  }
}

targetType में जिस रिसोर्स की ओर इशारा किया जा रहा है उसके प्रकार का नाम आता है। उदाहरण के लिए space का targetType "Space" होता है, createdBy और updatedBy का "User", और Content के contentType का "ContentType" होता है। यानी Refer&lt;User&gt;, Refer&lt;Space&gt; के रूप में लिखे जाने वाले सभी टाइप इसी रूप में होते हैं, और केवल targetType अलग होता है।

रिसोर्स के प्रकार के अनुसार अंतर

साझा फ़ील्ड के ऊपर रिसोर्स के प्रकार के अनुसार अतिरिक्त प्रॉपर्टी जुड़ती हैं। ये मोटे तौर पर तीन भागों में बँटती हैं।

प्रकाशन जीवनचक्र वाले रिसोर्स (Content, Media)

Content और Media के पास लेखन, प्रकाशन और संग्रहण का जीवनचक्र होता है। इसलिए sys में प्रकाशन स्थिति दर्शाने वाली प्रॉपर्टी और जुड़ती हैं।

प्रॉपर्टीटाइपविवरण
statusstring (enum)प्रकाशन स्थिति। Draft, Changed, Published, Archived में से एक।
publishobjectप्रकाशन स्थिति का पॉइंटर। नीचे की कुंजियाँ देखें।
archiveobjectसंग्रहण जानकारी। केवल संग्रहित होने पर मौजूद रहती है, अन्यथा यह कुंजी नहीं होती।

status निम्नलिखित 4 में से एक होता है।

statusअर्थ
Draftलिखा जा रहा है और अभी तक प्रकाशित नहीं हुआ है।
Changedपहले प्रकाशित हो चुका है, पर उसके बाद संशोधित होकर अभी तक प्रकाशित न हुए परिवर्तन मौजूद हैं।
Publishedप्रकाशित है और कोई अप्रकाशित परिवर्तन नहीं है।
Archivedसंग्रहित अवस्था।

publish ऑब्जेक्ट प्रकाशन स्थिति की ओर इशारा करने वाला पॉइंटर है। प्रकाशित होने पर यह निम्नलिखित सभी कुंजियाँ रखता है।

कुंजीटाइपविवरण
versionintegerप्रकाशन के समय का sys.version
atstring (date-time)अंतिम प्रकाशन का समय।
firstAtstring (date-time)प्रथम प्रकाशन का समय। प्रकाशन रद्द करने पर भी सुरक्षित रहता है।
counterintegerकुल प्रकाशन की संख्या।
byRefer<User>अंतिम बार प्रकाशन करने वाला उपयोगकर्ता।

प्रकाशन रद्द करने पर publish से version, at, by हट जाते हैं और केवल firstAt, counter शेष रहते हैं। यदि कभी प्रकाशित नहीं किया गया, तो publish { "counter": 0 } होता है।

archive ऑब्जेक्ट केवल संग्रहित होने पर मौजूद रहता है, और संग्रहण के समय का version, संग्रहण समय at, तथा संग्रहण करने वाले उपयोगकर्ता by को रखता है। यदि संग्रहित अवस्था में नहीं है, तो archive कुंजी ही नहीं होती।

यहाँ sys.version कार्य के दौरान का वर्शन है (निर्माण, संशोधन, प्रकाशन आदि हर परिवर्तन पर बढ़ता है), और publish.version अंतिम बार प्रकाशित किया गया वर्शन है। दोनों अलग हो सकते हैं।

नीचे प्रकाशित Content के sys का एक उदाहरण है।

{
  "id": "3trmXRM3RqbgSnifyg7PUl8DzDgDzP",
  "type": "Content",
  "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
  "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
  "publish": {
    "version": 1,
    "at": "2026-06-18T09:51:44.128Z",
    "firstAt": "2026-06-18T09:51:44.128Z",
    "counter": 1,
    "by": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } }
  },
  "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "createdAt": "2026-06-18T09:51:14.597Z",
  "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "updatedAt": "2026-06-18T09:51:44.128Z",
  "version": 2,
  "status": "Published"
}

प्रकाशन जीवनचक्र के स्थिति-परिवर्तन का क्रम और हर चरण के रिस्पॉन्स को Content और Media में समझाया गया है।

सेटिंग रिसोर्स (Tag, Locale, Organization, Space आदि)

Tag, Locale, Organization, Space, SpaceRole, ServiceUserRole, Webhook, ServiceLogin जैसे रिसोर्स में प्रकाशन की अवधारणा नहीं होती। बनाते ही ये तुरंत लागू हो जाते हैं, और प्रकाशित करके डिलीवरी पथ पर चढ़ाने का कोई चरण नहीं होता।

इसलिए इनके sys में status, publish, archive नहीं होते, और साझा फ़ील्ड के साथ केवल version होता है। version हर संशोधन पर 1 बढ़ता है, और परिवर्तन अनुरोध के समय X-Weegloo-Version हेडर में भेजा जाता है।

SpaceRole इसके अतिरिक्त isLocked (boolean) रखता है। यदि true है, तो इसका अर्थ है कि यह WEEGLOO द्वारा डिफ़ॉल्ट रूप से प्रदान की गई भूमिका है।

विशेष रिसोर्स (ServiceUser, WebHosting)

कुछ रिसोर्स ऊपर के दोनों भागों में नहीं आते और इनका sys अलग होता है।

ServiceUser वह रिसोर्स है जो प्रोडक्ट के सदस्य-पंजीकरण से बनता है। यह वह रिसोर्स नहीं है जिसे कोई व्यक्ति कंटेंट स्टूडियो में बनाता और बदलता है, इसलिए इसके sys में createdBy, updatedBy, version नहीं होते। इसके बदले यह लॉगिन साधन provider (string) और email (string) रखता है। version न होने के कारण ServiceUser को संशोधित करते समय X-Weegloo-Version हेडर की ज़रूरत नहीं होती।

WebHosting वह रिसोर्स है जो परिनियोजन सामग्री को होस्ट करता है। यह साझा फ़ील्ड और version रखता है, और इसके साथ परिनियोजन प्रक्रिया की स्थिति state (enum) जुड़ती है। यह प्रकाशन स्थिति नहीं, बल्कि अपलोड की गई परिनियोजन सामग्री को संसाधित करने की प्रगति-स्थिति है।

stateअर्थ
PENDINGप्रक्रिया की प्रतीक्षा में।
PROCESSINGप्रक्रिया जारी है।
COMPLETEDप्रक्रिया पूर्ण।
FAILEDप्रक्रिया विफल।

CMA और CDA का अंतर: version बनाम revision

एक ही Content या Media होने पर भी, वह किस API से प्राप्त होता है, इसके अनुसार sys का रूप अलग होता है।

CMA (प्रबंधन) से प्राप्त Content और Media कार्य के दौरान वाले रिसोर्स होते हैं। इसलिए वे version, status, publish (और संग्रहित होने पर archive) सबको रखकर वर्तमान कार्य-स्थिति और प्रकाशन स्थिति, दोनों एक साथ बताते हैं।

CDA (डिलीवरी) केवल प्रकाशित स्नैपशॉट को डिलीवर करता है। यहाँ कार्य के दौरान वाली स्थिति की अवधारणा नहीं होती, इसलिए sys में version, status, publish, archive नहीं होते। इसके बदले प्रकाशित स्नैपशॉट के नंबर की ओर इशारा करने वाला एक revision (integer) होता है। revision में हर प्रकाशन पर उस समय का वर्शन रखा जाता है।

{
  "id": "3trmXRM3RqbgSnifyg7PUl8DzDgDzP",
  "type": "Content",
  "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
  "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
  "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "createdAt": "2026-06-18T09:51:14.597Z",
  "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "updatedAt": "2026-06-18T09:51:44.128Z",
  "revision": 3
}

प्रकाशन डिलीवरी मॉडल (केवल प्रकाशित सामग्री ही डिलीवर होती है, प्रकाशन स्नैपशॉट, revision) को CDA परिचय में विस्तार से समझाया गया है।