CalDAV API デベロッパー ガイド

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

Google には、CalDAV プロトコルを使用したカレンダーの表示と管理に使用できる CalDAV インターフェースが用意されています。

仕様

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

  • rfc4918: ウェブ配信型オーサリングとバージョニングのための HTTP 拡張機能(WebDAV)
    • HTTP メソッド GETPUTHEADDELETEPOSTOPTIONSPROPFINDPROPPATCH をサポートします。
    • HTTP メソッド LOCKUNLOCKCOPYMOVEMKCOL、または If* ヘッダー(If-Match を除く)はサポートされていません。
    • 任意の(ユーザー定義の)WebDAV プロパティはサポートしていません。
    • WebDAV アクセス制御(rfc3744)をサポートしていない。
  • rfc4791: WebDAV(CalDAV)へのカレンダー拡張機能
    • HTTP メソッド REPORT をサポートします。Free-busy-query を除くすべてのレポートが実装されています。
    • 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 ユーザー エージェントで calendar-proxy-read-for プロパティまたは calendar-proxy-write-for プロパティを使用すると失敗します。

関連するすべての仕様の完全な実装はまだ提供されていません。ただし、Apple iCal などの多くのクライアントでは、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 iCal など)を開始点としてプリンシパル コレクションが必要な場合、接続する URI は次のようになります。

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

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

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

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

古いエンドポイント https://www.google.com/calendar/dav は非推奨であり、サポートを終了しています。自己責任で使用してください。上記の新しいエンドポイント形式に移行することをおすすめします。

iCal は Apple Inc. の商標です。