বর্ধিত বৈশিষ্ট্য

ইভেন্টস রিসোর্সের ফিল্ডগুলিতে একটি ইভেন্টের সাথে সম্পর্কিত সবচেয়ে সাধারণ ডেটা, যেমন অবস্থান এবং শুরুর সময় অন্তর্ভুক্ত থাকে, কিন্তু অ্যাপ্লিকেশনগুলির তাদের ব্যবহারের ক্ষেত্র অনুযায়ী অতিরিক্ত মেটাডেটা সংরক্ষণ করার প্রয়োজন হতে পারে। গুগল ক্যালেন্ডার এপিআই আপনাকে একটি ইভেন্টের সাথে লুকানো কী-ভ্যালু পেয়ার সেট করার সুযোগ দেয়, যেগুলোকে এক্সটেন্ডেড প্রপার্টিজ বলা হয়। এক্সটেন্ডেড প্রপার্টিজ একটি বাহ্যিক ডেটাবেস ব্যবহার না করেই কোনো ইভেন্টের জন্য অ্যাপ্লিকেশন-নির্দিষ্ট ডেটা সংরক্ষণ করা সহজ করে তোলে।

দৃশ্যমানতা

দুই ধরনের বর্ধিত প্রপার্টি রয়েছে: প্রাইভেট এবং শেয়ার্ড। শেয়ার্ড প্রপার্টিগুলো একটি ইভেন্টের সকল অংশগ্রহণকারী দেখতে ও সম্পাদনা করতে পারে, অন্যদিকে প্রাইভেট প্রপার্টিগুলো ইভেন্টের একজন অংশগ্রহণকারীর লোকাল কপিতে সেট করা থাকে। আরও নির্দিষ্টভাবে বললে, প্রাইভেট প্রপার্টিগুলো রিকোয়েস্টে ব্যবহৃত calendarId এবং eventId জন্য সুনির্দিষ্ট, আর শেয়ার্ড প্রপার্টিগুলো রিকোয়েস্টে ব্যবহৃত calendarId নির্বিশেষে প্রদর্শিত হয়।

বৈশিষ্ট্য যোগ এবং আপডেট করুন

এক্সটেন্ডেড প্রপার্টিগুলো Events রিসোর্সে সেট করা হয়, এবং অন্যান্য ফিল্ডের মতোই এগুলো events.insert , events.update , এবং events.patch রিকোয়েস্টের মাধ্যমে সেট করা যায়। patch রিকোয়েস্ট ব্যবহার করাই শ্রেয়, কারণ এটি আপনাকে কিছু প্রপার্টি পরিবর্তন করার সুযোগ দেয় এবং অন্যগুলোকে অপরিবর্তিত রাখে। একই কী (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

সীমা

  1. একটি প্রপার্টি কী-এর সর্বোচ্চ আকার ৪৪ অক্ষর; এর চেয়ে দীর্ঘ কী-যুক্ত প্রপার্টিগুলো স্বয়ংক্রিয়ভাবে বাদ হয়ে যায়।
  2. একটি প্রপার্টি ভ্যালুর সর্বোচ্চ আকার ১০২৪ ক্যারেক্টার; এর চেয়ে দীর্ঘ ভ্যালুযুক্ত প্রপার্টিগুলো স্বয়ংক্রিয়ভাবে সংক্ষিপ্ত করা হয়।
  3. একটি ইভেন্টে সর্বোচ্চ ৩০০টি প্রপার্টি থাকতে পারে, যেগুলোর মোট আকার (কী সাইজ ও ভ্যালু সাইজ মিলিয়ে) ৩২ কিলোবাইট পর্যন্ত হতে পারে। এই ৩০০টি প্রপার্টির মধ্যে ইভেন্টের সমস্ত কপির জন্য শেয়ার্ড এবং প্রাইভেট প্রপার্টি অন্তর্ভুক্ত থাকে।