{ "openapi": "3.0.0", "paths": { "/v2/provider/{clientId}": { "get": { "operationId": "CalProviderController_verifyClientId", "summary": "Get a provider", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderVerifyClientOutput" } } } } }, "tags": ["Platform / Cal Provider"] } }, "/v2/provider/{clientId}/access-token": { "get": { "operationId": "CalProviderController_verifyAccessToken", "summary": "Verify an access token", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderVerifyAccessTokenOutput" } } } } }, "tags": ["Platform / Cal Provider"] } }, "/v2/gcal/oauth/auth-url": { "get": { "operationId": "GcalController_redirect", "summary": "Get auth URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcalAuthUrlOutput" } } } } }, "tags": ["Platform / Google Calendar"] } }, "/v2/gcal/oauth/save": { "get": { "operationId": "GcalController_save", "summary": "Connect a calendar", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcalSaveRedirectOutput" } } } } }, "tags": ["Platform / Google Calendar"] } }, "/v2/gcal/check": { "get": { "operationId": "GcalController_check", "summary": "Check a calendar connection status", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcalCheckOutput" } } } } }, "tags": ["Platform / Google Calendar"] } }, "/v2/oauth-clients/{clientId}/users": { "get": { "operationId": "OAuthClientUsersController_getManagedUsers", "summary": "Get all managed users", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUsersOutput" } } } } }, "tags": ["Platform / Managed Users"] }, "post": { "operationId": "OAuthClientUsersController_createUser", "summary": "Create a managed user", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedUserInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedUserOutput" } } } } }, "tags": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}": { "get": { "operationId": "OAuthClientUsersController_getUserById", "summary": "Get a managed user", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Platform / Managed Users"] }, "patch": { "operationId": "OAuthClientUsersController_updateUser", "summary": "Update a managed user", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateManagedUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Platform / Managed Users"] }, "delete": { "operationId": "OAuthClientUsersController_deleteUser", "summary": "Delete a managed user", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { "post": { "operationId": "OAuthClientUsersController_forceRefresh", "summary": "Force refresh tokens", "description": "If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials.\n Each access token is valid for 60 minutes and each refresh token for 1 year. Make sure to store them later in your database, for example, by updating the User model to have `calAccessToken` and `calRefreshToken` columns.", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KeysResponseDto" } } } } }, "tags": ["Platform / Managed Users"] } }, "/v2/oauth/{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. Each access token is valid for 60 minutes and \n each refresh token for 1 year. Make sure to store them later in your database, for example, by updating the User model to have `calAccessToken` and `calRefreshToken` columns.", "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": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", "summary": "Delete all webhooks", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] } }, "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { "patch": { "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", "summary": "Update a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", "summary": "Get a webhook", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", "summary": "Delete a webhook", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Platform / Webhooks"] } }, "/v2/organizations/{orgId}/attributes": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttributes", "summary": "Get all attributes", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "post": { "operationId": "OrganizationsAttributesController_createOrganizationAttribute", "summary": "Create an attribute", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributeInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttribute", "summary": "Get an attribute", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSingleAttributeOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "patch": { "operationId": "OrganizationsAttributesController_updateOrganizationAttribute", "summary": "Update an attribute", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributeInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "delete": { "operationId": "OrganizationsAttributesController_deleteOrganizationAttribute", "summary": "Delete an attribute", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options": { "post": { "operationId": "OrganizationsOptionsAttributesController_createOrganizationAttributeOption", "summary": "Create an attribute option", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptions", "summary": "Get all attribute options", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": { "delete": { "operationId": "OrganizationsOptionsAttributesController_deleteOrganizationAttributeOption", "summary": "Delete an attribute option", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "optionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "patch": { "operationId": "OrganizationsOptionsAttributesController_updateOrganizationAttributeOption", "summary": "Update an attribute option", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "optionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributeOptionInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { "post": { "operationId": "OrganizationsOptionsAttributesController_assignOrganizationAttributeOptionToUser", "summary": "Assign an attribute to a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignOrganizationAttributeOptionToUserInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptionsForUser", "summary": "Get all attribute options for a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { "delete": { "operationId": "OrganizationsOptionsAttributesController_unassignOrganizationAttributeOptionFromUser", "summary": "Unassign an attribute from a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeOptionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnassignOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { "post": { "operationId": "OrganizationsEventTypesController_createTeamEventType", "summary": "Create an event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Event Types"] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", "summary": "Get a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of team event type to return.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Orgs / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "OrganizationsEventTypesController_getTeamEventType", "summary": "Get an event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Event Types"] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", "summary": "Update a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Event Types"] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", "summary": "Delete a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "OrganizationsEventTypesController_createPhoneCall", "summary": "Create a phone call", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallOutput" } } } } }, "tags": ["Orgs / Event Types"] } }, "/v2/organizations/{orgId}/teams/event-types": { "get": { "operationId": "OrganizationsEventTypesController_getTeamsEventTypes", "summary": "Get all team event types", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Orgs / Event Types"] } }, "/v2/organizations/{orgId}/memberships": { "get": { "operationId": "OrganizationsMembershipsController_getAllMemberships", "summary": "Get all memberships", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllOrgMemberships" } } } } }, "tags": ["Orgs / Memberships"] }, "post": { "operationId": "OrganizationsMembershipsController_createMembership", "summary": "Create a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgMembershipDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgMembershipOutput" } } } } }, "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsMembershipsController_getOrgMembership", "summary": "Get a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] }, "delete": { "operationId": "OrganizationsMembershipsController_deleteMembership", "summary": "Delete a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] }, "patch": { "operationId": "OrganizationsMembershipsController_updateMembership", "summary": "Update a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgMembershipDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/schedules": { "get": { "operationId": "OrganizationsSchedulesController_getOrganizationSchedules", "summary": "Get all schedules", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { "post": { "operationId": "OrganizationsSchedulesController_createUserSchedule", "summary": "Create a schedule", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules", "Orgs / Users / Schedules"] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", "summary": "Get all schedules", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules", "Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { "get": { "operationId": "OrganizationsSchedulesController_getUserSchedule", "summary": "Get a schedule", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules", "Orgs / Users / Schedules"] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", "summary": "Update a schedule", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules", "Orgs / Users / Schedules"] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", "summary": "Delete a schedule", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules", "Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/teams": { "get": { "operationId": "OrganizationsTeamsController_getAllTeams", "summary": "Get all teams", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams", "Teams"] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", "summary": "Create a team", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "x-cal-client-id", "required": true, "in": "header", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgTeamDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/me": { "get": { "operationId": "OrganizationsTeamsController_getMyTeams", "summary": "Get teams membership for user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgMeTeamsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}": { "get": { "operationId": "OrganizationsTeamsController_getTeam", "summary": "Get a team", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", "summary": "Delete a team", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "patch": { "operationId": "OrganizationsTeamsController_updateTeam", "summary": "Update a team", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgTeamDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getAllOrgTeamMemberships", "summary": "Get all memberships", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "post": { "operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership", "summary": "Create a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgTeamMembershipDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getOrgTeamMembership", "summary": "Get a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "delete": { "operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership", "summary": "Delete a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "patch": { "operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership", "summary": "Update a membership", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgTeamMembershipDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules": { "get": { "operationId": "OrganizationsTeamsSchedulesController_getUserSchedules", "summary": "Get schedules of a team member", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Teams / Schedules", "Orgs / Teams / Users / Schedules"] } }, "/v2/organizations/{orgId}/users": { "get": { "operationId": "OrganizationsUsersController_getOrganizationsUsers", "summary": "Get all users", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } }, { "name": "emails", "required": false, "in": "query", "description": "The email address or an array of email addresses to filter by", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUsersResponseDTO" } } } } }, "tags": ["Orgs / Users"] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", "summary": "Create a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationUserInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUserOutput" } } } } }, "tags": ["Orgs / Users"] } }, "/v2/organizations/{orgId}/users/{userId}": { "patch": { "operationId": "OrganizationsUsersController_updateOrganizationUser", "summary": "Update a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUserOutput" } } } } }, "tags": ["Orgs / Users"] }, "delete": { "operationId": "OrganizationsUsersController_deleteOrganizationUser", "summary": "Delete a user", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUserOutput" } } } } }, "tags": ["Orgs / Users"] } }, "/v2/organizations/{orgId}/webhooks": { "get": { "operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhooksOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "post": { "operationId": "OrganizationsWebhooksController_createOrganizationWebhook", "summary": "Create a webhook", "parameters": [ { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] } }, "/v2/organizations/{orgId}/webhooks/{webhookId}": { "get": { "operationId": "OrganizationsWebhooksController_getOrganizationWebhook", "summary": "Get a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "delete": { "operationId": "OrganizationsWebhooksController_deleteWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "patch": { "operationId": "OrganizationsWebhooksController_updateOrgWebhook", "summary": "Update a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] } }, "/v2/bookings": { "post": { "operationId": "BookingsController_2024_08_13_createBooking", "summary": "Create a booking", "description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n\n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of booking input: CreateBookingInput_2024_08_13, CreateInstantBookingInput_2024_08_13, or CreateRecurringBookingInput_2024_08_13", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CreateBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CreateInstantBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CreateRecurringBookingInput_2024_08_13" } ] } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] }, "get": { "operationId": "BookingsController_2024_08_13_getBookings", "summary": "Get all bookings", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "status", "required": false, "in": "query", "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", "example": "?status=upcoming,past", "schema": { "type": "array", "items": { "type": "string", "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] } } }, { "name": "attendeeEmail", "required": false, "in": "query", "description": "Filter bookings by the attendee's email address.", "example": "example@domain.com", "schema": { "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "example": "John Doe", "schema": { "type": "string" } }, { "name": "eventTypeIds", "required": false, "in": "query", "description": "Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.", "example": "?eventTypeIds=100,200", "schema": { "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the user.", "example": "?eventTypeId=100", "schema": { "type": "string" } }, { "name": "teamsIds", "required": false, "in": "query", "description": "Filter bookings by team ids that user is part of. Team ids must be separated by a comma.", "example": "?teamIds=50,60", "schema": { "type": "string" } }, { "name": "teamId", "required": false, "in": "query", "description": "Filter bookings by team id that user is part of", "example": "?teamId=50", "schema": { "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "example": "?afterStart=2025-03-07T10:00:00.000Z", "schema": { "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "schema": { "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortCreated", "required": false, "in": "query", "description": "Sort results by their creation time (when booking was made) in ascending or descending order.", "example": "?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": { "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 `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}": { "get": { "operationId": "BookingsController_2024_08_13_getBooking", "summary": "Get a booking", "description": "`:bookingUid` can be\n\n 1. uid of a normal booking\n\n 2. uid of one of the recurring booking recurrences\n\n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reschedule": { "post": { "operationId": "BookingsController_2024_08_13_rescheduleBooking", "summary": "Reschedule a booking", "description": "Reschedule a booking by passing `:bookingUid` of the booking that should be rescheduled and pass request body with a new start time to create a new booking.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } } ], "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" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CancelBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/mark-absent": { "post": { "operationId": "BookingsController_2024_08_13_markNoShow", "summary": "Mark a booking absence", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkAbsentBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkAbsentBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign": { "post": { "operationId": "BookingsController_2024_08_13_reassignBooking", "summary": "Automatically reassign booking to a new host", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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 user", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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 booking that requires a confirmation", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/decline": { "post": { "operationId": "BookingsController_2024_08_13_declineBooking", "summary": "Decline booking that requires a confirmation", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-08-13`", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeclineBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/calendars/ics-feed/save": { "post": { "operationId": "CalendarsController_createIcsFeed", "summary": "Save an ICS feed", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIcsFeedInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIcsFeedOutputResponseDto" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/ics-feed/check": { "get": { "operationId": "CalendarsController_checkIcsFeed", "summary": "Check an ICS feed", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/busy-times": { "get": { "operationId": "CalendarsController_getBusyTimes", "summary": "Get busy times", "parameters": [ { "name": "loggedInUsersTz", "required": true, "in": "query", "description": "The timezone of the logged in user represented as a string", "example": "America/New_York", "schema": { "type": "string" } }, { "name": "credentialId", "in": "query", "required": true, "schema": { "type": "number" } }, { "name": "externalId", "in": "query", "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": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectedCalendarsOutput" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/connect": { "get": { "operationId": "CalendarsController_redirect", "summary": "Get connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } }, { "name": "calendar", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/save": { "get": { "operationId": "CalendarsController_save", "summary": "Save a calendar", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "calendar", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/credentials": { "post": { "operationId": "CalendarsController_syncCredentials", "summary": "Sync credentials", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "201": { "description": "" } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/check": { "get": { "operationId": "CalendarsController_check", "summary": "Check a calendar connection", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/disconnect": { "post": { "operationId": "CalendarsController_deleteCalendarCredentials", "summary": "Disconnect a calendar", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCalendarCredentialsInputBodyDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputResponseDto" } } } } }, "tags": ["Calendars"] } }, "/v2/conferencing/{app}/connect": { "post": { "operationId": "ConferencingController_connect", "summary": "Connect your conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "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", "schema": { "type": "string" } }, { "name": "app", "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/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", "schema": { "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": [], "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", "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": [], "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", "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": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DestinationCalendarsInputBodyDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DestinationCalendarsOutputResponseDto" } } } } }, "tags": ["Destination Calendars"] } }, "/v2/event-types": { "post": { "operationId": "EventTypesController_2024_06_14_createEventType", "summary": "Create an event type", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-14`", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEventTypeInput_2024_06_14" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "get": { "operationId": "EventTypesController_2024_06_14_getEventTypes", "summary": "Get all event types", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-14`", "required": true, "schema": { "type": "string" } }, { "name": "username", "required": 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" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "patch": { "operationId": "EventTypesController_2024_06_14_updateEventType", "summary": "Update an event type", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-14`", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEventTypeInput_2024_06_14" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "delete": { "operationId": "EventTypesController_2024_06_14_deleteEventType", "summary": "Delete an event type", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-14`", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] } }, "/v2/event-types/{eventTypeId}/webhooks": { "post": { "operationId": "EventTypeWebhooksController_createEventTypeWebhook", "summary": "Create a webhook", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhooksOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks", "summary": "Delete all webhooks", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] } }, "/v2/event-types/{eventTypeId}/webhooks/{webhookId}": { "patch": { "operationId": "EventTypeWebhooksController_updateEventTypeWebhook", "summary": "Update a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhook", "summary": "Get a webhook", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", "summary": "Delete a webhook", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] } }, "/v2/me": { "get": { "operationId": "MeController_getMe", "summary": "Get my profile", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMeOutput" } } } } }, "tags": ["Me"] }, "patch": { "operationId": "MeController_updateMe", "summary": "Update my profile", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateManagedUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateMeOutput" } } } } }, "tags": ["Me"] } }, "/v2/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 `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "get": { "operationId": "SchedulesController_2024_06_11_getSchedules", "summary": "Get all schedules", "description": "Get all schedules of the authenticated user.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/schedules/default": { "get": { "operationId": "SchedulesController_2024_06_11_getDefaultSchedule", "summary": "Get default schedule", "description": "Get the default schedule of the authenticated user.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/schedules/{scheduleId}": { "get": { "operationId": "SchedulesController_2024_06_11_getSchedule", "summary": "Get a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "patch": { "operationId": "SchedulesController_2024_06_11_updateSchedule", "summary": "Update a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "delete": { "operationId": "SchedulesController_2024_06_11_deleteSchedule", "summary": "Delete a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to `2024-06-11`", "required": true, "schema": { "type": "string" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/selected-calendars": { "post": { "operationId": "SelectedCalendarsController_addSelectedCalendar", "summary": "Add a selected calendar", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarsInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" } } } } }, "tags": ["Selected Calendars"] }, "delete": { "operationId": "SelectedCalendarsController_removeSelectedCalendar", "summary": "Delete a selected calendar", "parameters": [ { "name": "integration", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "externalId", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "credentialId", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" } } } } }, "tags": ["Selected Calendars"] } }, "/v2/slots/reserve": { "post": { "operationId": "SlotsController_reserveSlot", "summary": "Reserve a slot", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotInput" } } } }, "responses": { "201": { "description": "Successful response returning uid of reserved slot.", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "data": { "type": "object", "properties": { "uid": { "type": "string", "example": "e2a7bcf9-cc7b-40a0-80d3-657d391775a6" } } } } } } } } }, "tags": ["Slots"] } }, "/v2/slots/selected-slot": { "delete": { "operationId": "SlotsController_deleteSelectedSlot", "summary": "Delete a selected slot", "parameters": [ { "name": "uid", "required": true, "in": "query", "description": "Unique identifier for the slot to be removed.", "example": "e2a7bcf9-cc7b-40a0-80d3-657d391775a6", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Response deleting reserved slot by uid.", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "success" } } } } } } }, "tags": ["Slots"] } }, "/v2/slots/available": { "get": { "operationId": "SlotsController_getAvailableSlots", "summary": "Get available slots", "parameters": [ { "name": "startTime", "required": true, "in": "query", "description": "Start date string starting from which to fetch slots in UTC timezone.", "example": "2022-06-14T00:00:00.000Z", "schema": { "type": "string" } }, { "name": "endTime", "required": true, "in": "query", "description": "End date string until which to fetch slots in UTC timezone.", "example": "2022-06-14T23:59:59.999Z", "schema": { "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Event Type ID for which slots are being fetched.", "example": 100, "schema": { "type": "number" } }, { "name": "eventTypeSlug", "required": false, "in": "query", "description": "Slug of the event type for which slots are being fetched.", "schema": { "type": "string" } }, { "name": "usernameList", "required": false, "in": "query", "description": "Only for dynamic events - list of usernames for which slots are being fetched.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "debug", "required": false, "in": "query", "schema": { "type": "boolean" } }, { "name": "duration", "required": false, "in": "query", "description": "Only for dynamic events - length of returned slots.", "schema": { "type": "number" } }, { "name": "rescheduleUid", "required": false, "in": "query", "schema": { "nullable": true, "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "orgSlug", "required": false, "in": "query", "description": "Organization slug.", "schema": { "type": "string" } }, { "name": "slotFormat", "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" } } ], "responses": { "200": { "description": "Available time slots retrieved successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "data": { "type": "object", "properties": { "slots": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "oneOf": [ { "properties": { "time": { "type": "string", "format": "date-time", "example": "2024-09-25T08:00:00.000Z" } } }, { "properties": { "startTime": { "type": "string", "format": "date-time", "example": "2024-09-25T08:00:00.000Z" }, "endTime": { "type": "string", "format": "date-time", "example": "2024-09-25T08:30:00.000Z" } } } ] } } } } } }, "example": { "status": "success", "data": { "slots": { "2024-09-25": [ { "time": "2024-09-25T08:00:00.000Z" }, { "time": "2024-09-25T08:15:00.000Z" } ], "2024-09-26": [ { "startTime": "2024-09-26T08:00:00.000Z", "endTime": "2024-09-26T08:30:00.000Z" }, { "startTime": "2024-09-26T08:15:00.000Z", "endTime": "2024-09-26T08:45:00.000Z" } ] } } } } } } } }, "tags": ["Slots"] } }, "/v2/stripe/connect": { "get": { "operationId": "StripeController_redirect", "summary": "Get stripe connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripConnectOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/stripe/save": { "get": { "operationId": "StripeController_save", "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": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/stripe/check/{teamId}": { "get": { "operationId": "StripeController_checkTeamStripeConnection", "summary": "Check team stripe connection", "parameters": [ { "name": "teamId", "required": true, "in": "path", "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": [], "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": [], "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": "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": "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": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Teams"] } }, "/v2/teams/{teamId}/memberships": { "post": { "operationId": "TeamsMembershipsController_createTeamMembership", "summary": "Create a membership", "parameters": [ { "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": "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": "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": "Create a membership", "parameters": [ { "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": "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/timezones": { "get": { "operationId": "TimezonesController_getTimeZones", "summary": "Get all timezones", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Timezones"] } }, "/v2/webhooks": { "post": { "operationId": "WebhooksController_createWebhook", "summary": "Create a webhook", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhooks", "summary": "Get all webooks", "description": "Gets a paginated list of webhooks for the authenticated user.", "parameters": [ { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "example": 10, "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "example": 0, "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhooksOutputResponseDto" } } } } }, "tags": ["Webhooks"] } }, "/v2/webhooks/{webhookId}": { "patch": { "operationId": "WebhooksController_updateWebhook", "summary": "Update a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhook", "summary": "Get a webhook", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "delete": { "operationId": "WebhooksController_deleteWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] } } }, "info": { "title": "Cal.com API v2", "description": "", "version": "1.0.0", "contact": {} }, "tags": [], "servers": [], "components": { "schemas": { "ManagedUserOutput": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "email": { "type": "string", "example": "alice+cluo37fwd0001khkzqqynkpj3@example.com" }, "username": { "type": "string", "nullable": true, "example": "alice" }, "name": { "type": "string", "nullable": true, "example": "alice" }, "timeZone": { "type": "string", "example": "America/New_York" }, "weekStart": { "type": "string", "example": "Sunday" }, "createdDate": { "type": "string", "example": "2024-04-01T00:00:00.000Z" }, "timeFormat": { "type": "number", "nullable": true, "example": 12 }, "defaultScheduleId": { "type": "number", "nullable": true, "example": null }, "locale": { "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW" ], "type": "string", "example": "en" }, "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" } }, "required": [ "id", "email", "username", "name", "timeZone", "weekStart", "createdDate", "timeFormat", "defaultScheduleId" ] }, "GetManagedUsersOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ManagedUserOutput" } } }, "required": ["status", "data"] }, "CreateManagedUserInput": { "type": "object", "properties": { "email": { "type": "string", "example": "alice@example.com" }, "name": { "type": "string", "example": "Alice Smith", "description": "Managed user's name is used in emails" }, "timeFormat": { "type": "number", "enum": [12, 24], "example": 12, "description": "Must be a number 12 or 24" }, "weekStart": { "type": "string", "example": "Monday", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] }, "timeZone": { "type": "string", "example": "America/New_York", "description": "Timezone is used to create user's default schedule from Monday to Friday from 9AM to 5PM. If it is not passed then user does not have\n a default schedule and it must be created manually via the /schedules endpoint. Until the schedule is created, the user can't access availability atom to set his / her availability nor booked.\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" } }, "required": ["email", "name"] }, "CreateManagedUserData": { "type": "object", "properties": { "user": { "$ref": "#/components/schemas/ManagedUserOutput" }, "accessToken": { "type": "string" }, "refreshToken": { "type": "string" }, "accessTokenExpiresAt": { "type": "number" } }, "required": ["user", "accessToken", "refreshToken", "accessTokenExpiresAt"] }, "CreateManagedUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateManagedUserData" }, "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" } } }, "KeysDto": { "type": "object", "properties": { "accessToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "refreshToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "accessTokenExpiresAt": { "type": "number" } }, "required": ["accessToken", "refreshToken", "accessTokenExpiresAt"] }, "KeysResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/KeysDto" } }, "required": ["status", "data"] }, "CreateOAuthClientInput": { "type": "object", "properties": { "logo": { "type": "string" }, "name": { "type": "string" }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "permissions": { "type": "number" }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" } }, "required": ["name", "redirectUris", "permissions"] }, "DataDto": { "type": "object", "properties": { "clientId": { "type": "string", "example": "clsx38nbl0001vkhlwin9fmt0" }, "clientSecret": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi" } }, "required": ["clientId", "clientSecret"] }, "CreateOAuthClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "example": { "clientId": "clsx38nbl0001vkhlwin9fmt0", "clientSecret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi" }, "allOf": [ { "$ref": "#/components/schemas/DataDto" } ] } }, "required": ["status", "data"] }, "PlatformOAuthClientDto": { "type": "object", "properties": { "id": { "type": "string", "example": "clsx38nbl0001vkhlwin9fmt0" }, "name": { "type": "string", "example": "MyClient" }, "secret": { "type": "string", "example": "secretValue" }, "permissions": { "type": "number", "example": 3 }, "logo": { "type": "string", "nullable": true, "example": "https://example.com/logo.png" }, "redirectUris": { "example": ["https://example.com/callback"], "type": "array", "items": { "type": "string" } }, "organizationId": { "type": "number", "example": 1 }, "createdAt": { "format": "date-time", "type": "string", "example": "2024-03-23T08:33:21.851Z" } }, "required": ["id", "name", "secret", "permissions", "redirectUris", "organizationId", "createdAt"] }, "GetOAuthClientsResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/PlatformOAuthClientDto" } } }, "required": ["status", "data"] }, "GetOAuthClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/PlatformOAuthClientDto" } }, "required": ["status", "data"] }, "UpdateOAuthClientInput": { "type": "object", "properties": { "logo": { "type": "string" }, "name": { "type": "string" }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" } } }, "RefreshTokenInput": { "type": "object", "properties": { "refreshToken": { "type": "string", "description": "Managed user's refresh token." } }, "required": ["refreshToken"] }, "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"] } }, "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", "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "AddressFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "address", "description": "only allowed value for type is `address`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your address" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 1234 Main St" }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "TextFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "text", "description": "only allowed value for type is `text`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your text" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Enter text here" }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "NumberFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "number", "description": "only allowed value for type is `number`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter a number" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 100" }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "TextAreaFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "textarea", "description": "only allowed value for type is `textarea`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter detailed information" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Detailed description here..." }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "SelectFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "select", "description": "only allowed value for type is `select`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select an option" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "Select..." }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder", "options"] }, "MultiSelectFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "multiselect", "description": "only allowed value for type is `multiselect`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select multiple options" }, "required": { "type": "boolean" }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "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." } }, "required": ["type", "slug", "label", "required", "options"] }, "MultiEmailFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "multiemail", "description": "only allowed value for type is `multiemail`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter multiple emails" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., example@example.com" }, "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." } }, "required": ["type", "slug", "label", "required", "placeholder"] }, "CheckboxGroupFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "checkbox", "description": "only allowed value for type is `checkbox`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select all that apply" }, "required": { "type": "boolean" }, "options": { "example": ["Checkbox 1", "Checkbox 2"], "type": "array", "items": { "type": "string" } }, "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." } }, "required": ["type", "slug", "label", "required", "options"] }, "RadioGroupFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "radio", "description": "only allowed value for type is `radio`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select one option" }, "required": { "type": "boolean" }, "options": { "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" } }, "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 buttom will be selected and the select field will be disabled." } }, "required": ["type", "slug", "label", "required", "options"] }, "BooleanFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean", "description": "only allowed value for type is `boolean`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Agree to terms?" }, "required": { "type": "boolean" }, "disableOnPrefill": { "type": "boolean" } }, "required": ["type", "slug", "label", "required"] }, "BusinessDaysWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": ["businessDays", "calendarDays", "range"], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { "type": "number", "example": 5, "description": "How many business day into the future can this event be booked" }, "rolling": { "type": "boolean", "example": true, "description": "\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", "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" } ] } }, "required": ["type"] }, "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"] }, "NameFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "name", "description": "only allowed value for type is `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"] }, "EmailFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "email", "description": "only allowed value for type is `email`" }, "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 `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled." } }, "required": ["type", "label", "placeholder"] }, "BookerLayouts_2024_06_14": { "type": "object", "properties": { "defaultLayout": { "type": "string", "enum": ["month", "week", "column"] }, "enabledLayouts": { "type": "array", "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!" }, "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" } ] } }, "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/NameFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailFieldInput_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't cant add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Time spaces that can be pre-pended before an event to give more time before it." }, "afterEventBuffer": { "type": "number", "description": "Time spaces that can be appended after an event to give more time after it." }, "scheduleId": { "type": "number", "description": "If you want that this event has different schedule than user's default one you can specify it here." }, "bookingLimitsCount": { "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" } }, "required": ["lengthInMinutes", "lengthInMinutesOptions", "title", "slug"] }, "OutputAddressLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined" ], "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" ], "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", "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", "campsite-conferencing", "campfire-video", "around-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" ], "example": "phone", "description": "only allowed value for type is `phone`" }, "phone": { "type": "string", "example": "+37120993151" }, "public": { "type": "boolean" } }, "required": ["type", "phone", "public"] }, "OutputConferencingLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "conferencing", "unknown" ], "example": "conferencing", "description": "only allowed value for type is `conferencing`" } }, "required": ["type"] }, "OutputUnknownLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "address", "link", "integration", "phone", "attendeeAddress", "attendeePhone", "attendeeDefined", "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" ], "example": "email", "description": "only allowed value for type is `email`", "default": "email" }, "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 `&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": "boolean" } }, "required": ["type", "isDefault", "slug", "required"] }, "NameDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "name", "description": "only allowed value for type is `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" } }, "required": ["isDefault", "slug", "type", "required"] }, "RescheduleReasonDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "rescheduleReason" }, "type": { "type": "string", "default": "textarea" }, "required": { "type": "boolean" } }, "required": ["isDefault", "slug", "type", "required"] }, "TitleDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "title" }, "type": { "type": "string", "default": "text" }, "required": { "type": "boolean" } }, "required": ["isDefault", "slug", "type", "required"] }, "NotesDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "notes" }, "type": { "type": "string", "default": "textarea" }, "required": { "type": "boolean" } }, "required": ["isDefault", "slug", "type", "required"] }, "GuestsDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "isDefault": { "type": "object", "default": true, "description": "This property is always true because it's a default field", "example": true }, "slug": { "type": "string", "default": "guests" }, "type": { "type": "string", "default": "multiemail" }, "required": { "type": "boolean" } }, "required": ["isDefault", "slug", "type", "required"] }, "AddressFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "address", "description": "only allowed value for type is `address`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your address" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 1234 Main St" }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "BooleanFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "boolean", "description": "only allowed value for type is `boolean`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Agree to terms?" }, "required": { "type": "boolean" }, "disableOnPrefill": { "type": "boolean" }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "CheckboxGroupFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "checkbox", "description": "only allowed value for type is `checkbox`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select all that apply" }, "required": { "type": "boolean" }, "options": { "example": ["Checkbox 1", "Checkbox 2"], "type": "array", "items": { "type": "string" } }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "options", "isDefault"] }, "MultiEmailFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "multiemail", "description": "only allowed value for type is `multiemail`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter multiple emails" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., example@example.com" }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "MultiSelectFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "multiselect", "description": "only allowed value for type is `multiselect`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select multiple options" }, "required": { "type": "boolean" }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "options", "isDefault"] }, "NumberFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "number", "description": "only allowed value for type is `number`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter a number" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 100" }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "PhoneFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "phone", "description": "only allowed value for type is `phone`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "placeholder": { "type": "string" }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "RadioGroupFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "radio", "description": "only allowed value for type is `radio`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select one option" }, "required": { "type": "boolean" }, "options": { "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" } }, "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 buttom will be selected and the select field will be disabled." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "options", "isDefault"] }, "SelectFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "select", "description": "only allowed value for type is `select`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select an option" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "Select..." }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "options", "isDefault"] }, "TextAreaFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "textarea", "description": "only allowed value for type is `textarea`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter detailed information" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Detailed description here..." }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "TextFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "name", "email", "phone", "address", "text", "number", "textarea", "select", "multiselect", "multiemail", "checkbox", "radio", "boolean" ], "example": "text", "description": "only allowed value for type is `text`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your text" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Enter text here" }, "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." }, "isDefault": { "type": "object", "default": false, "description": "This property is always false because it's not default field but custom field", "example": false } }, "required": ["type", "slug", "label", "required", "isDefault"] }, "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/OutputConferencingLocation_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" } ] } }, "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" }, "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!" }, "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" } ] } }, "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/NameFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailFieldInput_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't cant add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Time spaces that can be pre-pended before an event to give more time before it." }, "afterEventBuffer": { "type": "number", "description": "Time spaces that can be appended after an event to give more time after it." }, "scheduleId": { "type": "number", "description": "If you want that this event has different schedule than user's default one you can specify it here." }, "bookingLimitsCount": { "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" } }, "required": ["lengthInMinutesOptions"] }, "UpdateEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" } }, "required": ["status", "data"] }, "DeleteData_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "example": 60 }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string" } }, "required": ["id", "lengthInMinutes", "title", "slug"] }, "DeleteEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "$ref": "#/components/schemas/DeleteData_2024_06_14" } }, "required": ["status", "data"] }, "SelectedCalendarsInputDto": { "type": "object", "properties": { "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number" } }, "required": ["integration", "externalId", "credentialId"] }, "SelectedCalendarOutputDto": { "type": "object", "properties": { "userId": { "type": "number" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number", "nullable": true } }, "required": ["userId", "integration", "externalId", "credentialId"] }, "SelectedCalendarOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/SelectedCalendarOutputDto" } }, "required": ["status", "data"] }, "OrgTeamOutputDto": { "type": "object", "properties": { "id": { "type": "number" }, "parentId": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "logoUrl": { "type": "string" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean" }, "isOrganization": { "type": "boolean" }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean", "default": false }, "metadata": { "type": "string" }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London" }, "weekStart": { "type": "string", "default": "Sunday" } }, "required": ["id", "name", "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": "string" }, "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", "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": "string" }, "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 } }, "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 }, "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" }, "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": {} }, "OrgMembershipOutputDto": { "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" } }, "required": ["id", "userId", "teamId", "accepted", "role"] }, "GetAllOrgMemberships": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgMembershipOutputDto" } }, "required": ["status", "data"] }, "CreateOrgMembershipDto": { "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"] }, "CreateOrgMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgMembershipOutputDto" } }, "required": ["status", "data"] }, "GetOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgMembershipOutputDto" } }, "required": ["status", "data"] }, "DeleteOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgMembershipOutputDto" } }, "required": ["status", "data"] }, "UpdateOrgMembershipDto": { "type": "object", "properties": { "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/OrgMembershipOutputDto" } }, "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!" }, "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" } ] } }, "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/NameFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailFieldInput_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't cant add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Time spaces that can be pre-pended before an event to give more time before it." }, "afterEventBuffer": { "type": "number", "description": "Time spaces that can be appended after an event to give more time after it." }, "scheduleId": { "type": "number", "description": "If you want that this event has different schedule than user's default one you can specify it here." }, "bookingLimitsCount": { "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" }, "schedulingType": { "type": "object" }, "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" } }, "required": ["lengthInMinutes", "lengthInMinutesOptions", "title", "slug", "schedulingType", "hosts"] }, "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/OutputConferencingLocation_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" } ] } }, "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" }, "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", "nullable": true, "enum": ["ROUND_ROBIN", "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", "agentId"] }, "CreatePhoneCallOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/Data" } }, "required": ["status", "data"] }, "GetTeamEventTypesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } } }, "required": ["status", "data"] }, "UpdateTeamEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "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!" }, "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" } ] } }, "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/NameFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailFieldInput_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't cant add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Time spaces that can be pre-pended before an event to give more time before it." }, "afterEventBuffer": { "type": "number", "description": "Time spaces that can be appended after an event to give more time after it." }, "scheduleId": { "type": "number", "description": "If you want that this event has different schedule than user's default one you can specify it here." }, "bookingLimitsCount": { "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" }, "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" } }, "required": ["lengthInMinutesOptions"] }, "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"] }, "MembershipUserOutputDto": { "type": "object", "properties": { "avatarUrl": { "type": "string" }, "username": { "type": "string" }, "name": { "type": "string" }, "email": { "type": "string" } }, "required": ["email"] }, "OrgTeamMembershipOutputDto": { "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/OrgTeamMembershipOutputDto" } } }, "required": ["status", "data"] }, "OrgTeamMembershipOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgTeamMembershipOutputDto" } }, "required": ["status", "data"] }, "UpdateOrgTeamMembershipDto": { "type": "object", "properties": { "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"] }, "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" } } }, "StripConnectOutputDto": { "type": "object", "properties": { "authUrl": { "type": "string" } }, "required": ["authUrl"] }, "StripConnectOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/StripConnectOutputDto" } }, "required": ["status", "data"] }, "StripCredentialsSaveOutputResponseDto": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] }, "StripCredentialsCheckOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success" } }, "required": ["status"] }, "GetDefaultScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, "required": ["status", "data"] }, "CreateTeamInput": { "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", "default": false }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean" }, "metadata": { "type": "string" }, "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 } }, "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": "string" }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London" }, "weekStart": { "type": "string", "default": "Sunday" } }, "required": ["id", "name", "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"] }, "AuthUrlData": { "type": "object", "properties": { "authUrl": { "type": "string" } }, "required": ["authUrl"] }, "GcalAuthUrlOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/AuthUrlData" } }, "required": ["status", "data"] }, "GcalSaveRedirectOutput": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] }, "GcalCheckOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "ProviderVerifyClientData": { "type": "object", "properties": { "clientId": { "type": "string" }, "organizationId": { "type": "number" }, "name": { "type": "string" } }, "required": ["clientId", "organizationId", "name"] }, "ProviderVerifyClientOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ProviderVerifyClientData" } }, "required": ["status", "data"] }, "ProviderVerifyAccessTokenOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "MeOrgOutput": { "type": "object", "properties": { "isPlatform": { "type": "boolean" }, "id": { "type": "number" } }, "required": ["isPlatform", "id"] }, "MeOutput": { "type": "object", "properties": { "id": { "type": "number" }, "username": { "type": "string" }, "email": { "type": "string" }, "timeFormat": { "type": "number" }, "defaultScheduleId": { "type": "number", "nullable": true }, "weekStart": { "type": "string" }, "timeZone": { "type": "string" }, "organizationId": { "type": "number", "nullable": true }, "organization": { "$ref": "#/components/schemas/MeOrgOutput" } }, "required": [ "id", "username", "email", "timeFormat", "defaultScheduleId", "weekStart", "timeZone", "organizationId" ] }, "GetMeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, "required": ["status", "data"] }, "UpdateMeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, "required": ["status", "data"] }, "CreateIcsFeedInputDto": { "type": "object", "properties": { "urls": { "type": "array", "example": ["https://cal.com/ics/feed.ics", "http://cal.com/ics/feed.ics"], "description": "An array of ICS URLs", "items": { "type": "string", "example": "https://cal.com/ics/feed.ics" } }, "readOnly": { "type": "boolean", "default": true, "example": false, "description": "Whether to allowing writing to the calendar or not" } }, "required": ["urls"] }, "CreateIcsFeedOutput": { "type": "object", "properties": { "id": { "type": "number", "example": 1234567890, "description": "The id of the calendar credential" }, "type": { "type": "string", "example": "ics-feed_calendar", "description": "The type of the calendar" }, "userId": { "type": "integer", "nullable": true, "example": 1234567890, "description": "The user id of the user that created the calendar" }, "teamId": { "type": "integer", "nullable": true, "example": 1234567890, "description": "The team id of the user that created the calendar" }, "appId": { "type": "string", "nullable": true, "example": "ics-feed", "description": "The slug of the calendar" }, "invalid": { "type": "boolean", "nullable": true, "example": false, "description": "Whether the calendar credentials are valid or not" } }, "required": ["id", "type", "userId", "teamId", "appId", "invalid"] }, "CreateIcsFeedOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateIcsFeedOutput" } }, "required": ["status", "data"] }, "BusyTimesOutput": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string" }, "end": { "format": "date-time", "type": "string" }, "source": { "type": "string", "nullable": true } }, "required": ["start", "end"] }, "GetBusyTimesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BusyTimesOutput" } } }, "required": ["status", "data"] }, "Integration": { "type": "object", "properties": { "appData": { "type": "object", "nullable": true }, "dirName": { "type": "string" }, "__template": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "installed": { "type": "boolean" }, "type": { "type": "string" }, "title": { "type": "string" }, "variant": { "type": "string" }, "category": { "type": "string" }, "categories": { "type": "array", "items": { "type": "string" } }, "logo": { "type": "string" }, "publisher": { "type": "string" }, "slug": { "type": "string" }, "url": { "type": "string" }, "email": { "type": "string" }, "locationOption": { "type": "object", "nullable": true } }, "required": [ "name", "description", "type", "variant", "categories", "logo", "publisher", "slug", "url", "email", "locationOption" ] }, "Primary": { "type": "object", "properties": { "externalId": { "type": "string" }, "integration": { "type": "string" }, "name": { "type": "string" }, "primary": { "type": "boolean", "nullable": true }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "isSelected": { "type": "boolean" }, "credentialId": { "type": "number" } }, "required": ["externalId", "primary", "readOnly", "isSelected", "credentialId"] }, "Calendar": { "type": "object", "properties": { "externalId": { "type": "string" }, "integration": { "type": "string" }, "name": { "type": "string" }, "primary": { "type": "boolean", "nullable": true }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "isSelected": { "type": "boolean" }, "credentialId": { "type": "number" } }, "required": ["externalId", "readOnly", "isSelected", "credentialId"] }, "ConnectedCalendar": { "type": "object", "properties": { "integration": { "$ref": "#/components/schemas/Integration" }, "credentialId": { "type": "number" }, "primary": { "$ref": "#/components/schemas/Primary" }, "calendars": { "type": "array", "items": { "$ref": "#/components/schemas/Calendar" } } }, "required": ["integration", "credentialId"] }, "DestinationCalendar": { "type": "object", "properties": { "id": { "type": "number" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "primaryEmail": { "type": "string", "nullable": true }, "userId": { "type": "number", "nullable": true }, "eventTypeId": { "type": "number", "nullable": true }, "credentialId": { "type": "number", "nullable": true }, "name": { "type": "string", "nullable": true }, "primary": { "type": "boolean" }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "integrationTitle": { "type": "string" } }, "required": [ "id", "integration", "externalId", "primaryEmail", "userId", "eventTypeId", "credentialId" ] }, "ConnectedCalendarsData": { "type": "object", "properties": { "connectedCalendars": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectedCalendar" } }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar" } }, "required": ["connectedCalendars", "destinationCalendar"] }, "ConnectedCalendarsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ConnectedCalendarsData" } }, "required": ["status", "data"] }, "DeleteCalendarCredentialsInputBodyDto": { "type": "object", "properties": { "id": { "type": "integer", "example": 10, "description": "Credential ID of the calendar to delete, as returned by the /calendars endpoint" } }, "required": ["id"] }, "DeletedCalendarCredentialsOutputDto": { "type": "object", "properties": { "id": { "type": "number" }, "type": { "type": "string" }, "userId": { "type": "number", "nullable": true }, "teamId": { "type": "number", "nullable": true }, "appId": { "type": "string", "nullable": true }, "invalid": { "type": "boolean", "nullable": true } }, "required": ["id", "type", "userId", "teamId", "appId", "invalid"] }, "DeletedCalendarCredentialsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputDto" } }, "required": ["status", "data"] }, "Attendee": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the attendee.", "example": "John Doe" }, "email": { "type": "string", "description": "The email of the attendee.", "example": "john.doe@example.com" }, "timeZone": { "type": "string", "description": "The time zone of the attendee.", "example": "America/New_York" }, "language": { "type": "string", "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW" ], "description": "The preferred language of the attendee. Used for booking confirmation.", "example": "it", "default": "en" } }, "required": ["name", "email", "timeZone"] }, "CreateBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "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." }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked.", "example": 123 }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "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": { "type": "string", "description": "Location for this booking. Displayed in email and calendar event.", "example": "https://example.com/meeting" }, "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" } }, "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": ["start", "eventTypeId", "attendee"] }, "CreateInstantBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "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." }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked.", "example": 123 }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "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": { "type": "string", "description": "Location for this booking. Displayed in email and calendar event.", "example": "https://example.com/meeting" }, "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" } }, "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" } }, "instant": { "type": "boolean", "description": "Flag indicating if the booking is an instant booking. Only available for team events.", "example": true } }, "required": ["start", "eventTypeId", "attendee", "instant"] }, "CreateRecurringBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "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." }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked.", "example": 123 }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/Attendee" } ] }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "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": { "type": "string", "description": "Location for this booking. Displayed in email and calendar event.", "example": "https://example.com/meeting" }, "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" } }, "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" } }, "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", "eventTypeId", "attendee"] }, "BookingHost": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "name": { "type": "string", "example": "Jane Doe" }, "username": { "type": "string", "example": "jane100" }, "timeZone": { "type": "string", "example": "America/Los_Angeles" } }, "required": ["id", "name", "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "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", "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "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", "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 }, "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "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", "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "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", "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "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" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123" }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "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", "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"] }, "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" }, "error": { "type": "object" } }, "required": ["status", "data"] }, "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"] }, "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" } } }, "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"] }, "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" } }, "required": ["id", "userId", "teamId", "accepted", "role"] }, "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"] }, "ReserveSlotInput": { "type": "object", "properties": { "eventTypeId": { "type": "number", "description": "Event Type ID for which timeslot is being reserved.", "example": 100 }, "slotUtcStartDate": { "type": "string", "description": "Start date of the slot in UTC timezone.", "example": "2022-06-14T00:00:00.000Z" }, "slotUtcEndDate": { "type": "string", "description": "End date of the slot in UTC timezone.", "example": "2022-06-14T00:30:00.000Z" }, "bookingUid": { "type": "string", "description": "Optional but only for events with seats. Used to retrieve booking of a seated event." } }, "required": ["eventTypeId", "slotUtcStartDate", "slotUtcEndDate"] }, "UserWebhookOutputDto": { "type": "object", "properties": { "payloadTemplate": { "type": "string", "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" }, "userId": { "type": "number" }, "id": { "type": "number" }, "triggers": { "type": "array", "items": { "type": "object" } }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "userId", "id", "triggers", "subscriberUrl", "active"] }, "UserWebhookOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/UserWebhookOutputDto" } }, "required": ["status", "data"] }, "UserWebhooksOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UserWebhookOutputDto" } } }, "required": ["status", "data"] }, "EventTypeWebhookOutputDto": { "type": "object", "properties": { "payloadTemplate": { "type": "string", "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" }, "eventTypeId": { "type": "number" }, "id": { "type": "number" }, "triggers": { "type": "array", "items": { "type": "object" } }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "eventTypeId", "id", "triggers", "subscriberUrl", "active"] }, "EventTypeWebhookOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/EventTypeWebhookOutputDto" } }, "required": ["status", "data"] }, "EventTypeWebhooksOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/EventTypeWebhookOutputDto" } } }, "required": ["status", "data"] }, "DeleteManyWebhooksOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "string" } }, "required": ["status", "data"] }, "OAuthClientWebhookOutputDto": { "type": "object", "properties": { "payloadTemplate": { "type": "string", "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" }, "oAuthClientId": { "type": "string" }, "id": { "type": "number" }, "triggers": { "type": "array", "items": { "type": "object" } }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "oAuthClientId", "id", "triggers", "subscriberUrl", "active"] }, "OAuthClientWebhookOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" } }, "required": ["status", "data"] }, "OAuthClientWebhooksOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" } } }, "required": ["status", "data"] }, "DestinationCalendarsInputBodyDto": { "type": "object", "properties": { "integration": { "type": "string", "example": "apple_calendar", "description": "The calendar service you want to integrate, as returned by the /calendars endpoint", "enum": ["apple_calendar", "google_calendar", "office365_calendar"] }, "externalId": { "type": "string", "example": "https://caldav.icloud.com/26962146906/calendars/1644422A-1945-4438-BBC0-4F0Q23A57R7S/", "description": "Unique identifier used to represent the specfic calendar, as returned by the /calendars endpoint" } }, "required": ["integration", "externalId"] }, "DestinationCalendarsOutputDto": { "type": "object", "properties": { "userId": { "type": "number" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number", "nullable": true } }, "required": ["userId", "integration", "externalId", "credentialId"] }, "DestinationCalendarsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DestinationCalendarsOutputDto" } }, "required": ["status", "data"] }, "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"] } } } }