ইভেন্টস রিসোর্সের ফিল্ডগুলোতে একটি ইভেন্টের সাথে সম্পর্কিত সবচেয়ে সাধারণ ডেটা, যেমন অবস্থান, শুরুর সময় ইত্যাদি অন্তর্ভুক্ত থাকে, কিন্তু অ্যাপ্লিকেশনগুলো তাদের ব্যবহারের ক্ষেত্র অনুযায়ী অতিরিক্ত মেটাডেটা সংরক্ষণ করতে চাইতে পারে। ক্যালেন্ডার এপিআই একটি ইভেন্টের সাথে হিডেন কী-ভ্যালু পেয়ার সেট করার সুবিধা দেয়, যাকে এক্সটেন্ডেড প্রপার্টিজ বলা হয়। এক্সটেন্ডেড প্রপার্টিজ একটি বাহ্যিক ডেটাবেস ব্যবহার না করেই কোনো ইভেন্টের জন্য অ্যাপ্লিকেশন-নির্দিষ্ট ডেটা সংরক্ষণ করা সহজ করে তোলে।
দৃশ্যমানতা
দুই ধরনের বর্ধিত প্রপার্টি রয়েছে: প্রাইভেট এবং শেয়ার্ড। শেয়ার্ড প্রপার্টিগুলো একটি ইভেন্টের সকল অংশগ্রহণকারী দেখতে ও সম্পাদনা করতে পারে, অন্যদিকে প্রাইভেট প্রপার্টিগুলো ইভেন্টের একজন অংশগ্রহণকারীর স্থানীয় "কপি"-তে সেট করা থাকে। আরও নির্দিষ্টভাবে বললে, প্রাইভেট প্রপার্টিগুলো রিকোয়েস্টে ব্যবহৃত calendarId এবং eventId জন্য সুনির্দিষ্ট, অন্যদিকে শেয়ার্ড প্রপার্টিগুলো রিকোয়েস্টে ব্যবহৃত calendarId নির্বিশেষে প্রদর্শিত হবে।
বৈশিষ্ট্য যোগ ও আপডেট করুন
এক্সটেন্ডেড প্রপার্টিগুলো ইভেন্টস রিসোর্সে সেট করা হয়, এবং অন্যান্য ফিল্ডের মতোই এগুলো ইনসার্ট , আপডেট এবং প্যাচ রিকোয়েস্টের মাধ্যমে সেট করা যায়। প্যাচ রিকোয়েস্ট ব্যবহার করাই শ্রেয়, কারণ এটি আপনাকে কিছু প্রপার্টি পরিবর্তন করার সুযোগ দেয় এবং অন্যগুলোকে অপরিবর্তিত রাখে। একই কী (key) দিয়ে একটি নতুন প্রপার্টি যোগ করলে, একই কী-যুক্ত বিদ্যমান যেকোনো প্রপার্টি ওভাররাইট হয়ে যাবে। নিচের উদাহরণটিতে একটি প্রাইভেট প্রপার্টি সেট করার পদ্ধতি দেখানো হলো:
PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
"extendedProperties": {
"private": {
"petsAllowed": "yes"
}
}
}
প্রোপার্টিগুলো মুছে ফেলুন
আপডেট অনুরোধে অন্তর্ভুক্ত নয় এমন যেকোনো প্রপার্টি মুছে ফেলা হবে, কিন্তু এর চেয়ে ভালো উপায় হলো একটি প্যাচ অনুরোধ করে মানটিকে null-এ সেট করা। নিচের উদাহরণটিতে একটি প্রাইভেট প্রপার্টি মুছে ফেলার পদ্ধতি দেখানো হয়েছে:
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সীমা
- একটি প্রপার্টির কী-এর সর্বোচ্চ আকার ৪৪ অক্ষর, এবং এর চেয়ে দীর্ঘ কী-যুক্ত প্রপার্টিগুলো নীরবে বাদ দেওয়া হবে।
- একটি প্রপার্টির মানের সর্বোচ্চ আকার ১০২৪ অক্ষর, এবং এর চেয়ে দীর্ঘ মানযুক্ত প্রপার্টিগুলো স্বয়ংক্রিয়ভাবে সংক্ষিপ্ত করা হবে।
- একটি ইভেন্টে সর্বোচ্চ ৩০০টি প্রপার্টি থাকতে পারে, যেগুলোর মোট আকার (কী-এর আকার + ভ্যালুর আকার) ৩২ কিলোবাইট পর্যন্ত হতে পারে। এই ৩০০টি প্রপার্টির মধ্যে শেয়ার্ড এবং প্রাইভেট প্রপার্টি অন্তর্ভুক্ত থাকে, যা ইভেন্টটির সমস্ত "কপি"-র জন্য প্রযোজ্য।