Genişletilmiş mülkler

Etkinlik kaynakları alanları, konum ve başlangıç zamanı gibi bir etkinlikle ilişkili en yaygın verileri kapsar. Ancak uygulamalar, kullanım alanlarına özel ek meta veriler depolamak isteyebilir. Calendar API, bir etkinlikle gizli anahtar/değer çiftleri ayarlama olanağı sunar. Bu çiftlere genişletilmiş özellikler adı verilir. Genişletilmiş özellikler, harici bir veritabanı kullanmak zorunda kalmadan bir etkinlik için uygulamaya özgü verileri depolamayı kolaylaştırır.

Görünürlük

İki tür genişletilmiş özellik vardır: özel ve paylaşılan. Paylaşılan özellikler, bir etkinliğin tüm katılımcıları tarafından görülebilir ve düzenlenebilir. Özel özellikler ise etkinliğin bir katılımcıya ait yerel "kopyasında" ayarlanır. Daha net bir şekilde ifade etmek gerekirse özel özellikler, istekte kullanılan calendarId ve eventId ile ilgiliyken paylaşılan özellikler, istekte kullanılan calendarId'dan bağımsız olarak gösterilir.

Özellik ekleme ve güncelleme

Genişletilmiş özellikler, Events kaynağında ayarlanır ve diğer alanlar gibi insert, update ve patch isteklerinde ayarlanabilir. Yama istekleri, bazı özellikleri değiştirmenize, diğerlerini ise olduğu gibi bırakmanıza olanak tanıdığı için tercih edilen yöntemdir. Aynı anahtara sahip yeni bir özellik eklemek, aynı anahtara sahip mevcut tüm özelliklerin üzerine yazar. Aşağıdaki örnekte özel bir mülk ayarlanması gösterilmektedir:

PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
  "extendedProperties": {
    "private": {
      "petsAllowed": "yes"
    }
  }
}

Mülkleri silme

Güncelleme isteğine dahil edilmeyen tüm özellikler silinir. Ancak değeri null olarak ayarlamak için yama isteğinde bulunmak daha iyi bir yaklaşımdır. Aşağıdaki örnekte özel bir mülkün nasıl silineceği gösterilmektedir:

PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
  "extendedProperties": {
    "private": {
      "petsAllowed": null
    }
  }
}

Arama mülkleri

Events.list isteği kullanarak etkinlikleri genişletilmiş özelliklerindeki değerlere göre arayabilirsiniz. privateExtendedProperty veya sharedExtendedProperty alanını, sırasıyla özel ve paylaşılan özelliklere göre arama yapan propertyName=value biçimindeki bir kısıtlamaya ayarlayın. Aşağıdaki örnek, petsAllowed=yes özel özelliğine sahip etkinlikleri döndürür:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes

Bu alanları birden çok kez tekrarlayabilirsiniz. Kısıtlamalar OR ile birleştirilir. Bu nedenle, etkinliklerin döndürülmesi için kısıtlamalardan yalnızca biriyle eşleşmesi gerekir. Aşağıdaki örnekte, petsAllowed=yes veya isOutside=yes özel özelliğine sahip etkinlikler bulunur:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes
    &privateExtendedProperty=isOutside%3Dyes

Ancak özel ve paylaşılan özelliklerdeki kısıtlamaların birlikte VE'lendiğini unutmayın. Bu nedenle, etkinliklerin döndürülmesi için her iki kısıtlama grubuyla da eşleşmesi gerekir. Aşağıdaki örnekte, petsAllowed=yes özel özelliğine ve createdBy=myApp genel özelliğine sahip etkinlikler bulunur:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes
    &sharedExtendedProperty=createdBy%3DmyApp

Sınırlar

  1. Bir mülkün anahtarının maksimum boyutu 44 karakterdir ve daha uzun anahtarlara sahip mülkler sessizce bırakılır.
  2. Bir özelliğin değerinin maksimum boyutu 1.024 karakterdir ve daha uzun değerlere sahip özellikler sessizce kesilir.
  3. Bir etkinlik, toplam boyutu 32 KB'a kadar olan (anahtar boyutu + değer boyutu) 300 özelliğe sahip olabilir. Bu 300 özellik, etkinliğin tüm "kopyalarındaki" paylaşılan ve özel özellikleri içerir.