Files
calendar/docs/api-reference/v2/openapi.json
T
be728e9c01 feat: add Mintlify docs (#16787)
* feat: Add Mintlify docs

* Fixed the mint.json for v2

* Fixed versioning issue

* Add titles to ICS feed endpoints

* Added errors to v1

* Added rate-limit to API v1

* feat: added v1-v2 differences and v1 auth

* Trying to eliminate reasons for v1 not showing on publication

* Used the swagger openapi validator

* remove deprecated v1 endpoints

* Moved api docs into new folders without api-reference

* Renamed api to api-reference

* removed the versioning

* Got rid of anchor warnings

* Fixed naming

* Just as a test - using the same v2 openapi spec for v1 reference

* Removed 'externalDocs' from v1

* Removed securitySchemes

* Updated the diff between v1/v2

* Added v1 in front of /attendees to test

* Moved paths up and removed externalDocs

* Testing - Added content to the response

* Reduced paths to 1

* Testing: anything at this point

* Fixed validation

* Moved the other .mdx files to see if that's disrupting something

* Trying with a tab

* Empty tags array

* Added back servers field

* Removed all other schemas

* Removed v1 for now

* Added platform docs

* Language fixes

* Added v1 back

* add API V1 response for attendees

* remove unnecessary endpoint docs in API V1

* Removing platform and API for now

* Updated v2 openapi doc

---------

Co-authored-by: Syed Ali Shahbaz <alishahbaz7@gmail.com>
2024-10-03 15:26:01 +04:00

11256 lines
319 KiB
JSON

{
"openapi": "3.0.0",
"paths": {
"/v2/provider/{clientId}": {
"get": {
"operationId": "CalProviderController_verifyClientId",
"summary": "Get a provider",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProviderVerifyClientOutput"
}
}
}
}
},
"tags": ["Platform / Cal Provider"]
}
},
"/v2/provider/{clientId}/access-token": {
"get": {
"operationId": "CalProviderController_verifyAccessToken",
"summary": "Verify an access token",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProviderVerifyAccessTokenOutput"
}
}
}
}
},
"tags": ["Platform / Cal Provider"]
}
},
"/v2/gcal/oauth/auth-url": {
"get": {
"operationId": "GcalController_redirect",
"summary": "Get auth URL",
"parameters": [
{
"name": "Authorization",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GcalAuthUrlOutput"
}
}
}
}
},
"tags": ["Platform / Google Calendar"]
}
},
"/v2/gcal/oauth/save": {
"get": {
"operationId": "GcalController_save",
"summary": "Connect a calendar",
"parameters": [
{
"name": "state",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "code",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GcalSaveRedirectOutput"
}
}
}
}
},
"tags": ["Platform / Google Calendar"]
}
},
"/v2/gcal/check": {
"get": {
"operationId": "GcalController_check",
"summary": "Check a calendar connection status",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GcalCheckOutput"
}
}
}
}
},
"tags": ["Platform / Google Calendar"]
}
},
"/v2/oauth-clients/{clientId}/users": {
"get": {
"operationId": "OAuthClientUsersController_getManagedUsers",
"summary": "Get all managed users",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetManagedUsersOutput"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
},
"post": {
"operationId": "OAuthClientUsersController_createUser",
"summary": "Create a managed user",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateManagedUserInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateManagedUserOutput"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
}
},
"/v2/oauth-clients/{clientId}/users/{userId}": {
"get": {
"operationId": "OAuthClientUsersController_getUserById",
"summary": "Get a managed user",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetManagedUserOutput"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
},
"patch": {
"operationId": "OAuthClientUsersController_updateUser",
"summary": "Update a managed user",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateManagedUserInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetManagedUserOutput"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
},
"delete": {
"operationId": "OAuthClientUsersController_deleteUser",
"summary": "Delete a managed user",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetManagedUserOutput"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
}
},
"/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": {
"post": {
"operationId": "OAuthClientUsersController_forceRefresh",
"summary": "Force refresh tokens",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeysResponseDto"
}
}
}
}
},
"tags": ["Platform / Managed Users"]
}
},
"/v2/oauth-clients/{clientId}/webhooks": {
"post": {
"operationId": "OAuthClientWebhooksController_createOAuthClientWebhook",
"summary": "Create a webhook",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateWebhookInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
},
"get": {
"operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks",
"summary": "Get all webhooks",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
},
"delete": {
"operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks",
"summary": "Delete all webhooks",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
}
},
"/v2/oauth-clients/{clientId}/webhooks/{webhookId}": {
"patch": {
"operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook",
"summary": "Update a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWebhookInputDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
},
"get": {
"operationId": "OAuthClientWebhooksController_getOAuthClientWebhook",
"summary": "Get a webhook",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
},
"delete": {
"operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook",
"summary": "Delete a webhook",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Platform / Webhooks"]
}
},
"/v2/organizations/{orgId}/attributes": {
"get": {
"operationId": "OrganizationsAttributesController_getOrganizationAttributes",
"summary": "Get all attributes",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrganizationAttributesOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes"]
},
"post": {
"operationId": "OrganizationsAttributesController_createOrganizationAttribute",
"summary": "Create an attribute",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrganizationAttributeInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrganizationAttributesOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes"]
}
},
"/v2/organizations/{orgId}/attributes/{attributeId}": {
"get": {
"operationId": "OrganizationsAttributesController_getOrganizationAttribute",
"summary": "Get an attribute",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSingleAttributeOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes"]
},
"patch": {
"operationId": "OrganizationsAttributesController_updateOrganizationAttribute",
"summary": "Update an attribute",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrganizationAttributeInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrganizationAttributesOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes"]
},
"delete": {
"operationId": "OrganizationsAttributesController_deleteOrganizationAttribute",
"summary": "Delete an attribute",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteOrganizationAttributesOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes"]
}
},
"/v2/organizations/{orgId}/attributes/{attributeId}/options": {
"post": {
"operationId": "OrganizationsOptionsAttributesController_createOrganizationAttributeOption",
"summary": "Create an attribute option",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateAttributeOptionOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
},
"get": {
"operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptions",
"summary": "Get all attribute options",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllAttributeOptionOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
}
},
"/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": {
"delete": {
"operationId": "OrganizationsOptionsAttributesController_deleteOrganizationAttributeOption",
"summary": "Delete an attribute option",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "optionId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteAttributeOptionOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
},
"patch": {
"operationId": "OrganizationsOptionsAttributesController_updateOrganizationAttributeOption",
"summary": "Update an attribute option",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "optionId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrganizationAttributeOptionInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateAttributeOptionOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
}
},
"/v2/organizations/{orgId}/attributes/options/{userId}": {
"post": {
"operationId": "OrganizationsOptionsAttributesController_assignOrganizationAttributeOptionToUser",
"summary": "Assign an attribute to a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignOrganizationAttributeOptionToUserInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignOptionUserOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
},
"get": {
"operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptionsForUser",
"summary": "Get all attribute options for a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOptionUserOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
}
},
"/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": {
"delete": {
"operationId": "OrganizationsOptionsAttributesController_unassignOrganizationAttributeOptionFromUser",
"summary": "Unassign an attribute from a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "attributeOptionId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnassignOptionUserOutput"
}
}
}
}
},
"tags": ["Orgs / Attributes / Options"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}/event-types": {
"post": {
"operationId": "OrganizationsEventTypesController_createTeamEventType",
"summary": "Create an event type",
"parameters": [
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTeamEventTypeOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
},
"get": {
"operationId": "OrganizationsEventTypesController_getTeamEventTypes",
"summary": "Get a team event type",
"parameters": [
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "eventSlug",
"required": true,
"in": "query",
"description": "Slug of team event type to return.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTeamEventTypesOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": {
"get": {
"operationId": "OrganizationsEventTypesController_getTeamEventType",
"summary": "Get an event type",
"parameters": [
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTeamEventTypeOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
},
"patch": {
"operationId": "OrganizationsEventTypesController_updateTeamEventType",
"summary": "Update a team event type",
"parameters": [
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTeamEventTypeOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
},
"delete": {
"operationId": "OrganizationsEventTypesController_deleteTeamEventType",
"summary": "Delete a team event type",
"parameters": [
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteTeamEventTypeOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": {
"post": {
"operationId": "OrganizationsEventTypesController_createPhoneCall",
"summary": "Create a phone call",
"parameters": [
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreatePhoneCallInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreatePhoneCallOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
}
},
"/v2/organizations/{orgId}/teams/event-types": {
"get": {
"operationId": "OrganizationsEventTypesController_getTeamsEventTypes",
"summary": "Get all team event types",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTeamEventTypesOutput"
}
}
}
}
},
"tags": ["Orgs / Event Types"]
}
},
"/v2/organizations/{orgId}/memberships": {
"get": {
"operationId": "OrganizationsMembershipsController_getAllMemberships",
"summary": "Get all memberships",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllOrgMemberships"
}
}
}
}
},
"tags": ["Orgs / Memberships"]
},
"post": {
"operationId": "OrganizationsMembershipsController_createMembership",
"summary": "Create a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrgMembershipDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrgMembershipOutput"
}
}
}
}
},
"tags": ["Orgs / Memberships"]
}
},
"/v2/organizations/{orgId}/memberships/{membershipId}": {
"get": {
"operationId": "OrganizationsMembershipsController_getOrgMembership",
"summary": "Get a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrgMembership"
}
}
}
}
},
"tags": ["Orgs / Memberships"]
},
"delete": {
"operationId": "OrganizationsMembershipsController_deleteMembership",
"summary": "Delete a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteOrgMembership"
}
}
}
}
},
"tags": ["Orgs / Memberships"]
},
"patch": {
"operationId": "OrganizationsMembershipsController_updateMembership",
"summary": "Update a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgMembershipDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgMembership"
}
}
}
}
},
"tags": ["Orgs / Memberships"]
}
},
"/v2/organizations/{orgId}/schedules": {
"get": {
"operationId": "OrganizationsSchedulesController_getOrganizationSchedules",
"summary": "Get all schedules",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules"]
}
},
"/v2/organizations/{orgId}/users/{userId}/schedules": {
"post": {
"operationId": "OrganizationsSchedulesController_createUserSchedule",
"summary": "Create a schedule",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateScheduleInput_2024_06_11"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules", "Orgs / Users / Schedules"]
},
"get": {
"operationId": "OrganizationsSchedulesController_getUserSchedules",
"summary": "Get all schedules",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules", "Orgs / Users / Schedules"]
}
},
"/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": {
"get": {
"operationId": "OrganizationsSchedulesController_getUserSchedule",
"summary": "Get a schedule",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules", "Orgs / Users / Schedules"]
},
"patch": {
"operationId": "OrganizationsSchedulesController_updateUserSchedule",
"summary": "Update a schedule",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules", "Orgs / Users / Schedules"]
},
"delete": {
"operationId": "OrganizationsSchedulesController_deleteUserSchedule",
"summary": "Delete a schedule",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Orgs / Schedules", "Orgs / Users / Schedules"]
}
},
"/v2/organizations/{orgId}/teams": {
"get": {
"operationId": "OrganizationsTeamsController_getAllTeams",
"summary": "Get all teams",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamsOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams", "Teams"]
},
"post": {
"operationId": "OrganizationsTeamsController_createTeam",
"summary": "Create a team",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "x-cal-client-id",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrgTeamDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams"]
}
},
"/v2/organizations/{orgId}/teams/me": {
"get": {
"operationId": "OrganizationsTeamsController_getMyTeams",
"summary": "Get team membership for user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgMeTeamsOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}": {
"get": {
"operationId": "OrganizationsTeamsController_getTeam",
"summary": "Get a team",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams"]
},
"delete": {
"operationId": "OrganizationsTeamsController_deleteTeam",
"summary": "Delete a team",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams"]
},
"patch": {
"operationId": "OrganizationsTeamsController_updateTeam",
"summary": "Update a team",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgTeamDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}/memberships": {
"get": {
"operationId": "OrganizationsTeamsMembershipsController_getAllOrgTeamMemberships",
"summary": "Get all memberships",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamMembershipsOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams / Memberships"]
},
"post": {
"operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership",
"summary": "Create a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrgTeamMembershipDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams / Memberships"]
}
},
"/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": {
"get": {
"operationId": "OrganizationsTeamsMembershipsController_getOrgTeamMembership",
"summary": "Get a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams / Memberships"]
},
"delete": {
"operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership",
"summary": "Delete a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams / Memberships"]
},
"patch": {
"operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership",
"summary": "Update a membership",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "teamId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "membershipId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgTeamMembershipDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Teams / Memberships"]
}
},
"/v2/organizations/{orgId}/users": {
"get": {
"operationId": "OrganizationsUsersController_getOrganizationsUsers",
"summary": "Get all users",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
},
{
"name": "emails",
"required": false,
"in": "query",
"description": "The email address or an array of email addresses to filter by",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrganizationUsersOutput"
}
}
}
}
},
"tags": ["Orgs / Users"]
},
"post": {
"operationId": "OrganizationsUsersController_createOrganizationUser",
"summary": "Create a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrganizationUserInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrganizationUserOutput"
}
}
}
}
},
"tags": ["Orgs / Users"]
}
},
"/v2/organizations/{orgId}/users/{userId}": {
"patch": {
"operationId": "OrganizationsUsersController_updateOrganizationUser",
"summary": "Update a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrganizationUserInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrganizationUserOutput"
}
}
}
}
},
"tags": ["Orgs / Users"]
},
"delete": {
"operationId": "OrganizationsUsersController_deleteOrganizationUser",
"summary": "Delete a user",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrganizationUserOutput"
}
}
}
}
},
"tags": ["Orgs / Users"]
}
},
"/v2/organizations/{orgId}/webhooks": {
"get": {
"operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks",
"summary": "Get all webhooks",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Webhooks"]
},
"post": {
"operationId": "OrganizationsWebhooksController_createOrganizationWebhook",
"summary": "Create a webhook",
"parameters": [
{
"name": "orgId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateWebhookInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Webhooks"]
}
},
"/v2/organizations/{orgId}/webhooks/{webhookId}": {
"get": {
"operationId": "OrganizationsWebhooksController_getOrganizationWebhook",
"summary": "Get a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Webhooks"]
},
"delete": {
"operationId": "OrganizationsWebhooksController_deleteWebhook",
"summary": "Delete a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Webhooks"]
},
"patch": {
"operationId": "OrganizationsWebhooksController_updateOrgWebhook",
"summary": "Update a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWebhookInputDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Orgs / Webhooks"]
}
},
"/v2/bookings": {
"post": {
"operationId": "BookingsController_2024_08_13_createBooking",
"summary": "Create a booking",
"description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n\n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n ",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"description": "Accepts different types of booking input: CreateBookingInput_2024_08_13, CreateInstantBookingInput_2024_08_13, or CreateRecurringBookingInput_2024_08_13",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/CreateBookingInput_2024_08_13"
},
{
"$ref": "#/components/schemas/CreateInstantBookingInput_2024_08_13"
},
{
"$ref": "#/components/schemas/CreateRecurringBookingInput_2024_08_13"
}
]
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateBookingOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
},
"get": {
"operationId": "BookingsController_2024_08_13_getBookings",
"summary": "Get all bookings",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "status",
"required": false,
"in": "query",
"description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.",
"example": "?status=upcoming,past",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"]
}
}
},
{
"name": "attendeeEmail",
"required": false,
"in": "query",
"description": "Filter bookings by the attendee's email address.",
"example": "example@domain.com",
"schema": {
"type": "string"
}
},
{
"name": "attendeeName",
"required": false,
"in": "query",
"description": "Filter bookings by the attendee's name.",
"example": "John Doe",
"schema": {
"type": "string"
}
},
{
"name": "eventTypeIds",
"required": false,
"in": "query",
"description": "Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.",
"example": "?eventTypeIds=100,200",
"schema": {
"type": "string"
}
},
{
"name": "eventTypeId",
"required": false,
"in": "query",
"description": "Filter bookings by event type id belonging to the user.",
"example": "?eventTypeId=100",
"schema": {
"type": "string"
}
},
{
"name": "teamsIds",
"required": false,
"in": "query",
"description": "Filter bookings by team ids that user is part of. Team ids must be separated by a comma.",
"example": "?teamIds=50,60",
"schema": {
"type": "string"
}
},
{
"name": "teamId",
"required": false,
"in": "query",
"description": "Filter bookings by team id that user is part of",
"example": "?teamId=50",
"schema": {
"type": "string"
}
},
{
"name": "afterStart",
"required": false,
"in": "query",
"description": "Filter bookings with start after this date string.",
"example": "?afterStart=2025-03-07T10:00:00.000Z",
"schema": {
"type": "string"
}
},
{
"name": "beforeEnd",
"required": false,
"in": "query",
"description": "Filter bookings with end before this date string.",
"example": "?beforeEnd=2025-03-07T11:00:00.000Z",
"schema": {
"type": "string"
}
},
{
"name": "sortStart",
"required": false,
"in": "query",
"description": "Sort results by their start time in ascending or descending order.",
"example": "?sortStart=asc OR ?sortStart=desc",
"schema": {
"enum": ["asc", "desc"],
"type": "string"
}
},
{
"name": "sortEnd",
"required": false,
"in": "query",
"description": "Sort results by their end time in ascending or descending order.",
"example": "?sortEnd=asc OR ?sortEnd=desc",
"schema": {
"enum": ["asc", "desc"],
"type": "string"
}
},
{
"name": "sortCreated",
"required": false,
"in": "query",
"description": "Sort results by their creation time (when booking was made) in ascending or descending order.",
"example": "?sortEnd=asc OR ?sortEnd=desc",
"schema": {
"enum": ["asc", "desc"],
"type": "string"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetBookingsOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
}
},
"/v2/bookings/{bookingUid}": {
"get": {
"operationId": "BookingsController_2024_08_13_getBooking",
"summary": "Get a booking",
"description": "`:bookingUid` can be\n\n 1. uid of a normal booking\n\n 2. uid of one of the recurring booking recurrences\n\n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "bookingUid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetBookingOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
}
},
"/v2/bookings/{bookingUid}/reschedule": {
"post": {
"operationId": "BookingsController_2024_08_13_rescheduleBooking",
"summary": "Reschedule a booking",
"description": "Reschedule a booking by passing `:bookingUid` of the booking that should be rescheduled and pass request body with a new start time to create a new booking.",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "bookingUid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RescheduleBookingInput_2024_08_13"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RescheduleBookingOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
}
},
"/v2/bookings/{bookingUid}/cancel": {
"post": {
"operationId": "BookingsController_2024_08_13_cancelBooking",
"summary": "Cancel a booking",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "bookingUid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBookingInput_2024_08_13"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBookingOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
}
},
"/v2/bookings/{bookingUid}/mark-absent": {
"post": {
"operationId": "BookingsController_2024_08_13_markNoShow",
"summary": "Mark a booking absence",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-08-13`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "bookingUid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MarkAbsentBookingInput_2024_08_13"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MarkAbsentBookingOutput_2024_08_13"
}
}
}
}
},
"tags": ["Bookings"]
}
},
"/v2/calendars/ics-feed/save": {
"post": {
"operationId": "CalendarsController_createIcsFeed",
"summary": "Save an ICS feed",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateIcsFeedInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateIcsFeedOutputResponseDto"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/ics-feed/check": {
"get": {
"operationId": "CalendarsController_checkIcsFeed",
"summary": "Check an ICS feed",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/busy-times": {
"get": {
"operationId": "CalendarsController_getBusyTimes",
"summary": "Get busy times",
"parameters": [
{
"name": "loggedInUsersTz",
"required": true,
"in": "query",
"description": "The timezone of the logged in user represented as a string",
"example": "America/New_York",
"schema": {
"type": "string"
}
},
{
"name": "calendarsToLoad",
"required": true,
"in": "query",
"description": "An array of Calendar objects representing the calendars to be loaded",
"example": "[{ credentialId: \"1\", externalId: \"AQgtJE7RnHEeyisVq2ENs2gAAAgEGAAAACgtJE7RnHEeyisVq2ENs2gAAAhSDAAAA\" }, { credentialId: \"2\", externalId: \"AQM7RnHEeyisVq2ENs2gAAAhFDBBBBB\" }]",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetBusyTimesOutput"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars": {
"get": {
"operationId": "CalendarsController_getCalendars",
"summary": "Get all calendars",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConnectedCalendarsOutput"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/{calendar}/connect": {
"get": {
"operationId": "CalendarsController_redirect",
"summary": "Get connect URL",
"parameters": [
{
"name": "Authorization",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/{calendar}/save": {
"get": {
"operationId": "CalendarsController_save",
"summary": "Save a calendar",
"parameters": [
{
"name": "state",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "code",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/{calendar}/credentials": {
"post": {
"operationId": "CalendarsController_syncCredentials",
"summary": "Sync credentials",
"parameters": [
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"201": {
"description": ""
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/{calendar}/check": {
"get": {
"operationId": "CalendarsController_check",
"summary": "Check a calendar connection",
"parameters": [
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/calendars/{calendar}/disconnect": {
"post": {
"operationId": "CalendarsController_deleteCalendarCredentials",
"summary": "Disconnect a calendar",
"parameters": [
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteCalendarCredentialsInputBodyDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedCalendarCredentialsOutputResponseDto"
}
}
}
}
},
"tags": ["Calendars"]
}
},
"/v2/destination-calendars": {
"put": {
"operationId": "DestinationCalendarsController_updateDestinationCalendars",
"summary": "Update destination calendars",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DestinationCalendarsInputBodyDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DestinationCalendarsOutputResponseDto"
}
}
}
}
},
"tags": ["Destination Calendars"]
}
},
"/v2/event-types": {
"post": {
"operationId": "EventTypesController_2024_06_14_createEventType",
"summary": "Create an event type",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-14`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateEventTypeInput_2024_06_14"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateEventTypeOutput_2024_06_14"
}
}
}
}
},
"tags": ["Event Types"]
},
"get": {
"operationId": "EventTypesController_2024_06_14_getEventTypes",
"summary": "Get all event types",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-14`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "username",
"required": true,
"in": "query",
"description": "The username of the user to get event types for. If only username provided will get all event types.",
"schema": {
"type": "string"
}
},
{
"name": "eventSlug",
"required": true,
"in": "query",
"description": "Slug of event type to return. Notably, if eventSlug is provided then username must be provided too, because multiple users can have event with same slug.",
"schema": {
"type": "string"
}
},
{
"name": "usernames",
"required": true,
"in": "query",
"description": "Get dynamic event type for multiple usernames separated by comma. e.g `usernames=alice,bob`",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetEventTypesOutput_2024_06_14"
}
}
}
}
},
"tags": ["Event Types"]
}
},
"/v2/event-types/{eventTypeId}": {
"get": {
"operationId": "EventTypesController_2024_06_14_getEventTypeById",
"summary": "Get an event type",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-14`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetEventTypeOutput_2024_06_14"
}
}
}
}
},
"tags": ["Event Types"]
},
"patch": {
"operationId": "EventTypesController_2024_06_14_updateEventType",
"summary": "Update an event type",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-14`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateEventTypeInput_2024_06_14"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateEventTypeOutput_2024_06_14"
}
}
}
}
},
"tags": ["Event Types"]
},
"delete": {
"operationId": "EventTypesController_2024_06_14_deleteEventType",
"summary": "Delete an event type",
"parameters": [
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-14`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteEventTypeOutput_2024_06_14"
}
}
}
}
},
"tags": ["Event Types"]
}
},
"/v2/event-types/{eventTypeId}/webhooks": {
"post": {
"operationId": "EventTypeWebhooksController_createEventTypeWebhook",
"summary": "Create a webhook",
"parameters": [
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateWebhookInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
},
"get": {
"operationId": "EventTypeWebhooksController_getEventTypeWebhooks",
"summary": "Get all webhooks",
"parameters": [
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
},
"delete": {
"operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks",
"summary": "Delete all webhooks",
"parameters": [
{
"name": "eventTypeId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
}
},
"/v2/event-types/{eventTypeId}/webhooks/{webhookId}": {
"patch": {
"operationId": "EventTypeWebhooksController_updateEventTypeWebhook",
"summary": "Update a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWebhookInputDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
},
"get": {
"operationId": "EventTypeWebhooksController_getEventTypeWebhook",
"summary": "Get a webhook",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
},
"delete": {
"operationId": "EventTypeWebhooksController_deleteEventTypeWebhook",
"summary": "Delete a webhook",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Event Types / Webhooks"]
}
},
"/health": {
"get": {
"operationId": "AppController_getHealth",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
},
"tags": ["Health - development only"]
}
},
"/v2/me": {
"get": {
"operationId": "MeController_getMe",
"summary": "Get my profile",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetMeOutput"
}
}
}
}
},
"tags": ["Me"]
},
"patch": {
"operationId": "MeController_updateMe",
"summary": "Update my profile",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateManagedUserInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateMeOutput"
}
}
}
}
},
"tags": ["Me"]
}
},
"/v2/oauth-clients": {
"post": {
"operationId": "OAuthClientsController_createOAuthClient",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOAuthClientInput"
}
}
}
},
"responses": {
"201": {
"description": "Create an OAuth client",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOAuthClientResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
},
"get": {
"operationId": "OAuthClientsController_getOAuthClients",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOAuthClientsResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/oauth-clients/{clientId}": {
"get": {
"operationId": "OAuthClientsController_getOAuthClientById",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOAuthClientResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
},
"patch": {
"operationId": "OAuthClientsController_updateOAuthClient",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOAuthClientInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOAuthClientResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
},
"delete": {
"operationId": "OAuthClientsController_deleteOAuthClient",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOAuthClientResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/oauth-clients/{clientId}/managed-users": {
"get": {
"operationId": "OAuthClientsController_getOAuthClientManagedUsersById",
"summary": "",
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetManagedUsersOutput"
}
}
}
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/oauth/{clientId}/authorize": {
"post": {
"operationId": "OAuthFlowController_authorize",
"summary": "Authorize an OAuth client",
"description": "Redirects the user to the specified 'redirect_uri' with an authorization code in query parameter if the client is authorized successfully. The code is then exchanged for access and refresh tokens via the `/exchange` endpoint.",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAuthorizeInput"
}
}
}
},
"responses": {
"200": {
"description": "The user is redirected to the 'redirect_uri' with an authorization code in query parameter e.g. `redirectUri?code=secretcode.`"
},
"400": {
"description": "Bad request if the OAuth client is not found, if the redirect URI is invalid, or if the user has already authorized the client."
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/oauth/{clientId}/exchange": {
"post": {
"operationId": "OAuthFlowController_exchange",
"summary": "Exchange authorization code for access tokens",
"description": "Exchanges the authorization code received from the `/authorize` endpoint for access and refresh tokens. The authorization code should be provided in the 'Authorization' header prefixed with 'Bearer '.",
"parameters": [
{
"name": "Authorization",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExchangeAuthorizationCodeInput"
}
}
}
},
"responses": {
"200": {
"description": "Successfully exchanged authorization code for access and refresh tokens.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeysResponseDto"
}
}
}
},
"400": {
"description": "Bad request if the authorization code is missing, invalid, or if the client ID and secret do not match."
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/oauth/{clientId}/refresh": {
"post": {
"operationId": "OAuthFlowController_refreshAccessToken",
"parameters": [
{
"name": "clientId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "x-cal-secret-key",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RefreshTokenInput"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeysResponseDto"
}
}
}
}
},
"tags": ["OAuth - development only"]
}
},
"/v2/schedules": {
"post": {
"operationId": "SchedulesController_2024_06_11_createSchedule",
"summary": "Create a schedule",
"description": "\n Create a schedule for the authenticated user.\n\n The point of creating schedules is for event types to be available at specific times.\n\n The first goal of schedules is to have a default schedule. If you are platform customer and created managed users, then it is important to note that each managed user should have a default schedule.\n 1. If you passed `timeZone` when creating managed user, then the default schedule from Monday to Friday from 9AM to 5PM will be created with that timezone. The managed user can then change the default schedule via the `AvailabilitySettings` atom.\n 2. If you did not, then we assume you want the user to have this specific schedule right away. You should create a default schedule by specifying\n `\"isDefault\": true` in the request body. Until the user has a default schedule the user can't be booked nor manage their schedule via the AvailabilitySettings atom.\n\n The second goal of schedules is to create another schedule that event types can point to. This is useful for when an event is booked because availability is not checked against the default schedule but instead against that specific schedule.\n After creating a non-default schedule, you can update an event type to point to that schedule via the PATCH `event-types/{eventTypeId}` endpoint.\n\n When specifying start time and end time for each day use the 24 hour format e.g. 08:00, 15:00 etc.\n ",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateScheduleInput_2024_06_11"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
},
"get": {
"operationId": "SchedulesController_2024_06_11_getSchedules",
"summary": "Get all schedules",
"description": "Get all schedules of the authenticated user.",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
}
},
"/v2/schedules/default": {
"get": {
"operationId": "SchedulesController_2024_06_11_getDefaultSchedule",
"summary": "Get default schedule",
"description": "Get the default schedule of the authenticated user.",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetDefaultScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
}
},
"/v2/schedules/{scheduleId}": {
"get": {
"operationId": "SchedulesController_2024_06_11_getSchedule",
"summary": "Get a schedule",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
},
"patch": {
"operationId": "SchedulesController_2024_06_11_updateSchedule",
"summary": "Update a schedule",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
},
"delete": {
"operationId": "SchedulesController_2024_06_11_deleteSchedule",
"summary": "Delete a schedule",
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` either managed user access token or api key prefixed with cal_",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "cal-api-version",
"in": "header",
"description": "Must be set to `2024-06-11`",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "scheduleId",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11"
}
}
}
}
},
"tags": ["Schedules"]
}
},
"/v2/selected-calendars": {
"post": {
"operationId": "SelectedCalendarsController_addSelectedCalendar",
"summary": "Add a selected calendar",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelectedCalendarsInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelectedCalendarOutputResponseDto"
}
}
}
}
},
"tags": ["Selected Calendars"]
},
"delete": {
"operationId": "SelectedCalendarsController_removeSelectedCalendar",
"summary": "Delete a selected calendar",
"parameters": [
{
"name": "integration",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "externalId",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "credentialId",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelectedCalendarOutputResponseDto"
}
}
}
}
},
"tags": ["Selected Calendars"]
}
},
"/v2/slots/reserve": {
"post": {
"operationId": "SlotsController_reserveSlot",
"summary": "Reserve a slot",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReserveSlotInput"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Slots"]
}
},
"/v2/slots/selected-slot": {
"delete": {
"operationId": "SlotsController_deleteSelectedSlot",
"summary": "Delete a selected slot",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Slots"]
}
},
"/v2/slots/available": {
"get": {
"operationId": "SlotsController_getAvailableSlots",
"summary": "Get available slots",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Slots"]
}
},
"/v2/stripe/connect": {
"get": {
"operationId": "StripeController_redirect",
"parameters": [
{
"name": "Authorization",
"required": true,
"in": "header",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StripConnectOutputResponseDto"
}
}
}
}
},
"tags": ["Stripe"]
}
},
"/v2/stripe/save": {
"get": {
"operationId": "StripeController_save",
"parameters": [
{
"name": "state",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "code",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StripCredentialsSaveOutputResponseDto"
}
}
}
}
},
"tags": ["Stripe"]
}
},
"/v2/stripe/check": {
"get": {
"operationId": "StripeController_check",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto"
}
}
}
}
},
"tags": ["Stripe"]
}
},
"/v2/timezones": {
"get": {
"operationId": "TimezonesController_getTimeZones",
"summary": "Get all timezones",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": ["Timezones"]
}
},
"/v2/webhooks": {
"post": {
"operationId": "WebhooksController_createWebhook",
"summary": "Create a webhook",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateWebhookInputDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Webhooks"]
},
"get": {
"operationId": "WebhooksController_getWebhooks",
"summary": "Get all webooks (paginated)",
"parameters": [
{
"name": "take",
"required": false,
"in": "query",
"description": "The number of items to return",
"example": 10,
"schema": {
"type": "number"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "The number of items to skip",
"example": 0,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserWebhooksOutputResponseDto"
}
}
}
}
},
"tags": ["Webhooks"]
}
},
"/v2/webhooks/{webhookId}": {
"patch": {
"operationId": "WebhooksController_updateWebhook",
"summary": "Update a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWebhookInputDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Webhooks"]
},
"get": {
"operationId": "WebhooksController_getWebhook",
"summary": "Get a webhook",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Webhooks"]
},
"delete": {
"operationId": "WebhooksController_deleteWebhook",
"summary": "Delete a webhook",
"parameters": [
{
"name": "webhookId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserWebhookOutputResponseDto"
}
}
}
}
},
"tags": ["Webhooks"]
}
}
},
"info": {
"title": "Cal.com API v2",
"description": "",
"version": "1.0.0",
"contact": {}
},
"tags": [],
"servers": [],
"components": {
"schemas": {
"ManagedUserOutput": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1
},
"email": {
"type": "string",
"example": "alice+cluo37fwd0001khkzqqynkpj3@example.com"
},
"username": {
"type": "string",
"nullable": true,
"example": "alice"
},
"name": {
"type": "string",
"nullable": true,
"example": "alice"
},
"timeZone": {
"type": "string",
"example": "America/New_York"
},
"weekStart": {
"type": "string",
"example": "Sunday"
},
"createdDate": {
"type": "string",
"example": "2024-04-01T00:00:00.000Z"
},
"timeFormat": {
"type": "number",
"nullable": true,
"example": 12
},
"defaultScheduleId": {
"type": "number",
"nullable": true,
"example": null
},
"locale": {
"enum": [
"ar",
"ca",
"de",
"es",
"eu",
"he",
"id",
"ja",
"lv",
"pl",
"ro",
"sr",
"th",
"vi",
"az",
"cs",
"el",
"es-419",
"fi",
"hr",
"it",
"km",
"nl",
"pt",
"ru",
"sv",
"tr",
"zh-CN",
"bg",
"da",
"en",
"et",
"fr",
"hu",
"iw",
"ko",
"no",
"pt-BR",
"sk",
"ta",
"uk",
"zh-TW"
],
"type": "string",
"example": "en"
}
},
"required": [
"id",
"email",
"username",
"name",
"timeZone",
"weekStart",
"createdDate",
"timeFormat",
"defaultScheduleId"
]
},
"GetManagedUsersOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ManagedUserOutput"
}
}
},
"required": ["status", "data"]
},
"CreateManagedUserInput": {
"type": "object",
"properties": {
"email": {
"type": "string",
"example": "alice@example.com"
},
"name": {
"type": "string",
"example": "Alice Smith",
"description": "Managed user's name is used in emails"
},
"timeFormat": {
"type": "number",
"enum": [12, 24],
"example": 12,
"description": "Must be a number 12 or 24"
},
"weekStart": {
"type": "string",
"example": "Monday",
"enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
},
"timeZone": {
"type": "string",
"example": "America/New_York",
"description": "Timezone is used to create user's default schedule from Monday to Friday from 9AM to 5PM. If it is not passed then user does not have\n a default schedule and it must be created manually via the /schedules endpoint. Until the schedule is created, the user can't access availability atom to set his / her availability nor booked."
},
"locale": {
"enum": [
"ar",
"ca",
"de",
"es",
"eu",
"he",
"id",
"ja",
"lv",
"pl",
"ro",
"sr",
"th",
"vi",
"az",
"cs",
"el",
"es-419",
"fi",
"hr",
"it",
"km",
"nl",
"pt",
"ru",
"sv",
"tr",
"zh-CN",
"bg",
"da",
"en",
"et",
"fr",
"hu",
"iw",
"ko",
"no",
"pt-BR",
"sk",
"ta",
"uk",
"zh-TW"
],
"type": "string",
"example": "en"
}
},
"required": ["email", "name"]
},
"CreateManagedUserData": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/ManagedUserOutput"
},
"accessToken": {
"type": "string"
},
"refreshToken": {
"type": "string"
},
"accessTokenExpiresAt": {
"type": "number"
}
},
"required": ["user", "accessToken", "refreshToken", "accessTokenExpiresAt"]
},
"CreateManagedUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/CreateManagedUserData"
}
},
"required": ["status", "data"]
},
"GetManagedUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ManagedUserOutput"
}
},
"required": ["status", "data"]
},
"UpdateManagedUserInput": {
"type": "object",
"properties": {
"timeFormat": {
"type": "number",
"enum": [12, 24],
"example": 12,
"description": "Must be 12 or 24"
},
"weekStart": {
"type": "string",
"enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"example": "Monday"
},
"locale": {
"enum": [
"ar",
"ca",
"de",
"es",
"eu",
"he",
"id",
"ja",
"lv",
"pl",
"ro",
"sr",
"th",
"vi",
"az",
"cs",
"el",
"es-419",
"fi",
"hr",
"it",
"km",
"nl",
"pt",
"ru",
"sv",
"tr",
"zh-CN",
"bg",
"da",
"en",
"et",
"fr",
"hu",
"iw",
"ko",
"no",
"pt-BR",
"sk",
"ta",
"uk",
"zh-TW"
],
"type": "string",
"example": "en"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"defaultScheduleId": {
"type": "number"
},
"timeZone": {
"type": "string"
}
}
},
"KeysDto": {
"type": "object",
"properties": {
"accessToken": {
"type": "string",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
},
"refreshToken": {
"type": "string",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
},
"accessTokenExpiresAt": {
"type": "number"
}
},
"required": ["accessToken", "refreshToken", "accessTokenExpiresAt"]
},
"KeysResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/KeysDto"
}
},
"required": ["status", "data"]
},
"CreateOAuthClientInput": {
"type": "object",
"properties": {}
},
"DataDto": {
"type": "object",
"properties": {
"clientId": {
"type": "string",
"example": "clsx38nbl0001vkhlwin9fmt0"
},
"clientSecret": {
"type": "string",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi"
}
},
"required": ["clientId", "clientSecret"]
},
"CreateOAuthClientResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"example": {
"clientId": "clsx38nbl0001vkhlwin9fmt0",
"clientSecret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi"
},
"allOf": [
{
"$ref": "#/components/schemas/DataDto"
}
]
}
},
"required": ["status", "data"]
},
"PlatformOAuthClientDto": {
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "clsx38nbl0001vkhlwin9fmt0"
},
"name": {
"type": "string",
"example": "MyClient"
},
"secret": {
"type": "string",
"example": "secretValue"
},
"permissions": {
"type": "number",
"example": 3
},
"logo": {
"type": "string",
"nullable": true,
"example": "https://example.com/logo.png"
},
"redirectUris": {
"example": ["https://example.com/callback"],
"type": "array",
"items": {
"type": "string"
}
},
"organizationId": {
"type": "number",
"example": 1
},
"createdAt": {
"format": "date-time",
"type": "string",
"example": "2024-03-23T08:33:21.851Z"
}
},
"required": ["id", "name", "secret", "permissions", "redirectUris", "organizationId", "createdAt"]
},
"GetOAuthClientsResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlatformOAuthClientDto"
}
}
},
"required": ["status", "data"]
},
"GetOAuthClientResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/PlatformOAuthClientDto"
}
},
"required": ["status", "data"]
},
"UpdateOAuthClientInput": {
"type": "object",
"properties": {
"logo": {
"type": "string"
},
"name": {
"type": "string"
},
"redirectUris": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"bookingRedirectUri": {
"type": "string"
},
"bookingCancelRedirectUri": {
"type": "string"
},
"bookingRescheduleRedirectUri": {
"type": "string"
},
"areEmailsEnabled": {
"type": "boolean"
}
}
},
"OAuthAuthorizeInput": {
"type": "object",
"properties": {
"redirectUri": {
"type": "string"
}
},
"required": ["redirectUri"]
},
"ExchangeAuthorizationCodeInput": {
"type": "object",
"properties": {
"clientSecret": {
"type": "string"
}
},
"required": ["clientSecret"]
},
"RefreshTokenInput": {
"type": "object",
"properties": {
"refreshToken": {
"type": "string"
}
},
"required": ["refreshToken"]
},
"AddressLocation_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "address",
"description": "only allowed value for type is `address`"
},
"address": {
"type": "string",
"example": "123 Example St, City, Country"
},
"public": {
"type": "boolean"
}
},
"required": ["type", "address", "public"]
},
"LinkLocation_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "link",
"description": "only allowed value for type is `link`"
},
"link": {
"type": "string",
"example": "https://customvideo.com/join/123456"
},
"public": {
"type": "boolean"
}
},
"required": ["type", "link", "public"]
},
"IntegrationLocation_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "integration",
"description": "only allowed value for type is `integration`"
},
"integration": {
"type": "string",
"example": "cal-video",
"enum": ["cal-video"]
}
},
"required": ["type", "integration"]
},
"PhoneLocation_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "phone",
"description": "only allowed value for type is `phone`"
},
"phone": {
"type": "string",
"example": "+37120993151"
},
"public": {
"type": "boolean"
}
},
"required": ["type", "phone", "public"]
},
"PhoneFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "phone",
"description": "only allowed value for type is `phone`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string"
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"AddressFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "address",
"description": "only allowed value for type is `address`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter your address"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., 1234 Main St"
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"TextFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "text",
"description": "only allowed value for type is `text`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter your text"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., Enter text here"
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"NumberFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "number",
"description": "only allowed value for type is `number`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter a number"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., 100"
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"TextAreaFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "textarea",
"description": "only allowed value for type is `textarea`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter detailed information"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., Detailed description here..."
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"SelectFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "select",
"description": "only allowed value for type is `select`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please select an option"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "Select..."
},
"options": {
"example": ["Option 1", "Option 2"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type", "slug", "label", "required", "placeholder", "options"]
},
"MultiSelectFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "multiselect",
"description": "only allowed value for type is `multiselect`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please select multiple options"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Option 1", "Option 2"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type", "slug", "label", "required", "options"]
},
"MultiEmailFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "multiemail",
"description": "only allowed value for type is `multiemail`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter multiple emails"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., example@example.com"
}
},
"required": ["type", "slug", "label", "required", "placeholder"]
},
"CheckboxGroupFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "checkbox",
"description": "only allowed value for type is `checkbox`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Select all that apply"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Checkbox 1", "Checkbox 2"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type", "slug", "label", "required", "options"]
},
"RadioGroupFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "radio",
"description": "only allowed value for type is `radio`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Select one option"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Radio 1", "Radio 2"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type", "slug", "label", "required", "options"]
},
"BooleanFieldInput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "boolean",
"description": "only allowed value for type is `boolean`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Agree to terms?"
},
"required": {
"type": "boolean"
}
},
"required": ["type", "slug", "label", "required"]
},
"BusinessDaysWindow_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["businessDays", "calendarDays", "range"],
"description": "Whether the window should be business days, calendar days or a range of dates"
},
"value": {
"type": "number",
"example": 5,
"description": "How many business day into the future can this event be booked"
},
"rolling": {
"type": "boolean",
"example": true,
"description": "If true, the window will be rolling aka from the moment that someone is trying to book this event. Otherwise it will be specified amount of days from the current date."
}
},
"required": ["type", "value", "rolling"]
},
"CalendarDaysWindow_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["businessDays", "calendarDays", "range"],
"description": "Whether the window should be business days, calendar days or a range of dates"
},
"value": {
"type": "number",
"example": 5,
"description": "How many calendar days into the future can this event be booked"
},
"rolling": {
"type": "boolean",
"example": true,
"description": "If true, the window will be rolling aka from the moment that someone is trying to book this event. Otherwise it will be specified amount of days from the current date."
}
},
"required": ["type", "value", "rolling"]
},
"RangeWindow_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["businessDays", "calendarDays", "range"],
"description": "Whether the window should be business days, calendar days or a range of dates"
},
"value": {
"example": ["2030-09-05", "2030-09-09"],
"description": "Date range for when this event can be booked.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type", "value"]
},
"CreateEventTypeInput_2024_06_14": {
"type": "object",
"properties": {
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of the Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"description": "Locations where the event will take place. If not provided, cal video link will be used as the location.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/PhoneFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldInput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean",
"description": "If true, person booking this event't cant add guests via their emails."
},
"slotInterval": {
"type": "number",
"description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event."
},
"minimumBookingNotice": {
"type": "number",
"description": "Minimum number of minutes before the event that a booking can be made."
},
"beforeEventBuffer": {
"type": "number",
"description": "Time spaces that can be pre-pended before an event to give more time before it."
},
"afterEventBuffer": {
"type": "number",
"description": "Time spaces that can be appended after an event to give more time after it."
},
"scheduleId": {
"type": "number",
"description": "If you want that this event has different schedule than user's default one you can specify it here."
},
"bookingLimitsCount": {
"type": "object",
"description": "Limit how many times this event can be booked"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean",
"description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time."
},
"bookingLimitsDuration": {
"type": "object",
"description": "Limit total amount of time that this event can be booked"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"offsetStart": {
"type": "number",
"description": "Offset timeslots shown to bookers by a specified number of minutes"
},
"customName": {
"type": "string",
"description": "Customizable event name with valid variables: \n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name}, \n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION}, \n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}",
"example": "{Event type title} between {Organiser} and {Scheduler}"
}
},
"required": [
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"slotInterval",
"minimumBookingNotice",
"beforeEventBuffer",
"afterEventBuffer",
"scheduleId",
"bookingLimitsCount",
"onlyShowFirstAvailableSlot",
"bookingLimitsDuration",
"bookingWindow",
"offsetStart",
"customName"
]
},
"EmailDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "email"
},
"type": {
"type": "string",
"default": "email"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"NameDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "name"
},
"type": {
"type": "string",
"default": "name"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"LocationDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "location"
},
"type": {
"type": "string",
"default": "radioInput"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"RescheduleReasonDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "rescheduleReason"
},
"type": {
"type": "string",
"default": "textarea"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"TitleDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "title"
},
"type": {
"type": "string",
"default": "text"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"NotesDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "notes"
},
"type": {
"type": "string",
"default": "textarea"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"GuestsDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"isDefault": {
"type": "object",
"default": true,
"description": "This property is always true because it's a default field",
"example": true
},
"slug": {
"type": "string",
"default": "guests"
},
"type": {
"type": "string",
"default": "multiemail"
},
"required": {
"type": "boolean"
}
},
"required": ["isDefault", "slug", "type", "required"]
},
"AddressFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "address",
"description": "only allowed value for type is `address`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter your address"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., 1234 Main St"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"BooleanFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "boolean",
"description": "only allowed value for type is `boolean`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Agree to terms?"
},
"required": {
"type": "boolean"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"CheckboxGroupFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "checkbox",
"description": "only allowed value for type is `checkbox`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Select all that apply"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Checkbox 1", "Checkbox 2"],
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "options", "isDefault"]
},
"MultiEmailFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "multiemail",
"description": "only allowed value for type is `multiemail`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter multiple emails"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., example@example.com"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"MultiSelectFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "multiselect",
"description": "only allowed value for type is `multiselect`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please select multiple options"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Option 1", "Option 2"],
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "options", "isDefault"]
},
"NumberFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "number",
"description": "only allowed value for type is `number`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter a number"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., 100"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"PhoneFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "phone",
"description": "only allowed value for type is `phone`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"RadioGroupFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "radio",
"description": "only allowed value for type is `radio`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Select one option"
},
"required": {
"type": "boolean"
},
"options": {
"example": ["Radio 1", "Radio 2"],
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "options", "isDefault"]
},
"SelectFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "select",
"description": "only allowed value for type is `select`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please select an option"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "Select..."
},
"options": {
"example": ["Option 1", "Option 2"],
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "options", "isDefault"]
},
"TextAreaFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "textarea",
"description": "only allowed value for type is `textarea`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter detailed information"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., Detailed description here..."
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"TextFieldOutput_2024_06_14": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"phone",
"address",
"text",
"number",
"textarea",
"select",
"multiselect",
"multiemail",
"checkbox",
"radio",
"boolean"
],
"example": "text",
"description": "only allowed value for type is `text`"
},
"slug": {
"type": "string",
"description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking",
"example": "some-slug"
},
"label": {
"type": "string",
"example": "Please enter your text"
},
"required": {
"type": "boolean"
},
"placeholder": {
"type": "string",
"example": "e.g., Enter text here"
},
"isDefault": {
"type": "object",
"default": false,
"description": "This property is always false because it's not default field but custom field",
"example": false
}
},
"required": ["type", "slug", "label", "required", "isDefault"]
},
"BaseBookingLimitsDuration_2024_06_14": {
"type": "object",
"properties": {
"day": {
"type": "number",
"minimum": 15,
"description": "The duration of bookings per day (must be a multiple of 15)",
"example": 60
},
"week": {
"type": "number",
"minimum": 15,
"description": "The duration of bookings per week (must be a multiple of 15)",
"example": 120
},
"month": {
"type": "number",
"minimum": 15,
"description": "The duration of bookings per month (must be a multiple of 15)",
"example": 180
},
"year": {
"type": "number",
"minimum": 15,
"description": "The duration of bookings per year (must be a multiple of 15)",
"example": 240
},
"disabled": {
"type": "boolean",
"default": false
}
}
},
"BookerLayouts_2024_06_14": {
"type": "object",
"properties": {}
},
"EventTypeColor_2024_06_14": {
"type": "object",
"properties": {
"lightThemeHex": {
"type": "string",
"description": "Color used for event types in light theme",
"example": "#292929"
},
"darkThemeHex": {
"type": "string",
"description": "Color used for event types in dark theme",
"example": "#fafafa"
}
},
"required": ["lightThemeHex", "darkThemeHex"]
},
"Seats_2024_06_14": {
"type": "object",
"properties": {
"seatsPerTimeSlot": {
"type": "number",
"description": "Number of seats available per time slot",
"example": 4
},
"showAttendeeInfo": {
"type": "boolean",
"description": "Show attendee information to other guests",
"example": true
},
"showAvailabilityCount": {
"type": "boolean",
"description": "Display the count of available seats",
"example": true
}
},
"required": ["seatsPerTimeSlot", "showAttendeeInfo", "showAvailabilityCount"]
},
"DestinationCalendar_2024_06_14": {
"type": "object",
"properties": {
"integration": {
"type": "string",
"description": "The integration type of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the integration type of your connected calendars."
},
"externalId": {
"type": "string",
"description": "The external ID of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the external IDs of your connected calendars."
}
},
"required": ["integration", "externalId"]
},
"EventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1
},
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/NameDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/EmailDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/LocationDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/RescheduleReasonDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TitleDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/NotesDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/GuestsDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldOutput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean"
},
"slotInterval": {
"type": "number",
"example": 60
},
"minimumBookingNotice": {
"type": "number",
"example": 0
},
"beforeEventBuffer": {
"type": "number",
"example": 0
},
"afterEventBuffer": {
"type": "number",
"example": 0
},
"recurrence": {
"type": "object"
},
"metadata": {
"type": "object"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"lockTimeZoneToggleOnBookingPage": {
"type": "boolean"
},
"seatsPerTimeSlot": {
"type": "object"
},
"forwardParamsSuccessRedirect": {
"type": "object"
},
"successRedirectUrl": {
"type": "object"
},
"isInstantEvent": {
"type": "boolean"
},
"seatsShowAvailabilityCount": {
"type": "object"
},
"scheduleId": {
"type": "object"
},
"bookingLimitsCount": {
"type": "object"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean"
},
"bookingLimitsDuration": {
"type": "object"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"bookerLayouts": {
"$ref": "#/components/schemas/BookerLayouts_2024_06_14"
},
"confirmationPolicy": {
"type": "object"
},
"requiresBookerEmailVerification": {
"type": "boolean"
},
"hideCalendarNotes": {
"type": "boolean"
},
"color": {
"$ref": "#/components/schemas/EventTypeColor_2024_06_14"
},
"seats": {
"$ref": "#/components/schemas/Seats_2024_06_14"
},
"offsetStart": {
"type": "number"
},
"customName": {
"type": "string"
},
"destinationCalendar": {
"$ref": "#/components/schemas/DestinationCalendar_2024_06_14"
},
"useDestinationCalendarEmail": {
"type": "boolean"
},
"ownerId": {
"type": "number",
"example": 10
},
"users": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"slotInterval",
"minimumBookingNotice",
"beforeEventBuffer",
"afterEventBuffer",
"recurrence",
"metadata",
"price",
"currency",
"lockTimeZoneToggleOnBookingPage",
"seatsPerTimeSlot",
"forwardParamsSuccessRedirect",
"successRedirectUrl",
"isInstantEvent",
"seatsShowAvailabilityCount",
"scheduleId",
"bookingLimitsCount",
"onlyShowFirstAvailableSlot",
"bookingLimitsDuration",
"bookingWindow",
"bookerLayouts",
"confirmationPolicy",
"requiresBookerEmailVerification",
"hideCalendarNotes",
"color",
"seats",
"offsetStart",
"customName",
"destinationCalendar",
"useDestinationCalendarEmail",
"ownerId",
"users"
]
},
"CreateEventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"$ref": "#/components/schemas/EventTypeOutput_2024_06_14"
}
},
"required": ["status", "data"]
},
"GetEventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"nullable": true,
"allOf": [
{
"$ref": "#/components/schemas/EventTypeOutput_2024_06_14"
}
]
}
},
"required": ["status", "data"]
},
"GetEventTypesOutput_2024_06_14": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventTypeOutput_2024_06_14"
}
}
},
"required": ["status", "data"]
},
"UpdateEventTypeInput_2024_06_14": {
"type": "object",
"properties": {
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of the Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"description": "Locations where the event will take place. If not provided, cal video link will be used as the location.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/PhoneFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldInput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean",
"description": "If true, person booking this event't cant add guests via their emails."
},
"slotInterval": {
"type": "number",
"description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event."
},
"minimumBookingNotice": {
"type": "number",
"description": "Minimum number of minutes before the event that a booking can be made."
},
"beforeEventBuffer": {
"type": "number",
"description": "Time spaces that can be pre-pended before an event to give more time before it."
},
"afterEventBuffer": {
"type": "number",
"description": "Time spaces that can be appended after an event to give more time after it."
},
"scheduleId": {
"type": "number",
"description": "If you want that this event has different schedule than user's default one you can specify it here."
},
"bookingLimitsCount": {
"type": "object",
"description": "Limit how many times this event can be booked"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean",
"description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time."
},
"bookingLimitsDuration": {
"type": "object",
"description": "Limit total amount of time that this event can be booked"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"offsetStart": {
"type": "number",
"description": "Offset timeslots shown to bookers by a specified number of minutes"
},
"customName": {
"type": "string",
"description": "Customizable event name with valid variables: \n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name}, \n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION}, \n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}",
"example": "{Event type title} between {Organiser} and {Scheduler}"
}
},
"required": [
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"slotInterval",
"minimumBookingNotice",
"beforeEventBuffer",
"afterEventBuffer",
"scheduleId",
"bookingLimitsCount",
"onlyShowFirstAvailableSlot",
"bookingLimitsDuration",
"bookingWindow",
"offsetStart",
"customName"
]
},
"UpdateEventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"$ref": "#/components/schemas/EventTypeOutput_2024_06_14"
}
},
"required": ["status", "data"]
},
"DeleteData_2024_06_14": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1
},
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string"
}
},
"required": ["id", "lengthInMinutes", "title", "slug"]
},
"DeleteEventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"],
"example": "success"
},
"data": {
"$ref": "#/components/schemas/DeleteData_2024_06_14"
}
},
"required": ["status", "data"]
},
"SelectedCalendarsInputDto": {
"type": "object",
"properties": {
"integration": {
"type": "string"
},
"externalId": {
"type": "string"
},
"credentialId": {
"type": "number"
}
},
"required": ["integration", "externalId", "credentialId"]
},
"SelectedCalendarOutputDto": {
"type": "object",
"properties": {
"userId": {
"type": "number"
},
"integration": {
"type": "string"
},
"externalId": {
"type": "string"
},
"credentialId": {
"type": "number",
"nullable": true
}
},
"required": ["userId", "integration", "externalId", "credentialId"]
},
"SelectedCalendarOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/SelectedCalendarOutputDto"
}
},
"required": ["status", "data"]
},
"OrgTeamOutputDto": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"parentId": {
"type": "number"
},
"name": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"calVideoLogo": {
"type": "string"
},
"appLogo": {
"type": "string"
},
"appIconLogo": {
"type": "string"
},
"bio": {
"type": "string"
},
"hideBranding": {
"type": "boolean"
},
"isOrganization": {
"type": "boolean"
},
"isPrivate": {
"type": "boolean"
},
"hideBookATeamMember": {
"type": "boolean",
"default": false
},
"metadata": {
"type": "string"
},
"theme": {
"type": "string"
},
"brandColor": {
"type": "string"
},
"darkBrandColor": {
"type": "string"
},
"bannerUrl": {
"type": "string"
},
"timeFormat": {
"type": "number"
},
"timeZone": {
"type": "string",
"default": "Europe/London"
},
"weekStart": {
"type": "string",
"default": "Sunday"
}
},
"required": ["id", "name"]
},
"OrgTeamsOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrgTeamOutputDto"
}
}
},
"required": ["status", "data"]
},
"OrgMeTeamsOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrgTeamOutputDto"
}
}
},
"required": ["status", "data"]
},
"OrgTeamOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgTeamOutputDto"
}
},
"required": ["status", "data"]
},
"UpdateOrgTeamDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"calVideoLogo": {
"type": "string"
},
"appLogo": {
"type": "string"
},
"appIconLogo": {
"type": "string"
},
"bio": {
"type": "string"
},
"hideBranding": {
"type": "boolean",
"default": false
},
"isPrivate": {
"type": "boolean"
},
"hideBookATeamMember": {
"type": "boolean"
},
"metadata": {
"type": "string"
},
"theme": {
"type": "string"
},
"brandColor": {
"type": "string"
},
"darkBrandColor": {
"type": "string"
},
"bannerUrl": {
"type": "string"
},
"timeFormat": {
"type": "number"
},
"timeZone": {
"type": "string",
"default": "Europe/London"
},
"weekStart": {
"type": "string",
"default": "Sunday"
},
"bookingLimits": {
"type": "string"
}
}
},
"CreateOrgTeamDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"calVideoLogo": {
"type": "string"
},
"appLogo": {
"type": "string"
},
"appIconLogo": {
"type": "string"
},
"bio": {
"type": "string"
},
"hideBranding": {
"type": "boolean",
"default": false
},
"isPrivate": {
"type": "boolean"
},
"hideBookATeamMember": {
"type": "boolean"
},
"metadata": {
"type": "string"
},
"theme": {
"type": "string"
},
"brandColor": {
"type": "string"
},
"darkBrandColor": {
"type": "string"
},
"bannerUrl": {
"type": "string"
},
"timeFormat": {
"type": "number"
},
"timeZone": {
"type": "string",
"default": "Europe/London"
},
"weekStart": {
"type": "string",
"default": "Sunday"
},
"autoAcceptCreator": {
"type": "boolean",
"default": true
}
},
"required": ["name"]
},
"ScheduleAvailabilityInput_2024_06_11": {
"type": "object",
"properties": {
"days": {
"type": "string",
"enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"example": ["Monday", "Tuesday"],
"description": "Array of days when schedule is active."
},
"startTime": {
"type": "string",
"pattern": "TIME_FORMAT_HH_MM",
"example": "08:00",
"description": "startTime must be a valid time in format HH:MM e.g. 08:00"
},
"endTime": {
"type": "string",
"pattern": "TIME_FORMAT_HH_MM",
"example": "15:00",
"description": "endTime must be a valid time in format HH:MM e.g. 15:00"
}
},
"required": ["days", "startTime", "endTime"]
},
"ScheduleOverrideInput_2024_06_11": {
"type": "object",
"properties": {
"date": {
"type": "string",
"example": "2024-05-20"
},
"startTime": {
"type": "string",
"pattern": "TIME_FORMAT_HH_MM",
"example": "12:00",
"description": "startTime must be a valid time in format HH:MM e.g. 12:00"
},
"endTime": {
"type": "string",
"pattern": "TIME_FORMAT_HH_MM",
"example": "13:00",
"description": "endTime must be a valid time in format HH:MM e.g. 13:00"
}
},
"required": ["date", "startTime", "endTime"]
},
"ScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 254
},
"ownerId": {
"type": "number",
"example": 478
},
"name": {
"type": "string",
"example": "Catch up hours"
},
"timeZone": {
"type": "string",
"example": "Europe/Rome"
},
"availability": {
"example": [
{
"days": ["Monday", "Tuesday"],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": ["Wednesday", "Thursday"],
"startTime": "16:00",
"endTime": "20:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11"
}
},
"isDefault": {
"type": "boolean",
"example": true
},
"overrides": {
"example": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11"
}
}
},
"required": ["id", "ownerId", "name", "timeZone", "availability", "isDefault", "overrides"]
},
"GetSchedulesOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleOutput_2024_06_11"
}
},
"error": {
"type": "object"
}
},
"required": ["status", "data"]
},
"CreateScheduleInput_2024_06_11": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "Catch up hours"
},
"timeZone": {
"type": "string",
"example": "Europe/Rome",
"description": "Timezone is used to calculate available times when an event using the schedule is booked."
},
"availability": {
"description": "Each object contains days and times when the user is available. If not passed, the default availability is Monday to Friday from 09:00 to 17:00.",
"example": [
{
"days": ["Monday", "Tuesday"],
"startTime": "17:00",
"endTime": "19:00"
},
{
"days": ["Wednesday", "Thursday"],
"startTime": "16:00",
"endTime": "20:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11"
}
},
"isDefault": {
"type": "boolean",
"example": true,
"description": "Each user should have 1 default schedule. If you specified `timeZone` when creating managed user, then the default schedule will be created with that timezone.\n Default schedule means that if an event type is not tied to a specific schedule then the default schedule is used."
},
"overrides": {
"description": "Need to change availability for a specific date? Add an override.",
"example": [
{
"date": "2024-05-20",
"startTime": "18:00",
"endTime": "21:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11"
}
}
},
"required": ["name", "timeZone", "isDefault"]
},
"CreateScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ScheduleOutput_2024_06_11"
}
},
"required": ["status", "data"]
},
"GetScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"nullable": true,
"allOf": [
{
"$ref": "#/components/schemas/ScheduleOutput_2024_06_11"
}
]
},
"error": {
"type": "object"
}
},
"required": ["status", "data"]
},
"UpdateScheduleInput_2024_06_11": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "One-on-one coaching"
},
"timeZone": {
"type": "string",
"example": "Europe/Rome"
},
"availability": {
"example": [
{
"days": ["Monday", "Tuesday"],
"startTime": "09:00",
"endTime": "10:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11"
}
},
"isDefault": {
"type": "boolean",
"example": true
},
"overrides": {
"example": [
{
"date": "2024-05-20",
"startTime": "12:00",
"endTime": "14:00"
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11"
}
}
}
},
"UpdateScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ScheduleOutput_2024_06_11"
},
"error": {
"type": "object"
}
},
"required": ["status", "data"]
},
"DeleteScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
}
},
"required": ["status"]
},
"GetUserOutput": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the user",
"example": 1
},
"username": {
"type": "string",
"nullable": true,
"description": "The username of the user",
"example": "john_doe"
},
"name": {
"type": "string",
"nullable": true,
"description": "The name of the user",
"example": "John Doe"
},
"email": {
"type": "string",
"description": "The email of the user",
"example": "john@example.com"
},
"emailVerified": {
"format": "date-time",
"type": "string",
"nullable": true,
"description": "The date when the email was verified",
"example": "2022-01-01T00:00:00Z"
},
"bio": {
"type": "string",
"nullable": true,
"description": "The bio of the user",
"example": "I am a software developer"
},
"avatarUrl": {
"type": "string",
"nullable": true,
"description": "The URL of the user's avatar",
"example": "https://example.com/avatar.jpg"
},
"timeZone": {
"type": "string",
"description": "The time zone of the user",
"example": "America/New_York"
},
"weekStart": {
"type": "string",
"description": "The week start day of the user",
"example": "Monday"
},
"appTheme": {
"type": "string",
"nullable": true,
"description": "The app theme of the user",
"example": "light"
},
"theme": {
"type": "string",
"nullable": true,
"description": "The theme of the user",
"example": "default"
},
"defaultScheduleId": {
"type": "number",
"nullable": true,
"description": "The ID of the default schedule for the user",
"example": 1
},
"locale": {
"type": "string",
"nullable": true,
"description": "The locale of the user",
"example": "en-US"
},
"timeFormat": {
"type": "number",
"nullable": true,
"description": "The time format of the user",
"example": 12
},
"hideBranding": {
"type": "boolean",
"description": "Whether to hide branding for the user",
"example": false
},
"brandColor": {
"type": "string",
"nullable": true,
"description": "The brand color of the user",
"example": "#ffffff"
},
"darkBrandColor": {
"type": "string",
"nullable": true,
"description": "The dark brand color of the user",
"example": "#000000"
},
"allowDynamicBooking": {
"type": "boolean",
"nullable": true,
"description": "Whether dynamic booking is allowed for the user",
"example": true
},
"createdDate": {
"format": "date-time",
"type": "string",
"description": "The date when the user was created",
"example": "2022-01-01T00:00:00Z"
},
"verified": {
"type": "boolean",
"nullable": true,
"description": "Whether the user is verified",
"example": true
},
"invitedTo": {
"type": "number",
"nullable": true,
"description": "The ID of the user who invited this user",
"example": 1
}
},
"required": ["id", "email", "timeZone", "weekStart", "hideBranding", "createdDate"]
},
"GetOrganizationUsersOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GetUserOutput"
}
}
},
"required": ["status", "data"]
},
"CreateOrganizationUserInput": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "User email address",
"example": "user@example.com"
},
"username": {
"type": "string",
"description": "Username",
"example": "user123"
},
"weekday": {
"type": "string",
"description": "Preferred weekday",
"example": "Monday"
},
"brandColor": {
"type": "string",
"description": "Brand color in HEX format",
"example": "#FFFFFF"
},
"darkBrandColor": {
"type": "string",
"description": "Dark brand color in HEX format",
"example": "#000000"
},
"hideBranding": {
"type": "boolean",
"description": "Hide branding",
"example": false
},
"timeZone": {
"type": "string",
"description": "Time zone",
"example": "America/New_York"
},
"theme": {
"type": "string",
"nullable": true,
"description": "Theme",
"example": "dark"
},
"appTheme": {
"type": "string",
"nullable": true,
"description": "Application theme",
"example": "light"
},
"timeFormat": {
"type": "number",
"description": "Time format",
"example": 24
},
"defaultScheduleId": {
"type": "number",
"minimum": 0,
"description": "Default schedule ID",
"example": 1
},
"locale": {
"type": "string",
"nullable": true,
"default": "en",
"description": "Locale",
"example": "en"
},
"avatarUrl": {
"type": "string",
"description": "Avatar URL",
"example": "https://example.com/avatar.jpg"
},
"organizationRole": {
"type": "object",
"default": "MEMBER"
},
"autoAccept": {
"type": "object",
"default": true
}
},
"required": ["email", "organizationRole", "autoAccept"]
},
"GetOrganizationUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/GetUserOutput"
}
},
"required": ["status", "data"]
},
"UpdateOrganizationUserInput": {
"type": "object",
"properties": {}
},
"OrgMembershipOutputDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"id": {
"type": "number"
},
"userId": {
"type": "number"
},
"teamId": {
"type": "number"
},
"accepted": {
"type": "boolean"
},
"disableImpersonation": {
"type": "boolean"
}
},
"required": ["role", "id", "userId", "teamId", "accepted"]
},
"GetAllOrgMemberships": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"CreateOrgMembershipDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"default": "MEMBER",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"userId": {
"type": "number"
},
"accepted": {
"type": "boolean",
"default": false
},
"disableImpersonation": {
"type": "boolean",
"default": false
}
},
"required": ["role", "userId"]
},
"CreateOrgMembershipOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"GetOrgMembership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"DeleteOrgMembership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"UpdateOrgMembershipDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"default": "MEMBER",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"accepted": {
"type": "boolean",
"default": false
},
"disableImpersonation": {
"type": "boolean",
"default": false
}
}
},
"UpdateOrgMembership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"CreateTeamEventTypeInput_2024_06_14": {
"type": "object",
"properties": {
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of the Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"description": "Locations where the event will take place. If not provided, cal video link will be used as the location.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/PhoneFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldInput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean",
"description": "If true, person booking this event't cant add guests via their emails."
},
"slotInterval": {
"type": "number",
"description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event."
},
"minimumBookingNotice": {
"type": "number",
"description": "Minimum number of minutes before the event that a booking can be made."
},
"beforeEventBuffer": {
"type": "number",
"description": "Time spaces that can be pre-pended before an event to give more time before it."
},
"afterEventBuffer": {
"type": "number",
"description": "Time spaces that can be appended after an event to give more time after it."
},
"scheduleId": {
"type": "number",
"description": "If you want that this event has different schedule than user's default one you can specify it here."
},
"bookingLimitsCount": {
"type": "object",
"description": "Limit how many times this event can be booked"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean",
"description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time."
},
"bookingLimitsDuration": {
"type": "object",
"description": "Limit total amount of time that this event can be booked"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"offsetStart": {
"type": "number",
"description": "Offset timeslots shown to bookers by a specified number of minutes"
},
"customName": {
"type": "string",
"description": "Customizable event name with valid variables: \n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name}, \n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION}, \n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}",
"example": "{Event type title} between {Organiser} and {Scheduler}"
},
"schedulingType": {
"type": "object"
},
"hosts": {
"type": "array",
"items": {
"type": "string"
}
},
"assignAllTeamMembers": {
"type": "boolean",
"description": "If true, all current and future team members will be assigned to this event type"
}
},
"required": [
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"slotInterval",
"minimumBookingNotice",
"beforeEventBuffer",
"afterEventBuffer",
"scheduleId",
"bookingLimitsCount",
"onlyShowFirstAvailableSlot",
"bookingLimitsDuration",
"bookingWindow",
"offsetStart",
"customName",
"schedulingType",
"hosts",
"assignAllTeamMembers"
]
},
"CreateTeamEventTypeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
}
}
]
}
},
"required": ["status", "data"]
},
"Recurrence_2024_06_14": {
"type": "object",
"properties": {
"interval": {
"type": "number",
"example": 10,
"description": "Repeats every {count} week | month | year"
},
"occurrences": {
"type": "number",
"example": 10,
"description": "Repeats for a maximum of {count} events"
},
"frequency": {
"enum": ["yearly", "monthly", "weekly"],
"type": "string"
},
"disabled": {
"type": "boolean",
"default": false
}
},
"required": ["interval", "occurrences", "frequency"]
},
"TeamEventTypeResponseHost": {
"type": "object",
"properties": {
"userId": {
"type": "number",
"description": "Which user is the host of this event"
},
"mandatory": {
"type": "boolean",
"default": false,
"description": "Only relevant for round robin event types. If true then the user must attend round robin event always."
},
"priority": {
"type": "string",
"default": "medium",
"enum": ["lowest", "low", "medium", "high", "highest"]
},
"name": {
"type": "string",
"example": "John Doe"
}
},
"required": ["userId", "name"]
},
"TeamEventTypeOutput_2024_06_14": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1
},
"lengthInMinutes": {
"type": "number",
"minimum": 1,
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/NameDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/EmailDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/LocationDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/RescheduleReasonDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TitleDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/NotesDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/GuestsDefaultFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldOutput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldOutput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean"
},
"slotInterval": {
"type": "number",
"nullable": true,
"example": 60
},
"minimumBookingNotice": {
"type": "number",
"minimum": 0,
"example": 0
},
"beforeEventBuffer": {
"type": "number",
"example": 0
},
"afterEventBuffer": {
"type": "number",
"example": 0
},
"recurrence": {
"nullable": true,
"allOf": [
{
"$ref": "#/components/schemas/Recurrence_2024_06_14"
}
]
},
"metadata": {
"type": "object"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"lockTimeZoneToggleOnBookingPage": {
"type": "boolean"
},
"seatsPerTimeSlot": {
"type": "number",
"nullable": true
},
"forwardParamsSuccessRedirect": {
"type": "boolean",
"nullable": true
},
"successRedirectUrl": {
"type": "string",
"nullable": true
},
"isInstantEvent": {
"type": "boolean"
},
"seatsShowAvailabilityCount": {
"type": "boolean",
"nullable": true
},
"scheduleId": {
"type": "number",
"nullable": true
},
"bookingLimitsCount": {
"type": "object"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean"
},
"bookingLimitsDuration": {
"type": "object"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"bookerLayouts": {
"$ref": "#/components/schemas/BookerLayouts_2024_06_14"
},
"confirmationPolicy": {
"type": "object"
},
"requiresBookerEmailVerification": {
"type": "boolean"
},
"hideCalendarNotes": {
"type": "boolean"
},
"color": {
"$ref": "#/components/schemas/EventTypeColor_2024_06_14"
},
"seats": {
"$ref": "#/components/schemas/Seats_2024_06_14"
},
"offsetStart": {
"type": "number",
"minimum": 1
},
"customName": {
"type": "string"
},
"destinationCalendar": {
"$ref": "#/components/schemas/DestinationCalendar_2024_06_14"
},
"useDestinationCalendarEmail": {
"type": "boolean"
},
"hideCalendarEventDetails": {
"type": "boolean"
},
"teamId": {
"type": "number",
"nullable": true
},
"ownerId": {
"type": "number",
"nullable": true
},
"parentEventTypeId": {
"type": "number",
"nullable": true,
"description": "For managed event types, parent event type is the event type that this event type is based on"
},
"hosts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TeamEventTypeResponseHost"
}
},
"assignAllTeamMembers": {
"type": "boolean"
},
"schedulingType": {
"type": "string",
"nullable": true,
"enum": ["ROUND_ROBIN", "COLLECTIVE", "MANAGED"]
}
},
"required": [
"id",
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"recurrence",
"metadata",
"price",
"currency",
"lockTimeZoneToggleOnBookingPage",
"forwardParamsSuccessRedirect",
"successRedirectUrl",
"isInstantEvent",
"scheduleId",
"hosts",
"schedulingType"
]
},
"GetTeamEventTypeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
}
},
"required": ["status", "data"]
},
"CreatePhoneCallInput": {
"type": "object",
"properties": {
"yourPhoneNumber": {
"type": "string",
"pattern": "/^\\+[1-9]\\d{1,14}$/",
"description": "Your phone number"
},
"numberToCall": {
"type": "string",
"pattern": "/^\\+[1-9]\\d{1,14}$/",
"description": "Number to call"
},
"calApiKey": {
"type": "string",
"description": "CAL API Key"
},
"enabled": {
"type": "object",
"default": true,
"description": "Enabled status"
},
"templateType": {
"default": "CUSTOM_TEMPLATE",
"enum": ["CHECK_IN_APPOINTMENT", "CUSTOM_TEMPLATE"],
"type": "string",
"description": "Template type"
},
"schedulerName": {
"type": "string",
"description": "Scheduler name"
},
"guestName": {
"type": "string",
"description": "Guest name"
},
"guestEmail": {
"type": "string",
"description": "Guest email"
},
"guestCompany": {
"type": "string",
"description": "Guest company"
},
"beginMessage": {
"type": "string",
"description": "Begin message"
},
"generalPrompt": {
"type": "string",
"description": "General prompt"
}
},
"required": ["yourPhoneNumber", "numberToCall", "calApiKey", "enabled", "templateType"]
},
"Data": {
"type": "object",
"properties": {
"callId": {
"type": "string"
},
"agentId": {
"type": "string"
}
},
"required": ["callId", "agentId"]
},
"CreatePhoneCallOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/Data"
}
},
"required": ["status", "data"]
},
"GetTeamEventTypesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
}
}
},
"required": ["status", "data"]
},
"UpdateTeamEventTypeInput_2024_06_14": {
"type": "object",
"properties": {
"lengthInMinutes": {
"type": "number",
"example": 60
},
"title": {
"type": "string",
"example": "Learn the secrets of masterchief!"
},
"slug": {
"type": "string",
"example": "learn-the-secrets-of-masterchief"
},
"description": {
"type": "string",
"example": "Discover the culinary wonders of the Argentina by making the best flan ever!"
},
"locations": {
"type": "array",
"description": "Locations where the event will take place. If not provided, cal video link will be used as the location.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/AddressLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/LinkLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/IntegrationLocation_2024_06_14"
},
{
"$ref": "#/components/schemas/PhoneLocation_2024_06_14"
}
]
}
},
"bookingFields": {
"type": "array",
"description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/PhoneFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/AddressFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/NumberFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/SelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14"
},
{
"$ref": "#/components/schemas/BooleanFieldInput_2024_06_14"
}
]
}
},
"disableGuests": {
"type": "boolean",
"description": "If true, person booking this event't cant add guests via their emails."
},
"slotInterval": {
"type": "number",
"description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event."
},
"minimumBookingNotice": {
"type": "number",
"description": "Minimum number of minutes before the event that a booking can be made."
},
"beforeEventBuffer": {
"type": "number",
"description": "Time spaces that can be pre-pended before an event to give more time before it."
},
"afterEventBuffer": {
"type": "number",
"description": "Time spaces that can be appended after an event to give more time after it."
},
"scheduleId": {
"type": "number",
"description": "If you want that this event has different schedule than user's default one you can specify it here."
},
"bookingLimitsCount": {
"type": "object",
"description": "Limit how many times this event can be booked"
},
"onlyShowFirstAvailableSlot": {
"type": "boolean",
"description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time."
},
"bookingLimitsDuration": {
"type": "object",
"description": "Limit total amount of time that this event can be booked"
},
"bookingWindow": {
"type": "array",
"description": "Limit how far in the future this event can be booked",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14"
},
{
"$ref": "#/components/schemas/RangeWindow_2024_06_14"
}
]
}
},
"offsetStart": {
"type": "number",
"description": "Offset timeslots shown to bookers by a specified number of minutes"
},
"customName": {
"type": "string",
"description": "Customizable event name with valid variables: \n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name}, \n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION}, \n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}",
"example": "{Event type title} between {Organiser} and {Scheduler}"
},
"hosts": {
"type": "array",
"items": {
"type": "string"
}
},
"assignAllTeamMembers": {
"type": "boolean",
"description": "If true, all current and future team members will be assigned to this event type"
}
},
"required": [
"lengthInMinutes",
"title",
"slug",
"description",
"locations",
"bookingFields",
"disableGuests",
"slotInterval",
"minimumBookingNotice",
"beforeEventBuffer",
"afterEventBuffer",
"scheduleId",
"bookingLimitsCount",
"onlyShowFirstAvailableSlot",
"bookingLimitsDuration",
"bookingWindow",
"offsetStart",
"customName",
"hosts",
"assignAllTeamMembers"
]
},
"UpdateTeamEventTypeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14"
}
}
]
}
},
"required": ["status", "data"]
},
"DeleteTeamEventTypeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "object"
}
},
"required": ["status", "data"]
},
"OrgTeamMembershipOutputDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"id": {
"type": "number"
},
"userId": {
"type": "number"
},
"teamId": {
"type": "number"
},
"accepted": {
"type": "boolean"
},
"disableImpersonation": {
"type": "boolean"
}
},
"required": ["role", "id", "userId", "teamId", "accepted"]
},
"OrgTeamMembershipsOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputDto"
}
}
},
"required": ["status", "data"]
},
"OrgTeamMembershipOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OrgTeamMembershipOutputDto"
}
},
"required": ["status", "data"]
},
"UpdateOrgTeamMembershipDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"default": "MEMBER",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"accepted": {
"type": "boolean",
"default": false
},
"disableImpersonation": {
"type": "boolean",
"default": false
}
}
},
"CreateOrgTeamMembershipDto": {
"type": "object",
"properties": {
"role": {
"type": "string",
"default": "MEMBER",
"enum": ["MEMBER", "OWNER", "ADMIN"]
},
"userId": {
"type": "number"
},
"accepted": {
"type": "boolean",
"default": false
},
"disableImpersonation": {
"type": "boolean",
"default": false
}
},
"required": ["role", "userId"]
},
"Attribute": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the attribute",
"example": "attr_123"
},
"teamId": {
"type": "number",
"description": "The team ID associated with the attribute",
"example": 1
},
"type": {
"type": "string",
"description": "The type of the attribute",
"enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"]
},
"name": {
"type": "string",
"description": "The name of the attribute",
"example": "Attribute Name"
},
"slug": {
"type": "string",
"description": "The slug of the attribute",
"example": "attribute-name"
},
"enabled": {
"type": "boolean",
"description": "Whether the attribute is enabled and displayed on their profile",
"example": true
},
"usersCanEditRelation": {
"type": "boolean",
"description": "Whether users can edit the relation",
"example": true
}
},
"required": ["id", "teamId", "type", "name", "slug", "enabled"]
},
"GetOrganizationAttributesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Attribute"
}
}
},
"required": ["status", "data"]
},
"GetSingleAttributeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"nullable": true,
"allOf": [
{
"$ref": "#/components/schemas/Attribute"
}
]
}
},
"required": ["status", "data"]
},
"CreateOrganizationAttributeOptionInput": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": ["value", "slug"]
},
"CreateOrganizationAttributeInput": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "object"
},
"options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput"
}
},
"enabled": {
"type": "boolean"
}
},
"required": ["name", "slug", "type", "options"]
},
"CreateOrganizationAttributesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/Attribute"
}
},
"required": ["status", "data"]
},
"UpdateOrganizationAttributeInput": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "object"
},
"enabled": {
"type": "boolean"
}
}
},
"UpdateOrganizationAttributesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/Attribute"
}
},
"required": ["status", "data"]
},
"DeleteOrganizationAttributesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/Attribute"
}
},
"required": ["status", "data"]
},
"OptionOutput": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the option",
"example": "attr_option_id"
},
"attributeId": {
"type": "string",
"description": "The ID of the attribute",
"example": "attr_id"
},
"value": {
"type": "string",
"description": "The value of the option",
"example": "option_value"
},
"slug": {
"type": "string",
"description": "The slug of the option",
"example": "option-slug"
}
},
"required": ["id", "attributeId", "value", "slug"]
},
"CreateAttributeOptionOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OptionOutput"
}
},
"required": ["status", "data"]
},
"DeleteAttributeOptionOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OptionOutput"
}
},
"required": ["status", "data"]
},
"UpdateOrganizationAttributeOptionInput": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"UpdateAttributeOptionOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OptionOutput"
}
},
"required": ["status", "data"]
},
"GetAllAttributeOptionOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OptionOutput"
}
}
},
"required": ["status", "data"]
},
"AssignOrganizationAttributeOptionToUserInput": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"attributeOptionId": {
"type": "string"
},
"attributeId": {
"type": "string"
}
},
"required": ["attributeId"]
},
"AssignOptionUserOutputData": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the option assigned to the user"
},
"memberId": {
"type": "number",
"description": "The ID form the org membership for the user"
},
"attributeOptionId": {
"type": "string",
"description": "The value of the option"
}
},
"required": ["id", "memberId", "attributeOptionId"]
},
"AssignOptionUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/AssignOptionUserOutputData"
}
},
"required": ["status", "data"]
},
"UnassignOptionUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/AssignOptionUserOutputData"
}
},
"required": ["status", "data"]
},
"GetOptionUserOutputData": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the option assigned to the user"
},
"attributeId": {
"type": "string",
"description": "The ID of the attribute"
},
"value": {
"type": "string",
"description": "The value of the option"
},
"slug": {
"type": "string",
"description": "The slug of the option"
}
},
"required": ["id", "attributeId", "value", "slug"]
},
"GetOptionUserOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GetOptionUserOutputData"
}
}
},
"required": ["status", "data"]
},
"TeamWebhookOutputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"teamId": {
"type": "number"
},
"id": {
"type": "number"
},
"triggers": {
"type": "array",
"items": {
"type": "object"
}
},
"subscriberUrl": {
"type": "string"
},
"active": {
"type": "boolean"
},
"secret": {
"type": "string"
}
},
"required": ["payloadTemplate", "teamId", "id", "triggers", "subscriberUrl", "active"]
},
"TeamWebhooksOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TeamWebhookOutputDto"
}
}
},
"required": ["status", "data"]
},
"CreateWebhookInputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"triggers": {
"type": "string",
"example": [
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED"
],
"enum": [
"BOOKING_CREATED",
"BOOKING_PAYMENT_INITIATED",
"BOOKING_PAID",
"BOOKING_RESCHEDULED",
"BOOKING_REQUESTED",
"BOOKING_CANCELLED",
"BOOKING_REJECTED",
"BOOKING_NO_SHOW_UPDATED",
"FORM_SUBMITTED",
"MEETING_ENDED",
"MEETING_STARTED",
"RECORDING_READY",
"INSTANT_MEETING",
"RECORDING_TRANSCRIPTION_GENERATED",
"OOO_CREATED"
]
},
"active": {
"type": "boolean"
},
"subscriberUrl": {
"type": "string"
},
"secret": {
"type": "string"
}
},
"required": ["triggers", "active", "subscriberUrl"]
},
"TeamWebhookOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/TeamWebhookOutputDto"
}
},
"required": ["status", "data"]
},
"UpdateWebhookInputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"triggers": {
"type": "string",
"example": [
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED"
],
"enum": [
"BOOKING_CREATED",
"BOOKING_PAYMENT_INITIATED",
"BOOKING_PAID",
"BOOKING_RESCHEDULED",
"BOOKING_REQUESTED",
"BOOKING_CANCELLED",
"BOOKING_REJECTED",
"BOOKING_NO_SHOW_UPDATED",
"FORM_SUBMITTED",
"MEETING_ENDED",
"MEETING_STARTED",
"RECORDING_READY",
"INSTANT_MEETING",
"RECORDING_TRANSCRIPTION_GENERATED",
"OOO_CREATED"
]
},
"active": {
"type": "boolean"
},
"subscriberUrl": {
"type": "string"
},
"secret": {
"type": "string"
}
}
},
"StripConnectOutputDto": {
"type": "object",
"properties": {
"authUrl": {
"type": "string"
}
},
"required": ["authUrl"]
},
"StripConnectOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/StripConnectOutputDto"
}
},
"required": ["status", "data"]
},
"StripCredentialsSaveOutputResponseDto": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": ["url"]
},
"StripCredentialsCheckOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success"
}
},
"required": ["status"]
},
"GetDefaultScheduleOutput_2024_06_11": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ScheduleOutput_2024_06_11"
}
},
"required": ["status", "data"]
},
"AuthUrlData": {
"type": "object",
"properties": {
"authUrl": {
"type": "string"
}
},
"required": ["authUrl"]
},
"GcalAuthUrlOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/AuthUrlData"
}
},
"required": ["status", "data"]
},
"GcalSaveRedirectOutput": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": ["url"]
},
"GcalCheckOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
}
},
"required": ["status"]
},
"ProviderVerifyClientData": {
"type": "object",
"properties": {
"clientId": {
"type": "string"
},
"organizationId": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": ["clientId", "organizationId", "name"]
},
"ProviderVerifyClientOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ProviderVerifyClientData"
}
},
"required": ["status", "data"]
},
"ProviderVerifyAccessTokenOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
}
},
"required": ["status"]
},
"MeOrgOutput": {
"type": "object",
"properties": {
"isPlatform": {
"type": "boolean"
},
"id": {
"type": "number"
}
},
"required": ["isPlatform", "id"]
},
"MeOutput": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"timeFormat": {
"type": "number"
},
"defaultScheduleId": {
"type": "number",
"nullable": true
},
"weekStart": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"organizationId": {
"type": "number",
"nullable": true
},
"organization": {
"$ref": "#/components/schemas/MeOrgOutput"
}
},
"required": [
"id",
"username",
"email",
"timeFormat",
"defaultScheduleId",
"weekStart",
"timeZone",
"organizationId"
]
},
"GetMeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/MeOutput"
}
},
"required": ["status", "data"]
},
"UpdateMeOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/MeOutput"
}
},
"required": ["status", "data"]
},
"CreateIcsFeedInputDto": {
"type": "object",
"properties": {
"urls": {
"type": "array",
"example": ["https://cal.com/ics/feed.ics", "http://cal.com/ics/feed.ics"],
"description": "An array of ICS URLs",
"items": {
"type": "string",
"example": "https://cal.com/ics/feed.ics"
}
},
"readOnly": {
"type": "boolean",
"default": true,
"example": false,
"description": "Whether to allowing writing to the calendar or not"
}
},
"required": ["urls"]
},
"CreateIcsFeedOutput": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1234567890,
"description": "The id of the calendar credential"
},
"type": {
"type": "string",
"example": "ics-feed_calendar",
"description": "The type of the calendar"
},
"userId": {
"type": "integer",
"nullable": true,
"example": 1234567890,
"description": "The user id of the user that created the calendar"
},
"teamId": {
"type": "integer",
"nullable": true,
"example": 1234567890,
"description": "The team id of the user that created the calendar"
},
"appId": {
"type": "string",
"nullable": true,
"example": "ics-feed",
"description": "The slug of the calendar"
},
"invalid": {
"type": "boolean",
"nullable": true,
"example": false,
"description": "Whether the calendar credentials are valid or not"
}
},
"required": ["id", "type", "userId", "teamId", "appId", "invalid"]
},
"CreateIcsFeedOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/CreateIcsFeedOutput"
}
},
"required": ["status", "data"]
},
"BusyTimesOutput": {
"type": "object",
"properties": {
"start": {
"format": "date-time",
"type": "string"
},
"end": {
"format": "date-time",
"type": "string"
},
"source": {
"type": "string",
"nullable": true
}
},
"required": ["start", "end"]
},
"GetBusyTimesOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BusyTimesOutput"
}
}
},
"required": ["status", "data"]
},
"Integration": {
"type": "object",
"properties": {
"appData": {
"type": "object",
"nullable": true
},
"dirName": {
"type": "string"
},
"__template": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"installed": {
"type": "boolean"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"type": "string"
},
"category": {
"type": "string"
},
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"logo": {
"type": "string"
},
"publisher": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string"
},
"email": {
"type": "string"
},
"locationOption": {
"type": "object",
"nullable": true
}
},
"required": [
"name",
"description",
"type",
"variant",
"categories",
"logo",
"publisher",
"slug",
"url",
"email",
"locationOption"
]
},
"Primary": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"integration": {
"type": "string"
},
"name": {
"type": "string"
},
"primary": {
"type": "boolean",
"nullable": true
},
"readOnly": {
"type": "boolean"
},
"email": {
"type": "string"
},
"isSelected": {
"type": "boolean"
},
"credentialId": {
"type": "number"
}
},
"required": ["externalId", "primary", "readOnly", "isSelected", "credentialId"]
},
"Calendar": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"integration": {
"type": "string"
},
"name": {
"type": "string"
},
"primary": {
"type": "boolean",
"nullable": true
},
"readOnly": {
"type": "boolean"
},
"email": {
"type": "string"
},
"isSelected": {
"type": "boolean"
},
"credentialId": {
"type": "number"
}
},
"required": ["externalId", "readOnly", "isSelected", "credentialId"]
},
"ConnectedCalendar": {
"type": "object",
"properties": {
"integration": {
"$ref": "#/components/schemas/Integration"
},
"credentialId": {
"type": "number"
},
"primary": {
"$ref": "#/components/schemas/Primary"
},
"calendars": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Calendar"
}
}
},
"required": ["integration", "credentialId"]
},
"DestinationCalendar": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"integration": {
"type": "string"
},
"externalId": {
"type": "string"
},
"primaryEmail": {
"type": "string",
"nullable": true
},
"userId": {
"type": "number",
"nullable": true
},
"eventTypeId": {
"type": "number",
"nullable": true
},
"credentialId": {
"type": "number",
"nullable": true
},
"name": {
"type": "string",
"nullable": true
},
"primary": {
"type": "boolean"
},
"readOnly": {
"type": "boolean"
},
"email": {
"type": "string"
},
"integrationTitle": {
"type": "string"
}
},
"required": [
"id",
"integration",
"externalId",
"primaryEmail",
"userId",
"eventTypeId",
"credentialId"
]
},
"ConnectedCalendarsData": {
"type": "object",
"properties": {
"connectedCalendars": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConnectedCalendar"
}
},
"destinationCalendar": {
"$ref": "#/components/schemas/DestinationCalendar"
}
},
"required": ["connectedCalendars", "destinationCalendar"]
},
"ConnectedCalendarsOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/ConnectedCalendarsData"
}
},
"required": ["status", "data"]
},
"DeleteCalendarCredentialsInputBodyDto": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 10,
"description": "Credential ID of the calendar to delete, as returned by the /calendars endpoint"
}
},
"required": ["id"]
},
"DeletedCalendarCredentialsOutputDto": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string"
},
"userId": {
"type": "number",
"nullable": true
},
"teamId": {
"type": "number",
"nullable": true
},
"appId": {
"type": "string",
"nullable": true
},
"invalid": {
"type": "boolean",
"nullable": true
}
},
"required": ["id", "type", "userId", "teamId", "appId", "invalid"]
},
"DeletedCalendarCredentialsOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/DeletedCalendarCredentialsOutputDto"
}
},
"required": ["status", "data"]
},
"Attendee": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the attendee.",
"example": "John Doe"
},
"email": {
"type": "string",
"description": "The email of the attendee.",
"example": "john.doe@example.com"
},
"timeZone": {
"type": "string",
"description": "The time zone of the attendee.",
"example": "America/New_York"
},
"language": {
"type": "string",
"enum": [
"ar",
"ca",
"de",
"es",
"eu",
"he",
"id",
"ja",
"lv",
"pl",
"ro",
"sr",
"th",
"vi",
"az",
"cs",
"el",
"es-419",
"fi",
"hr",
"it",
"km",
"nl",
"pt",
"ru",
"sv",
"tr",
"zh-CN",
"bg",
"da",
"en",
"et",
"fr",
"hu",
"iw",
"ko",
"no",
"pt-BR",
"sk",
"ta",
"uk",
"zh-TW"
],
"description": "The preferred language of the attendee. Used for booking confirmation.",
"example": "it",
"default": "en"
}
},
"required": ["name", "email", "timeZone"]
},
"CreateBookingInput_2024_08_13": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "The start time of the booking in ISO 8601 format in UTC timezone.",
"example": "2024-08-13T09:00:00Z"
},
"eventTypeId": {
"type": "number",
"description": "The ID of the event type that is booked.",
"example": 123
},
"attendee": {
"description": "The attendee's details.",
"allOf": [
{
"$ref": "#/components/schemas/Attendee"
}
]
},
"guests": {
"description": "An optional list of guest emails attending the event.",
"example": ["guest1@example.com", "guest2@example.com"],
"type": "array",
"items": {
"type": "string"
}
},
"meetingUrl": {
"type": "string",
"description": "Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.",
"example": "https://example.com/meeting"
},
"bookingFieldsResponses": {
"type": "object",
"description": "Booking field responses.",
"example": {
"customField": "customValue"
}
}
},
"required": ["start", "eventTypeId", "attendee"]
},
"CreateInstantBookingInput_2024_08_13": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "The start time of the booking in ISO 8601 format in UTC timezone.",
"example": "2024-08-13T09:00:00Z"
},
"eventTypeId": {
"type": "number",
"description": "The ID of the event type that is booked.",
"example": 123
},
"attendee": {
"description": "The attendee's details.",
"allOf": [
{
"$ref": "#/components/schemas/Attendee"
}
]
},
"guests": {
"description": "An optional list of guest emails attending the event.",
"example": ["guest1@example.com", "guest2@example.com"],
"type": "array",
"items": {
"type": "string"
}
},
"meetingUrl": {
"type": "string",
"description": "Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.",
"example": "https://example.com/meeting"
},
"bookingFieldsResponses": {
"type": "object",
"description": "Booking field responses.",
"example": {
"customField": "customValue"
}
},
"instant": {
"type": "boolean",
"description": "Flag indicating if the booking is an instant booking. Only available for team events.",
"example": true
}
},
"required": ["start", "eventTypeId", "attendee", "instant"]
},
"CreateRecurringBookingInput_2024_08_13": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "The start time of the booking in ISO 8601 format in UTC timezone.",
"example": "2024-08-13T09:00:00Z"
},
"eventTypeId": {
"type": "number",
"description": "The ID of the event type that is booked.",
"example": 123
},
"attendee": {
"description": "The attendee's details.",
"allOf": [
{
"$ref": "#/components/schemas/Attendee"
}
]
},
"guests": {
"description": "An optional list of guest emails attending the event.",
"example": ["guest1@example.com", "guest2@example.com"],
"type": "array",
"items": {
"type": "string"
}
},
"meetingUrl": {
"type": "string",
"description": "Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.",
"example": "https://example.com/meeting"
},
"bookingFieldsResponses": {
"type": "object",
"description": "Booking field responses.",
"example": {
"customField": "customValue"
}
}
},
"required": ["start", "eventTypeId", "attendee"]
},
"Host": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1
},
"name": {
"type": "string",
"example": "Jane Doe"
},
"timeZone": {
"type": "string",
"example": "America/Los_Angeles"
}
},
"required": ["id", "name", "timeZone"]
},
"BookingOutput_2024_08_13": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 123
},
"uid": {
"type": "string",
"example": "booking_uid_123"
},
"hosts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Host"
}
},
"status": {
"type": "string",
"enum": ["cancelled", "accepted", "rejected", "pending", "rescheduled"],
"example": "accepted"
},
"cancellationReason": {
"type": "string",
"example": "User requested cancellation"
},
"reschedulingReason": {
"type": "string",
"example": "User rescheduled the event"
},
"rescheduledFromUid": {
"type": "string",
"example": "previous_uid_123"
},
"start": {
"type": "string",
"example": "2024-08-13T15:30:00Z"
},
"end": {
"type": "string",
"example": "2024-08-13T16:30:00Z"
},
"duration": {
"type": "number",
"example": 60
},
"eventTypeId": {
"type": "number",
"example": 45
},
"attendees": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Attendee"
}
},
"guests": {
"example": ["guest1@example.com", "guest2@example.com"],
"type": "array",
"items": {
"type": "string"
}
},
"meetingUrl": {
"type": "string",
"example": "https://example.com/meeting"
},
"absentHost": {
"type": "boolean",
"example": true
}
},
"required": [
"id",
"uid",
"hosts",
"status",
"start",
"end",
"duration",
"eventTypeId",
"attendees",
"absentHost"
]
},
"RecurringBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 456
},
"uid": {
"type": "string",
"example": "recurring_uid_123"
},
"hosts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Host"
}
},
"status": {
"type": "string",
"enum": ["cancelled", "accepted", "rejected", "pending"],
"example": "pending"
},
"cancellationReason": {
"type": "string",
"example": "Event was cancelled"
},
"reschedulingReason": {
"type": "string",
"example": "Event was rescheduled"
},
"rescheduledFromUid": {
"type": "string",
"example": "previous_recurring_uid_123"
},
"start": {
"type": "string",
"example": "2024-08-13T15:30:00Z"
},
"end": {
"type": "string",
"example": "2024-08-13T16:30:00Z"
},
"duration": {
"type": "number",
"example": 30
},
"eventTypeId": {
"type": "number",
"example": 50
},
"recurringBookingUid": {
"type": "string",
"example": "recurring_uid_987"
},
"attendees": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Attendee"
}
},
"guests": {
"example": ["guest3@example.com", "guest4@example.com"],
"type": "array",
"items": {
"type": "string"
}
},
"meetingUrl": {
"type": "string",
"example": "https://example.com/recurring-meeting"
},
"absentHost": {
"type": "boolean",
"example": false
}
},
"required": [
"id",
"uid",
"hosts",
"status",
"start",
"end",
"duration",
"eventTypeId",
"recurringBookingUid",
"attendees",
"absentHost"
]
},
"CreateBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
}
],
"description": "Booking data, which can be either a BookingOutput object or an array of RecurringBookingOutput objects"
}
},
"required": ["status", "data"]
},
"GetBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
}
],
"description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects"
}
},
"required": ["status", "data"]
},
"GetBookingsOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
]
},
"description": "Array of booking data, which can contain either BookingOutput objects or RecurringBookingOutput objects"
}
},
"required": ["status", "data"]
},
"RescheduleBookingInput_2024_08_13": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "Start time in ISO 8601 format for the new booking",
"example": "2024-08-13T10:00:00Z"
},
"reschedulingReason": {
"type": "string",
"example": "User requested reschedule",
"description": "Reason for rescheduling the booking"
}
},
"required": ["start"]
},
"RescheduleBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
],
"description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object"
}
},
"required": ["status", "data"]
},
"CancelBookingInput_2024_08_13": {
"type": "object",
"properties": {
"cancellationReason": {
"type": "string",
"example": "User requested cancellation"
}
},
"required": ["cancellationReason"]
},
"CancelBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
}
],
"description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects"
}
},
"required": ["status", "data"]
},
"MarkAbsentBookingInput_2024_08_13": {
"type": "object",
"properties": {
"host": {
"type": "boolean",
"example": false,
"description": "Whether the host was absent"
},
"attendees": {
"description": "Toggle whether an attendee was absent or not.",
"example": [
{
"absent": true,
"email": "someone@gmail.com"
}
],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["attendees"]
},
"MarkAbsentBookingOutput_2024_08_13": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/BookingOutput_2024_08_13"
},
{
"$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13"
}
],
"description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object"
}
},
"required": ["status", "data"]
},
"ReserveSlotInput": {
"type": "object",
"properties": {}
},
"UserWebhookOutputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"userId": {
"type": "number"
},
"id": {
"type": "number"
},
"triggers": {
"type": "array",
"items": {
"type": "object"
}
},
"subscriberUrl": {
"type": "string"
},
"active": {
"type": "boolean"
},
"secret": {
"type": "string"
}
},
"required": ["payloadTemplate", "userId", "id", "triggers", "subscriberUrl", "active"]
},
"UserWebhookOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/UserWebhookOutputDto"
}
},
"required": ["status", "data"]
},
"UserWebhooksOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserWebhookOutputDto"
}
}
},
"required": ["status", "data"]
},
"EventTypeWebhookOutputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"eventTypeId": {
"type": "number"
},
"id": {
"type": "number"
},
"triggers": {
"type": "array",
"items": {
"type": "object"
}
},
"subscriberUrl": {
"type": "string"
},
"active": {
"type": "boolean"
},
"secret": {
"type": "string"
}
},
"required": ["payloadTemplate", "eventTypeId", "id", "triggers", "subscriberUrl", "active"]
},
"EventTypeWebhookOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/EventTypeWebhookOutputDto"
}
},
"required": ["status", "data"]
},
"EventTypeWebhooksOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventTypeWebhookOutputDto"
}
}
},
"required": ["status", "data"]
},
"DeleteManyWebhooksOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "string"
}
},
"required": ["status", "data"]
},
"OAuthClientWebhookOutputDto": {
"type": "object",
"properties": {
"payloadTemplate": {
"type": "string",
"description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
"example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}"
},
"oAuthClientId": {
"type": "string"
},
"id": {
"type": "number"
},
"triggers": {
"type": "array",
"items": {
"type": "object"
}
},
"subscriberUrl": {
"type": "string"
},
"active": {
"type": "boolean"
},
"secret": {
"type": "string"
}
},
"required": ["payloadTemplate", "oAuthClientId", "id", "triggers", "subscriberUrl", "active"]
},
"OAuthClientWebhookOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputDto"
}
},
"required": ["status", "data"]
},
"OAuthClientWebhooksOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OAuthClientWebhookOutputDto"
}
}
},
"required": ["status", "data"]
},
"DestinationCalendarsInputBodyDto": {
"type": "object",
"properties": {
"integration": {
"type": "string",
"example": "apple_calendar",
"description": "The calendar service you want to integrate, as returned by the /calendars endpoint",
"enum": ["apple_calendar", "google_calendar", "office365_calendar"]
},
"externalId": {
"type": "string",
"example": "https://caldav.icloud.com/26962146906/calendars/1644422A-1945-4438-BBC0-4F0Q23A57R7S/",
"description": "Unique identifier used to represent the specfic calendar, as returned by the /calendars endpoint"
}
},
"required": ["integration", "externalId"]
},
"DestinationCalendarsOutputDto": {
"type": "object",
"properties": {
"userId": {
"type": "number"
},
"integration": {
"type": "string"
},
"externalId": {
"type": "string"
},
"credentialId": {
"type": "number",
"nullable": true
}
},
"required": ["userId", "integration", "externalId", "credentialId"]
},
"DestinationCalendarsOutputResponseDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/DestinationCalendarsOutputDto"
}
},
"required": ["status", "data"]
}
}
}
}