CalDAV API デベロッパー ガイド

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

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

仕様

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

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

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

注: アカウントのセキュリティ保護と不正使用の防止のため、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 クライアント ID] をクリックし、認証情報の作成に必要な情報を入力して、プロジェクトの OAuth 2.0 認証情報を作成します(まだ作成していない場合)。
  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. の商標です。