- Start connecting a calendar POST
- List a host's calendar connections GET
- Connect a calendar with a password POST
- Disconnect a calendar DELETE
- Choose how a calendar counts PATCH
- List calendar delegations GET
- Add a calendar delegation POST
- Get a calendar delegation GET
- Update a calendar delegation PATCH
- Delete a calendar delegation DELETE
- Verify a calendar delegation POST
- List your OAuth apps GET
- Add your own OAuth app POST
- Get an OAuth app GET
- Update an OAuth app PATCH
- Delete an OAuth app DELETE
- Set a simulated calendar's busy times PUT
Get an OAuth app
Its status, what to register at the provider, and how many connections use it.
bearerAuthAuthorizationBearer <token>A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.
id*stringThe OAuth app's id.
Coss-Version?"2026-10-10"The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.
"2026-10-10"The app.
application/json- response
- response
- …
object*"scheduling.oauth_app""scheduling.oauth_app"id*stringprovider*string"google""microsoft""zoom"client_id*stringtenant_id*string|nullredirect_uri*string|nullcoss_callback_url*stringRegister this with the provider if redirect_uri isn't set. If it is, that page forwards code and state here.
completion_url*string|nullzoom_event_url*|Zoom only: the Event notification endpoint URL for your app's deauthorization events.
scopes*array<string>What to enable on your app at the provider.
status*stringfailing: the provider refused the app's credentials. New consents are refused, and calendars connected through it can't be read until they work again.
"active""failing"last_error_code*string|nulllast_error_at*string|nullsecret_expires_at*string|nullverified_at*|When a consent first completed through this app, which proves its secret.
connections*integerCalendar connections using this app. It can't be deleted while there are any.
created_at*stringupdated_at*stringimport { Coss } from "coss";const coss = new Coss({ apiKey: process.env.COSS_API_KEY, baseUrl: "https://api.coss.com",});const { data, error } = await coss.scheduling.oauthApps.get("calapp_01kd2m9a0b1c2d3e4f5g6h7j8m");{ "object": "scheduling.oauth_app", "id": "calapp_01kd2m9a0b1c2d3e4f5g6h7j8m", "provider": "google", "client_id": "1234567890-abc.apps.googleusercontent.com", "tenant_id": null, "redirect_uri": "https://example.com/oauth/google", "coss_callback_url": "https://api.coss.com/scheduling/oauth/google/callback", "completion_url": "https://example.com/calendar-connected", "zoom_event_url": null, "scopes": [ "https://www.googleapis.com/auth/calendar.events.freebusy" ], "status": "active", "last_error_code": null, "last_error_at": null, "secret_expires_at": null, "verified_at": "2027-01-01T10:00:00.000Z", "connections": 12, "created_at": "2027-01-01T10:00:00.000Z", "updated_at": "2027-01-01T10:00:00.000Z"}