CalDAV API デベロッパー ガイド

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

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

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

仕様

関連する仕様ごとに、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 をサポートします。free-busy-query を除くすべてのレポートが実装されています。
    • HTTP メソッド MKCALENDAR はサポートしていません。
    • AUDIO アクションはサポートしていません。
  • rfc5545: iCalendar

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

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

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

    • カレンダーの ctag はリソースの etag に似ています。カレンダーの内容が変更されると変更されます。これにより、クライアント アプリケーションは、変更された予定を同期する必要がないことを迅速に判断できます。
  • calendar-proxy: Calendar User Proxy Functionality in 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