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 アクセス制御(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 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 クライアント 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. の商標です。