CalDAV API デベロッパー ガイド

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

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

CalDAV API の割り当て上限は、Calendar API と同じです。詳細については、使用量の上限をご覧ください。

仕様

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

  • rfc4918: Web 分散オーサリングとバージョン管理(WebDAV)の HTTP 拡張機能

    • HTTP メソッド GETPUTHEADDELETEPOSTOPTIONSPROPFINDPROPPATCH をサポートします。
    • HTTP メソッド LOCKUNLOCKCOPYMOVEMKCOL、または If* ヘッダー(If-Match を除く)をサポートしていません。
    • 任意の(ユーザー定義の)WebDAV プロパティはサポートされていません。
    • WebDAV アクセス制御(rfc3744)をサポートしていません。
  • rfc4791: Calendaring Extensions to WebDAV (CalDAV)

    • HTTP メソッド REPORT をサポートします。free-busy-query 以外のすべてのレポートが実装されています。
    • HTTP メソッド MKCALENDAR をサポートしていません。
    • AUDIO アクションはサポートされていません。
  • rfc5545: iCalendar

    • CalDAV インターフェースで公開されるデータは、iCalendar 仕様に従ってフォーマットされます。
    • VTODO または VJOURNAL データをサポートしていません。
    • ユーザーが設定可能な URL プロパティを許可する Apple iCal 拡張機能をサポートしていません。
  • rfc6578: WebDAV のコレクション同期

    • クライアント アプリケーションは、初回同期後にこの動作モードに切り替える必要があります。
  • rfc6638: Scheduling Extensions to CalDAV

    • 常に空の簡単な「受信トレイ」をサポートします。
    • 受信した招待状は、[受信トレイ] ではなく [予定] コレクションに自動的に配信されます。
    • free-busy ルックアップはサポートされていません。
  • caldav-ctag-02: CalDAV のカレンダー コレクション エンティティ タグ(CTag)

    • カレンダー ctag はリソース etag のようなもので、カレンダー内の何かが変更されると変更されます。これにより、クライアント アプリケーションは、変更されたイベントを同期する必要がないことをすばやく判断できます。
  • calendar-proxy: CalDAV のカレンダー ユーザー プロキシ機能

    • カレンダーの同期のパフォーマンスを向上させるため、calendar-proxy-read-for プロパティまたは calendar-proxy-write-for プロパティを含むリクエストは、iOS デバイスが委任をサポートしていないため、iOS UserAgent で失敗します。

CalDAV の実装はすべての仕様を網羅していませんが、Apple カレンダーなど、多くのクライアントで正しく動作します。

クライアント ID を作成する

CalDAV API を使用するには、Google アカウントが必要です。

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

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

次に、CalDAV API を有効にする必要があります。

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

  1. Google API Console で 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/CALENDAR_ID/user

CALENDAR_ID は、アクセスするカレンダーの ID に置き換えます。

ウェブ インターフェースでカレンダー ID を確認するには、カレンダー名の横にあるプルダウン メニューで [** カレンダーの設定**] を選択します。カレンダー ID は、[カレンダーのアドレス] というセクションに表示されます。ユーザーのメイン カレンダーの ID は、そのユーザーのメールアドレスと同じです。

クライアント プログラム(Mozilla Thunderbird など)でカレンダー コレクションを開始点として使用する必要がある場合は、次の URI を使用します。

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