{ "openapi": "3.0.0", "paths": { "/v2/oauth-clients/{clientId}/users": { "get": { "operationId": "OAuthClientUsersController_getManagedUsers", "summary": "Get all managed users", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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" } }, { "name": "offset", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } }, { "name": "emails", "required": false, "in": "query", "description": "Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.", "example": "?emails=email1@example.com,email2@example.com", "schema": { "type": "array", "items": { "type": "string" } } } ], "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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", "description": "If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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/{clientId}/refresh": { "post": { "operationId": "OAuthFlowController_refreshTokens", "summary": "Refresh managed user tokens", "description": "If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use\n \"refresh token rotation\" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "required": true, "in": "header", "description": "OAuth client secret key.", "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": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/webhooks": { "post": { "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", "summary": "Create a webhook", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "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": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } } ], "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_createOrganizationAttributeOption", "summary": "Create an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptions", "summary": "Get all attribute options", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_deleteOrganizationAttributeOption", "summary": "Delete an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_updateOrganizationAttributeOption", "summary": "Update an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/{attributeId}/options/assigned": { "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeAssignedOptions", "summary": "Get by attribute id all of the attribute options that are assigned to users", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "example": "?teamIds=100,200", "schema": { "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned": { "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeAssignedOptionsBySlug", "summary": "Get by attribute slug all of the attribute options that are assigned to users", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeSlug", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "example": "?teamIds=100,200", "schema": { "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { "post": { "operationId": "OrganizationsAttributesOptionsController_assignOrganizationAttributeOptionToUser", "summary": "Assign an attribute to a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptionsForUser", "summary": "Get all attribute options for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": "OrganizationsAttributesOptionsController_unassignOrganizationAttributeOptionFromUser", "summary": "Unassign an attribute from a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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}/bookings": { "get": { "operationId": "OrganizationsBookingsController_getAllOrgTeamBookings", "summary": "Get Organization Bookings", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "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": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "schema": { "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "example": "?beforeUpdatedAt=2025-03-14T11: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": "?sortCreated=asc OR ?sortCreated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "example": "?sortUpdated=asc OR ?sortUpdated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "default": 100, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "default": 0, "type": "number" } }, { "name": "userIds", "required": false, "in": "query", "description": "Filter bookings by ids of users within your organization.", "example": "?userIds=100,200", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Orgs / Bookings"] } }, "/v2/organizations/{orgId}/delegation-credentials": { "post": { "operationId": "OrganizationsDelegationCredentialController_createDelegationCredential", "summary": "Save delegation credentials for your organization.", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateDelegationCredentialInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateDelegationCredentialOutput" } } } } }, "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/delegation-credentials/{credentialId}": { "patch": { "operationId": "OrganizationsDelegationCredentialController_updateDelegationCredential", "summary": "Update delegation credentials of your organization.", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "credentialId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDelegationCredentialInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDelegationCredentialOutput" } } } } }, "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/memberships": { "get": { "operationId": "OrganizationsMembershipsController_getAllMemberships", "summary": "Get all memberships", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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}/routing-forms": { "get": { "operationId": "OrganizationsRoutingFormsController_getOrganizationRoutingForms", "summary": "Get organization routing forms", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "example": "?teamIds=100,200", "schema": { "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormsOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses": { "get": { "operationId": "OrganizationsRoutingFormsResponsesController_getRoutingFormResponses", "summary": "Get routing form responses", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormResponsesOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses/{responseId}": { "patch": { "operationId": "OrganizationsRoutingFormsResponsesController_updateRoutingFormResponse", "summary": "Update routing form response", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "responseId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/schedules": { "get": { "operationId": "OrganizationsSchedulesController_getOrganizationSchedules", "summary": "Get all schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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}/teams": { "get": { "operationId": "OrganizationsTeamsController_getAllTeams", "summary": "Get all teams", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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"] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", "summary": "Create a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "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 teams membership for user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", "summary": "Delete a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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}/bookings": { "get": { "operationId": "OrganizationsTeamsBookingsController_getAllOrgTeamBookings", "summary": "Get organization team bookings", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "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 team. 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 team.", "example": "?eventTypeId=100", "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": "?sortCreated=asc OR ?sortCreated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "minimum": 1, "maximum": 250, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "minimum": 0, "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references": { "get": { "operationId": "OrganizationsTeamsBookingsController_getBookingReferences", "summary": "Get 'Booking References' for a booking", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "type", "required": false, "in": "query", "description": "Filter booking references by type", "example": "google_calendar", "schema": { "enum": [ "google_calendar", "office365_calendar", "daily_video", "google_video", "office365_video", "zoom_video" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" } } } } }, "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect": { "post": { "operationId": "OrganizationsConferencingController_connectTeamApp", "summary": "Connect your conferencing application to a team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url": { "get": { "operationId": "OrganizationsConferencingController_getTeamOAuthUrl", "summary": "Get OAuth conferencing app's auth url for a team", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing": { "get": { "operationId": "OrganizationsConferencingController_listTeamConferencingApps", "summary": "List team conferencing applications", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default": { "post": { "operationId": "OrganizationsConferencingController_setTeamDefaultApp", "summary": "Set team default conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/default": { "get": { "operationId": "OrganizationsConferencingController_getTeamDefaultApp", "summary": "Get team default conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect": { "delete": { "operationId": "OrganizationsConferencingController_disconnectTeamApp", "summary": "Disconnect team conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisconnectConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback": { "get": { "operationId": "OrganizationsConferencingController_saveTeamOauthCredentials", "summary": "Save conferencing app OAuth credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { "post": { "operationId": "OrganizationsEventTypesController_createTeamEventType", "summary": "Create an event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", "summary": "Get team event types", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of team event type to return.", "schema": { "type": "string" } }, { "name": "hostsLimit", "required": false, "in": "query", "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "OrganizationsEventTypesController_getTeamEventType", "summary": "Get an event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", "summary": "Update a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", "summary": "Delete a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "OrganizationsEventTypesController_createPhoneCall", "summary": "Create a phone call", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/event-types": { "get": { "operationId": "OrganizationsEventTypesController_getTeamsEventTypes", "summary": "Get all team event types", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getAllOrgTeamMemberships", "summary": "Get all memberships", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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}/teams/{teamId}/routing-forms": { "get": { "operationId": "OrganizationsTeamsRoutingFormsController_getTeamRoutingForms", "summary": "Get team routing forms", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormsOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses": { "get": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_getRoutingFormResponses", "summary": "Get organization team routing form responses", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormResponsesOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses/{responseId}": { "patch": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_updateRoutingFormResponse", "summary": "Update routing form response", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "responseId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules": { "get": { "operationId": "OrganizationsTeamsSchedulesController_getUserSchedules", "summary": "Get schedules of a team member", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Teams / Users / Schedules"] } }, "/v2/organizations/{orgId}/users": { "get": { "operationId": "OrganizationsUsersController_getOrganizationsUsers", "summary": "Get all users", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": { "minimum": 1, "maximum": 1000, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "minimum": 0, "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" } } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "attributeQueryOperator", "required": false, "in": "query", "description": "Query operator used to filter assigned options, AND by default.", "example": "NONE", "schema": { "default": "AND", "enum": ["OR", "AND", "NONE"], "type": "string" } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "example": "?teamIds=100,200", "schema": { "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUsersResponseDTO" } } } } }, "tags": ["Orgs / Users"] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", "summary": "Create a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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}/users/{userId}/bookings": { "get": { "operationId": "OrganizationsUsersBookingsController_getOrganizationUserBookings", "summary": "Get all bookings of an organization user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "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": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "schema": { "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "example": "?beforeUpdatedAt=2025-03-14T11: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": "?sortCreated=asc OR ?sortCreated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "example": "?sortUpdated=asc OR ?sortUpdated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "default": 100, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "default": 0, "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / Bookings"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo": { "get": { "operationId": "OrganizationsUsersOOOController_getOrganizationUserOOO", "summary": "Get all ooo entries of a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "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": "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" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / OOO"] }, "post": { "operationId": "OrganizationsUsersOOOController_createOrganizationUserOOO", "summary": "Create an ooo entry for user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOutOfOfficeEntryDto" } } } }, "responses": { "201": { "description": "" } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo/{oooId}": { "patch": { "operationId": "OrganizationsUsersOOOController_updateOrganizationUserOOO", "summary": "Update ooo entry of a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "oooId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOutOfOfficeEntryDto" } } } }, "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / OOO"] }, "delete": { "operationId": "OrganizationsUsersOOOController_deleteOrganizationUserOOO", "summary": "Delete ooo entry of a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "oooId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/ooo": { "get": { "operationId": "OrganizationsUsersOOOController_getOrganizationUsersOOO", "summary": "Get all OOO entries of org users", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "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": "email", "required": false, "in": "query", "description": "Filter ooo entries by the user email address. user must be within your organization.", "example": "example@domain.com", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { "post": { "operationId": "OrganizationsSchedulesController_createUserSchedule", "summary": "Create a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Users / Schedules"] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", "summary": "Get all schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Users / Schedules"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { "get": { "operationId": "OrganizationsSchedulesController_getUserSchedule", "summary": "Get a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Users / Schedules"] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", "summary": "Update a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Users / Schedules"] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", "summary": "Delete a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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 / Users / Schedules"] } }, "/v2/organizations/{orgId}/webhooks": { "get": { "operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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/api-keys/refresh": { "post": { "operationId": "ApiKeysController_refresh", "summary": "Refresh API Key", "description": "Generate a new API key and delete the current one. Provide API key to refresh as a Bearer token in the Authorization header (e.g. \"Authorization: Bearer \").", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshApiKeyInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshApiKeyOutput" } } } } }, "tags": ["Api Keys"] } }, "/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\n Finally, there are 2 ways to book an event type belonging to an individual user:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `username` and optionally `organizationSlug` if the user with the username is within an organization.\n\n And 2 ways to book and event type belonging to a team:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `teamSlug` and optionally `organizationSlug` if the team with the teamSlug is within an organization.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } } ], "requestBody": { "required": true, "description": "Accepts different types of booking input: Create Booking (Option 1), Create Instant Booking (Option 2), or Create Recurring Booking (Option 3)", "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", "default": "2024-08-13" } }, { "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": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "schema": { "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "example": "?beforeUpdatedAt=2025-03-14T11: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": "?sortCreated=asc OR ?sortCreated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "example": "?sortUpdated=asc OR ?sortUpdated=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "default": 100, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "default": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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", "default": "2024-08-13" } }, { "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 or seated booking", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of reschedule booking input: Reschedule Booking (Option 1) or Reschedule Seated Booking (Option 2)", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/RescheduleBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/RescheduleSeatedBookingInput_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", "description": ":bookingUid can be :bookingUid of an usual booking, individual recurrence or recurring booking to cancel all recurrences.\n For seated bookings to cancel one individual booking provide :bookingUid and :seatUid in the request body. For recurring seated bookings it is not possible to cancel all of them with 1 call\n like with non-seated recurring bookings by providing recurring bookind uid - you have to cancel each recurrence booking by its bookingUid + seatUid.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of cancel booking input: Cancel Booking (Option 1) or Cancel Seated Booking (Option 2)", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CancelBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CancelSeatedBookingInput_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", "description": "The provided authorization header refers to the owner of the booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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/bookings/{bookingUid}/reassign": { "post": { "operationId": "BookingsController_2024_08_13_reassignBooking", "summary": "Reassign a booking to auto-selected host", "description": "The provided authorization header refers to the owner of the booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign/{userId}": { "post": { "operationId": "BookingsController_2024_08_13_reassignBookingToUser", "summary": "Reassign a booking to a specific host", "description": "The provided authorization header refers to the owner of the booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignToUserBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/confirm": { "post": { "operationId": "BookingsController_2024_08_13_confirmBooking", "summary": "Confirm a booking", "description": "The provided authorization header refers to the owner of the booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/decline": { "post": { "operationId": "BookingsController_2024_08_13_declineBooking", "summary": "Decline a booking", "description": "The provided authorization header refers to the owner of the booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeclineBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/calendar-links": { "get": { "operationId": "BookingsController_2024_08_13_getCalendarLinks", "summary": "Get 'Add to Calendar' links for a booking", "description": "Retrieve calendar links for a booking that can be used to add the event to various calendar services. Returns links for Google Calendar, Microsoft Office, Microsoft Outlook, and a downloadable ICS file.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarLinksOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/references": { "get": { "operationId": "BookingsController_2024_08_13_getBookingReferences", "summary": "Get 'Booking References' for a booking", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "type", "required": false, "in": "query", "description": "Filter booking references by type", "example": "google_calendar", "schema": { "enum": [ "google_calendar", "office365_calendar", "daily_video", "google_video", "office365_video", "zoom_video" ], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/calendars/ics-feed/save": { "post": { "operationId": "CalendarsController_createIcsFeed", "summary": "Save an ICS feed", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "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": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/busy-times": { "get": { "operationId": "CalendarsController_getBusyTimes", "summary": "Get busy times", "description": "Get busy times from a calendar. Example request URL is `https://api.cal.com/v2/calendars/busy-times?loggedInUsersTz=Europe%2FMadrid&dateFrom=2024-12-18&dateTo=2024-12-18&calendarsToLoad[0][credentialId]=135&calendarsToLoad[0][externalId]=skrauciz%40gmail.com`", "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": "dateFrom", "required": false, "in": "query", "description": "The starting date for the busy times query", "example": "2023-10-01", "schema": { "type": "string" } }, { "name": "dateTo", "required": false, "in": "query", "description": "The ending date for the busy times query", "example": "2023-10-31", "schema": { "type": "string" } }, { "name": "credentialId", "in": "query", "required": true, "schema": { "type": "number" } }, { "name": "externalId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "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": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectedCalendarsOutput" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/connect": { "get": { "operationId": "CalendarsController_redirect", "summary": "Get oAuth connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } }, { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["office365", "google"], "type": "string" } }, { "name": "isDryRun", "required": true, "in": "query", "schema": { "type": "boolean" } }, { "name": "redir", "required": false, "in": "query", "description": "Redirect URL after successful calendar authorization.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/save": { "get": { "operationId": "CalendarsController_save", "summary": "Save Google or Outlook calendar credentials", "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": { "enum": ["office365", "google"], "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/credentials": { "post": { "operationId": "CalendarsController_syncCredentials", "summary": "Save Apple calendar credentials", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["apple"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCalendarCredentialsInput" } } } }, "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": { "enum": ["apple", "google", "office365"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "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": { "enum": ["apple", "google", "office365"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "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/conferencing/{app}/connect": { "post": { "operationId": "ConferencingController_connect", "summary": "Connect your conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/auth-url": { "get": { "operationId": "ConferencingController_redirect", "summary": "Get OAuth conferencing app auth url", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/callback": { "get": { "operationId": "ConferencingController_save", "summary": "conferencing apps oauths callback", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Conferencing"] } }, "/v2/conferencing": { "get": { "operationId": "ConferencingController_listInstalledConferencingApps", "summary": "List your conferencing applications", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppsOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/default": { "post": { "operationId": "ConferencingController_default", "summary": "Set your default conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/default": { "get": { "operationId": "ConferencingController_getDefault", "summary": "Get your default conferencing application", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/disconnect": { "delete": { "operationId": "ConferencingController_disconnect", "summary": "Disconnect your conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisconnectConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/destination-calendars": { "put": { "operationId": "DestinationCalendarsController_updateDestinationCalendars", "summary": "Update destination calendars", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "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", "default": "2024-06-14" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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", "default": "2024-06-14" } }, { "name": "username", "required": false, "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": false, "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": false, "in": "query", "description": "Get dynamic event type for multiple usernames separated by comma. e.g `usernames=alice,bob`", "schema": { "type": "string" } }, { "name": "orgSlug", "required": false, "in": "query", "description": "slug of the user's organization if he is in one, orgId is not required if using this parameter", "schema": { "type": "string" } }, { "name": "orgId", "required": false, "in": "query", "description": "ID of the organization of the user you want the get the event-types of, orgSlug is not needed when using this parameter", "schema": { "type": "number" } } ], "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", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] } }, "/v2/organizations/{orgId}/organizations": { "post": { "operationId": "OrganizationsOrganizationsController_createOrganization", "summary": "Create an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "get": { "operationId": "OrganizationsOrganizationsController_getOrganizations", "summary": "Get all organizations within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationsOutput" } } } } }, "tags": ["Managed Orgs"] } }, "/v2/organizations/{orgId}/organizations/{managedOrganizationId}": { "get": { "operationId": "OrganizationsOrganizationsController_getOrganization", "summary": "Get an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "patch": { "operationId": "OrganizationsOrganizationsController_updateOrganization", "summary": "Update an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "delete": { "operationId": "OrganizationsOrganizationsController_deleteOrganization", "summary": "Delete an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] } }, "/v2/me": { "get": { "operationId": "MeController_getMe", "summary": "Get my profile", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMeOutput" } } } } }, "tags": ["Me"] }, "patch": { "operationId": "MeController_updateMe", "summary": "Update my profile", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "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": "Create an OAuth client", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "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 Clients"] }, "get": { "operationId": "OAuthClientsController_getOAuthClients", "summary": "Get all OAuth clients", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientsResponseDto" } } } } }, "tags": ["OAuth Clients"] } }, "/v2/oauth-clients/{clientId}": { "get": { "operationId": "OAuthClientsController_getOAuthClientById", "summary": "Get an OAuth client", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientResponseDto" } } } } }, "tags": ["OAuth Clients"] }, "patch": { "operationId": "OAuthClientsController_updateOAuthClient", "summary": "Update an OAuth client", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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 Clients"] }, "delete": { "operationId": "OAuthClientsController_deleteOAuthClient", "summary": "Delete an OAuth client", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientResponseDto" } } } } }, "tags": ["OAuth Clients"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request Email Verification Code", "description": "Sends a verification code to the email.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request Phone Number Verification Code", "description": "Sends a verification code to the phone number.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_verifyEmail", "summary": "Verify an email for an org team.", "description": "Use code to verify an email", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number for an org team.", "description": "Use code to verify a phone number", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails of an org team.", "parameters": [ { "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailsOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers of an org team.", "parameters": [ { "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhonesOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id}": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email of an org team by id.", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id}": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number of an org team by id.", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/connect": { "get": { "operationId": "OrganizationsStripeController_getTeamStripeConnectUrl", "summary": "Get stripe connect URL for a team", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripConnectOutputResponseDto" } } } } }, "tags": ["Organizations/Teams Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/check": { "get": { "operationId": "OrganizationsStripeController_checkTeamStripeConnection", "summary": "Check team stripe connection", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" } } } } }, "tags": ["Organizations/Teams Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/save": { "get": { "operationId": "OrganizationsStripeController_save", "summary": "Save stripe credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsSaveOutputResponseDto" } } } } }, "tags": ["Organizations/Teams Stripe"] } }, "/v2/routing-forms/{routingFormId}/calculate-slots": { "post": { "operationId": "RoutingFormsController_calculateSlotsBasedOnRoutingFormResponse", "summary": "Calculate slots based on routing form response", "description": "It will not actually save the response just return the routed event type and slots when it can be booked.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z\n ", "example": "2050-09-05", "schema": { "type": "string" } }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", "example": "2050-09-06", "schema": { "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "example": "Europe/Rome", "schema": { "type": "string" } }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "example": "60", "schema": { "type": "number" } }, { "name": "format", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times.", "example": "range", "schema": { "enum": ["range", "time"], "type": "string" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResponseSlotsOutput" } } } } }, "tags": ["Routing forms"] } }, "/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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "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 ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "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": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "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_deleteSelectedCalendar", "summary": "Delete a selected calendar", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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" } }, { "name": "delegationCredentialId", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" } } } } }, "tags": ["Selected Calendars"] } }, "/v2/slots": { "get": { "operationId": "SlotsController_2024_09_04_getAvailableSlots", "summary": "Find out when is an event type ready to be booked.", "description": "\n There are 4 ways to get available slots for event type of an individual user:\n\n 1. By event type id. Event type id can be of user and team event types. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'\n\n 2. By event type slug + username. Example '/v2/slots?eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 3. By event type slug + username + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 4. By usernames only (used for dynamic event type - there is no specific event but you want to know when 2 or more people are available). Example '/v2/slots?usernames=alice,bob&username=bob&organizationSlug=org-slug&start=2050-09-05&end=2050-09-06'. As you see you also need to provide the slug of the organization to which each user in the 'usernames' array belongs.\n\n And 3 ways to get available slots for team event type:\n\n 1. By team event type id. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'\n\n 2. By team event type slug + team slug. Example '/v2/slots?eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n 3. By team event type slug + team slug + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n All of them require \"start\" and \"end\" query parameters which define the time range for which available slots should be checked.\n Optional parameters are:\n - timeZone: Time zone in which the available slots should be returned. Defaults to UTC.\n - duration: Only use for event types that allow multiple durations or for dynamic event types. If not passed for multiple duration event types defaults to default duration. For dynamic event types defaults to 30 aka each returned slot is 30 minutes long. So duration=60 means that returned slots will be each 60 minutes long.\n - slotFormat: Format of the slots. By default return is an object where each key is date and value is array of slots as string. If you want to get start and end of each slot use \"range\" as value.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z.", "example": "2050-09-05", "schema": {} }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z.", "example": "2050-09-06", "schema": {} }, { "name": "organizationSlug", "required": false, "in": "query", "description": "The slug of the organization to which user with username belongs or team with teamSlug belongs.", "example": "org-slug", "schema": {} }, { "name": "teamSlug", "required": false, "in": "query", "description": "The slug of the team who owns event type with eventTypeSlug - used when slots are checked for team event type.", "example": "team-slug", "schema": {} }, { "name": "username", "required": false, "in": "query", "description": "The username of the user who owns event type with eventTypeSlug - used when slots are checked for individual user event type.", "example": "bob", "schema": {} }, { "name": "eventTypeSlug", "required": false, "in": "query", "description": "The slug of the event type for which available slots should be checked. If slug is provided then username or teamSlug must be provided too and if relevant organizationSlug too.", "example": "event-type-slug", "schema": {} }, { "name": "eventTypeId", "required": false, "in": "query", "description": "The ID of the event type for which available slots should be checked.", "example": "100", "schema": {} }, { "name": "usernames", "required": false, "in": "query", "description": "The usernames for which available slots should be checked separated by a comma.\n\n Checking slots by usernames is used mainly for dynamic events where there is no specific event but we just want to know when 2 or more people are available.\n\n Must contain at least 2 usernames.", "example": "alice,bob", "schema": {} }, { "name": "slotFormat", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times. Use 'time' or omit this query parameter to get only start time.", "example": "range", "schema": {} }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "example": "60", "schema": {} }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "example": "Europe/Rome", "schema": {} } ], "responses": { "200": { "description": "A map of available slots indexed by date, where each date is associated with an array of time slots. If format=range is specified, each slot will be an object with start and end properties denoting start and end of the slot.\n For seated slots each object will have attendeesCount and bookingUid properties.", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "title": "Default format (or with format=time)", "additionalProperties": { "type": "array", "items": { "type": "string" } }, "example": { "status": "success", "data": { "2050-09-05": [ { "start": "2050-09-05T09:00:00.000+02:00" }, { "start": "2050-09-05T10:00:00.000+02:00" } ], "2050-09-06": [ { "start": "2050-09-06T09:00:00.000+02:00" }, { "start": "2050-09-06T10:00:00.000+02:00" } ] } } }, { "type": "object", "title": "Range format (when format=range)", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } } } }, "example": { "status": "success", "data": { "2050-09-05": [ { "start": "2050-09-05T09:00:00.000+02:00", "end": "2050-09-05T10:00:00.000+02:00" }, { "start": "2050-09-05T10:00:00.000+02:00", "end": "2050-09-05T11:00:00.000+02:00" } ], "2050-09-06": [ { "start": "2050-09-06T09:00:00.000+02:00", "end": "2050-09-06T10:00:00.000+02:00" }, { "start": "2050-09-06T10:00:00.000+02:00", "end": "2050-09-06T11:00:00.000+02:00" } ] } } } ] } } } } }, "tags": ["Slots"] } }, "/v2/slots/reservations": { "post": { "operationId": "SlotsController_2024_09_04_reserveSlot", "summary": "Reserve a slot", "description": "Make a slot not available for others to book for a certain period of time. If you authenticate using oAuth credentials, api key or access token\n then you can also specify custom duration for how long the slot should be reserved for (defaults to 5 minutes).", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" } } } } }, "tags": ["Slots"] } }, "/v2/slots/reservations/{uid}": { "get": { "operationId": "SlotsController_2024_09_04_getReservedSlot", "summary": "Get reserved slot", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetReservedSlotOutput_2024_09_04" } } } } }, "tags": ["Slots"] }, "patch": { "operationId": "SlotsController_2024_09_04_updateReservedSlot", "summary": "Updated reserved a slot", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" } } } } }, "tags": ["Slots"] }, "delete": { "operationId": "SlotsController_2024_09_04_deleteReservedSlot", "summary": "Delete a reserved slot", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "example": { "status": "success" } } } } } }, "tags": ["Slots"] } }, "/v2/stripe/connect": { "get": { "operationId": "StripeController_redirect", "summary": "Get stripe connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripConnectOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/stripe/save": { "get": { "operationId": "StripeController_save", "summary": "Save stripe credentials", "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", "summary": "Check stripe connection", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/teams": { "post": { "operationId": "TeamsController_createTeam", "summary": "Create a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamOutput" } } } } }, "tags": ["Teams"] }, "get": { "operationId": "TeamsController_getTeams", "summary": "Get teams", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamsOutput" } } } } }, "tags": ["Teams"] } }, "/v2/teams/{teamId}": { "get": { "operationId": "TeamsController_getTeam", "summary": "Get a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamOutput" } } } } }, "tags": ["Teams"] }, "patch": { "operationId": "TeamsController_updateTeam", "summary": "Update a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/UpdateTeamOutput" } } } } }, "tags": ["Teams"] }, "delete": { "operationId": "TeamsController_deleteTeam", "summary": "Delete a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Teams"] } }, "/v2/teams/{teamId}/event-types": { "post": { "operationId": "TeamsEventTypesController_createTeamEventType", "summary": "Create an event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "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": ["Teams / Event Types"] }, "get": { "operationId": "TeamsEventTypesController_getTeamEventTypes", "summary": "Get a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of team event type to return.", "schema": { "type": "string" } }, { "name": "hostsLimit", "required": false, "in": "query", "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "TeamsEventTypesController_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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] }, "patch": { "operationId": "TeamsEventTypesController_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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "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": ["Teams / Event Types"] }, "delete": { "operationId": "TeamsEventTypesController_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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "TeamsEventTypesController_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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallOutput" } } } } }, "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/memberships": { "post": { "operationId": "TeamsMembershipsController_createTeamMembership", "summary": "Create a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamMembershipInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "get": { "operationId": "TeamsMembershipsController_getTeamMemberships", "summary": "Get all memberships", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/GetTeamMembershipsOutput" } } } } }, "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/memberships/{membershipId}": { "get": { "operationId": "TeamsMembershipsController_getTeamMembership", "summary": "Get a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/GetTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "patch": { "operationId": "TeamsMembershipsController_updateTeamMembership", "summary": "Update membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/UpdateTeamMembershipInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "delete": { "operationId": "TeamsMembershipsController_deleteTeamMembership", "summary": "Delete a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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/DeleteTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/request": { "post": { "operationId": "TeamsVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request Email Verification Code", "description": "Sends a verification code to the Email.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/request": { "post": { "operationId": "TeamsVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request Phone Number Verification Code", "description": "Sends a verification code to the phone number.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/verify": { "post": { "operationId": "TeamsVerifiedResourcesController_verifyEmail", "summary": "Verify an email for a team.", "description": "Use code to verify an email", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/verify": { "post": { "operationId": "TeamsVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number for an org team.", "description": "Use code to verify a phone number", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails of a team.", "parameters": [ { "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailsOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers of a team.", "parameters": [ { "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhonesOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/{id}": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email of a team by id.", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/{id}": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number of a team by id.", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/request": { "post": { "operationId": "UserVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request Email Verification Code", "description": "Sends a verification code to the email.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/request": { "post": { "operationId": "UserVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request Phone Number Verification Code", "description": "Sends a verification code to the phone number.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/verify": { "post": { "operationId": "UserVerifiedResourcesController_verifyEmail", "summary": "Verify an email.", "description": "Use code to verify an email", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/verify": { "post": { "operationId": "UserVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number.", "description": "Use code to verify a phone number", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhoneOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails.", "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailsOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers.", "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" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhonesOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/{id}": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email by id.", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/{id}": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number by id.", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhoneOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/webhooks": { "post": { "operationId": "WebhooksController_createWebhook", "summary": "Create a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "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", "description": "Gets a paginated list of webhooks for the authenticated user.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "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/UserWebhooksOutputResponseDto" } } } } }, "tags": ["Webhooks"] } }, "/v2/webhooks/{webhookId}": { "patch": { "operationId": "WebhooksController_updateWebhook", "summary": "Update a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "delete": { "operationId": "WebhooksController_deleteWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "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" }, "bio": { "type": "string", "nullable": true, "example": "bio" }, "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" }, "avatarUrl": { "type": "string", "nullable": true, "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": [ "id", "email", "username", "name", "bio", "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.\n It will default to Europe/London if not passed." }, "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" }, "avatarUrl": { "type": "string", "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } } }, "required": ["email", "name"] }, "CreateManagedUserData": { "type": "object", "properties": { "accessToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "refreshToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "user": { "$ref": "#/components/schemas/ManagedUserOutput" }, "accessTokenExpiresAt": { "type": "number" }, "refreshTokenExpiresAt": { "type": "number" } }, "required": ["accessToken", "refreshToken", "user", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "CreateManagedUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateManagedUserData" }, "error": { "type": "object" } }, "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": { "email": { "type": "string" }, "name": { "type": "string" }, "timeFormat": { "type": "number", "enum": [12, 24], "example": 12, "description": "Must be 12 or 24" }, "defaultScheduleId": { "type": "number" }, "weekStart": { "type": "string", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "example": "Monday" }, "timeZone": { "type": "string" }, "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" }, "avatarUrl": { "type": "string", "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } } } }, "KeysDto": { "type": "object", "properties": { "accessToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "refreshToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "accessTokenExpiresAt": { "type": "number" }, "refreshTokenExpiresAt": { "type": "number" } }, "required": ["accessToken", "refreshToken", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "KeysResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/KeysDto" } }, "required": ["status", "data"] }, "CreateOAuthClientInput": { "type": "object", "properties": { "logo": { "type": "string" }, "name": { "type": "string" }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "permissions": { "type": "array", "description": "Array of permission keys like [\"BOOKING_READ\", \"BOOKING_WRITE\"]. Use [\"*\"] to grant all permissions.", "items": { "type": "string", "enum": [ "EVENT_TYPE_READ", "EVENT_TYPE_WRITE", "BOOKING_READ", "BOOKING_WRITE", "SCHEDULE_READ", "SCHEDULE_WRITE", "APPS_READ", "APPS_WRITE", "PROFILE_READ", "PROFILE_WRITE", "*" ] } }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" }, "areDefaultEventTypesEnabled": { "type": "boolean", "default": false, "description": "If true, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Set this as false if you want to create a managed user and then manually create event types for the user." } }, "required": ["name", "redirectUris", "permissions"] }, "CreateOAuthClientOutput": { "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/CreateOAuthClientOutput" } ] } }, "required": ["status", "data"] }, "PlatformOAuthClientDto": { "type": "object", "properties": { "id": { "type": "string", "example": "clsx38nbl0001vkhlwin9fmt0" }, "name": { "type": "string", "example": "MyClient" }, "secret": { "type": "string", "example": "secretValue" }, "permissions": { "type": "array", "description": "Array of permission keys like [\"BOOKING_READ\", \"BOOKING_WRITE\"]", "items": { "type": "string", "enum": [ "EVENT_TYPE_READ", "EVENT_TYPE_WRITE", "BOOKING_READ", "BOOKING_WRITE", "SCHEDULE_READ", "SCHEDULE_WRITE", "APPS_READ", "APPS_WRITE", "PROFILE_READ", "PROFILE_WRITE" ] }, "example": ["BOOKING_READ", "BOOKING_WRITE"] }, "logo": { "type": "object", "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" }, "areEmailsEnabled": { "type": "boolean", "example": true }, "areDefaultEventTypesEnabled": { "type": "boolean", "example": true, "description": "If enabled, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Leave this disabled if you want to create a managed user and then manually create event types for the user." }, "bookingRedirectUri": { "type": "string", "example": "https://example.com/booking-redirect" }, "bookingCancelRedirectUri": { "type": "string", "example": "https://example.com/booking-cancel" }, "bookingRescheduleRedirectUri": { "type": "string", "example": "https://example.com/booking-reschedule" } }, "required": [ "id", "name", "secret", "permissions", "redirectUris", "organizationId", "createdAt", "areEmailsEnabled", "areDefaultEventTypesEnabled" ] }, "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": { "type": "array", "items": { "type": "string" } }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" }, "areDefaultEventTypesEnabled": { "type": "boolean", "description": "If true, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Set this as false if you want to create a managed user and then manually create event types for the user." } } }, "RefreshTokenInput": { "type": "object", "properties": { "refreshToken": { "type": "string", "description": "Managed user's refresh token." } }, "required": ["refreshToken"] }, "RefreshApiKeyInput": { "type": "object", "properties": { "apiKeyDaysValid": { "type": "number", "minimum": 1, "description": "For how many days is managed organization api key valid. Defaults to 30 days.", "example": 60, "default": 30 }, "apiKeyNeverExpires": { "type": "boolean", "description": "If true, organization api key never expires.", "example": true } } }, "ApiKeyOutput": { "type": "object", "properties": { "apiKey": { "type": "string" } }, "required": ["apiKey"] }, "RefreshApiKeyOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ApiKeyOutput" } }, "required": ["status", "data"] }, "InputAddressLocation_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"] }, "InputLinkLocation_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"] }, "InputIntegrationLocation_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", "google-meet", "office365-video", "zoom"] } }, "required": ["type", "integration"] }, "InputPhoneLocation_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. Special slug is `attendeePhoneNumber` - if you create\n a phone input field with this slug for organization team event type you can create an organization team event type that can be booked using phone without requiring an email by setting {\"type\": \"email\", \"required\": false, \"hidden\": true} to the email booking field input in the request body.", "example": "some-slug" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`, the address field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `who-referred-you` and the URL contains query parameter `&who-referred-you=bob`, the text field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `calories-per-day` and the URL contains query parameter `&calories-per-day=3000`, the number field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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..." }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `dear-diary` and the URL contains query parameter `&dear-diary=Today I shipped a feature`, the text area will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden"] }, "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`, the these emails will be added and none more can be added." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `notify-me` and the URL contains query parameter `¬ify-me=true`, the checkbox will be selected and the checkbox field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio button will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "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" }, "disableOnPrefill": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "hidden"] }, "UrlFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "url", "description": "only allowed value for type is `url`" }, "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 url here" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `video-url` and the URL contains query parameter `&video-url=https://youtube.com/abc`the url field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "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": "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " } }, "required": ["type", "value"] }, "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": "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " } }, "required": ["type", "value"] }, "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"] }, "BaseBookingLimitsCount_2024_06_14": { "type": "object", "properties": { "day": { "type": "number", "description": "The number of bookings per day", "example": 1 }, "week": { "type": "number", "description": "The number of bookings per week", "example": 2 }, "month": { "type": "number", "description": "The number of bookings per month", "example": 3 }, "year": { "type": "number", "description": "The number of bookings per year", "example": 4 }, "disabled": { "type": "boolean", "default": false } } }, "Disabled_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "Indicates if the option is disabled", "example": true, "default": false } }, "required": ["disabled"] }, "BaseBookingLimitsDuration_2024_06_14": { "type": "object", "properties": { "day": { "type": "number", "description": "The duration of bookings per day (must be a multiple of 15)", "example": 60 }, "week": { "type": "number", "description": "The duration of bookings per week (must be a multiple of 15)", "example": 120 }, "month": { "type": "number", "description": "The duration of bookings per month (must be a multiple of 15)", "example": 180 }, "year": { "type": "number", "description": "The duration of bookings per year (must be a multiple of 15)", "example": 240 } } }, "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": { "type": "string", "enum": ["yearly", "monthly", "weekly"] } }, "required": ["interval", "occurrences", "frequency"] }, "NoticeThreshold_2024_06_14": { "type": "object", "properties": { "unit": { "type": "string", "description": "The unit of time for the notice threshold (e.g., minutes, hours)", "example": "minutes" }, "count": { "type": "number", "description": "The time value for the notice threshold", "example": 30 } }, "required": ["unit", "count"] }, "BaseConfirmationPolicy_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "description": "The policy that determines when confirmation is required", "enum": ["always", "time"], "example": "always" }, "noticeThreshold": { "description": "The notice threshold required before confirmation is needed. Required when type is 'time'.", "allOf": [ { "$ref": "#/components/schemas/NoticeThreshold_2024_06_14" } ] }, "blockUnconfirmedBookingsInBooker": { "type": "boolean", "description": "Unconfirmed bookings still block calendar slots." } }, "required": ["type", "blockUnconfirmedBookingsInBooker"] }, "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"] }, "InputAttendeeAddressLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeAddress", "description": "only allowed value for type is `attendeeAddress`" } }, "required": ["type"] }, "InputAttendeePhoneLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeePhone", "description": "only allowed value for type is `attendeePhone`" } }, "required": ["type"] }, "InputAttendeeDefinedLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeDefined", "description": "only allowed value for type is `attendeeDefined`" } }, "required": ["type"] }, "NameDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "name", "description": "only allowed value for type is `name`. Used for having 1 booking field for both first name and last name." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&name=bob`, the name field will be prefilled with this value and disabled." } }, "required": ["type", "label", "placeholder"] }, "EmailDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "email", "description": "only allowed value for type is `email`" }, "label": { "type": "string" }, "required": { "type": "object", "description": "Can be set to false only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "hidden": { "type": "boolean", "description": "Can be set to true only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled." } }, "required": ["type", "label", "placeholder"] }, "TitleDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "title", "description": "only allowed value for type is `title`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&title=journey`, the title field will be prefilled with this value and disabled." } }, "required": ["slug"] }, "NotesDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "notes", "description": "only allowed value for type is `notes`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `¬es=journey`, the notes field will be prefilled with this value and disabled." } }, "required": ["slug"] }, "GuestsDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "guests", "description": "only allowed value for type is `guests`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&guests=bob@cal.com`, the guests field will be prefilled with this value and disabled." } }, "required": ["slug"] }, "RescheduleReasonDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "rescheduleReason", "description": "only allowed value for type is `rescheduleReason`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&rescheduleReason=travel`, the rescheduleReason field will be prefilled with this value and disabled." } }, "required": ["slug"] }, "InputOrganizersDefaultApp_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "organizersDefaultApp", "description": "only allowed value for type is `organizersDefaultApp`" } }, "required": ["type"] }, "BookerLayouts_2024_06_14": { "type": "object", "properties": { "defaultLayout": { "type": "string", "enum": ["month", "week", "column"] }, "enabledLayouts": { "type": "array", "description": "Array of valid layouts - month, week or column", "items": { "type": "string", "enum": ["month", "week", "column"] } } }, "required": ["defaultLayout", "enabledLayouts"] }, "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"] }, "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"] }, "CreateEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "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!" }, "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/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$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" }, { "$ref": "#/components/schemas/UrlFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't 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 prepended 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": { "description": "Limit how many times this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "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/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" } ] } } }, "required": ["lengthInMinutes", "title", "slug"] }, "OutputAddressLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp" ], "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"] }, "OutputLinkLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp" ], "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"] }, "OutputIntegrationLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp", "conferencing", "unknown" ], "example": "integration", "description": "Only allowed value for type is `integration`" }, "integration": { "type": "string", "enum": [ "cal-video", "google-meet", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ], "example": "cal-video" }, "link": { "type": "string", "example": "https://example.com" }, "credentialId": { "type": "number", "description": "Credential ID associated with the integration" } }, "required": ["type", "integration"] }, "OutputPhoneLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp" ], "example": "phone", "description": "only allowed value for type is `phone`" }, "phone": { "type": "string", "example": "+37120993151" }, "public": { "type": "boolean" } }, "required": ["type", "phone", "public"] }, "OutputOrganizersDefaultAppLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp", "conferencing", "unknown" ], "example": "organizersDefaultApp", "description": "only allowed value for type is `organizersDefaultApp`" } }, "required": ["type"] }, "OutputUnknownLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "organizersDefaultApp", "conferencing", "unknown" ], "example": "unknown", "description": "only allowed value for type is `unknown`" }, "location": { "type": "string" } }, "required": ["type", "location"] }, "EmailDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "example": "email", "description": "only allowed value for type is `email`", "default": "email" }, "label": { "type": "string" }, "required": { "type": "object", "default": true, "description": "Can be set to false only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both. Can only be hidden\n for organization team event types when also providing attendee phone number booking field." }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "email" } }, "required": ["type", "isDefault", "slug"] }, "NameDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "example": "name", "description": "only allowed value for type is `name`. Used for having 1 booking field for both first name and last name.", "default": "name" }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&name=bob`, the name field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "name" }, "required": { "type": "boolean" } }, "required": ["type", "isDefault", "slug", "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", "description": "This booking field is returned only if the event type has more than one location. The purpose of this field is to allow the user to select the location where the event will take place." }, "type": { "type": "string", "default": "radioInput" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["isDefault", "slug", "type", "required", "hidden"] }, "RescheduleReasonDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "enum": ["name", "email", "title", "notes", "guests"], "example": "rescheduleReason", "description": "only allowed value for type is `rescheduleReason`", "default": "rescheduleReason" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&rescheduleReason=busy`, the reschedule reason field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "type": { "type": "string", "default": "textarea" } }, "required": ["slug", "isDefault", "type"] }, "TitleDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "enum": ["name", "email", "title", "notes", "guests"], "example": "title", "description": "only allowed value for type is `title`", "default": "title" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&title=masterclass`, the title field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "type": { "type": "string", "default": "text" } }, "required": ["slug", "isDefault", "type"] }, "NotesDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "enum": ["name", "email", "title", "notes", "guests"], "example": "notes", "description": "only allowed value for type is `notes`", "default": "notes" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `¬es=hello`, the notes field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "type": { "type": "string", "default": "textarea" } }, "required": ["slug", "isDefault", "type"] }, "GuestsDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "enum": ["name", "email", "title", "notes", "guests"], "example": "guests", "description": "only allowed value for type is `guests`", "default": "guests" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&guests=lauris@cal.com`, the guests field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "type": { "type": "string", "default": "multiemail" } }, "required": ["slug", "isDefault", "type"] }, "AddressFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`, the address field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "BooleanFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" }, "disableOnPrefill": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "CheckboxGroupFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `notify-me` and the URL contains query parameter `¬ify-me=true`, the checkbox will be selected and the checkbox field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "MultiEmailFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`, the these emails will be added and none more can be added." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "MultiSelectFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "UrlFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "example": "url", "description": "only allowed value for type is `url`" }, "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 url here" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `video-url` and the URL contains query parameter `&video-url=https://youtube.com/abc`the url field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "NumberFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `calories-per-day` and the URL contains query parameter `&calories-per-day=3000`, the number field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "PhoneFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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. Special slug is `attendeePhoneNumber` - if you create\n a phone input field with this slug for organization team event type you can create an organization team event type that can be booked using phone without requiring an email by setting {\"type\": \"email\", \"required\": false, \"hidden\": true} to the email booking field input in the request body.", "example": "some-slug" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "RadioGroupFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio button will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "SelectFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' will be selected and the select field will be disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "TextAreaFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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..." }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `dear-diary` and the URL contains query parameter `&dear-diary=Today I shipped a feature`, the text area will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "TextFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean", "url" ], "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" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `who-referred-you` and the URL contains query parameter `&who-referred-you=bob`, the text field will be prefilled with this value and disabled." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "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", "hidden", "isDefault"] }, "EventTypeOutput_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "number" } }, "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/OutputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputUnknownLocation_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" }, { "$ref": "#/components/schemas/UrlFieldOutput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean" }, "slotInterval": { "type": "object", "example": 60, "nullable": true }, "minimumBookingNotice": { "type": "number", "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": "object", "nullable": true }, "forwardParamsSuccessRedirect": { "type": "object", "nullable": true }, "successRedirectUrl": { "type": "object", "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" }, "customName": { "type": "string" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "ownerId": { "type": "number", "example": 10 }, "users": { "type": "array", "items": { "type": "string" } } }, "required": [ "id", "lengthInMinutes", "title", "slug", "description", "locations", "bookingFields", "disableGuests", "recurrence", "metadata", "price", "currency", "lockTimeZoneToggleOnBookingPage", "forwardParamsSuccessRedirect", "successRedirectUrl", "isInstantEvent", "scheduleId", "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 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "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!" }, "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/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$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 can't 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 prepended 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": { "description": "Limit how many times this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "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/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" } ] } } } }, "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" }, "delegationCredentialId": { "type": "string" } }, "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"] }, "ConferencingAppsOutputDto": { "type": "object", "properties": { "id": { "type": "number", "description": "Id of the conferencing app credentials" }, "type": { "type": "string", "example": "google_video", "description": "Type of conferencing app" }, "userId": { "type": "number", "description": "Id of the user associated to the conferencing app" }, "invalid": { "type": "boolean", "nullable": true, "example": true, "description": "Whether if the connection is working or not." } }, "required": ["id", "type", "userId"] }, "ConferencingAppOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ConferencingAppsOutputDto" } }, "required": ["status", "data"] }, "GetConferencingAppsOauthUrlResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "ConferencingAppsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ConferencingAppsOutputDto" } } }, "required": ["status", "data"] }, "SetDefaultConferencingAppOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "DefaultConferencingAppsOutputDto": { "type": "object", "properties": { "appSlug": { "type": "string" }, "appLink": { "type": "string" } } }, "GetDefaultConferencingAppOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DefaultConferencingAppsOutputDto" } }, "required": ["status"] }, "DisconnectConferencingAppOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "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": "object", "example": { "key": "value" } }, "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", "isOrganization"] }, "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, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean" }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "example": "Monday" }, "bookingLimits": { "type": "string" }, "includeManagedEventsInLimits": { "type": "boolean" } } }, "CreateOrgTeamDto": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug in kebab-case - if not provided will be generated automatically based on name.", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "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": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "default": "Sunday", "example": "Monday" }, "autoAcceptCreator": { "type": "boolean", "default": true, "description": "If you are a platform customer, don't pass 'false', because then team creator won't be able to create team event types." } }, "required": ["name"] }, "ScheduleAvailabilityInput_2024_06_11": { "type": "object", "properties": { "days": { "type": "array", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "example": ["Monday", "Tuesday"], "description": "Array of days when schedule is active.", "items": { "type": "string", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] } }, "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"] }, "ProfileOutput": { "type": "object", "properties": { "id": { "type": "number", "description": "The ID of the profile of user", "example": 1 }, "organizationId": { "type": "number", "description": "The ID of the organization of user", "example": 1 }, "userId": { "type": "number", "description": "The IDof the user", "example": 1 }, "username": { "type": "string", "nullable": true, "description": "The username of the user within the organization context", "example": "john_doe" } }, "required": ["id", "organizationId", "userId"] }, "GetOrgUsersWithProfileOutput": { "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 }, "metadata": { "type": "object", "example": { "key": "value" } }, "profile": { "description": "organization user profile, contains user data within the organizaton context", "allOf": [ { "$ref": "#/components/schemas/ProfileOutput" } ] } }, "required": ["id", "email", "timeZone", "weekStart", "hideBranding", "createdDate", "profile"] }, "GetOrganizationUsersResponseDTO": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GetOrgUsersWithProfileOutput" } } }, "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" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } }, "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": "string", "default": "MEMBER", "enum": ["MEMBER", "ADMIN", "OWNER"] }, "autoAccept": { "type": "boolean", "default": true } }, "required": ["email"] }, "GetOrganizationUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/GetOrgUsersWithProfileOutput" } }, "required": ["status", "data"] }, "UpdateOrganizationUserInput": { "type": "object", "properties": {} }, "BaseAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "name"] }, "TextAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "string" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "NumberAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "number" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "SingleSelectAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "string" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "MultiSelectAttributeOption": { "type": "object", "properties": { "optionId": { "type": "string" }, "option": { "type": "string" } }, "required": ["optionId", "option"] }, "MultiSelectAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "options": { "type": "array", "items": { "$ref": "#/components/schemas/MultiSelectAttributeOption" } } }, "required": ["id", "name", "type", "options"] }, "MembershipUserOutputDto": { "type": "object", "properties": { "avatarUrl": { "type": "string" }, "username": { "type": "string" }, "name": { "type": "string" }, "email": { "type": "string" }, "bio": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": ["email"] }, "OrganizationMembershipOutput": { "type": "object", "properties": { "id": { "type": "number" }, "userId": { "type": "number" }, "teamId": { "type": "number" }, "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" }, "user": { "$ref": "#/components/schemas/MembershipUserOutputDto" }, "attributes": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/TextAttribute" }, { "$ref": "#/components/schemas/NumberAttribute" }, { "$ref": "#/components/schemas/SingleSelectAttribute" }, { "$ref": "#/components/schemas/MultiSelectAttribute" } ] } } }, "required": ["id", "userId", "teamId", "accepted", "role", "user", "attributes"] }, "GetAllOrgMemberships": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "CreateOrgMembershipDto": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"], "description": "If you are platform customer then managed users should only have MEMBER role." }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId", "role"] }, "CreateOrgMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "GetOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "DeleteOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "UpdateOrgMembershipDto": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "UpdateOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "Host": { "type": "object", "properties": { "userId": { "type": "number", "description": "Which user is the host of this event" }, "mandatory": { "type": "boolean", "description": "Only relevant for round robin event types. If true then the user must attend round robin event always." }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] } }, "required": ["userId"] }, "CreateTeamEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "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!" }, "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/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$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" }, { "$ref": "#/components/schemas/UrlFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't 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 prepended 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": { "description": "Limit how many times this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "schedulingType": { "type": "string", "enum": ["collective", "roundRobin", "managed"], "example": "collective", "description": "The scheduling type for the team event - collective, roundRobin or managed." }, "hosts": { "description": "Hosts contain specific team members you want to assign to this event type, but if you want to assign all team members, use `assignAllTeamMembers: true` instead and omit this field. For platform customers the hosts can include userIds only of managed users.", "type": "array", "items": { "$ref": "#/components/schemas/Host" } }, "assignAllTeamMembers": { "type": "boolean", "description": "If true, all current and future team members will be assigned to this event type" }, "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/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" } ] } } }, "required": ["lengthInMinutes", "title", "slug", "schedulingType"] }, "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"] }, "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" }, "avatarUrl": { "type": "string", "nullable": true, "example": "https://cal.com/api/avatar/d95949bc-ccb1-400f-acf6-045c51a16856.png" } }, "required": ["userId", "name"] }, "EventTypeTeam": { "type": "object", "properties": { "id": { "type": "number" }, "slug": { "type": "string" }, "bannerUrl": { "type": "string" }, "name": { "type": "string" }, "logoUrl": { "type": "string" }, "weekStart": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "theme": { "type": "string" } }, "required": ["id"] }, "TeamEventTypeOutput_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "minimum": 1, "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "number", "minimum": 1 } }, "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/OutputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputUnknownLocation_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" }, { "$ref": "#/components/schemas/UrlFieldOutput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean" }, "slotInterval": { "type": "number", "nullable": true, "example": 60 }, "minimumBookingNotice": { "type": "number", "minimum": 0, "example": 0 }, "beforeEventBuffer": { "type": "number", "minimum": 0, "example": 0 }, "afterEventBuffer": { "type": "number", "minimum": 0, "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" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "teamId": { "type": "number" }, "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", "enum": ["roundRobin", "collective", "managed"] }, "team": { "$ref": "#/components/schemas/EventTypeTeam" } }, "required": [ "id", "lengthInMinutes", "title", "slug", "description", "locations", "bookingFields", "disableGuests", "recurrence", "metadata", "price", "currency", "lockTimeZoneToggleOnBookingPage", "forwardParamsSuccessRedirect", "successRedirectUrl", "isInstantEvent", "scheduleId", "teamId", "hosts", "schedulingType", "team" ] }, "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"] }, "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 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "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!" }, "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/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$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 can't 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 prepended 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": { "description": "Limit how many times this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "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}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/Host" } }, "assignAllTeamMembers": { "type": "boolean", "description": "If true, all current and future team members will be assigned to this event type" }, "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/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" } ] } } } }, "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"] }, "TeamMembershipOutput": { "type": "object", "properties": { "id": { "type": "number" }, "userId": { "type": "number" }, "teamId": { "type": "number" }, "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" }, "user": { "$ref": "#/components/schemas/MembershipUserOutputDto" } }, "required": ["id", "userId", "teamId", "accepted", "role", "user"] }, "OrgTeamMembershipsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamMembershipOutput" } } }, "required": ["status", "data"] }, "OrgTeamMembershipOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "UpdateOrgTeamMembershipDto": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "CreateOrgTeamMembershipDto": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId", "role"] }, "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": "string", "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "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": "string", "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "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"] }, "AssignedOptionOutput": { "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" }, "assignedUserIds": { "description": "Ids of the users assigned to the attribute option.", "example": [124, 224], "type": "array", "items": { "type": "string" } } }, "required": ["id", "attributeId", "value", "slug", "assignedUserIds"] }, "GetAllAttributeAssignedOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/AssignedOptionOutput" } } }, "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}}\"}" }, "active": { "type": "boolean" }, "subscriberUrl": { "type": "string" }, "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", "AFTER_HOSTS_CAL_VIDEO_NO_SHOW", "AFTER_GUESTS_CAL_VIDEO_NO_SHOW", "FORM_SUBMITTED_NO_EVENT" ] }, "secret": { "type": "string" } }, "required": ["active", "subscriberUrl", "triggers"] }, "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}}\"}" }, "active": { "type": "boolean" }, "subscriberUrl": { "type": "string" }, "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", "AFTER_HOSTS_CAL_VIDEO_NO_SHOW", "AFTER_GUESTS_CAL_VIDEO_NO_SHOW", "FORM_SUBMITTED_NO_EVENT" ] }, "secret": { "type": "string" } } }, "CreateOutOfOfficeEntryDto": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string", "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-01T00:00:00.000Z" }, "end": { "format": "date-time", "type": "string", "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-10T23:59:59.999Z" }, "notes": { "type": "string", "description": "Optional notes for the out of office entry.", "example": "Vacation in Hawaii" }, "toUserId": { "type": "number", "description": "The ID of the user covering for the out of office period, if applicable.", "example": 2 }, "reason": { "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] } }, "required": ["start", "end"] }, "UpdateOutOfOfficeEntryDto": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string", "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-01T00:00:00.000Z" }, "end": { "format": "date-time", "type": "string", "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-10T23:59:59.999Z" }, "notes": { "type": "string", "description": "Optional notes for the out of office entry.", "example": "Vacation in Hawaii" }, "toUserId": { "type": "number", "description": "The ID of the user covering for the out of office period, if applicable.", "example": 2 }, "reason": { "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] } } }, "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": "object", "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"] }, "CreateTeamInput": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug in kebab-case - if not provided will be generated automatically based on name.", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "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": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "default": "Sunday", "example": "Monday" }, "autoAcceptCreator": { "type": "boolean", "default": true, "description": "If you are a platform customer, don't pass 'false', because then team creator won't be able to create team event types." } }, "required": ["name"] }, "CreateTeamOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/Output" }, { "$ref": "#/components/schemas/TeamOutputDto" } ], "description": "Either an Output object or a TeamOutputDto." } }, "required": ["status", "data"] }, "TeamOutputDto": { "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": "object", "example": { "key": "value" } }, "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", "isOrganization"] }, "GetTeamOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamOutputDto" } }, "required": ["status", "data"] }, "GetTeamsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamOutputDto" } } }, "required": ["status", "data"] }, "UpdateTeamOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamOutputDto" } }, "required": ["status", "data"] }, "GoogleServiceAccountKeyInput": { "type": "object", "properties": { "private_key": { "type": "string" }, "client_email": { "type": "string" }, "client_id": { "type": "string" } }, "required": ["private_key", "client_email", "client_id"] }, "CreateDelegationCredentialInput": { "type": "object", "properties": { "workspacePlatformSlug": { "type": "string" }, "domain": { "type": "string" }, "serviceAccountKey": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/GoogleServiceAccountKeyInput" }, { "$ref": "#/components/schemas/MicrosoftServiceAccountKeyInput" } ] } } }, "required": ["workspacePlatformSlug", "domain", "serviceAccountKey"] }, "WorkspacePlatformDto": { "type": "object", "properties": { "name": { "type": "string" }, "slug": { "type": "string" } }, "required": ["name", "slug"] }, "DelegationCredentialOutput": { "type": "object", "properties": { "id": { "type": "string" }, "enabled": { "type": "boolean" }, "domain": { "type": "string" }, "organizationId": { "type": "number" }, "workspacePlatform": { "$ref": "#/components/schemas/WorkspacePlatformDto" }, "createdAt": { "format": "date-time", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" } }, "required": [ "id", "enabled", "domain", "organizationId", "workspacePlatform", "createdAt", "updatedAt" ] }, "CreateDelegationCredentialOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, "required": ["status", "data"] }, "UpdateDelegationCredentialInput": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "serviceAccountKey": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/GoogleServiceAccountKeyInput" }, { "$ref": "#/components/schemas/MicrosoftServiceAccountKeyInput" } ] } } } }, "UpdateDelegationCredentialOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, "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" }, "delegationCredentialId": { "type": "string", "nullable": true } }, "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" }, "delegationCredentialId": { "type": "string", "nullable": true } }, "required": ["externalId", "readOnly", "isSelected", "credentialId"] }, "ConnectedCalendar": { "type": "object", "properties": { "integration": { "$ref": "#/components/schemas/Integration" }, "credentialId": { "type": "number" }, "delegationCredentialId": { "type": "string", "nullable": true }, "primary": { "$ref": "#/components/schemas/Primary" }, "calendars": { "type": "array", "items": { "$ref": "#/components/schemas/Calendar" } } }, "required": ["integration", "credentialId"] }, "DestinationCalendar": { "type": "object", "properties": { "id": { "type": "object" }, "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 }, "delegationCredentialId": { "type": "string", "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"] }, "CreateCalendarCredentialsInput": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": ["username", "password"] }, "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"] }, "CreateOrganizationInput": { "type": "object", "properties": { "apiKeyDaysValid": { "type": "number", "minimum": 1, "description": "For how many days is managed organization api key valid. Defaults to 30 days.", "example": 60, "default": 30 }, "apiKeyNeverExpires": { "type": "boolean", "description": "If true, organization api key never expires.", "example": true }, "name": { "type": "string", "minLength": 1, "description": "Name of the organization", "example": "CalTeam" }, "slug": { "type": "string", "description": "Organization slug in kebab-case - if not provided will be generated automatically based on name.", "example": "cal-tel" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } } }, "required": ["name"] }, "ManagedOrganizationWithApiKeyOutput": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } }, "apiKey": { "type": "string" } }, "required": ["id", "name", "apiKey"] }, "CreateManagedOrganizationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationWithApiKeyOutput" } }, "required": ["status", "data"] }, "ManagedOrganizationOutput": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": ["id", "name"] }, "GetManagedOrganizationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationOutput" } }, "required": ["status", "data"] }, "GetManagedOrganizationsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ManagedOrganizationOutput" } } }, "required": ["status", "data"] }, "UpdateOrganizationInput": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the organization", "example": "CalTeam" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } } } }, "RoutingFormResponseOutput": { "type": "object", "properties": { "id": { "type": "number" }, "formId": { "type": "string" }, "formFillerId": { "type": "string" }, "routedToBookingUid": { "type": "string" }, "response": { "type": "object", "example": { "f00b26df-f54b-4985-8d98-17c5482c6a24": { "label": "participant", "value": "mamut" } } }, "createdAt": { "format": "date-time", "type": "string" } }, "required": ["id", "formId", "formFillerId", "routedToBookingUid", "response", "createdAt"] }, "GetRoutingFormResponsesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, "required": ["status", "data"] }, "UpdateRoutingFormResponseInput": { "type": "object", "properties": { "response": { "type": "object", "description": "The updated response data" } } }, "UpdateRoutingFormResponseOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, "required": ["status", "data"] }, "RoutingFormOutput": { "type": "object", "properties": { "name": { "type": "string", "example": "My Form" }, "description": { "type": "string", "nullable": true, "example": "This is the description." }, "position": { "type": "number", "example": 0 }, "createdAt": { "type": "string", "example": "2024-03-28T10:00:00.000Z" }, "updatedAt": { "type": "string", "example": "2024-03-28T10:00:00.000Z" }, "userId": { "type": "number", "example": 2313 }, "teamId": { "type": "number", "nullable": true, "example": 4214321 }, "disabled": { "type": "boolean", "example": false }, "id": { "type": "string" }, "routes": { "type": "object", "nullable": true }, "fields": { "type": "object", "nullable": true }, "settings": { "type": "object", "nullable": true } }, "required": [ "name", "description", "position", "createdAt", "updatedAt", "userId", "teamId", "disabled", "id", "routes", "fields", "settings" ] }, "GetRoutingFormsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormOutput" } } }, "required": ["status", "data"] }, "SlotsOutput_2024_09_04": { "type": "object", "properties": {} }, "RangeSlotsOutput_2024_09_04": { "type": "object", "properties": {} }, "ResponseSlotsOutputData": { "type": "object", "properties": { "eventTypeId": { "type": "number" }, "slots": { "oneOf": [ { "$ref": "#/components/schemas/SlotsOutput_2024_09_04" }, { "$ref": "#/components/schemas/RangeSlotsOutput_2024_09_04" } ] } }, "required": ["eventTypeId", "slots"] }, "ResponseSlotsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ResponseSlotsOutputData" } }, "required": ["status", "data"] }, "ReserveSlotInput_2024_09_04": { "type": "object", "properties": { "eventTypeId": { "type": "number", "example": 1, "description": "The ID of the event type for which slot should be reserved." }, "slotStart": { "type": "string", "example": "2024-09-04T09:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing available slot." }, "slotDuration": { "type": "number", "example": "30", "description": "By default slot duration is equal to event type length, but if you want to reserve a slot for an event type that has a variable length you can specify it here as a number in minutes. If you don't have this set explicitly that event type can have one of many lengths you can omit this." }, "reservationDuration": { "type": "number", "example": 5, "description": "ONLY for authenticated requests with api key, access token or OAuth credentials (ID + secret).\n \n For how many minutes the slot should be reserved - for this long time noone else can book this event type at `start` time. If not provided, defaults to 5 minutes." } }, "required": ["eventTypeId", "slotStart"] }, "ReserveSlotOutput_2024_09_04": { "type": "object", "properties": { "eventTypeId": { "type": "number", "example": 1, "description": "The ID of the event type for which slot was reserved." }, "slotStart": { "type": "string", "example": "2024-09-04T09:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing available slot." }, "slotEnd": { "type": "string", "example": "2024-09-04T10:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing slot end." }, "slotDuration": { "type": "number", "example": "30", "description": "By default slot duration is equal to event type length, but if you want to reserve a slot for an event type that has a variable length you can specify it here. If you don't have this set explicitly that event type can have one of many lengths you can omit this." }, "reservationUid": { "type": "string", "example": "e84be5a3-4696-49e3-acc7-b2f3999c3b94", "description": "The unique identifier of the reservation. Use it to update, get or delete the reservation." }, "reservationDuration": { "type": "number", "example": 5, "description": "For how many minutes the slot is reserved - for this long time noone else can book this event type at `start` time." }, "reservationUntil": { "type": "string", "example": "2023-09-04T10:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing time until which the slot is reserved." } }, "required": [ "eventTypeId", "slotStart", "slotEnd", "slotDuration", "reservationUid", "reservationDuration", "reservationUntil" ] }, "ReserveSlotOutputResponse_2024_09_04": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ReserveSlotOutput_2024_09_04" } }, "required": ["status", "data"] }, "GetReservedSlotOutput_2024_09_04": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/GetReservedSlotOutput_2024_09_04" } ] } }, "required": ["status", "data"] }, "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"] }, "BookingInputAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "address", "description": "only allowed value for type is `address` - it refers to address defined by the organizer." } }, "required": ["type"] }, "BookingInputAttendeeAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeAddress", "description": "only allowed value for type is `attendeeAddress`" }, "address": { "type": "string", "example": "123 Example St, City, Country" } }, "required": ["type", "address"] }, "BookingInputAttendeeDefinedLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeDefined", "description": "only allowed value for type is `attendeeDefined`" }, "location": { "type": "string", "example": "321 Example St, City, Country" } }, "required": ["type", "location"] }, "BookingInputAttendeePhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeePhone", "description": "only allowed value for type is `attendeePhone`" }, "phone": { "type": "string", "example": "+37120993151" } }, "required": ["type", "phone"] }, "BookingInputIntegrationLocation_2024_08_13": { "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", "google-meet", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ] } }, "required": ["type", "integration"] }, "BookingInputLinkLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "link", "description": "only allowed value for type is `link` - it refers to link defined by the organizer." } }, "required": ["type"] }, "BookingInputPhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone` - it refers to phone defined by the organizer." } }, "required": ["type"] }, "BookingInputOrganizersDefaultAppLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "organizersDefaultApp", "description": "only available for team event types and the only allowed value for type is `organizersDefaultApp` - it refers to the default app defined by the organizer." } }, "required": ["type"] }, "ValidateBookingLocation_2024_08_13": { "type": "object", "properties": {} }, "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" }, "phoneNumber": { "type": "string", "description": "The phone number of the attendee in international format.", "example": "+919876543210" }, "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", "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" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "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": "Deprecated - use 'location' instead. 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", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." } }, "required": ["start", "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" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "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": "Deprecated - use 'location' instead. 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", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." }, "instant": { "type": "boolean", "description": "Flag indicating if the booking is an instant booking. Only available for team events.", "example": true } }, "required": ["start", "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" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "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": "Deprecated - use 'location' instead. 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", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." }, "recurrenceCount": { "type": "number", "description": "The number of recurrences. If not provided then event type recurrence count will be used. Can't be more than\n event type recurrence count", "example": 5 } }, "required": ["start", "attendee"] }, "BookingHost": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "name": { "type": "string", "example": "Jane Doe" }, "email": { "type": "string", "example": "jane100@example.com" }, "username": { "type": "string", "example": "jane100" }, "timeZone": { "type": "string", "example": "America/Los_Angeles" } }, "required": ["id", "name", "email", "username", "timeZone"] }, "EventType": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "slug": { "type": "string", "example": "some-event" } }, "required": ["id", "slug"] }, "BookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/Attendee" } }, "guests": { "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "bookingFieldsResponses" ] }, "RecurringBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/Attendee" } }, "guests": { "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "bookingFieldsResponses", "recurringBookingUid" ] }, "SeatedAttendee": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john@example.com" }, "timeZone": { "type": "string", "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" ], "example": "en" }, "absent": { "type": "boolean", "example": false }, "phoneNumber": { "type": "string", "example": "+1234567890" }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": ["name", "email", "timeZone", "absent", "seatUid", "bookingFieldsResponses"] }, "CreateSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "seatUid", "attendees" ] }, "CreateRecurringSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "seatUid", "attendees", "recurringBookingUid" ] }, "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" } }, { "$ref": "#/components/schemas/CreateSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/CreateRecurringSeatedBookingOutput_2024_08_13" } } ], "description": "Booking data, which can be either a BookingOutput object or an array of RecurringBookingOutput objects" } }, "required": ["status", "data"] }, "GetSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees" ] }, "GetRecurringSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "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": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "recurringBookingUid" ] }, "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" } }, { "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" } } ], "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" }, "error": { "type": "object" } }, "required": ["status", "data"] }, "PaginationMetaDto": { "type": "object", "properties": { "totalItems": { "type": "number", "minimum": 0, "description": "The total number of items available across all pages, matching the query criteria.", "example": 123 }, "remainingItems": { "type": "number", "minimum": 0, "description": "The number of items remaining to be fetched *after* the current page. Calculated as: `totalItems - (skip + itemsPerPage)`.", "example": 103 }, "itemsPerPage": { "type": "number", "minimum": 1, "description": "The maximum number of items requested per page.", "example": 10 }, "currentPage": { "type": "number", "minimum": 1, "description": "The current page number being returned.", "example": 2 }, "totalPages": { "type": "number", "minimum": 0, "description": "The total number of pages available.", "example": 13 }, "hasNextPage": { "type": "boolean", "description": "Indicates if there is a subsequent page available after the current one.", "example": true }, "hasPreviousPage": { "type": "boolean", "description": "Indicates if there is a preceding page available before the current one.", "example": true } }, "required": [ "totalItems", "remainingItems", "itemsPerPage", "currentPage", "totalPages", "hasNextPage", "hasPreviousPage" ] }, "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" }, { "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" } ] }, "description": "Array of booking data, which can contain either BookingOutput objects or RecurringBookingOutput objects" }, "pagination": { "$ref": "#/components/schemas/PaginationMetaDto" }, "error": { "type": "object" } }, "required": ["status", "data", "pagination"] }, "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" }, "rescheduledBy": { "type": "string", "description": "Email of the person who is rescheduling the booking - only needed when rescheduling a booking that requires a confirmation.\nIf event type owner email is provided then rescheduled booking will be automatically confirmed. If attendee email or no email is passed then the event type\nowner will have to confirm the rescheduled booking." }, "reschedulingReason": { "type": "string", "example": "User requested reschedule", "description": "Reason for rescheduling the booking" } }, "required": ["start"] }, "RescheduleSeatedBookingInput_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" }, "rescheduledBy": { "type": "string", "description": "Email of the person who is rescheduling the booking - only needed when rescheduling a booking that requires a confirmation.\nIf event type owner email is provided then rescheduled booking will be automatically confirmed. If attendee email or no email is passed then the event type\nowner will have to confirm the rescheduled booking." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1", "description": "Uid of the specific seat within booking." } }, "required": ["start", "seatUid"] }, "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" }, { "$ref": "#/components/schemas/CreateSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/CreateRecurringSeatedBookingOutput_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" }, "cancelSubsequentBookings": { "type": "boolean", "description": "For recurring non-seated booking - if true, cancel booking with the bookingUid of the individual recurrence and all recurrences that come after it." } } }, "CancelSeatedBookingInput_2024_08_13": { "type": "object", "properties": { "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1", "description": "Uid of the specific seat within booking." } }, "required": ["seatUid"] }, "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" } }, { "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_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": { "type": "array", "items": { "$ref": "#/components/schemas/Attendee" } } } }, "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"] }, "ReassignedToDto": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john.doe@example.com" } }, "required": ["id", "name", "email"] }, "ReassignBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } ], "description": "Booking data, which can be either a ReassignAutoBookingOutput object or a ReassignManualBookingOutput object", "allOf": [ { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } ] } }, "required": ["status", "data"] }, "ReassignToUserBookingInput_2024_08_13": { "type": "object", "properties": { "reason": { "type": "string", "example": "Host has to take another call", "description": "Reason for reassigning the booking" } } }, "DeclineBookingInput_2024_08_13": { "type": "object", "properties": { "reason": { "type": "string", "example": "Host has to take another call", "description": "Reason for declining a booking that requires a confirmation" } } }, "CalendarLink": { "type": "object", "properties": { "label": { "type": "string", "description": "The label of the calendar link" }, "link": { "type": "string", "description": "The link to the calendar" } }, "required": ["label", "link"] }, "CalendarLinksOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "object", "description": "The status of the request, always 'success' for successful responses", "example": "success" }, "data": { "description": "Calendar links for the booking", "type": "array", "items": { "$ref": "#/components/schemas/CalendarLink" } } }, "required": ["status", "data"] }, "BookingReference": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of the booking reference" }, "eventUid": { "type": "string", "description": "The event uid of the booking" }, "destinationCalendarId": { "type": "string", "nullable": true, "description": "The id of the calendar the event is created in" }, "id": { "type": "number", "description": "The id of the booking reference" } }, "required": ["type", "eventUid", "destinationCalendarId", "id"] }, "BookingReferencesOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "object", "description": "The status of the request, always 'success' for successful responses", "example": "success" }, "data": { "description": "Booking References", "type": "array", "items": { "$ref": "#/components/schemas/BookingReference" } } }, "required": ["status", "data"] }, "CreateTeamMembershipInput": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId"] }, "CreateTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "GetTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "GetTeamMembershipsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "UpdateTeamMembershipInput": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "UpdateTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "DeleteTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "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 specific calendar, as returned by the /calendars endpoint" }, "delegationCredentialId": { "type": "string" } }, "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"] }, "RequestEmailVerificationInput": { "type": "object", "properties": { "email": { "type": "string", "description": "Email to verify.", "example": "acme@example.com" } }, "required": ["email"] }, "RequestEmailVerificationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "RequestPhoneVerificationInput": { "type": "object", "properties": { "phone": { "type": "string", "description": "Phone number to verify.", "example": "+372 5555 6666" } }, "required": ["phone"] }, "RequestPhoneVerificationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "VerifyEmailInput": { "type": "object", "properties": { "email": { "type": "string", "description": "Email to verify.", "example": "example@acme.com" }, "code": { "type": "string", "description": "verification code sent to the email to verify", "example": "1ABG2C" } }, "required": ["email", "code"] }, "WorkingHours": { "type": "object", "properties": { "days": { "type": "array", "items": { "type": "number" } }, "startTime": { "type": "number" }, "endTime": { "type": "number" }, "userId": { "type": "number", "nullable": true } }, "required": ["days", "startTime", "endTime"] }, "AvailabilityModel": { "type": "object", "properties": { "id": { "type": "number" }, "userId": { "type": "number", "nullable": true }, "eventTypeId": { "type": "number", "nullable": true }, "days": { "type": "array", "items": { "type": "number" } }, "startTime": { "format": "date-time", "type": "string" }, "endTime": { "format": "date-time", "type": "string" }, "date": { "format": "date-time", "type": "string", "nullable": true }, "scheduleId": { "type": "number", "nullable": true } }, "required": ["id", "days", "startTime", "endTime"] }, "ScheduleOutput": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "isManaged": { "type": "boolean" }, "workingHours": { "type": "array", "items": { "$ref": "#/components/schemas/WorkingHours" } }, "schedule": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityModel" } }, "availability": { "items": { "type": "array" }, "type": "array" }, "timeZone": { "type": "string" }, "dateOverrides": { "type": "array", "items": { "type": "object" } }, "isDefault": { "type": "boolean" }, "isLastSchedule": { "type": "boolean" }, "readOnly": { "type": "boolean" } }, "required": [ "id", "name", "isManaged", "workingHours", "schedule", "availability", "timeZone", "isDefault", "isLastSchedule", "readOnly" ] }, "UserVerifiedEmailOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "VerifyPhoneInput": { "type": "object", "properties": { "phone": { "type": "string", "description": "phone number to verify.", "example": "+37255556666" }, "code": { "type": "string", "description": "verification code sent to the phone number to verify", "example": "1ABG2C" } }, "required": ["phone", "code"] }, "UserVerifiedPhoneOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "UserVerifiedEmailsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "UserVerifiedPhonesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "TeamVerifiedEmailOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "TeamVerifiedPhoneOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "TeamVerifiedEmailsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] }, "TeamVerifiedPhonesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, "required": ["status", "data"] } } } }