SpaceRole
अंतिम अपडेट: 22 जून 2026
SpaceRole किसी Space के सदस्यों को दिए जाने वाले अनुमतियों का समूह है। यह एक ही रिसोर्स में रखता है कि Content Type, Content और Media पर क्या (पढ़ना, बनाना, संपादित करना, हटाना, publish करना) किया जा सकता है, और Space सेटिंग्स तक पहुँच है या नहीं। केवल किसी खास Content Type तक, या केवल स्वयं द्वारा बनाई गई चीज़ों तक जैसे अनुमति के दायरे को सीमित करने वाले फ़िल्टर भी SpaceRole के भीतर ही तय होते हैं।
बनाया गया SpaceRole अपने आप में किसी पर भी लागू नहीं होता। इसे सदस्य को देने के लिए Space Membership के roles में इस SpaceRole का Refer डाला जाता है। एक सदस्य एक साथ कई SpaceRole रख सकता है। साथ ही DeliveryAccessToken भी किसी एक least-privilege (न्यूनतम अनुमति) SpaceRole से बँधा होता है, और उसी से तय होता है कि उस टोकन से कितना दायरा डिलीवर किया जा सकता है।
रिसोर्स संरचना
नीचे SpaceRole "उत्पाद केवल-पढ़ने" के एकल पठन (single read) की प्रतिक्रिया है। sys (सिस्टम गुण) के साथ, अनुमति तय करने वाले बॉडी गुण contentType, content, media, settings इसमें होते हैं।
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7ObyNrQQbHbm",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-16T09:53:16.617Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-16T09:53:16.617Z",
"isLocked": false,
"version": 1
},
"name": "उत्पाद केवल-पढ़ने",
"contentType": { "All": { "Allow": [] } },
"content": {
"Read": {
"Allow": [
{ "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
]
}
},
"media": { "All": { "Allow": [] } },
"settings": []
}मुख्य कुंजियाँ:
contentType: Content Type स्वयं (स्कीमा) पर अनुमति मैप। Content Type को पढ़ने, बनाने, बदलने, हटाने और publish करने की अनुमति को हर एक्शन के अनुसार तय करता है।content: Content (कंटेंट डेटा) पर अनुमति मैप। ऊपर का उदाहरण केवल किसी खास Content Type के Content को ही पढ़ने तक सीमित किया हुआ रूप है।media: Media (फ़ाइल, इमेज) पर अनुमति मैप।settings: Space सेटिंग्स तक पहुँच की अनुमति तय करने वाला स्ट्रिंग सरणी (array)। पूर्ण पहुँच के लिए["SETTING_ALL"], और किसी सेटिंग तक पहुँच न देने पर[]होता है।isLocked:trueहोने पर यह Weegloo द्वारा डिफ़ॉल्ट रूप से दी गई भूमिका (जैसे Administrator) है, इसलिए इसे संपादित या हटाया नहीं जा सकता।
सिस्टम गुण (sys)
हर SpaceRole सामान्य सिस्टम गुणों को sys ऑब्जेक्ट में रखता है। space, createdBy, updatedBy Refer रूप ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं।
| गुण | टाइप | विवरण |
|---|---|---|
id | string | रिसोर्स का अद्वितीय पहचानकर्ता। |
type | string | रिसोर्स का प्रकार। SpaceRole हमेशा "SpaceRole" होता है। |
space | Refer<Space> | वह Space जिससे यह SpaceRole संबंधित है। |
createdBy | Refer<User> | बनाने वाला उपयोगकर्ता। |
createdAt | string (date-time) | बनाने का समय। |
updatedBy | Refer<User> | अंतिम बार संपादित करने वाला उपयोगकर्ता। |
updatedAt | string (date-time) | अंतिम संपादन का समय। |
isLocked | boolean | true होने पर यह डिफ़ॉल्ट रूप से दी गई भूमिका है, इसलिए इसे संपादित या हटाया नहीं जा सकता। स्वयं बनाई गई भूमिका false होती है। |
version | integer (≥1) | रिसोर्स संस्करण। हर संपादन पर 1 से बढ़ता है। |
SpaceRole एक सेटिंग रिसोर्स है जिसमें publish की अवधारणा नहीं है। इसलिए Content और Media के विपरीत sys में publish, archive, status नहीं होते, केवल version होता है। version हर बार SpaceRole संपादित करने पर बढ़ता है।
अनुमति मैप: contentType, content, media
contentType, content, media प्रत्येक एक्शन को कुंजी के रूप में रखने वाले मैप हैं। एक्शन हैं Read (पढ़ना), Create (बनाना), Edit (संपादित करना), Delete (हटाना), Publish (publish करना), और सभी एक्शन को एक साथ दर्शाने वाला All भी है। हर एक्शन का मान Allow (अनुमति) और Deny (अस्वीकृति) नियम सरणियों को रखने वाला ऑब्जेक्ट है।
"content": {
"Read": { "Allow": [ /* नियम */ ], "Deny": [ /* नियम */ ] },
"Edit": { "Allow": [ /* नियम */ ] }
}हर नियम (rule) ऑब्जेक्ट में अनुमति के दायरे को सीमित करने वाले वैकल्पिक फ़िल्टर होते हैं।
contentType: उस नियम के लागू होने के लक्ष्य को किसी एक खास Content Type तक सीमित करता है। Content Type की ओर इशारा करने वालाReferडाला जाता है।createdBy: केवल किसी खास उपयोगकर्ता द्वारा बनाई गई रिसोर्स तक सीमित करता है।sys.idमें किसी खास उपयोगकर्ता की id डालने पर केवल उसी व्यक्ति द्वारा बनाई गई चीज़ों तक, और आरक्षित मान:selfडालने पर "अभी कॉल करने वाले उपयोगकर्ता द्वारा बनाई गई चीज़ों तक" सीमित होता है।tag: केवल किसी खास Tag वाली रिसोर्स तक सीमित करता है।
खाली Allow सरणी [] का अर्थ है उस पूरे प्रकार पर एक्शन की अनुमति। फ़िल्टर खाली होने से छानने को कुछ नहीं रहता, इसलिए सभी रिसोर्स पर वह एक्शन खुल जाता है।
उदाहरण 1: Administrator (पूर्ण अनुमति, डिफ़ॉल्ट रूप से उपलब्ध)
Administrator भूमिका contentType, content, media सभी के All एक्शन को खाली Allow देकर पूरे को अनुमति देती है, और settings में ["SETTING_ALL"] देकर Space सेटिंग्स के पूरे हिस्से तक पहुँचती है। यह भूमिका Weegloo डिफ़ॉल्ट रूप से देता है, इसलिए sys.isLocked true है और इसे संपादित या हटाया नहीं जा सकता।
{
"sys": {
"id": "3trmXRLdJF4GBlAjtcuoWfVubsasp4",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-14T14:56:04.737Z",
"updatedBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-14T14:56:04.737Z",
"isLocked": true,
"version": 1
},
"name": "Administrator",
"description": "Members of this role have full access to everything in this space.",
"contentType": { "All": { "Allow": [] } },
"content": { "All": { "Allow": [] } },
"media": { "All": { "Allow": [] } },
"settings": ["SETTING_ALL"]
}उदाहरण 2: केवल पठन (केवल किसी खास Content Type पर)
स्वयं बनाई जाने वाली least-privilege भूमिका का उदाहरण। केवल content के Read एक्शन पर नियम रखा गया है, और उस नियम के contentType फ़िल्टर से किसी एक खास Content Type तक सीमित किया गया है। Content Type स्वयं और Media को All को खाली Allow से खोल रखा गया है, पर कंटेंट डेटा में केवल उसी एक प्रकार को पढ़ना संभव है। settings [] होने से Space सेटिंग्स तक पहुँच नहीं है। ऐसी भूमिका को DeliveryAccessToken से बाँधने पर डिलीवरी टोकन केवल उसी दायरे को पढ़ता है। इस भूमिका का JSON ऊपर रिसोर्स संरचना के "उत्पाद केवल-पढ़ने" जैसा ही है।
settings (Space सेटिंग्स पहुँच)
settings अनुमति मैप नहीं बल्कि एक स्ट्रिंग सरणी है। यह Space सेटिंग्स पर पहुँच की अनुमति रखता है; पूर्ण पहुँच के लिए ["SETTING_ALL"], और कोई पहुँच न देने पर [] रखा जाता है।
एक्शन सूची (
Read,Create,Edit,Delete,Publish,All), फ़िल्टर कुंजियाँ (contentType,createdBy,tag) और:selfका अर्थweegloo-space-roleअनुमति नियम परिभाषा के अनुसार है।
API
नीचे दिए गए सभी एंडपॉइंट का बेस URL https://cma.weegloo.com/v1 है, और Authorization हेडर में CMA को प्रमाणित करने वाला Bearer टोकन आवश्यक है। भूमिका संपादन (PUT, PATCH) के लिए ऑप्टिमिस्टिक कंकरेंसी कंट्रोल हेतु X-Weegloo-Version हेडर (वर्तमान रिसोर्स का sys.version) भी भेजना आवश्यक है। बनाने और हटाने में यह हेडर नहीं होता। sys.isLocked true वाली डिफ़ॉल्ट रूप से उपलब्ध भूमिका को संपादित या हटाया नहीं जा सकता।
संबंधित दस्तावेज़
- Space Membership: सदस्य के
rolesमें SpaceRole को बाँधना। - Delivery Access Token: least-privilege SpaceRole से बँधने वाला डिलीवरी टोकन।
- Content Type: वह Content Type जिसकी ओर अनुमति नियम इशारा करते हैं।
