CalDAV API Geliştirici Kılavuzu

CalDAV, istemcilerin uzak bir sunucudaki takvim bilgilerine erişmesi için standart sağlayan WebDAV'nin bir uzantısıdır.

Google, CalDAV protokolünü kullanarak takvimleri görüntülemek ve yönetmek için kullanabileceğiniz bir CalDAV arayüzü sağlar.

Teknik Özellikler

Google'ın CalDAV desteği, ilgili spesifikasyonların her biri için aşağıdaki gibidir:

  • rfc4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)
    • GET, PUT, HEAD, DELETE, POST, OPTIONS, PROPFIND ve PROPPATCH HTTP yöntemlerini destekler.
    • LOCK, UNLOCK, COPY, MOVE veya MKCOL HTTP yöntemlerini ya da If* üst bilgisini (If-Match hariç) desteklemez.
    • Rastgele (kullanıcı tanımlı) WebDAV özelliklerini desteklemez.
    • WebDAV Erişim Denetimi'ni (rfc3744) desteklemez.
  • rfc4791: Calendaring Extensions to WebDAV (CalDAV)
    • REPORT HTTP yöntemini destekler. Boş/meşgul sorgusu dışındaki tüm raporlar uygulanır.
    • MKCALENDAR HTTP yöntemini desteklemez.
    • AUDIO işlemi desteklenmiyor.
  • rfc5545: iCalendar
    • CalDAV arayüzünde gösterilen veriler, iCalendar spesifikasyonuna göre biçimlendirilir.
    • Şu anda VTODO veya VJOURNAL verilerini desteklemez.
    • Kullanıcı tarafından ayarlanabilen URL özelliklerine izin vermek için Apple iCal® uzantısını desteklemez.
  • rfc6578: Collection Synchronization for WebDAV
    • İstemci uygulamaları, ilk senkronizasyondan sonra bu çalışma moduna geçmelidir.
  • rfc6638: Scheduling Extensions to CalDAV
    • Her zaman boş olan önemsiz bir "gelen kutusu"nu destekler.
    • Aldığınız davetiyeler, "gelen kutunuza" yerleştirilmek yerine otomatik olarak "etkinlikler" koleksiyonunuza teslim edilir.
    • Boş/meşgul durumunu arama desteklenmez.
  • caldav-ctag-02: CalDAV'de Takvim Koleksiyonu Varlık Etiketi (CTag)
    • ctag takvimi, etag kaynağı gibidir. Takvimde herhangi bir değişiklik yapıldığında değişir. Bu sayede istemci uygulaması, değiştirilen etkinlikleri senkronize etmesi gerekmediğini hızlı bir şekilde belirleyebilir.
  • calendar-proxy: CalDAV'de Takvim Kullanıcısı Proxy İşlevselliği
    • Temsilci atamayı desteklemeyen iOS cihazlarda takvim senkronizasyonunun performansını artırmak için calendar-proxy-read-for veya calendar-proxy-write-for özelliklerinin iOS UserAgent ile kullanılması başarısız olur.

Henüz ilgili tüm spesifikasyonların tam olarak uygulanmasını sağlamadık. Ancak Apple'ın Takvim uygulaması gibi birçok istemci için CalDAV protokolü doğru şekilde birlikte çalışmalıdır.

Not: Google, hesap güvenliği ve kötüye kullanımı önlemek için CalDAV üzerinden verilere erişen istemci uygulamalarında çerezler ayarlayabilir.

Müşteri kimliğinizi oluşturma

CalDAV API'yi kullanmak için Google Hesabınızın olması gerekir. Kullanabileceğiniz bir hesabınız varsa hazırsınız demektir.

CalDAV API'ye istek gönderebilmeniz için önce proje oluşturarak istemcinizi Google API Konsolu'na kaydetmeniz gerekir.

Google API Konsolu'na gidin. Proje oluştur'u tıklayın, bir ad girin ve Oluştur'u tıklayın.

Bir sonraki adım, CalDAV API'yi etkinleştirmektir.

Projenizde bir API'yi etkinleştirmek için aşağıdakileri yapın:

  1. Google API Konsolu'nda API Kitaplığı'nı açın. İstenirse bir proje seçin veya yeni bir proje oluşturun. API Kitaplığı'nda, ürün ailesine ve popülerliğe göre gruplandırılmış tüm API'ler listelenir.
  2. Etkinleştirmek istediğiniz API listede görünmüyorsa bulmak için aramayı kullanın.
  3. Etkinleştirmek istediğiniz API'yi seçin ve Etkinleştir düğmesini tıklayın.
  4. İstenirse faturalandırmayı etkinleştirin.
  5. İstenirse API'nin Hizmet Şartları'nı kabul edin.
CalDAV API isteklerini gerçekleştirmek için istemci kimliği ve istemci gizli anahtarı gerekir.

Projenizin istemci kimliğini ve istemci gizli anahtarını bulmak için aşağıdakileri yapın:

  1. Mevcut bir OAuth 2.0 kimlik bilgisi seçin veya Kimlik bilgileri sayfasını açın.
  2. Henüz yapmadıysanız Kimlik bilgileri oluştur > OAuth istemci kimliği'ni tıklayıp kimlik bilgilerini oluşturmak için gereken bilgileri sağlayarak projenizin OAuth 2.0 kimlik bilgilerini oluşturun.
  3. OAuth 2.0 istemci kimlikleri bölümünde İstemci Kimliği'ni bulun. Ayrıntılar için istemci kimliğini tıklayın.

Google'ın CalDAV sunucusuna bağlanma

CalDAV arayüzünü kullanmak için bir istemci programı başlangıçta iki başlangıç noktasından birinde takvim sunucusuna bağlanır. Her iki durumda da bağlantı HTTPS üzerinden yapılmalı ve OAuth 2.0 kimlik doğrulama şeması kullanılmalıdır. CalDAV sunucusu, bir istek Google Hesabı'nın OAuth 2.0 kimlik doğrulamasıyla HTTPS üzerinden gelmediği sürece isteğin kimliğini doğrulamayı reddeder. HTTP üzerinden bağlanmaya çalışmak veya temel kimlik doğrulama kullanmak, HTTP 401 Unauthorized durum koduyla sonuçlanır.

İstemci programı (ör. Apple'ın Takvim uygulaması) başlangıç noktası olarak bir asıl koleksiyon gerektiriyorsa bağlanılacak URI şudur:

https://apidata.googleusercontent.com/caldav/v2/calid/user

Burada calid, erişilecek takvimin "takvim kimliği" ile değiştirilmelidir. Bu adrese, Google Takvim web arayüzünde şu şekilde ulaşabilirsiniz: Takvim adının yanındaki açılır menüde Takvim Ayarları'nı seçin. Açılan sayfada, takvim kimliği Takvim Adresi etiketli bir bölümde gösterilir. Bir kullanıcının birincil takviminin takvim kimliği, kullanıcının e-posta adresiyle aynıdır.

Bir istemci programı (ör. Mozilla Sunbird) başlangıç noktası olarak bir takvim koleksiyonu gerektiriyorsa bağlanılacak URI şudur:

https://apidata.googleusercontent.com/caldav/v2/calid/events

Eski uç nokta https://www.google.com/calendar/dav kullanımdan kaldırıldı ve artık desteklenmiyor. Bu uç noktayı kullanırken riskin sorumluluğunu siz üstlenirsiniz. Yukarıda açıklanan yeni uç nokta biçimine geçmenizi öneririz.

iCal®, Apple Inc. şirketinin ticari markasıdır.