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 ऑब्जेक्ट में निम्नलिखित कीज़ होती हैं।

कीटाइपविवरण
fileNamestringअपलोड की गई फ़ाइल का नाम। उदाहरण: tumbler.png।
contentTypestringफ़ाइल का MIME टाइप। उदाहरण: image/png।
mimeGroupsarrayफ़ाइल के तार्किक वर्गीकरण की ऐरे। उदाहरण: ["Image"]। नीचे मानों की सूची देखें।
urlstringप्रकाशित फ़ाइल का डिलीवरी URL।
detailobjectफ़ाइल विवरण। इसमें 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" } }) में आते हैं।

विशेषताटाइपविवरण
idstringसंसाधन का विशिष्ट पहचानकर्ता।
typestringसंसाधन का प्रकार। Media हमेशा "Media" होता है।
spaceRefer<Space>वह Space जिससे यह Media संबंधित है।
publishobjectप्रकाशन स्थिति पॉइंटर। नीचे कीज़ देखें।
archiveobjectसंग्रह जानकारी। केवल संग्रहित होने पर मौजूद रहती है, अन्यथा यह की नहीं होती। नीचे कीज़ देखें।
createdByRefer<User>बनाने वाला उपयोगकर्ता।
createdAtstring (date-time)बनाने का समय।
updatedByRefer<User>अंतिम बार संशोधन करने वाला उपयोगकर्ता।
updatedAtstring (date-time)अंतिम संशोधन का समय।
versioninteger (≥1)संसाधन संस्करण। बनाने, संशोधन, प्रकाशन, प्रकाशन रद्द करने, संग्रह आदि हर बदलाव पर 1 बढ़ता है।
statusstring (enum)प्रकाशन स्थिति। नीचे दिए 4 में से एक।

Media में Content के विपरीत कोई contentType विशेषता नहीं होती। इसका कारण यह है कि यह किसी ढाँचे का पालन नहीं करती।

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 (संग्रह के समय का sys.version), at (संग्रह का समय), by (संग्रह करने वाला उपयोगकर्ता) होते हैं, और संग्रहित स्थिति न होने पर archive की स्वयं नहीं होती।

नीचे दिए उदाहरण के sys.version और सभी समय मान वास्तविक कॉल के समय के मान हैं, और हर कॉल पर बदलते रहते हैं।

अपलोड और प्रकाशन जीवनचक्र

Media पहले फ़ाइल अपलोड करके, फिर उस परिणाम को संदर्भित करके बनाई जाती है।

  1. Upload API से फ़ाइल अपलोड करके एक Upload प्राप्त करें।
  2. POST /medias से उस Upload को संदर्भित करके Media बनाएँ। बनाने के तुरंत बाद status Draft होता है, और file का state PENDING होता है।
  3. सिस्टम फ़ाइल प्रोसेसिंग पूरी करने पर Media को स्वचालित रूप से Published में बदल देता है। इसी समय फ़ाइल डिलीवरी योग्य हो जाती है।

POST अनुरोध में X-Weegloo-Ignore-Publish: true हेडर देने पर स्वचालित प्रकाशन छोड़ दिया जाता है और इसे Draft में रखा जाता है। संशोधन व आंशिक संशोधन भी डिफ़ॉल्ट रूप से प्रोसेसिंग पूरी होने पर स्वचालित रूप से पुनः प्रकाशित होते हैं, और इसे उसी हेडर से बंद किया जा सकता है।

संशोधन, आंशिक संशोधन, प्रकाशन, प्रकाशन रद्द करने, संग्रह, संग्रह से हटाने के अनुरोधों में x-weegloo-version हेडर में वर्तमान sys.version भेजना होता है। यह मान छूट जाने या वर्तमान संस्करण से बेमेल होने पर इसे समकालिक संशोधन टकराव माना जाता है और अनुरोध अस्वीकार कर दिया जाता है। बनाने और हटाने के अनुरोधों में यह हेडर नहीं होता। प्रकाशन, प्रकाशन रद्द करने, संग्रह, संग्रह से हटाने जैसे स्थिति परिवर्तनों में कोई अलग अनुरोध बॉडी नहीं होती।

संग्रह और हटाने को प्रकाशित स्थिति में सीधे नहीं किया जा सकता। पहले प्रकाशन रद्द करना होता है। प्रकाशित स्थिति वाली Media को संग्रहित करने या हटाने का प्रयास करने पर अनुरोध अस्वीकार कर दिया जाता है, और लौटने वाला कोड हर कार्य के लिए अलग होता है (त्रुटियाँ देखें)।

त्रुटियाँ

ये कोड Media के साथ काम करते समय मिलते हैं। सभी संसाधनों में समान रूप से मिलने वाले कोड के लिए सामान्य त्रुटियाँ देखें।

कोडशर्त
WGL422007Draft से भिन्न स्थिति वाली Media को संग्रहित करने का प्रयास किया गया। प्रकाशित स्थिति (Published, Changed) होने पर पहले प्रकाशन रद्द करना पड़ता है, और जो Media पहले से Archived है उसे दोबारा संग्रहित नहीं किया जा सकता।
WGL422009प्रकाशित स्थिति (Published, Changed) वाली Media को प्रकाशन रद्द किए बिना हटाने का प्रयास किया गया।
WGL422006प्रकाशित स्थिति (Published, Changed) से भिन्न स्थिति वाली Media का प्रकाशन रद्द करने का प्रयास किया गया।
WGL422008Archived से भिन्न स्थिति वाली 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 पर लगाया जाने वाला वर्गीकरण लेबल।