Media
Media अपलोड की गई फ़ाइलों को रखने वाला संसाधन है। छवि या दस्तावेज़ जैसी हर एक फ़ाइल एक Media के रूप में प्रबंधित होती है। कपड़ों की दुकान वाले शॉपिंग मॉल को उदाहरण के तौर पर लें, तो उत्पाद की तस्वीर "स्टेनलेस टम्बलर 500ml साइड शॉट" एक Media है।
Media को Content से अलग प्रबंधित किया जाता है। Content, Refer टाइप फ़ील्ड (उदाहरण के लिए उत्पाद की "मुख्य तस्वीर") के ज़रिए Media की ओर इशारा करके उस फ़ाइल का उपयोग करता है। CMA में Media एक Space के अधीन संसाधन है, और इसका पथ /spaces/{spaceId}/medias पर आधारित होता है। प्रबंधन कार्य CMA में किए जाते हैं, और प्रकाशित Media डिलीवरी URL के ज़रिए बाहर सार्वजनिक होती है।
संसाधन संरचना
नीचे प्रकाशित Media "स्टेनलेस टम्बलर 500ml साइड शॉट" की एकल पुनर्प्राप्ति प्रतिक्रिया है। sys (सिस्टम विशेषताएँ) के साथ इसमें fields (फ़ील्ड मान) और metadata (टैग आदि अतिरिक्त जानकारी) होते हैं।
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7PV9MlFUzv3r",
"type": "Media",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"publish": {
"version": 1,
"at": "2026-06-18T10:11:46.712Z",
"firstAt": "2026-06-18T10:11:46.712Z",
"counter": 1,
"by": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } }
},
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-18T10:11:46.586Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-18T10:11:46.712Z",
"version": 2,
"status": "Published"
},
"fields": {
"title": { "ko-KR": "스테인리스 텀블러 500ml 측면 컷" },
"description": { "ko-KR": "흰 배경에서 찍은 텀블러 측면 제품 사진입니다." },
"file": {
"ko-KR": {
"fileName": "tumbler.png",
"contentType": "image/png",
"mimeGroups": ["Image"],
"url": "https://weegloo-media.com/medias/HnQ32YiH/v3r/3trmXRM3RqbgSnifyg7PV9MlFUzv3r/ko-KR/1/tumbler.png",
"detail": { "size": 50847, "image": { "width": 900, "height": 900 } }
}
}
},
"metadata": { "tags": [] }
}मुख्य कीज़:
sys.id: Media का विशिष्ट पहचानकर्ता है। यह एकल पुनर्प्राप्ति, संशोधन, हटाने और प्रकाशन पथों के{mediaId}में जाता है।fields: Media के फ़ील्ड मान हैं। यहtitle,description,fileतीन से बना है, और इसका विस्तृत स्वरूप नीचे फ़ाइल संरचना (file) में समझाया गया है।metadata.tags: इस Media पर लगाए गए Tag की सूची है। हर आइटमRefer<Tag>स्वरूप का होता है, और कोई टैग न होने पर यह खाली ऐरे[]होता है।
Media में Content के विपरीत कोई contentType नहीं होता। फ़ील्ड संरचना तय करने वाले किसी ढाँचे के बिना, हर Media में समान title, description, file संरचना होती है।
फ़ाइल संरचना (file)
fields तीन हैं: title, description, file, और हर एक लोकेल-वार मैप है। title और description, Locale कीज़ को स्ट्रिंग मानों से मैप करते हैं, और file, Locale कीज़ को फ़ाइल ऑब्जेक्ट से मैप करता है। ऊपर के उदाहरण की तरह डेमो Media में ko-KR एक की पर मान होता है।
प्रकाशन पूरा हो चुके Media के file ऑब्जेक्ट में निम्नलिखित कीज़ होती हैं।
| की | टाइप | विवरण |
|---|---|---|
fileName | string | अपलोड की गई फ़ाइल का नाम। उदाहरण: tumbler.png। |
contentType | string | फ़ाइल का MIME टाइप। उदाहरण: image/png। |
mimeGroups | array | फ़ाइल के तार्किक वर्गीकरण की ऐरे। उदाहरण: ["Image"]। नीचे मानों की सूची देखें। |
url | string | प्रकाशित फ़ाइल का डिलीवरी URL। |
detail | object | फ़ाइल विवरण। इसमें size (बाइट) और, यदि छवि है तो image: { width, height } होता है। |
mimeGroups फ़ाइल को तार्किक वर्गीकरण में समूहीकृत करने वाला मान है। इसमें निम्नलिखित में से एक या अधिक होते हैं।
Attachment, Plaintext, Image, Audio, Video, RichText, Presentation, Spreadsheet, PdfDocument, Archive, Code, Markup।
प्रोसेसिंग के दौरान file ऑब्जेक्ट का स्वरूप
अपलोड की गई फ़ाइल, Media बनाने के तुरंत बाद तत्काल डिलीवर नहीं होती। जब तक सिस्टम फ़ाइल को प्रोसेस करता है, तब तक file ऑब्जेक्ट में दो और कीज़ जुड़ी रहती हैं।
upload: प्रोसेसिंग के लक्ष्य Upload की ओर इशारा करने वालाRefer<Upload>है।state: प्रोसेसिंग स्थिति है। यह नीचे दिए मानों में से एक होता है।
state | अर्थ |
|---|---|
PENDING | प्रोसेसिंग के लिए प्रतीक्षारत। |
PROCESSING | प्रोसेसिंग चल रही है। |
FAILED | प्रोसेसिंग विफल। |
| की अनुपस्थित | प्रोसेसिंग पूर्ण। |
प्रोसेसिंग पूरी होने पर upload और state हट जाते हैं, और इनके बदले url व detail भर जाते हैं। अर्थात् यदि state की न हो और url मौजूद हो, तो वह फ़ाइल डिलीवरी योग्य स्थिति में है।
सिस्टम विशेषताएँ (sys)
हर Media अपनी सामान्य सिस्टम विशेषताओं को sys ऑब्जेक्ट में रखती है। space, createdBy, updatedBy, Refer स्वरूप ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं।
| विशेषता | टाइप | विवरण |
|---|---|---|
id | string | संसाधन का विशिष्ट पहचानकर्ता। |
type | string | संसाधन का प्रकार। Media हमेशा "Media" होता है। |
space | Refer<Space> | वह Space जिससे यह Media संबंधित है। |
publish | object | प्रकाशन स्थिति पॉइंटर। नीचे कीज़ देखें। |
archive | object | संग्रह जानकारी। केवल संग्रहित होने पर मौजूद रहती है, अन्यथा यह की नहीं होती। नीचे कीज़ देखें। |
createdBy | Refer<User> | बनाने वाला उपयोगकर्ता। |
createdAt | string (date-time) | बनाने का समय। |
updatedBy | Refer<User> | अंतिम बार संशोधन करने वाला उपयोगकर्ता। |
updatedAt | string (date-time) | अंतिम संशोधन का समय। |
version | integer (≥1) | संसाधन संस्करण। बनाने, संशोधन, प्रकाशन, प्रकाशन रद्द करने, संग्रह आदि हर बदलाव पर 1 बढ़ता है। |
status | string (enum) | प्रकाशन स्थिति। नीचे दिए 4 में से एक। |
Media में Content के विपरीत कोई contentType विशेषता नहीं होती। इसका कारण यह है कि यह किसी ढाँचे का पालन नहीं करती।
status निम्नलिखित 4 में से एक होता है।
status | अर्थ |
|---|---|
Draft | निर्माणाधीन और अभी तक प्रकाशित न की गई स्थिति। |
Changed | पहले प्रकाशित हो चुकी है पर उसके बाद संशोधित होकर अभी तक प्रकाशित न किए गए बदलाव मौजूद होने की स्थिति। |
Published | प्रकाशित है और कोई अप्रकाशित बदलाव नहीं है, ऐसी स्थिति। |
Archived | संग्रहित स्थिति। |
publish ऑब्जेक्ट प्रकाशन स्थिति की ओर इशारा करने वाला पॉइंटर है। प्रकाशित होने पर इसमें निम्नलिखित सभी कीज़ होती हैं।
| की | टाइप | विवरण |
|---|---|---|
version | integer | प्रकाशन के समय का sys.version। |
at | string (date-time) | अंतिम प्रकाशन का समय। |
firstAt | string (date-time) | पहली बार प्रकाशन का समय। प्रकाशन रद्द करने पर भी यह संरक्षित रहता है। |
counter | integer | संचयी प्रकाशन गणना। |
by | Refer<User> | अंतिम बार प्रकाशित करने वाला उपयोगकर्ता। |
प्रकाशन रद्द करने पर publish से version, at, by हट जाते हैं और केवल firstAt, counter शेष रहते हैं। यदि एक बार भी प्रकाशन न हुआ हो, तो publish का मान { "counter": 0 } होता है।
archive ऑब्जेक्ट केवल संग्रहित होने पर मौजूद रहता है। संग्रहित होने पर इसमें version (संग्रह के समय का sys.version), at (संग्रह का समय), by (संग्रह करने वाला उपयोगकर्ता) होते हैं, और संग्रहित स्थिति न होने पर archive की स्वयं नहीं होती।
नीचे दिए उदाहरण के sys.version और सभी समय मान वास्तविक कॉल के समय के मान हैं, और हर कॉल पर बदलते रहते हैं।
अपलोड और प्रकाशन जीवनचक्र
Media पहले फ़ाइल अपलोड करके, फिर उस परिणाम को संदर्भित करके बनाई जाती है।
- Upload API से फ़ाइल अपलोड करके एक Upload प्राप्त करें।
POST /mediasसे उस Upload को संदर्भित करके Media बनाएँ। बनाने के तुरंत बादstatusDraftहोता है, औरfileकाstatePENDINGहोता है।- सिस्टम फ़ाइल प्रोसेसिंग पूरी करने पर Media को स्वचालित रूप से
Publishedमें बदल देता है। इसी समय फ़ाइल डिलीवरी योग्य हो जाती है।
POST अनुरोध में X-Weegloo-Ignore-Publish: true हेडर देने पर स्वचालित प्रकाशन छोड़ दिया जाता है और इसे Draft में रखा जाता है। संशोधन व आंशिक संशोधन भी डिफ़ॉल्ट रूप से प्रोसेसिंग पूरी होने पर स्वचालित रूप से पुनः प्रकाशित होते हैं, और इसे उसी हेडर से बंद किया जा सकता है।
संशोधन, आंशिक संशोधन, प्रकाशन, प्रकाशन रद्द करने, संग्रह, संग्रह से हटाने के अनुरोधों में x-weegloo-version हेडर में वर्तमान sys.version भेजना होता है। यह मान छूट जाने या वर्तमान संस्करण से बेमेल होने पर इसे समकालिक संशोधन टकराव माना जाता है और अनुरोध अस्वीकार कर दिया जाता है। बनाने और हटाने के अनुरोधों में यह हेडर नहीं होता। प्रकाशन, प्रकाशन रद्द करने, संग्रह, संग्रह से हटाने जैसे स्थिति परिवर्तनों में कोई अलग अनुरोध बॉडी नहीं होती।
संग्रह और हटाने को प्रकाशित स्थिति में सीधे नहीं किया जा सकता। पहले प्रकाशन रद्द करना होता है। प्रकाशित स्थिति वाली Media को संग्रहित करने या हटाने का प्रयास करने पर अनुरोध अस्वीकार कर दिया जाता है, और लौटने वाला कोड हर कार्य के लिए अलग होता है (त्रुटियाँ देखें)।
त्रुटियाँ
ये कोड Media के साथ काम करते समय मिलते हैं। सभी संसाधनों में समान रूप से मिलने वाले कोड के लिए सामान्य त्रुटियाँ देखें।
| कोड | शर्त |
|---|---|
WGL422007 | Draft से भिन्न स्थिति वाली Media को संग्रहित करने का प्रयास किया गया। प्रकाशित स्थिति (Published, Changed) होने पर पहले प्रकाशन रद्द करना पड़ता है, और जो Media पहले से Archived है उसे दोबारा संग्रहित नहीं किया जा सकता। |
WGL422009 | प्रकाशित स्थिति (Published, Changed) वाली Media को प्रकाशन रद्द किए बिना हटाने का प्रयास किया गया। |
WGL422006 | प्रकाशित स्थिति (Published, Changed) से भिन्न स्थिति वाली Media का प्रकाशन रद्द करने का प्रयास किया गया। |
WGL422008 | Archived से भिन्न स्थिति वाली Media को संग्रह से हटाने का प्रयास किया गया। |
WGL422031 | जिस Media की फ़ाइल की प्रोसेसिंग अभी चल रही है, उसे संशोधित करने या हटाने का प्रयास किया गया। प्रोसेसिंग पूरी होने के बाद दोबारा प्रयास करें। |
API
नीचे दिए सभी एंडपॉइंट्स का आधार URL https://cma.weegloo.com/v1 है, और Authorization हेडर में CMA को प्रमाणित करने वाला Bearer टोकन आवश्यक है। संशोधन, आंशिक संशोधन, प्रकाशन, प्रकाशन रद्द करने, संग्रह, संग्रह से हटाने के लिए आशावादी समवर्ती नियंत्रण हेतु X-Weegloo-Version हेडर (वर्तमान संसाधन का sys.version) भी भेजना होता है।
संबंधित दस्तावेज़
- Upload API: फ़ाइल अपलोड करके Media निर्माण में उपयोग होने वाली Upload प्राप्त करने का अनुरोध।
- Content: Refer फ़ील्ड से Media की ओर इशारा करके उपयोग किया जाने वाला मुख्य डेटा।
- Tag:
metadata.tagsपर लगाया जाने वाला वर्गीकरण लेबल।
