SalesOS

Calendar Integrations

Calendar sync and management

Get available calendar integrations

GET
/v1/calendar-integrations/available

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/calendar-integrations/available" \
  -H "Authorization: Bearer <token>"

Delete oauth app

DELETE
/v1/calendar-integrations/oauth-app/{provider}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

providerRequiredstring
Value in: "GOOGLE" | "OUTLOOK" | "APPLE"
curl -X DELETE "https://api.salesos.org/v1/calendar-integrations/oauth-app/GOOGLE" \
  -H "Authorization: Bearer <token>"

Advanced: use the organization's own Google/Microsoft OAuth app instead of the platform one.

PUT
/v1/calendar-integrations/oauth-app/{provider}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Path Parameters

providerRequiredstring
Value in: "GOOGLE" | "OUTLOOK" | "APPLE"
curl -X PUT "https://api.salesos.org/v1/calendar-integrations/oauth-app/GOOGLE" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

Get user's connected calendar accounts

GET
/v1/calendar-integrations/connections

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/calendar-integrations/connections" \
  -H "Authorization: Bearer <token>"

Get a specific connection

GET
/v1/calendar-integrations/connections/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/connections/<string>" \
  -H "Authorization: Bearer <token>"

Update connection settings

PATCH
/v1/calendar-integrations/connections/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
syncEnabledboolean
syncPastDaysnumber
Minimum: 1Maximum: 365
syncFutureDaysnumber
Minimum: 1Maximum: 365
calendarIdstring

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/calendar-integrations/connections/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "syncEnabled": true,
    "syncPastDays": 1,
    "syncFutureDays": 1,
    "calendarId": "string"
  }'

Disconnect a calendar account

DELETE
/v1/calendar-integrations/connections/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/calendar-integrations/connections/<string>" \
  -H "Authorization: Bearer <token>"

Get available calendars for a connection

GET
/v1/calendar-integrations/connections/{id}/calendars

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/connections/<string>/calendars" \
  -H "Authorization: Bearer <token>"

Initiate OAuth flow for a provider

POST
/v1/calendar-integrations/connect

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
providerRequiredstring
Value in: "GOOGLE" | "OUTLOOK" | "APPLE"
redirectUristring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calendar-integrations/connect" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "GOOGLE",
    "redirectUri": "string"
  }'

OAuth callback for Google Calendar

GET
/v1/calendar-integrations/callback/google

Query Parameters

codeRequiredstring
stateRequiredstring
errorRequiredstring
error_descriptionRequiredstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/callback/google?code=%3Cstring%3E&state=%3Cstring%3E&error=%3Cstring%3E&error_description=%3Cstring%3E"

OAuth callback for Outlook Calendar

GET
/v1/calendar-integrations/callback/outlook

Query Parameters

codeRequiredstring
stateRequiredstring
errorRequiredstring
error_descriptionRequiredstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/callback/outlook?code=%3Cstring%3E&state=%3Cstring%3E&error=%3Cstring%3E&error_description=%3Cstring%3E"

Trigger manual sync for a connection

POST
/v1/calendar-integrations/connections/{id}/sync

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calendar-integrations/connections/<string>/sync" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

READER: list synced calendar events for the current user (optionally within a window / filtered by a linked CRM record). Surfaces what sync pulls in.

GET
/v1/calendar-integrations/events

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

fromstring
tostring
leadIdstring
contactIdstring
accountIdstring
opportunityIdstring
limitstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/events?from=%3Cstring%3E&to=%3Cstring%3E&leadId=%3Cstring%3E&contactId=%3Cstring%3E&accountId=%3Cstring%3E&opportunityId=%3Cstring%3E&limit=%3Cstring%3E" \
  -H "Authorization: Bearer <token>"

WRITE-BACK: create an event in the rep's connected provider calendar and mirror it locally. Closes the "requests calendar scope but never writes" gap.

POST
/v1/calendar-integrations/events

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calendar-integrations/events" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

Upcoming events for the current user (dashboard convenience reader).

GET
/v1/calendar-integrations/events/upcoming

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

daysstring
curl -X GET "https://api.salesos.org/v1/calendar-integrations/events/upcoming?days=%3Cstring%3E" \
  -H "Authorization: Bearer <token>"

Refresh access token for a connection

POST
/v1/calendar-integrations/connections/{id}/refresh

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calendar-integrations/connections/<string>/refresh" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"