CalDAV API デベロッパー ガイド

CalDAV は WebDAV の拡張機能で、クライアントがリモート サーバー上のカレンダー情報にアクセスするための標準を提供します。

Google では、CalDAV プロトコルを使用してカレンダーを表示および管理できる CalDAV インターフェースを提供しています。

仕様

関連する各仕様について、Google の CalDAV サポートは次のとおりです。

  • rfc4918: HTTP Extensions for Web Distributed Authoring and Versioning(WebDAV)
    • HTTP メソッド GETPUTHEADDELETEPOSTOPTIONSPROPFINDPROPPATCH をサポートします。
    • HTTP メソッド LOCKUNLOCKCOPYMOVEMKCOLIf* ヘッダーはサポートしていません(If-Match を除く)。
    • 任意の(ユーザー定義の)WebDAV プロパティはサポートされていません。
    • WebDAV アクセス制御(rfc3744)はサポートされていません。
  • rfc4791: Calendaring Extensions to WebDAV(CalDAV)
    • HTTP メソッド REPORT をサポートします。空き時間情報クエリを除くすべてのレポートが実装されています。
    • HTTP メソッド MKCALENDAR はサポートされていません。
    • AUDIO アクションはサポートしていません。
  • rfc5545: iCalendar
    • CalDAV インターフェースで公開されるデータは、iCalendar 仕様に沿った形式になります。
    • 現在、VTODO または VJOURNAL のデータはサポートされていません。
    • ユーザーが設定可能な URL プロパティを許可する Apple iCal® 拡張機能はサポートされていません。
  • rfc6578: WebDAV のコレクション同期
    • クライアント アプリケーションは、最初の同期の後にこのオペレーション モードに切り替える必要があります。
  • rfc6638: CalDAV に対する拡張機能のスケジュール設定
    • 常に空になる簡単な「受信トレイ」をサポートします。
    • 受け取った招待状は「受信トレイ」に入れられるのではなく、自動的に「イベント」コレクションに配信されます。
    • 空き時間情報検索はサポートされていません。
  • caldav-ctag-02: CalDAV のカレンダー コレクションのエンティティ タグ(CTag)
    • カレンダー ctag はリソース etag のようなもので、カレンダーに変更が加えられると変化します。これにより、クライアント アプリケーションは、変更されたイベントを同期する必要がないことを素早く判断できます。
  • calendar-proxy: CalDAV におけるカレンダー ユーザー プロキシ機能
    • 委任をサポートしていない iOS デバイスからのカレンダー同期のパフォーマンスを向上させるため、iOS UserAgent で calendar-proxy-read-for プロパティまたは calendar-proxy-write-for プロパティを使用すると失敗します。

関連するすべての仕様の完全な実装はまだ提供されていません。ただし、Apple のカレンダー アプリなど多くのクライアントでは、CalDAV プロトコルは正しく相互運用できます。

注: アカウントのセキュリティと不正使用を防止するため、Google は CalDAV 経由でデータにアクセスするクライアント アプリケーションに Cookie を設定することがあります。

クライアント ID の作成

CalDAV API を使用するには、Google アカウントが必要です。使用できるアカウントがすでにある場合は、準備が整っています。

CalDAV API にリクエストを送信する前に、プロジェクトを作成してクライアントを Google API Console に登録する必要があります。

Google API Console に移動します。[プロジェクトを作成] をクリックし、名前を入力して [作成] をクリックします。

次に、CalDAV API を有効にします。

プロジェクトで API を有効にする手順は、次のとおりです。

  1. Google API コンソールで API ライブラリを開きます。プロンプトが表示されたら、プロジェクトを選択するか、新しいプロジェクトを作成します。API ライブラリには、利用できるすべての API がプロダクト ファミリーと人気度によって分類され、表示されます。
  2. 有効にする API がリストで見当たらない場合は、検索して見つけます。
  3. 有効にする API を選択し、[有効にする] ボタンをクリックします。
  4. プロンプトが表示されたら、請求機能を有効にします。
  5. プロンプトが表示されたら、API の利用規約に同意します。
CalDAV API リクエストを実行するには、 クライアント IDクライアント シークレットが必要です。

プロジェクトのクライアント ID とクライアント シークレットを検索するには、次の手順を実行します。

  1. 既存の OAuth 2.0 認証情報を選択するか、[認証情報] ページを開きます。
  2. プロジェクトの OAuth 2.0 認証情報をまだ作成していない場合は、[認証情報を作成] > [OAuth クライアント ID] をクリックし、認証情報の作成に必要な情報を入力して作成します。
  3. [OAuth 2.0 クライアント ID] セクションで [クライアント ID] を探します。詳細を確認するには、クライアント ID をクリックします。

Google の CalDAV サーバーに接続する

CalDAV インターフェースを使用するには、まずクライアント プログラムが 2 つの開始点のいずれかでカレンダー サーバーに接続します。いずれの場合も、接続は HTTPS 経由で行い、OAuth 2.0 認証スキームを使用する必要があります。CalDAV サーバーは、Google アカウントの OAuth 2.0 認証を使用して HTTPS 経由でリクエストを受信しない限り、リクエストの認証を拒否します。HTTP または基本認証を使用して接続しようとすると、HTTP 401 Unauthorized ステータス コードが返されます。

クライアント プログラム(Apple のカレンダー アプリなど)が開始点としてプリンシパル コレクションを必要とする場合、接続先の URI は次のようになります。

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

ここで、calid は、アクセスするカレンダーの「カレンダー ID」に置き換える必要があります。カレンダー名の横にある Google カレンダーのウェブ インターフェースから [カレンダー設定] を選択します。表示されるページの [カレンダーのアドレス] に、カレンダー ID が表示されます。ユーザーのプライマリ カレンダーのカレンダー ID は、ユーザーのメールアドレスと同じです。

クライアント プログラム(Mozilla Sunbird など)でカレンダー コレクションが開始点として必要な場合、接続先の URI は次のようになります。

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

古いエンドポイント https://www.google.com/calendar/dav は非推奨になり、サポートされなくなりました。ご利用は自己責任で行ってください。前述の新しいエンドポイント形式に移行することをおすすめします。

iCal® は Apple Inc. の商標です。