{
  "format": "agent-article-v0",
  "article_id": "EA-223",
  "canonical_url": "/tools/ea-223-calendar-scheduling-api-agent",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-223-URL-906B7A9215ED",
    "EVD-EA-223-URL-E274D3FA73A6",
    "EVD-EA-223-URL-2671DF10C7A9",
    "EVD-EA-223-URL-47A5E50A22FC",
    "EVD-EA-223-URL-5A4119997022",
    "EVD-EA-223-URL-093059F82668",
    "EVD-EA-223-URL-FEFF205190D2",
    "EVD-EA-223-URL-58075F12154D",
    "EA-223-R11-RESEARCH",
    "EA-223-R11-WEB-READBACK"
  ],
  "unknown_ids": [
    "EA-223-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [
    "Google"
  ],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-04",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "EA-223-GAP-FIRST-20261004",
    "SRC-EA-223-URL-906B7A9215ED",
    "SRC-EA-223-URL-E274D3FA73A6",
    "SRC-EA-223-URL-2671DF10C7A9",
    "SRC-EA-223-URL-47A5E50A22FC",
    "SRC-EA-223-URL-5A4119997022",
    "SRC-EA-223-URL-093059F82668",
    "SRC-EA-223-URL-FEFF205190D2",
    "SRC-EA-223-URL-58075F12154D",
    "WEBBODY-EA0223-R8-42DE937F"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-223-URL-906B7A9215ED",
      "evidence_class": "RESEARCH",
      "title": "[C1] Google — Freebusy: query:",
      "href": "https://developers.google.com/workspace/calendar/api/v3/reference/freebusy/query",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-906B7A9215ED"
      ],
      "supporting_locators": [
        "SOURCES",
        "C1",
        "- [C1] Google — Freebusy: query: https://developers.google.com/workspace/calendar/api/v3/reference/freebusy/query"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-E274D3FA73A6",
      "evidence_class": "RESEARCH",
      "title": "[C2] Google — Get specific versions of resources:",
      "href": "https://developers.google.com/workspace/calendar/api/guides/version-resources",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-E274D3FA73A6"
      ],
      "supporting_locators": [
        "SOURCES",
        "C2",
        "- [C2] Google — Get specific versions of resources: https://developers.google.com/workspace/calendar/api/guides/version-resources"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-2671DF10C7A9",
      "evidence_class": "RESEARCH",
      "title": "[C3] Google — Create events:",
      "href": "https://developers.google.com/workspace/calendar/api/guides/create-events",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-2671DF10C7A9"
      ],
      "supporting_locators": [
        "SOURCES",
        "C3",
        "- [C3] Google — Create events: https://developers.google.com/workspace/calendar/api/guides/create-events"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-47A5E50A22FC",
      "evidence_class": "RESEARCH",
      "title": "[C4] Google — Events: insert:",
      "href": "https://developers.google.com/workspace/calendar/api/v3/reference/events/insert",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-47A5E50A22FC"
      ],
      "supporting_locators": [
        "SOURCES",
        "C4",
        "- [C4] Google — Events: insert: https://developers.google.com/workspace/calendar/api/v3/reference/events/insert"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-5A4119997022",
      "evidence_class": "RESEARCH",
      "title": "[C5] Google — Synchronize resources efficiently:",
      "href": "https://developers.google.com/workspace/calendar/api/guides/sync",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-5A4119997022"
      ],
      "supporting_locators": [
        "SOURCES",
        "C5",
        "- [C5] Google — Synchronize resources efficiently: https://developers.google.com/workspace/calendar/api/guides/sync"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-093059F82668",
      "evidence_class": "RESEARCH",
      "title": "[M1] Microsoft — calendar: getSchedule:",
      "href": "https://learn.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-093059F82668"
      ],
      "supporting_locators": [
        "SOURCES",
        "M1",
        "- [M1] Microsoft — calendar: getSchedule: https://learn.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-FEFF205190D2",
      "evidence_class": "RESEARCH",
      "title": "[M2] Microsoft — Create event:",
      "href": "https://learn.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-FEFF205190D2"
      ],
      "supporting_locators": [
        "SOURCES",
        "M2",
        "- [M2] Microsoft — Create event: https://learn.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-223-URL-58075F12154D",
      "evidence_class": "RESEARCH",
      "title": "[B1] Cal.com — Create a booking:",
      "href": "https://cal.com/docs/api-reference/v2/bookings/create-a-booking",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-223-URL-58075F12154D"
      ],
      "supporting_locators": [
        "SOURCES",
        "B1",
        "- [B1] Cal.com — Create a booking: https://cal.com/docs/api-reference/v2/bookings/create-a-booking"
      ],
      "scope": "SOURCES",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-223-R11-RESEARCH",
      "evidence_class": "RESEARCH",
      "title": "EA-223 監査済みresearch / canonical revision binding",
      "supports": [
        "1. Google Freebusyは指定期間・calendar/groupの空き/塞がりを返すAPIであり、event作成やslot reserveではない。各calendar/group errorsを確認し、busyが空でもerrorならUNKNOWNにする。Graph getScheduleもavailability情報を返す別methodで、混雑entry時5006等を扱う。[C1,M1;予約状態境界は推論]\n2. Google更新はretrieved ETagをIf-Matchへ渡し、競合412時は再取得して差分と承認を再評価する。無条件overwriteや最新etagへの差し替えだけでは他者編集を守れない。insertに同じ条件付き更新の仕組みはない。[C2]\n3. Google client指定event IDは規定formatに従い、responseを失った作成の重複対策に使える。Graph transactionIdは不要retry低減の入口である。どちらも任意の全操作・無期限・複数provider across exactly-onceの保証へ一般化しない。timeoutではstable intent→provider ID readbackから判断する。[C3,M2;cross-provider否定は保証範囲推論]\n4. Google sendUpdates all/externalOnly/noneを承認対象にする。noneには外部calendar同期失敗やevent欠落のwarningがある。Graph event creationはattendeesを含むと全員へ招待を送ると記載され、通知抑制を前提とするdraft作成に流用しない。[C3,C4,M2]\n5. Graph timeZoneはmailboxのsupported zonesを確認する。local表示だけではDST fold/gapを解消しない。UTC instant、zone ID、元local値・offset・ambiguous選択、tzdata version、end/startを保持し、存在しないlocal timeは候補生成を止める。IANAとWindows名称はadapterで検証して写像する組織提案である。[M1,M2,L1]\n6. room resourceはmailbox設定とpolicyによるaccept/rejectがあり、organizer eventの201だけでroom予約済み・全員承諾とはしない。参加者は表示名だけでなく安定ID/mailbox/resource typeを解決し、外部送信・宛先・本文・時間帯・通知設定を承認へ結ぶ。[M2;承認bindingは提案]\n7. Google sync tokenが無効な410ではfullsyncを行う。stale cacheや通知一件を最新状態の証拠として扱わず、readbackを再取得する。[C5]\n8. Cal.com v2 bookingはcal-api-versionが正しくないと旧版へdefaultする記載がある。attendee timeZoneとevent type等をversion固定する。公開例にconflict/limits bypass関連optionsがあるため、Agentへ任意JSONを通さず明示allowlistにする。API例のoption=trueを安全な推奨defaultsとはしない。[B1;allowlistは提案]"
      ],
      "limit": "canonical監査・revision bindingの存在を示す。外部ソースcurrentnessが本文またはcontrol-planeで確定していない場合は、currentnessをUNKNOWNのまま保持する。",
      "checked_at": "2026-10-04",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "EA-223-GAP-FIRST-20261004"
      ],
      "supporting_locators": [
        "EA-223-GAP-FIRST-20261004",
        "content/staging/EA-223.md"
      ],
      "scope": "監査済みEA本文・canonical revision・既存Source Graph relationの範囲。欠損currentnessは推測で閉じない。",
      "provenance_status": "AUDIT_PASS_CANONICAL_BINDING"
    },
    {
      "id": "EA-223-R11-WEB-READBACK",
      "evidence_class": "IMPL",
      "title": "EA-223 Web body identity / canonical readback",
      "supports": [
        "canonical staging bodyのSHA-256一致とR9 canonical ledger readbackをProduction projectionの入力として検証する。"
      ],
      "limit": "body identity/readbackは本文claim自体の真偽や外部ソースの最新性を追加保証しない。",
      "checked_at": "2026-10-04",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "WEBBODY-EA0223-R8-42DE937F"
      ],
      "supporting_locators": [
        "WEBBODY-EA0223-R8-42DE937F",
        "content/staging/EA-223.md",
        "EA-223-GAP-FIRST-20261004"
      ],
      "scope": "R9/R10 canonical readback後のProduction生成時body identity。",
      "provenance_status": "CANONICAL_READBACK_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "PUBLIC_CLAIM",
      "text": "free/busyから候補を作った後、時間帯・参加者・招待副作用・競合・再試行をどう管理するか。空き時間確認だけで予約確定や全員承諾を宣言しない。"
    },
    {
      "heading": "ESTABLISHED",
      "text": "1. Google Freebusyは指定期間・calendar/groupの空き/塞がりを返すAPIであり、event作成やslot reserveではない。各calendar/group errorsを確認し、busyが空でもerrorならUNKNOWNにする。Graph getScheduleもavailability情報を返す別methodで、混雑entry時5006等を扱う。[C1,M1;予約状態境界は推論]\n2. Google更新はretrieved ETagをIf-Matchへ渡し、競合412時は再取得して差分と承認を再評価する。無条件overwriteや最新etagへの差し替えだけでは他者編集を守れない。insertに同じ条件付き更新の仕組みはない。[C2]\n3. Google client指定event IDは規定formatに従い、responseを失った作成の重複対策に使える。Graph transactionIdは不要retry低減の入口である。どちらも任意の全操作・無期限・複数provider across exactly-onceの保証へ一般化しない。timeoutではstable intent→provider ID readbackから判断する。[C3,M2;cross-provider否定は保証範囲推論]\n4. Google sendUpdates all/externalOnly/noneを承認対象にする。noneには外部calendar同期失敗やevent欠落のwarningがある。Graph event creationはattendeesを含むと全員へ招待を送ると記載され、通知抑制を前提とするdraft作成に流用しない。[C3,C4,M2]\n5. Graph timeZoneはmailboxのsupported zonesを確認する。local表示だけではDST fold/gapを解消しない。UTC instant、zone ID、元local値・offset・ambiguous選択、tzdata version、end/startを保持し、存在しないlocal timeは候補生成を止める。IANAとWindows名称はadapterで検証して写像する組織提案である。[M1,M2,L1]\n6. room resourceはmailbox設定とpolicyによるaccept/rejectがあり、organizer eventの201だけでroom予約済み・全員承諾とはしない。参加者は表示名だけでなく安定ID/mailbox/resource typeを解決し、外部送信・宛先・本文・時間帯・通知設定を承認へ結ぶ。[M2;承認bindingは提案]\n7. Google sync tokenが無効な410ではfullsyncを行う。stale cacheや通知一件を最新状態の証拠として扱わず、readbackを再取得する。[C5]\n8. Cal.com v2 bookingはcal-api-versionが正しくないと旧版へdefaultする記載がある。attendee timeZoneとevent type等をversion固定する。公開例にconflict/limits bypass関連optionsがあるため、Agentへ任意JSONを通さず明示allowlistにする。API例のoption=trueを安全な推奨defaultsとはしない。[B1;allowlistは提案]"
    },
    {
      "heading": "INFERENCE",
      "text": "承認済み内容をhash/revisionと結ぶ、結果不明をUNKNOWNへ止める、再試行前にprovider状態を読み戻す、という設計は組織側の提案です。利用可能なAPIだけで組織の認可や人間承諾が完成するとはしません。"
    },
    {
      "heading": "FAILURE_ENVELOPE",
      "text": "同時にfree/busyを確認した二人が異なるevent IDで同じ時間へ作成し得る。安定IDによるretry dedupとslot conflict対策は異なる。DST foldで01:30が二つのUTC時刻になり、gapで02:30が存在しない。Graph招待の自動送信、Google none同期warning、room拒否、calendar error、stale ETag、sync410、外部参加者への誤送信、タイムゾーン変換とall-day/recurrenceを失敗域に含める。"
    },
    {
      "heading": "AVAILABILITY_GATES",
      "text": "必要なapp導入、対象resourceの権限、OAuth方式/consent、tenant・region・plan、SDKとAPI versionを採用先ごとに確認します。rate/quota、通知設定と外部参加者を検証します。"
    },
    {
      "heading": "SECURITY_PRIVACY_AUDIT_OPERABILITY",
      "text": "actor/tenant/対象resourceと権限を再確認し、秘密鍵はserver側へ置きます。入力内の命令をtool authorityへ転用しません。承認内容・revision、provider receipt、結果readback、human handoffを別状態で監査可能にします。PII・保持/削除・DLP・外部転送・費用と運用閾値は組織の受入を要します。"
    },
    {
      "heading": "UNKNOWN_AND_STOP_CONDITION",
      "text": "旧Luna一意locator、orgのcalendar権限/委任/room policy、Google event ID衝突の分散条件、Graph transactionId有効範囲/保持、Cal.com exact header version/bypass権限/plan、実SDK pin、scope最小化、recurrence/all-dayとwebhook更新/失効、実二重予約防止/room accept、latency/費用と保持はUNKNOWN。\n未認証、対象差分、scope不明、競合、実行結果不明では操作と確定通知を止めます。旧Luna成果の所在未確定を不存在へ読み替えません。"
    },
    {
      "heading": "SOURCES",
      "text": "EVIDENCE_AS_OF: 2026-10-04。資料はprovider/method/設定に限定して解釈します。\n- [C1] Google — Freebusy: query: https://developers.google.com/workspace/calendar/api/v3/reference/freebusy/query\n- [C2] Google — Get specific versions of resources: https://developers.google.com/workspace/calendar/api/guides/version-resources\n- [C3] Google — Create events: https://developers.google.com/workspace/calendar/api/guides/create-events\n- [C4] Google — Events: insert: https://developers.google.com/workspace/calendar/api/v3/reference/events/insert\n- [C5] Google — Synchronize resources efficiently: https://developers.google.com/workspace/calendar/api/guides/sync\n- [M1] Microsoft — calendar: getSchedule: https://learn.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0\n- [M2] Microsoft — Create event: https://learn.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0\n- [B1] Cal.com — Create a booking: https://cal.com/docs/api-reference/v2/bookings/create-a-booking\n- [L1] Work — workflow_contract_probe.py: results/EA-223-results.json"
    }
  ],
  "human_url": "/tools/ea-223-calendar-scheduling-api-agent",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-223-calendar-scheduling-api-agent",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-223-calendar-scheduling-api-agent"
}