इवेंट संसाधनों के फ़ील्ड में, किसी इवेंट से जुड़ा सबसे सामान्य डेटा शामिल होता है, जैसे कि जगह, शुरू होने का समय वगैरह. हालांकि, हो सकता है कि ऐप्लिकेशन अपने इस्तेमाल के उदाहरण के हिसाब से, अतिरिक्त मेटाडेटा सेव करना चाहें. Calendar API की मदद से, छिपे हुए की-वैल्यू पेयर को किसी इवेंट के साथ सेट किया जा सकता है. इस इवेंट को एक्सटेंडेड प्रॉपर्टी कहा जाता है. एक्सटेंडेड प्रॉपर्टी की मदद से किसी इवेंट के लिए ऐप्लिकेशन के हिसाब से डेटा सेव करना आसान हो जाता है. इसके लिए, बाहरी डेटाबेस का इस्तेमाल करने की ज़रूरत नहीं पड़ती.
किसको दिखे
एक्सटेंडेड प्रॉपर्टी दो तरह की होती हैं: निजी और शेयर की गई.
शेयर की गई प्रॉपर्टी, इवेंट में शामिल सभी मेहमान देख सकते हैं और उनमें बदलाव कर सकते हैं. वहीं,
निजी प्रॉपर्टी को मेहमान की स्थानीय "कॉपी" पर सेट किया जाता है. सटीक बात यह है कि निजी प्रॉपर्टी, अनुरोध में इस्तेमाल किए गए calendarId
और eventId
के हिसाब से होती हैं. हालांकि, शेयर की गई प्रॉपर्टी दिखाई जाएंगी, भले ही अनुरोध में इस्तेमाल किया गया calendarId
कोई भी हो.
प्रॉपर्टी जोड़ना और उन्हें अपडेट करना
एक्सटेंडेड प्रॉपर्टी, इवेंट के संसाधन पर सेट होती हैं. दूसरे फ़ील्ड की तरह, इन्हें शामिल करें, अपडेट करें, और पैच के अनुरोधों में सेट किया जा सकता है. पैच अनुरोध का इस्तेमाल करना सबसे बेहतर तरीका है, क्योंकि इससे कुछ प्रॉपर्टी में हेर-फेर की जा सकती है और बाकी प्रॉपर्टी में कोई बदलाव नहीं किया जा सकता. एक जैसी कुंजी वाली नई प्रॉपर्टी जोड़ने पर, मौजूदा प्रॉपर्टी की जगह पुरानी प्रॉपर्टी भी उतनी ही कुंजी से बदल जाएगी. नीचे दिए गए उदाहरण में, निजी प्रॉपर्टी सेट करने का उदाहरण दिखाया गया है:
PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
"extendedProperties": {
"private": {
"petsAllowed": "yes"
}
}
}
प्रॉपर्टी मिटाएं
अपडेट के अनुरोध में शामिल नहीं की गई सभी प्रॉपर्टी मिटा दी जाएंगी. हालांकि, वैल्यू को शून्य पर सेट करने के लिए, पैच अनुरोध करना ही बेहतर तरीका है. नीचे दिए गए उदाहरण में, किसी निजी प्रॉपर्टी को मिटाने का तरीका बताया गया है:
PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
"extendedProperties": {
"private": {
"petsAllowed": null
}
}
}
प्रॉपर्टी खोजें
Events.list अनुरोध का इस्तेमाल करके, आपकी बढ़ाई गई प्रॉपर्टी की वैल्यू के आधार पर इवेंट खोजे जा सकते हैं.
privateExtendedProperty या sharedExtendedProperty फ़ील्ड को propertyName=value
फ़ॉर्मैट में एक कंस्ट्रेंट के तौर पर सेट करें. यह फ़ील्ड निजी और शेयर की गई प्रॉपर्टी की खोज करेगा. नीचे दिए गए उदाहरण में, निजी प्रॉपर्टी petsAllowed=yes
वाले इवेंट दिखाए गए हैं:
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes
इन फ़ील्ड को कई बार दोहराया जा सकता है और कंस्ट्रेंट को एक साथ OR
रखते हैं. इसलिए, इवेंट को सिर्फ़ किसी एक कंस्ट्रेंट से मैच करना ज़रूरी है, जिसे दिखाना है.
यहां दिए गए उदाहरण में, निजी प्रॉपर्टी petsAllowed=yes
या isOutside=yes
वाले इवेंट के बारे में बताया गया है:
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes &privateExtendedProperty=isOutside%3Dyes
ध्यान रखें कि निजी और शेयर की गई प्रॉपर्टी पर पाबंदियां एक साथ AND होती हैं.
इसलिए, नतीजे दिखाने के लिए इवेंट, कंस्ट्रेंट के दोनों सेट से मेल खाने चाहिए.
नीचे दिए गए उदाहरण में, निजी प्रॉपर्टी petsAllowed=yes
और सार्वजनिक प्रॉपर्टी createdBy=myApp
वाले इवेंट के बारे में बताया गया है:
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes &sharedExtendedProperty=createdBy%3DmyApp
सीमाएं
- किसी प्रॉपर्टी की कुंजी का साइज़ ज़्यादा से ज़्यादा 44 वर्ण हो सकता है. साथ ही, बड़ी कुंजियों वाली प्रॉपर्टी बिना किसी सूचना के हटा दी जाती हैं.
- किसी प्रॉपर्टी की वैल्यू ज़्यादा से ज़्यादा 1024 वर्णों की हो सकती है. साथ ही, ज़्यादा वैल्यू वाली प्रॉपर्टी बिना सूचना के काट दी जाती हैं.
- किसी इवेंट में ज़्यादा से ज़्यादा 300 प्रॉपर्टी शामिल हो सकती हैं. इन प्रॉपर्टी का साइज़ 32 केबी तक हो सकता है (कुंजी का साइज़ और वैल्यू का साइज़). इन 300 प्रॉपर्टी में, इवेंट की सभी "कॉपी" में शेयर की गई और निजी प्रॉपर्टी शामिल होती हैं.