{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"entry_sha256":"e5654b818b3cccff1b2e9ed296e21eb0a1e0c33924dd92f0514f01e2c61f0b41","entry":{"id":"google/calendar-api","name":"Google Calendar API (OAuth app)","vendor":"Google","summary":"Enable the Calendar API in a Google Cloud project, configure the OAuth consent screen, create an OAuth client, and complete sensitive-scope verification before a public launch that reads or writes users' calendars.","category":"productivity","group":"C","homepage":"https://developers.google.com/workspace/calendar","docs":["https://developers.google.com/workspace/calendar/api/auth","https://developers.google.com/workspace/guides/configure-oauth-consent"],"status":"researched","last_verified":null,"last_researched":"2026-10-25","sources":[{"id":"cal_scopes","url":"https://developers.google.com/workspace/calendar/api/auth","title":"Choose Google Calendar API scopes","accessed":"2026-10-25","supports":"List of Calendar scopes (calendar, calendar.readonly, calendar.events, calendar.events.owned, calendar.freebusy, calendar.app.created, …); public apps using scopes that access certain user data must complete verification.","kind":"official"},{"id":"sensitive_verification","url":"https://developers.google.com/identity/protocols/oauth2/production-readiness/sensitive-scope-verification","title":"Sensitive scope verification","accessed":"2026-10-25","supports":"Reading Google Calendar events is cited as a sensitive-scope example; exceptions (personal use, Testing status, service-owned data, Internal); requirements (verified domain, home page and privacy policy on same domain, per-scope justification, unlisted YouTube demo video); typically 3-5 business days.","kind":"official"},{"id":"consent","url":"https://developers.google.com/workspace/guides/configure-oauth-consent","title":"Configure the OAuth consent screen and choose scopes","accessed":"2026-10-25","supports":"Consent screen steps; Internal apps need no further review for sensitive/restricted scopes.","kind":"official"},{"id":"oauth2","url":"https://developers.google.com/identity/protocols/oauth2","title":"Using OAuth 2.0 to Access Google APIs","accessed":"2026-10-25","supports":"Testing-status refresh tokens expire after 7 days; 100 refresh tokens per account per client.","kind":"official"},{"id":"unverified","url":"https://support.google.com/cloud/answer/7454865","title":"Unverified apps","accessed":"2026-10-25","supports":"Unverified app screen; unverified apps limited to 100 new users.","kind":"official"},{"id":"cal_quota","url":"https://developers.google.com/workspace/calendar/api/guides/quota","title":"Usage limits | Google Calendar","accessed":"2026-10-25","supports":"Standard use at no additional cost; 10,000 requests/min per project, 600/min per user per project; overage charges planned later in 2026 with a 1,000,000 requests/day/project billing threshold.","kind":"official"}],"allowed_domains":["console.cloud.google.com"],"account_model":{"summary":"A Google account owns a Google Cloud project; the OAuth client and consent screen live in that project.","accounts":[{"name":"Google account","kind":"personal","owned_by":"the person","required":true},{"name":"Google Cloud project","kind":"project","parent":"Google account","required":true}]},"prerequisites":[{"need":"A Google Cloud project you own"},{"entry":"google/oauth-verification","note":"Needed for External apps in production that request sensitive Calendar scopes (e.g. reading events)."}],"have_ready":[{"kind":"live_website","description":"Public home page on a domain verified in Google Search Console","needed_for":["verification"],"auto_check":"website_live","source":"sensitive_verification"},{"kind":"app_privacy_policy_url","description":"Privacy policy on the same domain as the home page","needed_for":["verification"],"auto_check":"website_live","source":"sensitive_verification"},{"kind":"demo_video","description":"Unlisted YouTube video showing the consent flow (with client ID in the address bar) and how each scope is used","needed_for":["verification"],"auto_check":"none","source":"sensitive_verification"}],"steps":[{"id":"enable_api","title":"Enable the Google Calendar API","summary":"In your project's API Library, enable the Google Calendar API.","route":"copilot","depends_on":[],"gate":"human_submit","url":"https://console.cloud.google.com/apis/library/calendar-json.googleapis.com"},{"id":"consent_screen","title":"Configure the consent screen","summary":"Under Google Auth platform > Branding enter app name and support email, choose Internal or External, add a contact email and accept the Google API Services User Data Policy.","route":"copilot","depends_on":["enable_api"],"gate":"human_terms","url":"https://console.cloud.google.com/auth/branding","sources":["consent"]},{"id":"choose_scopes","title":"Choose the narrowest Calendar scopes","summary":"Under Data Access add only what you need (e.g. calendar.events.owned or calendar.freebusy rather than calendar). The console shows each scope's tier. Add test users under Audience while in Testing.","route":"copilot","depends_on":["consent_screen"],"gate":"human_submit","url":"https://console.cloud.google.com/auth/scopes","recovery":[{"hiccup":"Test users have to reconnect every week","fix":"Testing-status refresh tokens expire after 7 days; publish to production when ready.","source":"oauth2"}],"sources":["cal_scopes","sensitive_verification"]},{"id":"create_client","title":"Create an OAuth client ID","summary":"Under Google Auth platform > Clients create a client (e.g. Web application) with your redirect URIs and copy the ID and secret.","route":"copilot","depends_on":["consent_screen"],"gate":"human_submit","url":"https://console.cloud.google.com/auth/clients","capture":{"env":"GOOGLE_OAUTH_CLIENT_SECRET","kind":"secret"}},{"id":"verification","title":"Submit sensitive-scope verification","summary":"For External production apps, publish branding, then submit data-access verification with per-scope justifications and the demo video. Internal and personal-use apps are exempt.","route":"guided","depends_on":["choose_scopes","create_client"],"gate":"third_party_review","url":"https://console.cloud.google.com/auth/verification","lead_time":{"official":{"text":"Sensitive scope verification typically takes 3-5 business days.","source":"sensitive_verification"}},"preflight":["privacy_policy_reachable","website_live"],"recovery":[{"hiccup":"Users see \"Google hasn't verified this app\" and sign-ups stop at 100 users","fix":"Finish verification or drop to scopes that do not need it.","source":"unverified"}],"optional":true}],"outputs":[{"name":"GOOGLE_OAUTH_CLIENT_ID","description":"OAuth 2.0 client ID","secret":false,"example_format":"123456789012-abc….apps.googleusercontent.com","from_step":"create_client"},{"name":"GOOGLE_OAUTH_CLIENT_SECRET","description":"OAuth 2.0 client secret","secret":true,"example_format":"GOCSPX-…","from_step":"create_client"}],"terms_notes":[{"kind":"rules_say","severity":"amber","text":"Public apps that read users' Calendar events use sensitive scopes and need verification (unverified apps cap at 100 new users).","source":"sensitive_verification"}],"pricing_notes":{"free_tier":"Standard use is at no additional cost within quota (10,000 requests/min per project, 600/min per user).","notes":"Google says charges for exceeding quota are planned later in 2026 [to verify].","source":"cal_quota"},"stripe_projects":false,"api_provisioning":{"available":"partial","notes":"Enabling the API can be scripted; consent screen and verification are console-only [to verify]."}}}