{ "openapi": "3.0.0", "paths": { "/v2/organizations/{orgId}/attributes": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttributes", "summary": "Get all attributes", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "post": { "operationId": "OrganizationsAttributesController_createOrganizationAttribute", "summary": "Create an attribute", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributeInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttribute", "summary": "Get an attribute", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSingleAttributeOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "patch": { "operationId": "OrganizationsAttributesController_updateOrganizationAttribute", "summary": "Update an attribute", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributeInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] }, "delete": { "operationId": "OrganizationsAttributesController_deleteOrganizationAttribute", "summary": "Delete an attribute", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteOrganizationAttributesOutput" } } } } }, "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options": { "post": { "operationId": "OrganizationsAttributesOptionsController_createOrganizationAttributeOption", "summary": "Create an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptions", "summary": "Get all attribute options", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": { "delete": { "operationId": "OrganizationsAttributesOptionsController_deleteOrganizationAttributeOption", "summary": "Delete an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "optionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "patch": { "operationId": "OrganizationsAttributesOptionsController_updateOrganizationAttributeOption", "summary": "Update an attribute option", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "optionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationAttributeOptionInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAttributeOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/assigned": { "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeAssignedOptions", "summary": "Get all assigned attribute options by attribute ID", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "schema": { "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "type": "array", "items": { "type": "string" } } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "schema": { "example": "?teamIds=100,200", "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned": { "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeAssignedOptionsBySlug", "summary": "Get all assigned attribute options by attribute slug", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeSlug", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "schema": { "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "type": "array", "items": { "type": "string" } } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "schema": { "example": "?teamIds=100,200", "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { "post": { "operationId": "OrganizationsAttributesOptionsController_assignOrganizationAttributeOptionToUser", "summary": "Assign an attribute to a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignOrganizationAttributeOptionToUserInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptionsForUser", "summary": "Get all attribute options for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { "delete": { "operationId": "OrganizationsAttributesOptionsController_unassignOrganizationAttributeOptionFromUser", "summary": "Unassign an attribute from a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "attributeOptionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnassignOptionUserOutput" } } } } }, "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/bookings": { "get": { "operationId": "OrganizationsBookingsController_getAllOrgTeamBookings", "summary": "Get organization bookings", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "status", "required": false, "in": "query", "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", "schema": { "example": "?status=upcoming,past", "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.", "schema": { "example": "example@domain.com", "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "schema": { "example": "John Doe", "type": "string" } }, { "name": "bookingUid", "required": false, "in": "query", "description": "Filter bookings by the booking Uid.", "schema": { "example": "2NtaeaVcKfpmSZ4CthFdfk", "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.", "schema": { "example": "?eventTypeIds=100,200", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the user.", "schema": { "example": "?eventTypeId=100", "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.", "schema": { "example": "?teamIds=50,60", "type": "string" } }, { "name": "teamId", "required": false, "in": "query", "description": "Filter bookings by team id that user is part of", "schema": { "example": "?teamId=50", "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "schema": { "example": "?afterStart=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "schema": { "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "schema": { "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "schema": { "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "schema": { "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "schema": { "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "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.", "schema": { "example": "?sortCreated=asc OR ?sortCreated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "schema": { "example": "?sortUpdated=asc OR ?sortUpdated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "default": 100, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "default": 0, "example": 0, "type": "number" } }, { "name": "userIds", "required": false, "in": "query", "description": "Filter bookings by ids of users within your organization.", "schema": { "example": "?userIds=100,200", "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Orgs / Bookings"] } }, "/v2/organizations/{orgId}/delegation-credentials": { "post": { "operationId": "OrganizationsDelegationCredentialController_createDelegationCredential", "summary": "Save delegation credentials for your organization", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateDelegationCredentialInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateDelegationCredentialOutput" } } } } }, "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/delegation-credentials/{credentialId}": { "patch": { "operationId": "OrganizationsDelegationCredentialController_updateDelegationCredential", "summary": "Update delegation credentials of your organization", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "credentialId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDelegationCredentialInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDelegationCredentialOutput" } } } } }, "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/memberships": { "get": { "operationId": "OrganizationsMembershipsController_getAllMemberships", "summary": "Get all memberships", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllOrgMemberships" } } } } }, "tags": ["Orgs / Memberships"] }, "post": { "operationId": "OrganizationsMembershipsController_createMembership", "summary": "Create a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgMembershipDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgMembershipOutput" } } } } }, "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsMembershipsController_getOrgMembership", "summary": "Get a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] }, "delete": { "operationId": "OrganizationsMembershipsController_deleteMembership", "summary": "Delete a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] }, "patch": { "operationId": "OrganizationsMembershipsController_updateMembership", "summary": "Update a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgMembershipDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgMembership" } } } } }, "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/roles": { "post": { "operationId": "OrganizationsRolesController_createRole", "summary": "Create a new organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgRoleInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgRoleOutput" } } } } }, "tags": ["Orgs / Roles"] }, "get": { "operationId": "OrganizationsRolesController_getAllRoles", "summary": "Get all organization roles", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllOrgRolesOutput" } } } } }, "tags": ["Orgs / Roles"] } }, "/v2/organizations/{orgId}/roles/{roleId}": { "get": { "operationId": "OrganizationsRolesController_getRole", "summary": "Get a specific organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgRoleOutput" } } } } }, "tags": ["Orgs / Roles"] }, "patch": { "operationId": "OrganizationsRolesController_updateRole", "summary": "Update an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgRoleInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgRoleOutput" } } } } }, "tags": ["Orgs / Roles"] }, "delete": { "operationId": "OrganizationsRolesController_deleteRole", "summary": "Delete an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteOrgRoleOutput" } } } } }, "tags": ["Orgs / Roles"] } }, "/v2/organizations/{orgId}/roles/{roleId}/permissions": { "post": { "operationId": "OrganizationsRolesPermissionsController_addPermissions", "summary": "Add permissions to an organization role (single or batch)", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgRolePermissionsInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgRolePermissionsOutput" } } } } }, "tags": ["Orgs / Roles / Permissions"] }, "get": { "operationId": "OrganizationsRolesPermissionsController_listPermissions", "summary": "List permissions for an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgRolePermissionsOutput" } } } } }, "tags": ["Orgs / Roles / Permissions"] }, "put": { "operationId": "OrganizationsRolesPermissionsController_setPermissions", "summary": "Replace all permissions for an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgRolePermissionsInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrgRolePermissionsOutput" } } } } }, "tags": ["Orgs / Roles / Permissions"] }, "delete": { "operationId": "OrganizationsRolesPermissionsController_removePermissions", "summary": "Remove multiple permissions from an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "permissions", "required": false, "in": "query", "description": "Permissions to remove (format: resource.action). Supports comma-separated values as well as repeated query params.", "schema": { "example": "?permissions=eventType.read,booking.read", "type": "array", "items": { "type": "string", "enum": [ "*.*", "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.create", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "organization.create", "organization.read", "organization.listMembers", "organization.listMembersPrivate", "organization.invite", "organization.remove", "organization.manageBilling", "organization.changeMemberRole", "organization.impersonate", "organization.passwordReset", "organization.update", "booking.read", "booking.readOrgBookings", "booking.readRecordings", "booking.update", "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "organization.attributes.read", "organization.attributes.update", "organization.attributes.delete", "organization.attributes.create", "organization.attributes.editUsers", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "watchlist.create", "watchlist.read", "watchlist.update", "watchlist.delete", "featureOptIn.read", "featureOptIn.update" ] } } } ], "responses": { "204": { "description": "" } }, "tags": ["Orgs / Roles / Permissions"] } }, "/v2/organizations/{orgId}/roles/{roleId}/permissions/{permission}": { "delete": { "operationId": "OrganizationsRolesPermissionsController_removePermission", "summary": "Remove a permission from an organization role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "permission", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "" } }, "tags": ["Orgs / Roles / Permissions"] } }, "/v2/organizations/{orgId}/routing-forms": { "get": { "operationId": "OrganizationsRoutingFormsController_getOrganizationRoutingForms", "summary": "Get organization routing forms", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "schema": { "example": "?teamIds=100,200", "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormsOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses": { "get": { "operationId": "OrganizationsRoutingFormsResponsesController_getRoutingFormResponses", "summary": "Get routing form responses", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormResponsesOutput" } } } } }, "tags": ["Orgs / Routing forms"] }, "post": { "operationId": "OrganizationsRoutingFormsResponsesController_createRoutingFormResponse", "summary": "Create routing form response and get available slots", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z\n ", "schema": { "example": "2050-09-05", "type": "string" } }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", "schema": { "example": "2050-09-06", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "schema": { "example": "Europe/Rome", "type": "string" } }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "schema": { "example": "60", "type": "number" } }, { "name": "format", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times.", "schema": { "example": "range", "enum": ["range", "time"], "type": "string" } }, { "name": "bookingUidToReschedule", "required": false, "in": "query", "description": "The unique identifier of the booking being rescheduled. When provided will ensure that the original booking time appears within the returned available slots when rescheduling.", "schema": { "example": "abc123def456", "type": "string" } }, { "name": "queueResponse", "required": false, "in": "query", "description": "Whether to queue the form response.", "schema": { "example": true, "type": "boolean" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses/{responseId}": { "patch": { "operationId": "OrganizationsRoutingFormsResponsesController_updateRoutingFormResponse", "summary": "Update routing form response", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "responseId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/schedules": { "get": { "operationId": "OrganizationsSchedulesController_getOrganizationSchedules", "summary": "Get all schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Schedules"] } }, "/v2/organizations/{orgId}/teams": { "get": { "operationId": "OrganizationsTeamsController_getAllTeams", "summary": "Get all teams", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", "summary": "Create a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgTeamDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/me": { "get": { "operationId": "OrganizationsTeamsController_getMyTeams", "summary": "Get teams membership for user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgMeTeamsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}": { "get": { "operationId": "OrganizationsTeamsController_getTeam", "summary": "Get a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", "summary": "Delete a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] }, "patch": { "operationId": "OrganizationsTeamsController_updateTeam", "summary": "Update a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgTeamDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings": { "get": { "operationId": "OrganizationsTeamsBookingsController_getAllOrgTeamBookings", "summary": "Get organization team bookings", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "status", "required": false, "in": "query", "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", "schema": { "example": "?status=upcoming,past", "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.", "schema": { "example": "example@domain.com", "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "schema": { "example": "John Doe", "type": "string" } }, { "name": "bookingUid", "required": false, "in": "query", "description": "Filter bookings by the booking Uid.", "schema": { "example": "2NtaeaVcKfpmSZ4CthFdfk", "type": "string" } }, { "name": "eventTypeIds", "required": false, "in": "query", "description": "Filter bookings by event type ids belonging to the team. Event type ids must be separated by a comma.", "schema": { "example": "?eventTypeIds=100,200", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the team.", "schema": { "example": "?eventTypeId=100", "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "schema": { "example": "?afterStart=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "schema": { "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "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.", "schema": { "example": "?sortCreated=asc OR ?sortCreated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "minimum": 1, "maximum": 250, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "minimum": 0, "example": 0, "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references": { "get": { "operationId": "OrganizationsTeamsBookingsController_getBookingReferences", "summary": "Get booking references", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "type", "required": false, "in": "query", "description": "Filter booking references by type", "schema": { "example": "google_calendar", "enum": [ "google_calendar", "office365_calendar", "daily_video", "google_video", "office365_video", "zoom_video" ], "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" } } } } }, "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect": { "post": { "operationId": "OrganizationsConferencingController_connectTeamApp", "summary": "Connect your conferencing application to a team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url": { "get": { "operationId": "OrganizationsConferencingController_getTeamOAuthUrl", "summary": "Get OAuth conferencing app's auth URL for a team", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing": { "get": { "operationId": "OrganizationsConferencingController_listTeamConferencingApps", "summary": "List team conferencing applications", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default": { "post": { "operationId": "OrganizationsConferencingController_setTeamDefaultApp", "summary": "Set team default conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/default": { "get": { "operationId": "OrganizationsConferencingController_getTeamDefaultApp", "summary": "Get team default conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect": { "delete": { "operationId": "OrganizationsConferencingController_disconnectTeamApp", "summary": "Disconnect team conferencing application", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams"], "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisconnectConferencingAppOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback": { "get": { "operationId": "OrganizationsConferencingController_saveTeamOauthCredentials", "summary": "Save conferencing app OAuth credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "app", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { "post": { "operationId": "OrganizationsEventTypesController_createTeamEventType", "summary": "Create an event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", "summary": "Get team event types", "description": "Use the optional `sortCreatedAt` query parameter to order results by creation date (by ID). Accepts \"asc\" (oldest first) or \"desc\" (newest first). When not provided, no explicit ordering is applied.", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of team event type to return.", "schema": { "type": "string" } }, { "name": "hostsLimit", "required": false, "in": "query", "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "OrganizationsEventTypesController_getTeamEventType", "summary": "Get an event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", "summary": "Update a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", "summary": "Delete a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "OrganizationsEventTypesController_createPhoneCall", "summary": "Create a phone call", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePhoneCallOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/event-types": { "get": { "operationId": "OrganizationsEventTypesController_getTeamsEventTypes", "summary": "Get all team event types", "description": "Use the optional `sortCreatedAt` query parameter to order results by creation date (by ID). Accepts \"asc\" (oldest first) or \"desc\" (newest first). When not provided, no explicit ordering is applied.", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { "enum": ["asc", "desc"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links": { "post": { "operationId": "OrganizationsEventTypesPrivateLinksController_createPrivateLink", "summary": "Create a private link for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePrivateLinkInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePrivateLinkOutput" } } } } }, "tags": ["Orgs / Teams / Event Types / Private Links"] }, "get": { "operationId": "OrganizationsEventTypesPrivateLinksController_getPrivateLinks", "summary": "Get all private links for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetPrivateLinksOutput" } } } } }, "tags": ["Orgs / Teams / Event Types / Private Links"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links/{linkId}": { "patch": { "operationId": "OrganizationsEventTypesPrivateLinksController_updatePrivateLink", "summary": "Update a private link for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "linkId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePrivateLinkOutput" } } } } }, "tags": ["Orgs / Teams / Event Types / Private Links"] }, "delete": { "operationId": "OrganizationsEventTypesPrivateLinksController_deletePrivateLink", "summary": "Delete a private link for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "linkId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletePrivateLinkOutput" } } } } }, "tags": ["Orgs / Teams / Event Types / Private Links"] } }, "/v2/organizations/{orgId}/teams/{teamId}/invite": { "post": { "operationId": "OrganizationsTeamsInviteController_createInvite", "summary": "Create team invite link", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInviteOutputDto" } } } } }, "tags": ["Orgs / Teams / Invite"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getAllOrgTeamMemberships", "summary": "Get all memberships", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipsOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "post": { "operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership", "summary": "Create a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrgTeamMembershipDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getOrgTeamMembership", "summary": "Get a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "delete": { "operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership", "summary": "Delete a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] }, "patch": { "operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership", "summary": "Update a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgTeamMembershipDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamMembershipOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles": { "post": { "operationId": "OrganizationsTeamsRolesController_createRole", "summary": "Create a new organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamRoleInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamRoleOutput" } } } } }, "tags": ["Orgs / Teams / Roles"] }, "get": { "operationId": "OrganizationsTeamsRolesController_getAllRoles", "summary": "Get all organization team roles", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllTeamRolesOutput" } } } } }, "tags": ["Orgs / Teams / Roles"] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}": { "get": { "operationId": "OrganizationsTeamsRolesController_getRole", "summary": "Get a specific organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamRoleOutput" } } } } }, "tags": ["Orgs / Teams / Roles"] }, "patch": { "operationId": "OrganizationsTeamsRolesController_updateRole", "summary": "Update an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamRoleInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamRoleOutput" } } } } }, "tags": ["Orgs / Teams / Roles"] }, "delete": { "operationId": "OrganizationsTeamsRolesController_deleteRole", "summary": "Delete an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamRoleOutput" } } } } }, "tags": ["Orgs / Teams / Roles"] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}/permissions": { "post": { "operationId": "OrganizationsTeamsRolesPermissionsController_addPermissions", "summary": "Add permissions to an organization team role (single or batch)", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamRolePermissionsInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamRolePermissionsOutput" } } } } }, "tags": ["Orgs / Teams / Roles / Permissions"] }, "get": { "operationId": "OrganizationsTeamsRolesPermissionsController_listPermissions", "summary": "List permissions for an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamRolePermissionsOutput" } } } } }, "tags": ["Orgs / Teams / Roles / Permissions"] }, "put": { "operationId": "OrganizationsTeamsRolesPermissionsController_setPermissions", "summary": "Replace all permissions for an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamRolePermissionsInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamRolePermissionsOutput" } } } } }, "tags": ["Orgs / Teams / Roles / Permissions"] }, "delete": { "operationId": "OrganizationsTeamsRolesPermissionsController_removePermissions", "summary": "Remove multiple permissions from an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "permissions", "required": false, "in": "query", "description": "Permissions to remove (format: resource.action). Supports comma-separated values as well as repeated query params.", "schema": { "example": "?permissions=eventType.read,booking.read", "type": "array", "items": { "type": "string", "enum": [ "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "booking.read", "booking.readTeamBookings", "booking.readRecordings", "booking.update", "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "featureOptIn.read", "featureOptIn.update" ] } } } ], "responses": { "204": { "description": "" } }, "tags": ["Orgs / Teams / Roles / Permissions"] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}/permissions/{permission}": { "delete": { "operationId": "OrganizationsTeamsRolesPermissionsController_removePermission", "summary": "Remove a permission from an organization team role", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "roleId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "permission", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "" } }, "tags": ["Orgs / Teams / Roles / Permissions"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms": { "get": { "operationId": "OrganizationsTeamsRoutingFormsController_getTeamRoutingForms", "summary": "Get team routing forms", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormsOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses": { "get": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_getRoutingFormResponses", "summary": "Get organization team routing form responses", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of responses to skip", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Number of responses to take", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort by creation time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort by update time", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter by responses created before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter by responses created after this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter by responses updated before this date", "schema": { "format": "date-time", "type": "string" } }, { "name": "routedToBookingUid", "required": false, "in": "query", "description": "Filter by responses routed to a specific booking", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormResponsesOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms / Responses"] }, "post": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_createRoutingFormResponse", "summary": "Create routing form response and get available slots", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z\n ", "schema": { "example": "2050-09-05", "type": "string" } }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", "schema": { "example": "2050-09-06", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "schema": { "example": "Europe/Rome", "type": "string" } }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "schema": { "example": "60", "type": "number" } }, { "name": "format", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times.", "schema": { "example": "range", "enum": ["range", "time"], "type": "string" } }, { "name": "bookingUidToReschedule", "required": false, "in": "query", "description": "The unique identifier of the booking being rescheduled. When provided will ensure that the original booking time appears within the returned available slots when rescheduling.", "schema": { "example": "abc123def456", "type": "string" } }, { "name": "queueResponse", "required": false, "in": "query", "description": "Whether to queue the form response.", "schema": { "example": true, "type": "boolean" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses/{responseId}": { "patch": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_updateRoutingFormResponse", "summary": "Update routing form response", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "responseId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRoutingFormResponseOutput" } } } } }, "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/schedules": { "get": { "operationId": "OrganizationsTeamsSchedulesController_getTeamSchedules", "summary": "Get all team member schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter schedules by event type ID", "schema": { "example": 1, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Teams / Schedules"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/connect": { "get": { "operationId": "OrganizationsStripeController_getTeamStripeConnectUrl", "summary": "Get Stripe connect URL for a team", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripConnectOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/check": { "get": { "operationId": "OrganizationsStripeController_checkTeamStripeConnection", "summary": "Check team Stripe connection", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/save": { "get": { "operationId": "OrganizationsStripeController_save", "summary": "Save Stripe credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsSaveOutputResponseDto" } } } } }, "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules": { "get": { "operationId": "OrganizationsTeamsSchedulesController_getUserSchedules", "summary": "Get schedules of a team member", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter schedules by event type ID", "schema": { "example": 1, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Teams / Users / Schedules"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows": { "get": { "operationId": "OrganizationTeamWorkflowsController_getWorkflows", "summary": "Get organization team workflows", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeWorkflowsOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "post": { "operationId": "OrganizationTeamWorkflowsController_createEventTypeWorkflow", "summary": "Create organization team workflow for event-types", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEventTypeWorkflowDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/routing-form": { "get": { "operationId": "OrganizationTeamWorkflowsController_getRoutingFormWorkflows", "summary": "Get organization team workflows", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormWorkflowsOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "post": { "operationId": "OrganizationTeamWorkflowsController_createFormWorkflow", "summary": "Create organization team workflow for routing-forms", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateFormWorkflowDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId}": { "get": { "operationId": "OrganizationTeamWorkflowsController_getWorkflowById", "summary": "Get organization team workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "patch": { "operationId": "OrganizationTeamWorkflowsController_updateWorkflow", "summary": "Update organization team workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "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/UpdateEventTypeWorkflowDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "delete": { "operationId": "OrganizationTeamWorkflowsController_deleteWorkflow", "summary": "Delete organization team workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId}/routing-form": { "get": { "operationId": "OrganizationTeamWorkflowsController_getRoutingFormWorkflowById", "summary": "Get organization team workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "patch": { "operationId": "OrganizationTeamWorkflowsController_updateRoutingFormWorkflow", "summary": "Update organization routing form team workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "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/UpdateFormWorkflowDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRoutingFormWorkflowOutput" } } } } }, "tags": ["Orgs / Teams / Workflows"] }, "delete": { "operationId": "OrganizationTeamWorkflowsController_deleteRoutingFormWorkflow", "summary": "Delete organization team routing-form workflow", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "workflowId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/users": { "get": { "operationId": "OrganizationsUsersController_getOrganizationsUsers", "summary": "Get all users", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "minimum": 1, "maximum": 1000, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "minimum": 0, "example": 0, "type": "number" } }, { "name": "emails", "required": false, "in": "query", "description": "The email address or an array of email addresses to filter by", "schema": { "example": ["user1@example.com", "user2@example.com"], "type": "array", "items": { "type": "string" } } }, { "name": "assignedOptionIds", "required": false, "in": "query", "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", "schema": { "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", "type": "array", "items": { "type": "string" } } }, { "name": "attributeQueryOperator", "required": false, "in": "query", "description": "Query operator used to filter assigned options, AND by default.", "schema": { "default": "AND", "example": "NONE", "enum": ["OR", "AND", "NONE"], "type": "string" } }, { "name": "teamIds", "required": false, "in": "query", "description": "Filter by teamIds. Team ids must be separated by a comma.", "schema": { "example": "?teamIds=100,200", "type": "array", "items": { "type": "number" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUsersResponseDTO" } } } } }, "tags": ["Orgs / Users"] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", "summary": "Create a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "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": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUserOutput" } } } } }, "tags": ["Orgs / Users"] }, "delete": { "operationId": "OrganizationsUsersController_deleteOrganizationUser", "summary": "Delete a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOrganizationUserOutput" } } } } }, "tags": ["Orgs / Users"] } }, "/v2/organizations/{orgId}/users/{userId}/bookings": { "get": { "operationId": "OrganizationsUsersBookingsController_getOrganizationUserBookings", "summary": "Get all bookings for an organization user", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "status", "required": false, "in": "query", "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", "schema": { "example": "?status=upcoming,past", "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.", "schema": { "example": "example@domain.com", "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "schema": { "example": "John Doe", "type": "string" } }, { "name": "bookingUid", "required": false, "in": "query", "description": "Filter bookings by the booking Uid.", "schema": { "example": "2NtaeaVcKfpmSZ4CthFdfk", "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.", "schema": { "example": "?eventTypeIds=100,200", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the user.", "schema": { "example": "?eventTypeId=100", "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.", "schema": { "example": "?teamIds=50,60", "type": "string" } }, { "name": "teamId", "required": false, "in": "query", "description": "Filter bookings by team id that user is part of", "schema": { "example": "?teamId=50", "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "schema": { "example": "?afterStart=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "schema": { "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "schema": { "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "schema": { "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "schema": { "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "schema": { "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "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.", "schema": { "example": "?sortCreated=asc OR ?sortCreated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "schema": { "example": "?sortUpdated=asc OR ?sortUpdated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "default": 100, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": ["Orgs / Users / Bookings"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo": { "get": { "operationId": "OrganizationsUsersOOOController_getOrganizationUserOOO", "summary": "Get all out-of-office entries for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOoosOutputResponseDto" } } } } }, "tags": ["Orgs / Users / OOO"] }, "post": { "operationId": "OrganizationsUsersOOOController_createOrganizationUserOOO", "summary": "Create an out-of-office entry for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOutOfOfficeEntryDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOooOutputResponseDto" } } } } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo/{oooId}": { "patch": { "operationId": "OrganizationsUsersOOOController_updateOrganizationUserOOO", "summary": "Update an out-of-office entry for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "oooId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOutOfOfficeEntryDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOooOutputResponseDto" } } } } }, "tags": ["Orgs / Users / OOO"] }, "delete": { "operationId": "OrganizationsUsersOOOController_deleteOrganizationUserOOO", "summary": "Delete an out-of-office entry for a user", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "oooId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOooOutputResponseDto" } } } } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/ooo": { "get": { "operationId": "OrganizationsUsersOOOController_getOrganizationUsersOOO", "summary": "Get all out-of-office entries for organization users", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "email", "required": false, "in": "query", "description": "Filter ooo entries by the user email address. user must be within your organization.", "schema": { "example": "example@domain.com", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOoosOutputResponseDto" } } } } }, "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { "post": { "operationId": "OrganizationsSchedulesController_createUserSchedule", "summary": "Create a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Users / Schedules"] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", "summary": "Get all schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { "get": { "operationId": "OrganizationsSchedulesController_getUserSchedule", "summary": "Get a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Users / Schedules"] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", "summary": "Update a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Users / Schedules"] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", "summary": "Delete a schedule", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" } } } } }, "tags": ["Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/webhooks": { "get": { "operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhooksOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "post": { "operationId": "OrganizationsWebhooksController_createOrganizationWebhook", "summary": "Create a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] } }, "/v2/organizations/{orgId}/webhooks/{webhookId}": { "get": { "operationId": "OrganizationsWebhooksController_getOrganizationWebhook", "summary": "Get a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "delete": { "operationId": "OrganizationsWebhooksController_deleteWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] }, "patch": { "operationId": "OrganizationsWebhooksController_updateOrgWebhook", "summary": "Update a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" } } } } }, "tags": ["Orgs / Webhooks"] } }, "/v2/api-keys/refresh": { "post": { "operationId": "ApiKeysController_refresh", "summary": "Refresh API Key", "description": "Generate a new API key and delete the current one. Provide API key to refresh as a Bearer token in the Authorization header (e.g. \"Authorization: Bearer \").", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshApiKeyInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshApiKeyOutput" } } } } }, "tags": ["Api Keys"] } }, "/v2/bookings": { "post": { "operationId": "BookingsController_2024_08_13_createBooking", "summary": "Create a booking", "description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n\n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n\n Finally, there are 2 ways to book an event type belonging to an individual user:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `username` and optionally `organizationSlug` if the user with the username is within an organization.\n\n And 2 ways to book and event type belonging to a team:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `teamSlug` and optionally `organizationSlug` if the team with the teamSlug is within an organization.\n\n If you are creating a seated booking for an event type with 'show attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org admin or owner.\n\n For event types that have SMS reminders workflow, you need to pass the attendee's phone number in the request body via `attendee.phoneNumber` (e.g., \"+19876543210\" in international format). This is an optional field, but becomes required when SMS reminders are enabled for the event type. For the complete attendee object structure, see the [attendee object](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee) documentation.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of booking input: Create Booking (Option 1), Create Instant Booking (Option 2), or Create Recurring Booking (Option 3)", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CreateBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CreateInstantBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CreateRecurringBookingInput_2024_08_13" } ] } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] }, "get": { "operationId": "BookingsController_2024_08_13_getBookings", "summary": "Get all bookings", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "status", "required": false, "in": "query", "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", "schema": { "example": "?status=upcoming,past", "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.", "schema": { "example": "example@domain.com", "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "schema": { "example": "John Doe", "type": "string" } }, { "name": "bookingUid", "required": false, "in": "query", "description": "Filter bookings by the booking Uid.", "schema": { "example": "2NtaeaVcKfpmSZ4CthFdfk", "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.", "schema": { "example": "?eventTypeIds=100,200", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the user.", "schema": { "example": "?eventTypeId=100", "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.", "schema": { "example": "?teamIds=50,60", "type": "string" } }, { "name": "teamId", "required": false, "in": "query", "description": "Filter bookings by team id that user is part of", "schema": { "example": "?teamId=50", "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "schema": { "example": "?afterStart=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "schema": { "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "type": "string" } }, { "name": "afterCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created after this date string.", "schema": { "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeCreatedAt", "required": false, "in": "query", "description": "Filter bookings that have been created before this date string.", "schema": { "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "afterUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated after this date string.", "schema": { "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeUpdatedAt", "required": false, "in": "query", "description": "Filter bookings that have been updated before this date string.", "schema": { "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "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.", "schema": { "example": "?sortCreated=asc OR ?sortCreated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortUpdatedAt", "required": false, "in": "query", "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", "schema": { "example": "?sortUpdated=asc OR ?sortUpdated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "default": 100, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/by-seat/{seatUid}": { "get": { "operationId": "BookingsController_2024_08_13_getBookingBySeatUid", "summary": "Get a booking by seat UID", "description": "Get a seated booking by its seat reference UID. This is useful when you have a seatUid from a seated booking and want to retrieve the full booking details.\n\n If you are fetching a seated booking for an event type with 'show attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org admin or owner.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "seatUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_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).\n\n If you are fetching a seated booking for an event type with 'show attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org admin or owner.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/recordings": { "get": { "operationId": "BookingsController_2024_08_13_getBookingRecordings", "summary": "Get all the recordings for the booking", "description": "Fetches all the recordings for the booking `:bookingUid`. Requires authentication and proper authorization. Access is granted if you are the booking organizer, team admin or org admin/owner.\n\n cal-api-version: `2024-08-13` is required in the request header.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingRecordingsOutput" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/transcripts": { "get": { "operationId": "BookingsController_2024_08_13_getBookingTranscripts", "summary": "Get Cal Video real time transcript download links for the booking", "description": "Fetches all the transcript download links for the booking `:bookingUid`\n\n \n Transcripts are generated when clicking \"Transcribe\" during a Cal Video meeting. Download links are valid for 1 hour only - make a new request to generate fresh links after expiration.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n \n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingTranscriptsOutput" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reschedule": { "post": { "operationId": "BookingsController_2024_08_13_rescheduleBooking", "summary": "Reschedule a booking", "description": "Reschedule a booking or seated booking\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of reschedule booking input: Reschedule Booking (Option 1) or Reschedule Seated Booking (Option 2). If you're rescheduling a seated booking as org admin of booking host, pass booking input for Reschedule Booking (Option 1) along with your access token in the request header.\n\n If you are rescheduling a seated booking for an event type with 'show attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org admin or owner.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/RescheduleBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/RescheduleSeatedBookingInput_2024_08_13" } ] } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RescheduleBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/cancel": { "post": { "operationId": "BookingsController_2024_08_13_cancelBooking", "summary": "Cancel a booking", "description": ":bookingUid can be :bookingUid of an usual booking, individual recurrence or recurring booking to cancel all recurrences.\n\n \nCancelling normal bookings:\n If the booking is not seated and not recurring, simply pass :bookingUid in the request URL `/bookings/:bookingUid/cancel` and optionally cancellationReason in the request body `{\"cancellationReason\": \"Will travel\"}`.\n\n \nCancelling seated bookings:\n It is possible to cancel specific seat within a booking as an attendee or all of the seats as the host.\n \n1. As an attendee - provide :bookingUid in the request URL `/bookings/:bookingUid/cancel` and seatUid in the request body `{\"seatUid\": \"123-123-123\"}` . This will remove this particular attendance from the booking.\n \n2. As the host or org admin of host - host can cancel booking for all attendees aka for every seat, this also applies to org admins. Provide :bookingUid in the request URL `/bookings/:bookingUid/cancel` and cancellationReason in the request body `{\"cancellationReason\": \"Will travel\"}` and `Authorization: Bearer token` request header where token is event type owner (host) credential. This will cancel the booking for all attendees.\n\n \nCancelling recurring seated bookings:\n 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.\n\n If you are cancelling a seated booking for an event type with 'show attendees' disabled, then to retrieve attendees in the response either set 'show attendees' to true on event type level or\n you have to provide an authentication method of event type owner, host, team admin or owner or org admin or owner.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "Accepts different types of cancel booking input: Cancel Booking (Option 1 which is for normal or recurring bookings) or Cancel Seated Booking (Option 2 which is for seated bookings)", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CancelBookingInput_2024_08_13" }, { "$ref": "#/components/schemas/CancelSeatedBookingInput_2024_08_13" } ] } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CancelBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/mark-absent": { "post": { "operationId": "BookingsController_2024_08_13_markNoShow", "summary": "Mark a booking absence", "description": "The provided authorization header refers to the owner of the booking.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkAbsentBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkAbsentBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign": { "post": { "operationId": "BookingsController_2024_08_13_reassignBooking", "summary": "Reassign a booking to auto-selected host", "description": "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign/{userId}": { "post": { "operationId": "BookingsController_2024_08_13_reassignBookingToUser", "summary": "Reassign a booking to a specific host", "description": "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignToUserBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/confirm": { "post": { "operationId": "BookingsController_2024_08_13_confirmBooking", "summary": "Confirm a booking", "description": "The provided authorization header refers to the owner of the booking.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/decline": { "post": { "operationId": "BookingsController_2024_08_13_declineBooking", "summary": "Decline a booking", "description": "The provided authorization header refers to the owner of the booking.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeclineBookingInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/calendar-links": { "get": { "operationId": "BookingsController_2024_08_13_getCalendarLinks", "summary": "Get 'Add to Calendar' links for a booking", "description": "Retrieve calendar links for a booking that can be used to add the event to various calendar services. Returns links for Google Calendar, Microsoft Office, Microsoft Outlook, and a downloadable ICS file.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarLinksOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/references": { "get": { "operationId": "BookingsController_2024_08_13_getBookingReferences", "summary": "Get booking references", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "type", "required": false, "in": "query", "description": "Filter booking references by type", "schema": { "example": "google_calendar", "enum": [ "google_calendar", "office365_calendar", "daily_video", "google_video", "office365_video", "zoom_video" ], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/conferencing-sessions": { "get": { "operationId": "BookingsController_2024_08_13_getVideoSessions", "summary": "Get Video Meeting Sessions. Only supported for Cal Video", "description": "Requires authentication and proper authorization. Access is granted if you are the booking organizer, team admin or org admin/owner.\n\n cal-api-version: `2024-08-13` is required in the request header.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-08-13" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingVideoSessionsOutput" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/location": { "patch": { "operationId": "BookingLocationController_2024_08_13_updateBookingLocation", "summary": "Update booking location for an existing booking", "description": "**Current Limitation:** Updating a booking location will update the location in Cal.com, but the corresponding Calendar event will not be updated automatically. The old location will persist in the Calendar event. This is a known limitation that will be addressed in a future update.\n\n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBookingLocationInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBookingLocationOutput_2024_08_13" } } } } }, "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/attendees": { "get": { "operationId": "BookingAttendeesController_2024_08_13_getBookingAttendees", "summary": "Get all attendees for a booking", "description": "Retrieve all attendees for a specific booking by its UID.\n \n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingAttendeesOutput_2024_08_13" } } } } }, "tags": ["Bookings / Attendees"] }, "post": { "operationId": "BookingAttendeesController_2024_08_13_addAttendee", "summary": "Add an attendee to a booking", "description": "Add a new attendee to an existing booking by its UID.\n\n **Side effects:**\n - The booking's attendee list is updated in the database\n - The calendar event is updated on connected calendars (Google Calendar, Outlook, etc.) to include the new attendee\n - An email notification is sent to the new attendee with the booking details\n\n **Permissions:**\n - The authenticated user must be either the booking organizer, an existing attendee, or have the `booking.update` permission for the team\n\n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddAttendeeInput_2024_08_13" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddAttendeeOutput_2024_08_13" } } } } }, "tags": ["Bookings / Attendees"] } }, "/v2/bookings/{bookingUid}/attendees/{attendeeId}": { "get": { "operationId": "BookingAttendeesController_2024_08_13_getBookingAttendee", "summary": "Get a specific attendee for a booking", "description": "Retrieve a specific attendee by their ID for a booking identified by its UID.\n \n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "attendeeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingAttendeeOutput_2024_08_13" } } } } }, "tags": ["Bookings / Attendees"] } }, "/v2/bookings/{bookingUid}/guests": { "post": { "operationId": "BookingGuestsController_2024_08_13_addGuests", "summary": "Add guests to an existing booking", "description": "Add one or more guests to an existing booking. Maximum 10 guests per request, with a limit of 30 total guests per booking.\n \n **Rate Limiting:**\n This endpoint is rate limited to 5 requests per minute to prevent abuse.\n \n **Email Notifications:**\n When guests are added, the following notifications are sent (unless disabled by event type settings):\n \n - **Organizer & Team Members:** Receive an \"Add Guests\" notification email informing them that new guests have been added to the booking.\n \n - **New Guests:** Receive a \"Scheduled Event\" email with full booking details and calendar invite. If they have a phone number, they also receive an SMS notification.\n \n - **Existing Guests:** Receive an \"Add Guests\" notification email informing them that additional guests have been added to the booking.\n \n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", "required": true, "schema": { "type": "string" } }, { "name": "bookingUid", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddGuestsInput_2024_08_13" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddGuestsOutput_2024_08_13" } } } } }, "tags": ["Bookings / Guests"] } }, "/v2/calendars/connections": { "get": { "operationId": "CalUnifiedCalendarsController_listConnections", "summary": "List calendar connections", "description": "Returns all calendar connections for the authenticated user (Google, Office 365, Apple). Use connectionId in connection-scoped endpoints. Note: Event CRUD (list/create/get/update/delete events) is currently only supported for Google Calendar connections; other types will return 400.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListConnectionsOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/connections/{connectionId}/events": { "get": { "operationId": "CalUnifiedCalendarsController_listConnectionEvents", "summary": "List events for a connection", "description": "List events in a date range for a specific calendar connection. Only supported for Google Calendar connections; other connection types return 400.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "description": "Calendar connection ID from GET /connections", "schema": { "type": "string" } }, { "name": "from", "required": true, "in": "query", "description": "Start of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-01", "type": "string" } }, { "name": "to", "required": true, "in": "query", "description": "End of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-31", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "IANA time zone for the request (e.g. America/New_York)", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "description": "Calendar ID. Use 'primary' for the user's primary calendar, or the external ID of a connected calendar.", "schema": { "default": "primary", "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListUnifiedCalendarEventsOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "post": { "operationId": "CalUnifiedCalendarsController_createConnectionEvent", "summary": "Create event on a connection", "description": "Create a new event on the specified calendar connection. Only supported for Google Calendar connections; other connection types return 400.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUnifiedCalendarEventInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/connections/{connectionId}/events/{eventId}": { "get": { "operationId": "CalUnifiedCalendarsController_getConnectionEvent", "summary": "Get event for a connection", "description": "Get a single event by ID for the specified calendar connection. Only supported for Google Calendar connections; other connection types return 400.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "patch": { "operationId": "CalUnifiedCalendarsController_updateConnectionEvent", "summary": "Update event for a connection", "description": "Update an event on the specified calendar connection. Only supported for Google Calendar connections; other connection types return 400.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUnifiedCalendarEventInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "delete": { "operationId": "CalUnifiedCalendarsController_deleteConnectionEvent", "summary": "Delete event for a connection", "description": "Delete/cancel an event on the specified calendar connection. Only supported for Google Calendar connections; other connection types return 400.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "" } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/connections/{connectionId}/freebusy": { "get": { "operationId": "CalUnifiedCalendarsController_getConnectionFreeBusy", "summary": "Get free/busy for a connection", "description": "Get busy time slots for the specified calendar connection.", "parameters": [ { "name": "connectionId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "from", "required": true, "in": "query", "description": "Start of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-10", "type": "string" } }, { "name": "to", "required": true, "in": "query", "description": "End of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-10", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "IANA time zone (e.g. America/New_York)", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBusyTimesOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/{calendar}/events/{eventUid}": { "get": { "operationId": "CalUnifiedCalendarsController_getCalendarEventDetails", "summary": "Get meeting details from calendar", "description": "Returns detailed information about a meeting including attendance metrics. The singular /event/ path is deprecated — use /events/ (plural) instead. For connection-scoped access use GET /connections/{connectionId}/events/{eventId}.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google"], "type": "string" } }, { "name": "eventUid", "required": true, "in": "path", "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "patch": { "operationId": "CalUnifiedCalendarsController_updateCalendarEvent", "summary": "Update meeting details in calendar", "description": "Updates event information in the specified calendar provider. The singular /event/ path is deprecated — use /events/ (plural) instead. For connection-scoped access use PATCH /connections/{connectionId}/events/{eventId}.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google"], "type": "string" } }, { "name": "eventUid", "required": true, "in": "path", "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUnifiedCalendarEventInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "delete": { "operationId": "CalUnifiedCalendarsController_deleteCalendarEvent", "summary": "Delete a calendar event", "description": "Delete/cancel an event on the authenticated user's calendar. Currently only Google Calendar is supported.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google", "office365", "apple"], "type": "string" } }, { "name": "eventUid", "required": true, "in": "path", "description": "The calendar provider's event ID (e.g. Google Calendar event ID)", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "" } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/{calendar}/event/{eventUid}": { "get": { "operationId": "CalUnifiedCalendarsController_getCalendarEventDetails", "summary": "Get meeting details from calendar", "description": "Returns detailed information about a meeting including attendance metrics. The singular /event/ path is deprecated — use /events/ (plural) instead. For connection-scoped access use GET /connections/{connectionId}/events/{eventId}.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google"], "type": "string" } }, { "name": "eventUid", "required": true, "in": "path", "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "patch": { "operationId": "CalUnifiedCalendarsController_updateCalendarEvent", "summary": "Update meeting details in calendar", "description": "Updates event information in the specified calendar provider. The singular /event/ path is deprecated — use /events/ (plural) instead. For connection-scoped access use PATCH /connections/{connectionId}/events/{eventId}.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google"], "type": "string" } }, { "name": "eventUid", "required": true, "in": "path", "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUnifiedCalendarEventInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/{calendar}/events": { "get": { "operationId": "CalUnifiedCalendarsController_listCalendarEvents", "summary": "List calendar events", "description": "List events in a date range for the authenticated user's calendar. Currently only Google Calendar is supported.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google", "office365", "apple"], "type": "string" } }, { "name": "from", "required": true, "in": "query", "description": "Start of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-01", "type": "string" } }, { "name": "to", "required": true, "in": "query", "description": "End of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-31", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "IANA time zone for the request (e.g. America/New_York)", "schema": { "type": "string" } }, { "name": "calendarId", "required": false, "in": "query", "description": "Calendar ID. Use 'primary' for the user's primary calendar, or the external ID of a connected calendar.", "schema": { "default": "primary", "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListUnifiedCalendarEventsOutput" } } } } }, "tags": ["Cal Unified Calendars"] }, "post": { "operationId": "CalUnifiedCalendarsController_createCalendarEvent", "summary": "Create a calendar event", "description": "Create a new event on the authenticated user's calendar. Currently only Google Calendar is supported.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google", "office365", "apple"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUnifiedCalendarEventInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/{calendar}/freebusy": { "get": { "operationId": "CalUnifiedCalendarsController_getFreeBusy", "summary": "Get free/busy times", "description": "Get busy time slots for the authenticated user's selected calendars in the given date range. Currently only Google Calendar is supported.", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["google", "office365", "apple"], "type": "string" } }, { "name": "from", "required": true, "in": "query", "description": "Start of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-10", "type": "string" } }, { "name": "to", "required": true, "in": "query", "description": "End of the date range (ISO 8601 date or date-time)", "schema": { "example": "2026-03-10", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "IANA time zone (e.g. America/New_York)", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBusyTimesOutput" } } } } }, "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/ics-feed/save": { "post": { "operationId": "CalendarsController_createIcsFeed", "summary": "Save an ICS feed", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIcsFeedInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIcsFeedOutputResponseDto" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/ics-feed/check": { "get": { "operationId": "CalendarsController_checkIcsFeed", "summary": "Check an ICS feed", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/busy-times": { "get": { "operationId": "CalendarsController_getBusyTimes", "summary": "Get busy times", "description": "Get busy times from a calendar. Example request URL is `https://api.cal.com/v2/calendars/busy-times?timeZone=Europe%2FMadrid&dateFrom=2024-12-18&dateTo=2024-12-18&calendarsToLoad[0][credentialId]=135&calendarsToLoad[0][externalId]=skrauciz%40gmail.com`. Note: loggedInUsersTz is deprecated, use timeZone instead.", "parameters": [ { "name": "loggedInUsersTz", "required": false, "in": "query", "deprecated": true, "description": "Deprecated: Use timeZone instead. The timezone of the user represented as a string", "schema": { "example": "America/New_York", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "The timezone for the busy times query represented as a string", "schema": { "example": "America/New_York", "type": "string" } }, { "name": "dateFrom", "required": false, "in": "query", "description": "The starting date for the busy times query", "schema": { "example": "2023-10-01", "type": "string" } }, { "name": "dateTo", "required": false, "in": "query", "description": "The ending date for the busy times query", "schema": { "example": "2023-10-31", "type": "string" } }, { "name": "credentialId", "in": "query", "required": true, "schema": { "type": "number" } }, { "name": "externalId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBusyTimesOutput" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars": { "get": { "operationId": "CalendarsController_getCalendars", "summary": "Get all calendars", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectedCalendarsOutput" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/connect": { "get": { "operationId": "CalendarsController_redirect", "summary": "Get OAuth connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } }, { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["office365", "google"], "type": "string" } }, { "name": "isDryRun", "required": true, "in": "query", "schema": { "type": "boolean" } }, { "name": "redir", "required": false, "in": "query", "description": "Redirect URL after successful calendar authorization.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/save": { "get": { "operationId": "CalendarsController_save", "summary": "Save Google or Outlook calendar credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["office365", "google"], "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/credentials": { "post": { "operationId": "CalendarsController_syncCredentials", "summary": "Save Apple calendar credentials", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["apple"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCalendarCredentialsInput" } } } }, "responses": { "201": { "description": "" } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/check": { "get": { "operationId": "CalendarsController_check", "summary": "Check a calendar connection", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["apple", "google", "office365"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } } }, "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/disconnect": { "post": { "operationId": "CalendarsController_deleteCalendarCredentials", "summary": "Disconnect a calendar", "parameters": [ { "name": "calendar", "required": true, "in": "path", "schema": { "enum": ["apple", "google", "office365"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCalendarCredentialsInputBodyDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputResponseDto" } } } } }, "tags": ["Calendars"] } }, "/v2/conferencing/{app}/connect": { "post": { "operationId": "ConferencingController_connect", "summary": "Connect your conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/auth-url": { "get": { "operationId": "ConferencingController_redirect", "summary": "Get OAuth conferencing app auth URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "returnTo", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "onErrorReturnTo", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/callback": { "get": { "operationId": "ConferencingController_save", "summary": "Conferencing app OAuth callback", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["zoom", "msteams"], "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": ["Conferencing"] } }, "/v2/conferencing": { "get": { "operationId": "ConferencingController_listInstalledConferencingApps", "summary": "List your conferencing applications", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConferencingAppsOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/default": { "post": { "operationId": "ConferencingController_default", "summary": "Set your default conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/default": { "get": { "operationId": "ConferencingController_getDefault", "summary": "Get your default conferencing application", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/disconnect": { "delete": { "operationId": "ConferencingController_disconnect", "summary": "Disconnect your conferencing application", "parameters": [ { "name": "app", "required": true, "in": "path", "description": "Conferencing application type", "schema": { "enum": ["google-meet", "zoom", "msteams"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisconnectConferencingAppOutputResponseDto" } } } } }, "tags": ["Conferencing"] } }, "/v2/oauth-clients/{clientId}/users": { "get": { "operationId": "OAuthClientUsersController_getManagedUsers", "summary": "Get all managed users", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "description": "The number of items to return", "schema": { "example": 10, "type": "number" } }, { "name": "offset", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "example": 0, "type": "number" } }, { "name": "emails", "required": false, "in": "query", "description": "Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.", "schema": { "example": "?emails=email1@example.com,email2@example.com", "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUsersOutput" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] }, "post": { "operationId": "OAuthClientUsersController_createUser", "summary": "Create a managed user", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedUserInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedUserOutput" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}": { "get": { "operationId": "OAuthClientUsersController_getUserById", "summary": "Get a managed user", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] }, "patch": { "operationId": "OAuthClientUsersController_updateUser", "summary": "Update a managed user", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateManagedUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] }, "delete": { "operationId": "OAuthClientUsersController_deleteUser", "summary": "Delete a managed user", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedUserOutput" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { "post": { "operationId": "OAuthClientUsersController_forceRefresh", "summary": "Force refresh tokens", "description": "These endpoints are deprecated and will be removed in the future. If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KeysResponseDto" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] } }, "/v2/oauth/{clientId}/refresh": { "post": { "operationId": "OAuthFlowController_refreshTokens", "summary": "Refresh managed user tokens", "description": "These endpoints are deprecated and will be removed in the future. If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use\n \"refresh token rotation\" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "required": true, "in": "header", "description": "OAuth client secret key.", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshTokenInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KeysResponseDto" } } } } }, "tags": ["Deprecated: Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/webhooks": { "post": { "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", "summary": "Create a webhook", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Deprecated: Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", "summary": "Get all webhooks", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto" } } } } }, "tags": ["Deprecated: Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", "summary": "Delete all webhooks", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" } } } } }, "tags": ["Deprecated: Platform / Webhooks"] } }, "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { "patch": { "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", "summary": "Update a webhook", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "clientId", "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": ["Deprecated: Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", "summary": "Get a webhook", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Deprecated: Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", "summary": "Delete a webhook", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "OAuth client secret key", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" } } } } }, "tags": ["Deprecated: Platform / Webhooks"] } }, "/v2/oauth-clients": { "post": { "operationId": "OAuthClientsController_createOAuthClient", "summary": "Create an OAuth client", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOAuthClientInput" } } } }, "responses": { "201": { "description": "Create an OAuth client", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOAuthClientResponseDto" } } } } }, "tags": ["Deprecated: Platform OAuth Clients"] }, "get": { "operationId": "OAuthClientsController_getOAuthClients", "summary": "Get all OAuth clients", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientsResponseDto" } } } } }, "tags": ["Deprecated: Platform OAuth Clients"] } }, "/v2/oauth-clients/{clientId}": { "get": { "operationId": "OAuthClientsController_getOAuthClientById", "summary": "Get an OAuth client", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientResponseDto" } } } } }, "tags": ["Deprecated: Platform OAuth Clients"] }, "patch": { "operationId": "OAuthClientsController_updateOAuthClient", "summary": "Update an OAuth client", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOAuthClientInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientResponseDto" } } } } }, "tags": ["Deprecated: Platform OAuth Clients"] }, "delete": { "operationId": "OAuthClientsController_deleteOAuthClient", "summary": "Delete an OAuth client", "description": "These endpoints are deprecated and will be removed in the future.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetOAuthClientResponseDto" } } } } }, "tags": ["Deprecated: Platform OAuth Clients"] } }, "/v2/destination-calendars": { "put": { "operationId": "DestinationCalendarsController_updateDestinationCalendars", "summary": "Update destination calendars", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DestinationCalendarsInputBodyDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DestinationCalendarsOutputResponseDto" } } } } }, "tags": ["Destination Calendars"] } }, "/v2/event-types": { "post": { "operationId": "EventTypesController_2024_06_14_createEventType", "summary": "Create an event type", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-14. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-14" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEventTypeInput_2024_06_14" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "get": { "operationId": "EventTypesController_2024_06_14_getEventTypes", "summary": "Get all event types", "description": "Hidden event types are returned only if authentication is provided and it belongs to the event type owner.\n \n Use the optional `sortCreatedAt` query parameter to order results by creation date (by ID). Accepts \"asc\" (oldest first) or \"desc\" (newest first). When not provided, no explicit ordering is applied.\n \n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-14. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-14" } }, { "name": "username", "required": false, "in": "query", "description": "The username of the user to get event types for. If only username provided will get all event types.", "schema": { "type": "string" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of event type to return. Notably, if eventSlug is provided then username must be provided too, because multiple users can have event with same slug.", "schema": { "type": "string" } }, { "name": "usernames", "required": false, "in": "query", "description": "Get dynamic event type for multiple usernames separated by comma. e.g `usernames=alice,bob`", "schema": { "type": "string" } }, { "name": "orgSlug", "required": false, "in": "query", "description": "slug of the user's organization if he is in one, orgId is not required if using this parameter", "schema": { "type": "string" } }, { "name": "orgId", "required": false, "in": "query", "description": "ID of the organization of the user you want the get the event-types of, orgSlug is not needed when using this parameter", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { "enum": ["asc", "desc"], "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "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", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n \n Access control: This endpoint fetches an event type by ID and returns it only if the authenticated user is authorized. Authorization is granted to:\n - System admins\n - The event type owner\n - Hosts of the event type or users assigned to the event type\n - Team admins/owners of the team that owns the team event type\n - Organization admins/owners of the event type owner's organization\n - Organization admins/owners of the team's parent organization\n\n Note: Update and delete endpoints remain restricted to the event type owner only.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-14. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "patch": { "operationId": "EventTypesController_2024_06_14_updateEventType", "summary": "Update an event type", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-14. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEventTypeInput_2024_06_14" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] }, "delete": { "operationId": "EventTypesController_2024_06_14_deleteEventType", "summary": "Delete an event type", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-14. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-14" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteEventTypeOutput_2024_06_14" } } } } }, "tags": ["Event Types"] } }, "/v2/event-types/{eventTypeId}/webhooks": { "post": { "operationId": "EventTypeWebhooksController_createEventTypeWebhook", "summary": "Create a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", "summary": "Get all webhooks", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhooksOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks", "summary": "Delete all webhooks", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] } }, "/v2/event-types/{eventTypeId}/webhooks/{webhookId}": { "patch": { "operationId": "EventTypeWebhooksController_updateEventTypeWebhook", "summary": "Update a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhook", "summary": "Get a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Event Types / Webhooks"] } }, "/v2/event-types/{eventTypeId}/private-links": { "post": { "operationId": "EventTypesPrivateLinksController_createPrivateLink", "summary": "Create a private link for an event type", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePrivateLinkInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePrivateLinkOutput" } } } } }, "tags": ["Event Types Private Links"] }, "get": { "operationId": "EventTypesPrivateLinksController_getPrivateLinks", "summary": "Get all private links for an event type", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetPrivateLinksOutput" } } } } }, "tags": ["Event Types Private Links"] } }, "/v2/event-types/{eventTypeId}/private-links/{linkId}": { "patch": { "operationId": "EventTypesPrivateLinksController_updatePrivateLink", "summary": "Update a private link for an event type", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "linkId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePrivateLinkBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePrivateLinkOutput" } } } } }, "tags": ["Event Types Private Links"] }, "delete": { "operationId": "EventTypesPrivateLinksController_deletePrivateLink", "summary": "Delete a private link for an event type", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "linkId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletePrivateLinkOutput" } } } } }, "tags": ["Event Types Private Links"] } }, "/v2/organizations/{orgId}/organizations": { "post": { "operationId": "OrganizationsOrganizationsController_createOrganization", "summary": "Create an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "get": { "operationId": "OrganizationsOrganizationsController_getOrganizations", "summary": "Get all organizations within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "slug", "required": false, "in": "query", "description": "The slug of the managed organization", "schema": { "example": "organization-slug", "type": "string" } }, { "name": "metadataKey", "required": false, "in": "query", "description": "The key of the metadata - it is case sensitive so provide exactly as stored. If you provide it then you must also provide metadataValue", "schema": { "example": "metadata-key", "type": "string" } }, { "name": "metadataValue", "required": false, "in": "query", "description": "The value of the metadata - it is case sensitive so provide exactly as stored. If you provide it then you must also provide metadataKey", "schema": { "example": "metadata-value", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationsOutput" } } } } }, "tags": ["Managed Orgs"] } }, "/v2/organizations/{orgId}/organizations/{managedOrganizationId}": { "get": { "operationId": "OrganizationsOrganizationsController_getOrganization", "summary": "Get an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "patch": { "operationId": "OrganizationsOrganizationsController_updateOrganization", "summary": "Update an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] }, "delete": { "operationId": "OrganizationsOrganizationsController_deleteOrganization", "summary": "Delete an organization within an organization", "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", "parameters": [ { "name": "x-cal-secret-key", "in": "header", "description": "For platform customers - OAuth client secret key", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } }, { "name": "managedOrganizationId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetManagedOrganizationOutput" } } } } }, "tags": ["Managed Orgs"] } }, "/v2/me": { "get": { "operationId": "MeController_getMe", "summary": "Get my profile", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMeOutput" } } } } }, "tags": ["Me"] }, "patch": { "operationId": "MeController_updateMe", "summary": "Update my profile", "description": "Updates the authenticated user's profile. Email changes require verification and the primary email stays unchanged until verification completes, unless the new email is already a verified secondary email or the user is platform-managed.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateManagedUserInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateMeOutput" } } } } }, "tags": ["Me"] } }, "/v2/auth/oauth2/clients/{clientId}": { "get": { "operationId": "OAuth2Controller_getClient", "summary": "Get OAuth2 client", "description": "Returns the OAuth2 client information for the given client ID", "parameters": [ { "name": "clientId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuth2ClientResponseDto" } } } } }, "tags": ["OAuth2"] } }, "/v2/auth/oauth2/token": { "post": { "operationId": "OAuth2Controller_token", "summary": "Exchange authorization code or refresh token for tokens", "description": "RFC 6749-compliant token endpoint. Pass client_id in the request body (Section 2.3.1). Use grant_type 'authorization_code' to exchange an auth code for tokens, or 'refresh_token' to refresh an access token. Accepts both application/x-www-form-urlencoded (standard per RFC 6749 Section 4.1.3) and application/json content types.", "parameters": [], "requestBody": { "required": true, "description": "Token request body. client_id is required. Accepts application/x-www-form-urlencoded (RFC 6749 standard) or application/json. Use grant_type 'authorization_code' with client_secret (confidential) or code_verifier (public/PKCE), or grant_type 'refresh_token' with client_secret (confidential) or just the refresh_token (public).", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/OAuth2ExchangeConfidentialInput" }, { "$ref": "#/components/schemas/OAuth2ExchangePublicInput" }, { "$ref": "#/components/schemas/OAuth2RefreshConfidentialInput" }, { "$ref": "#/components/schemas/OAuth2RefreshPublicInput" } ] } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuth2TokensDto" } } } } }, "tags": ["OAuth2"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request email verification code", "description": "Sends a verification code to the email", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request phone number verification code", "description": "Sends a verification code to the phone number", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "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/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_verifyEmail", "summary": "Verify an email for an org team", "description": "Use code to verify an email", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number for an org team", "description": "Use code to verify a phone number", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails of an org team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailsOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers of an org team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhonesOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id}": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email of an org team by id", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id}": { "get": { "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number of an org team by id", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Organization Team Verified Resources"] } }, "/v2/routing-forms/{routingFormId}/calculate-slots": { "post": { "operationId": "RoutingFormsController_calculateSlotsBasedOnRoutingFormResponse", "summary": "Calculate slots based on routing form response", "description": "It will not actually save the response just return the routed event type and slots when it can be booked.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z\n ", "schema": { "example": "2050-09-05", "type": "string" } }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", "schema": { "example": "2050-09-06", "type": "string" } }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "schema": { "example": "Europe/Rome", "type": "string" } }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "schema": { "example": "60", "type": "number" } }, { "name": "format", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times.", "schema": { "example": "range", "enum": ["range", "time"], "type": "string" } }, { "name": "bookingUidToReschedule", "required": false, "in": "query", "description": "The unique identifier of the booking being rescheduled. When provided will ensure that the original booking time appears within the returned available slots when rescheduling.", "schema": { "example": "abc123def456", "type": "string" } }, { "name": "routingFormId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResponseSlotsOutput" } } } } }, "tags": ["Routing forms"] } }, "/v2/schedules": { "post": { "operationId": "SchedulesController_2024_06_11_createSchedule", "summary": "Create a schedule", "description": "\n Create a schedule for the authenticated user.\n\n The point of creating schedules is for event types to be available at specific times.\n\n The first goal of schedules is to have a default schedule. If you are platform customer and created managed users, then it is important to note that each managed user should have a default schedule.\n 1. If you passed `timeZone` when creating managed user, then the default schedule from Monday to Friday from 9AM to 5PM will be created with that timezone. The managed user can then change the default schedule via the `AvailabilitySettings` atom.\n 2. If you did not, then we assume you want the user to have this specific schedule right away. You should create a default schedule by specifying\n `\"isDefault\": true` in the request body. Until the user has a default schedule the user can't be booked nor manage their schedule via the AvailabilitySettings atom.\n\n The second goal of schedules is to create another schedule that event types can point to. This is useful for when an event is booked because availability is not checked against the default schedule but instead against that specific schedule.\n After creating a non-default schedule, you can update an event type to point to that schedule via the PATCH `event-types/{eventTypeId}` endpoint.\n\n When specifying start time and end time for each day use the 24 hour format e.g. 08:00, 15:00 etc.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "get": { "operationId": "SchedulesController_2024_06_11_getSchedules", "summary": "Get all schedules", "description": "Get all schedules of the authenticated user.\n \n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/schedules/default": { "get": { "operationId": "SchedulesController_2024_06_11_getDefaultSchedule", "summary": "Get default schedule", "description": "Get the default schedule of the authenticated user.\n \n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDefaultScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/schedules/{scheduleId}": { "get": { "operationId": "SchedulesController_2024_06_11_getSchedule", "summary": "Get a schedule", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "patch": { "operationId": "SchedulesController_2024_06_11_updateSchedule", "summary": "Update a schedule", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] }, "delete": { "operationId": "SchedulesController_2024_06_11_deleteSchedule", "summary": "Delete a schedule", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-06-11. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-06-11" } }, { "name": "scheduleId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" } } } } }, "tags": ["Schedules"] } }, "/v2/selected-calendars": { "post": { "operationId": "SelectedCalendarsController_addSelectedCalendar", "summary": "Add a selected calendar", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarsInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" } } } } }, "tags": ["Selected Calendars"] }, "delete": { "operationId": "SelectedCalendarsController_deleteSelectedCalendar", "summary": "Delete a selected calendar", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "integration", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "externalId", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "credentialId", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "delegationCredentialId", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" } } } } }, "tags": ["Selected Calendars"] } }, "/v2/slots": { "get": { "operationId": "SlotsController_2024_09_04_getAvailableSlots", "summary": "Get available time slots for an event type", "description": "\n There are 4 ways to get available slots for event type of an individual user:\n\n 1. By event type id. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'\n\n 2. By event type slug + username. Example '/v2/slots?eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 3. By event type slug + username + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 4. By usernames only (used for dynamic event type - there is no specific event but you want to know when 2 or more people are available). Example '/v2/slots?usernames=alice,bob&username=bob&organizationSlug=org-slug&start=2050-09-05&end=2050-09-06'. As you see you also need to provide the slug of the organization to which each user in the 'usernames' array belongs.\n\n And 3 ways to get available slots for team event type:\n\n 1. By team event type id. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'.\n **Note for managed event types**: Managed event types are templates that create individual child event types for each team member. You cannot fetch slots for the parent managed event type directly. Instead, you must:\n - Find the child event type IDs (the ones assigned to specific users)\n - Use those child event type IDs to fetch slots as individual user event types using as described in the individual user section above.\n\n 2. By team event type slug + team slug. Example '/v2/slots?eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n 3. By team event type slug + team slug + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n All of them require \"start\" and \"end\" query parameters which define the time range for which available slots should be checked.\n Optional parameters are:\n - timeZone: Time zone in which the available slots should be returned. Defaults to UTC.\n - duration: Only use for event types that allow multiple durations or for dynamic event types. If not passed for multiple duration event types defaults to default duration. For dynamic event types defaults to 30 aka each returned slot is 30 minutes long. So duration=60 means that returned slots will be each 60 minutes long.\n - format: Format of the slots. By default return is an object where each key is date and value is array of slots as string. If you want to get start and end of each slot use \"range\" as value.\n - bookingUidToReschedule: When rescheduling an existing booking, provide the booking's unique identifier to exclude its time slot from busy time calculations. This ensures the original booking time appears as available for rescheduling.\n\n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.\n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "bookingUidToReschedule", "required": false, "in": "query", "description": "The unique identifier of the booking being rescheduled. When provided will ensure that the original booking time appears within the returned available slots when rescheduling.", "schema": { "example": "abc123def456", "type": "string" } }, { "name": "start", "required": true, "in": "query", "description": "\n Time starting from which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z.", "schema": { "example": "2050-09-05", "type": "string" } }, { "name": "end", "required": true, "in": "query", "description": "\n Time until which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z.", "schema": { "example": "2050-09-06", "type": "string" } }, { "name": "organizationSlug", "required": false, "in": "query", "description": "The slug of the organization to which user with username belongs or team with teamSlug belongs.", "schema": { "example": "org-slug", "type": "string" } }, { "name": "teamSlug", "required": false, "in": "query", "description": "The slug of the team who owns event type with eventTypeSlug - used when slots are checked for team event type.", "schema": { "example": "team-slug", "type": "string" } }, { "name": "username", "required": false, "in": "query", "description": "The username of the user who owns event type with eventTypeSlug - used when slots are checked for individual user event type.", "schema": { "example": "bob", "type": "string" } }, { "name": "eventTypeSlug", "required": false, "in": "query", "description": "The slug of the event type for which available slots should be checked. If slug is provided then username or teamSlug must be provided too and if relevant organizationSlug too.", "schema": { "example": "event-type-slug", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "The ID of the event type for which available slots should be checked.", "schema": { "example": "100", "type": "number" } }, { "name": "usernames", "required": false, "in": "query", "description": "The usernames for which available slots should be checked separated by a comma.\n\n Checking slots by usernames is used mainly for dynamic events where there is no specific event but we just want to know when 2 or more people are available.\n\n Must contain at least 2 usernames.", "schema": { "example": "alice,bob", "type": "string" } }, { "name": "format", "required": false, "in": "query", "description": "Format of slot times in response. Use 'range' to get start and end times. Use 'time' or omit this query parameter to get only start time.", "schema": { "example": "range", "type": "string" } }, { "name": "duration", "required": false, "in": "query", "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", "schema": { "example": "60", "type": "number" } }, { "name": "timeZone", "required": false, "in": "query", "description": "Time zone in which the available slots should be returned. Defaults to UTC.", "schema": { "example": "Europe/Rome", "type": "string" } } ], "responses": { "200": { "description": "A map of available slots indexed by date, where each date is associated with an array of time slots. If format=range is specified, each slot will be an object with start and end properties denoting start and end of the slot.\n For seated slots each object will have attendeesCount and bookingUid properties.\n If no slots are available, the data field will be an empty object {}.", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "title": "Default format (or with format=time)", "additionalProperties": { "type": "array", "items": { "type": "string" } }, "example": { "status": "success", "data": { "2050-09-05": [ { "start": "2050-09-05T09:00:00.000+02:00" }, { "start": "2050-09-05T10:00:00.000+02:00" } ], "2050-09-06": [ { "start": "2050-09-06T09:00:00.000+02:00" }, { "start": "2050-09-06T10:00:00.000+02:00" } ] } } }, { "type": "object", "title": "Range format (when format=range)", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } } } }, "example": { "status": "success", "data": { "2050-09-05": [ { "start": "2050-09-05T09:00:00.000+02:00", "end": "2050-09-05T10:00:00.000+02:00" }, { "start": "2050-09-05T10:00:00.000+02:00", "end": "2050-09-05T11:00:00.000+02:00" } ], "2050-09-06": [ { "start": "2050-09-06T09:00:00.000+02:00", "end": "2050-09-06T10:00:00.000+02:00" }, { "start": "2050-09-06T10:00:00.000+02:00", "end": "2050-09-06T11:00:00.000+02:00" } ] } } } ] } } } } }, "tags": ["Slots"] } }, "/v2/slots/reservations": { "post": { "operationId": "SlotsController_2024_09_04_reserveSlot", "summary": "Reserve a slot", "description": "Make a slot not available for others to book for a certain period of time. If you authenticate using oAuth credentials, api key or access token\n then you can also specify custom duration for how long the slot should be reserved for (defaults to 5 minutes).\n \n Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint. \n ", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": false, "schema": { "type": "string" } }, { "name": "x-cal-client-id", "in": "header", "description": "For platform customers - OAuth client ID", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" } } } } }, "tags": ["Slots"] } }, "/v2/slots/reservations/{uid}": { "get": { "operationId": "SlotsController_2024_09_04_getReservedSlot", "summary": "Get reserved slot", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetReservedSlotOutput_2024_09_04" } } } } }, "tags": ["Slots"] }, "patch": { "operationId": "SlotsController_2024_09_04_updateReservedSlot", "summary": "Update a reserved slot", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" } } } } }, "tags": ["Slots"] }, "delete": { "operationId": "SlotsController_2024_09_04_deleteReservedSlot", "summary": "Delete a reserved slot", "description": "Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.", "parameters": [ { "name": "cal-api-version", "in": "header", "description": "Must be set to 2024-09-04. If not set to this value, the endpoint will default to an older version.", "required": true, "schema": { "type": "string", "default": "2024-09-04" } }, { "name": "uid", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "example": { "status": "success" } } } } } }, "tags": ["Slots"] } }, "/v2/stripe/connect": { "get": { "operationId": "StripeController_redirect", "summary": "Get Stripe connect URL", "parameters": [ { "name": "Authorization", "required": true, "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripConnectOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/stripe/save": { "get": { "operationId": "StripeController_save", "summary": "Save Stripe credentials", "parameters": [ { "name": "state", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "code", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsSaveOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/stripe/check": { "get": { "operationId": "StripeController_check", "summary": "Check Stripe connection", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" } } } } }, "tags": ["Stripe"] } }, "/v2/teams": { "post": { "operationId": "TeamsController_createTeam", "summary": "Create a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamOutput" } } } } }, "tags": ["Teams"] }, "get": { "operationId": "TeamsController_getTeams", "summary": "Get teams", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamsOutput" } } } } }, "tags": ["Teams"] } }, "/v2/teams/{teamId}": { "get": { "operationId": "TeamsController_getTeam", "summary": "Get a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamOutput" } } } } }, "tags": ["Teams"] }, "patch": { "operationId": "TeamsController_updateTeam", "summary": "Update a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrgTeamDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamOutput" } } } } }, "tags": ["Teams"] }, "delete": { "operationId": "TeamsController_deleteTeam", "summary": "Delete a team", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgTeamOutputResponseDto" } } } } }, "tags": ["Teams"] } }, "/v2/teams/{teamId}/bookings": { "get": { "operationId": "TeamsBookingsController_getAllTeamBookings", "summary": "Get team bookings", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "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.", "schema": { "example": "?status=upcoming,past", "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.", "schema": { "example": "example@domain.com", "type": "string" } }, { "name": "attendeeName", "required": false, "in": "query", "description": "Filter bookings by the attendee's name.", "schema": { "example": "John Doe", "type": "string" } }, { "name": "bookingUid", "required": false, "in": "query", "description": "Filter bookings by the booking Uid.", "schema": { "example": "2NtaeaVcKfpmSZ4CthFdfk", "type": "string" } }, { "name": "eventTypeIds", "required": false, "in": "query", "description": "Filter bookings by event type ids belonging to the team. Event type ids must be separated by a comma.", "schema": { "example": "?eventTypeIds=100,200", "type": "string" } }, { "name": "eventTypeId", "required": false, "in": "query", "description": "Filter bookings by event type id belonging to the team.", "schema": { "example": "?eventTypeId=100", "type": "string" } }, { "name": "afterStart", "required": false, "in": "query", "description": "Filter bookings with start after this date string.", "schema": { "example": "?afterStart=2025-03-07T10:00:00.000Z", "type": "string" } }, { "name": "beforeEnd", "required": false, "in": "query", "description": "Filter bookings with end before this date string.", "schema": { "example": "?beforeEnd=2025-03-07T11:00:00.000Z", "type": "string" } }, { "name": "sortStart", "required": false, "in": "query", "description": "Sort results by their start time in ascending or descending order.", "schema": { "example": "?sortStart=asc OR ?sortStart=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "sortEnd", "required": false, "in": "query", "description": "Sort results by their end time in ascending or descending order.", "schema": { "example": "?sortEnd=asc OR ?sortEnd=desc", "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.", "schema": { "example": "?sortCreated=asc OR ?sortCreated=desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "The number of items to return", "schema": { "minimum": 1, "maximum": 250, "example": 10, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "The number of items to skip", "schema": { "minimum": 0, "example": 0, "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" } } } } }, "tags": ["Teams / Bookings"] } }, "/v2/teams/{teamId}/event-types": { "post": { "operationId": "TeamsEventTypesController_createTeamEventType", "summary": "Create an event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] }, "get": { "operationId": "TeamsEventTypesController_getTeamEventTypes", "summary": "Get team event types", "description": "Use the optional `sortCreatedAt` query parameter to order results by creation date (by ID). Accepts \"asc\" (oldest first) or \"desc\" (newest first). When not provided, no explicit ordering is applied.", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventSlug", "required": false, "in": "query", "description": "Slug of team event type to return.", "schema": { "type": "string" } }, { "name": "hostsLimit", "required": false, "in": "query", "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", "schema": { "type": "number" } }, { "name": "sortCreatedAt", "required": false, "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { "enum": ["asc", "desc"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypesOutput" } } } } }, "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "TeamsEventTypesController_getTeamEventType", "summary": "Get an event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] }, "patch": { "operationId": "TeamsEventTypesController_updateTeamEventType", "summary": "Update a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] }, "delete": { "operationId": "TeamsEventTypesController_deleteTeamEventType", "summary": "Delete a team event type", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" } } } } }, "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "TeamsEventTypesController_createPhoneCall", "summary": "Create a phone call", "parameters": [ { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "orgId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "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": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/webhooks": { "post": { "operationId": "TeamsEventTypesWebhooksController_createTeamEventTypeWebhook", "summary": "Create a webhook for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "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/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] }, "get": { "operationId": "TeamsEventTypesWebhooksController_getTeamEventTypeWebhooks", "summary": "Get all webhooks for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhooksOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] }, "delete": { "operationId": "TeamsEventTypesWebhooksController_deleteAllTeamEventTypeWebhooks", "summary": "Delete all webhooks for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "eventTypeId", "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/DeleteManyWebhooksOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/webhooks/{webhookId}": { "patch": { "operationId": "TeamsEventTypesWebhooksController_updateTeamEventTypeWebhook", "summary": "Update a webhook for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "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/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] }, "get": { "operationId": "TeamsEventTypesWebhooksController_getTeamEventTypeWebhook", "summary": "Get a webhook for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "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/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] }, "delete": { "operationId": "TeamsEventTypesWebhooksController_deleteTeamEventTypeWebhook", "summary": "Delete a webhook for a team event type", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "eventTypeId", "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/EventTypeWebhookOutputResponseDto" } } } } }, "tags": ["Teams / Event Types / Webhooks"] } }, "/v2/teams/{teamId}/invite": { "post": { "operationId": "TeamsInviteController_createInvite", "summary": "Create team invite link", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInviteOutputDto" } } } } }, "tags": ["Teams / Invite"] } }, "/v2/teams/{teamId}/memberships": { "post": { "operationId": "TeamsMembershipsController_createTeamMembership", "summary": "Create a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamMembershipInput" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "get": { "operationId": "TeamsMembershipsController_getTeamMemberships", "summary": "Get all memberships", "description": "Retrieve team memberships with optional filtering by email addresses. Supports pagination.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "emails", "required": false, "in": "query", "description": "Filter team memberships by email addresses. If you want to filter by multiple emails, separate them with a comma (max 20 emails for performance).", "schema": { "example": "?emails=user1@example.com,user2@example.com", "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamMembershipsOutput" } } } } }, "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/memberships/{membershipId}": { "get": { "operationId": "TeamsMembershipsController_getTeamMembership", "summary": "Get a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "patch": { "operationId": "TeamsMembershipsController_updateTeamMembership", "summary": "Update membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamMembershipInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] }, "delete": { "operationId": "TeamsMembershipsController_deleteTeamMembership", "summary": "Delete a membership", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "membershipId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTeamMembershipOutput" } } } } }, "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/schedules": { "get": { "operationId": "TeamsSchedulesController_getTeamSchedules", "summary": "Get all team member schedules", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" } } } } }, "tags": ["Teams / Schedules"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/request": { "post": { "operationId": "TeamsVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request email verification code", "description": "Sends a verification code to the Email", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/request": { "post": { "operationId": "TeamsVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request phone number verification code", "description": "Sends a verification code to the phone number", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/verify": { "post": { "operationId": "TeamsVerifiedResourcesController_verifyEmail", "summary": "Verify an email for a team", "description": "Use code to verify an email", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/verify": { "post": { "operationId": "TeamsVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number for an org team", "description": "Use code to verify a phone number", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails of a team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailsOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers of a team", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhonesOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/{id}": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email of a team by id", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedEmailOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/{id}": { "get": { "operationId": "TeamsVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number of a team by id", "parameters": [ { "name": "teamId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" } } } } }, "tags": ["Teams Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/request": { "post": { "operationId": "UserVerifiedResourcesController_requestEmailVerificationCode", "summary": "Request email verification code", "description": "Sends a verification code to the email", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestEmailVerificationOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/request": { "post": { "operationId": "UserVerifiedResourcesController_requestPhoneVerificationCode", "summary": "Request phone number verification code", "description": "Sends a verification code to the phone number", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestPhoneVerificationOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/verify": { "post": { "operationId": "UserVerifiedResourcesController_verifyEmail", "summary": "Verify an email", "description": "Use code to verify an email", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyEmailInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/verify": { "post": { "operationId": "UserVerifiedResourcesController_verifyPhoneNumber", "summary": "Verify a phone number", "description": "Use code to verify a phone number", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyPhoneInput" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhoneOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedEmails", "summary": "Get list of verified emails", "parameters": [ { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailsOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedPhoneNumbers", "summary": "Get list of verified phone numbers", "parameters": [ { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhonesOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/{id}": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedEmailById", "summary": "Get verified email by id", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedEmailOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/{id}": { "get": { "operationId": "UserVerifiedResourcesController_getVerifiedPhoneById", "summary": "Get verified phone number by id", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserVerifiedPhoneOutput" } } } } }, "tags": ["Verified Resources"] } }, "/v2/webhooks": { "post": { "operationId": "WebhooksController_createWebhook", "summary": "Create a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhookInputDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhooks", "summary": "Get all webhooks", "description": "Gets a paginated list of webhooks for the authenticated user.", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "take", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 250, "default": 250, "example": 25, "type": "number" } }, { "name": "skip", "required": false, "in": "query", "description": "Number of items to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhooksOutputResponseDto" } } } } }, "tags": ["Webhooks"] } }, "/v2/webhooks/{webhookId}": { "patch": { "operationId": "WebhooksController_updateWebhook", "summary": "Update a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWebhookInputDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhook", "summary": "Get a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] }, "delete": { "operationId": "WebhooksController_deleteWebhook", "summary": "Delete a webhook", "parameters": [ { "name": "Authorization", "in": "header", "description": "value must be `Bearer ` where `` is api key prefixed with cal_", "required": true, "schema": { "type": "string" } }, { "name": "webhookId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWebhookOutputResponseDto" } } } } }, "tags": ["Webhooks"] } } }, "info": { "title": "Cal.com API v2", "description": "", "version": "1.0.0", "contact": {} }, "tags": [], "servers": [], "components": { "schemas": { "OAuth2ClientDto": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The OAuth client ID", "example": "clxxxxxxxxxxxxxxxx" }, "redirect_uri": { "type": "string", "description": "The redirect URI for the OAuth client", "example": "https://example.com/callback" }, "name": { "type": "string", "description": "The name of the OAuth client", "example": "My App" }, "logo": { "type": "string", "nullable": true, "description": "The logo URL of the OAuth client" }, "is_trusted": { "type": "boolean", "description": "Whether the OAuth client is trusted", "example": false }, "client_type": { "type": "string", "description": "The type of OAuth client (CONFIDENTIAL or PUBLIC)", "example": "CONFIDENTIAL", "enum": ["CONFIDENTIAL", "PUBLIC"] } }, "required": ["client_id", "redirect_uri", "name", "is_trusted", "client_type"] }, "OAuth2ClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OAuth2ClientDto" } }, "required": ["status", "data"] }, "OAuth2ExchangeConfidentialInput": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The client identifier", "example": "my-client-id" }, "grant_type": { "type": "string", "description": "The grant type — must be 'authorization_code'", "example": "authorization_code", "enum": ["authorization_code"] }, "code": { "type": "string", "description": "The authorization code received from the authorize endpoint", "example": "abc123" }, "redirect_uri": { "type": "string", "description": "The redirect URI used in the authorization request", "example": "https://example.com/callback" }, "client_secret": { "type": "string", "description": "The client secret for confidential clients" } }, "required": ["client_id", "grant_type", "code", "redirect_uri", "client_secret"] }, "OAuth2ExchangePublicInput": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The client identifier", "example": "my-client-id" }, "grant_type": { "type": "string", "description": "The grant type — must be 'authorization_code'", "example": "authorization_code", "enum": ["authorization_code"] }, "code": { "type": "string", "description": "The authorization code received from the authorize endpoint", "example": "abc123" }, "redirect_uri": { "type": "string", "description": "The redirect URI used in the authorization request", "example": "https://example.com/callback" }, "code_verifier": { "type": "string", "description": "PKCE code verifier (required for public clients that used code_challenge)" } }, "required": ["client_id", "grant_type", "code", "redirect_uri", "code_verifier"] }, "OAuth2RefreshConfidentialInput": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The client identifier", "example": "my-client-id" }, "grant_type": { "type": "string", "description": "The grant type — must be 'refresh_token'", "example": "refresh_token", "enum": ["refresh_token"] }, "refresh_token": { "type": "string", "description": "The refresh token", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, "client_secret": { "type": "string", "description": "The client secret for confidential clients" } }, "required": ["client_id", "grant_type", "refresh_token", "client_secret"] }, "OAuth2RefreshPublicInput": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The client identifier", "example": "my-client-id" }, "grant_type": { "type": "string", "description": "The grant type — must be 'refresh_token'", "example": "refresh_token", "enum": ["refresh_token"] }, "refresh_token": { "type": "string", "description": "The refresh token", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } }, "required": ["client_id", "grant_type", "refresh_token"] }, "OAuth2TokensDto": { "type": "object", "properties": { "access_token": { "type": "string", "description": "The access token", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, "token_type": { "type": "string", "description": "The token type", "example": "bearer" }, "refresh_token": { "type": "string", "description": "The refresh token", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, "expires_in": { "type": "number", "description": "The number of seconds until the access token expires", "example": 1800 } }, "required": ["access_token", "token_type", "refresh_token", "expires_in"] }, "ManagedUserOutput": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "email": { "type": "string", "example": "alice+cluo37fwd0001khkzqqynkpj3@example.com" }, "username": { "type": "string", "nullable": true, "example": "alice" }, "name": { "type": "string", "nullable": true, "example": "alice" }, "bio": { "type": "string", "nullable": true, "example": "bio" }, "timeZone": { "type": "string", "example": "America/New_York" }, "weekStart": { "type": "string", "example": "Sunday" }, "createdDate": { "type": "string", "example": "2024-04-01T00:00:00.000Z" }, "timeFormat": { "type": "number", "nullable": true, "example": 12 }, "defaultScheduleId": { "type": "number", "nullable": true, "example": null }, "locale": { "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "type": "string", "example": "en" }, "avatarUrl": { "type": "string", "nullable": true, "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": [ "id", "email", "username", "name", "bio", "timeZone", "weekStart", "createdDate", "timeFormat", "defaultScheduleId" ] }, "GetManagedUsersOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ManagedUserOutput" } } }, "required": ["status", "data"] }, "CreateManagedUserInput": { "type": "object", "properties": { "email": { "type": "string", "example": "alice@example.com" }, "name": { "type": "string", "example": "Alice Smith", "description": "Managed user's name is used in emails" }, "timeFormat": { "type": "number", "enum": [12, 24], "example": 12, "description": "Must be a number 12 or 24" }, "weekStart": { "type": "string", "example": "Monday", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] }, "timeZone": { "type": "string", "example": "America/New_York", "description": "Timezone is used to create user's default schedule from Monday to Friday from 9AM to 5PM. If it is not passed then user does not have\n a default schedule and it must be created manually via the /schedules endpoint. Until the schedule is created, the user can't access availability atom to set his / her availability nor booked.\n It will default to Europe/London if not passed." }, "locale": { "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "type": "string", "example": "en" }, "avatarUrl": { "type": "string", "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } } }, "required": ["email", "name"] }, "CreateManagedUserData": { "type": "object", "properties": { "accessToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "refreshToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "user": { "$ref": "#/components/schemas/ManagedUserOutput" }, "accessTokenExpiresAt": { "type": "number" }, "refreshTokenExpiresAt": { "type": "number" } }, "required": ["accessToken", "refreshToken", "user", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "CreateManagedUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateManagedUserData" }, "error": { "type": "object" } }, "required": ["status", "data"] }, "GetManagedUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ManagedUserOutput" } }, "required": ["status", "data"] }, "UpdateManagedUserInput": { "type": "object", "properties": { "email": { "type": "string" }, "name": { "type": "string" }, "timeFormat": { "type": "number", "enum": [12, 24], "example": 12, "description": "Must be 12 or 24" }, "defaultScheduleId": { "type": "number" }, "weekStart": { "type": "string", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "example": "Monday" }, "timeZone": { "type": "string" }, "locale": { "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "type": "string", "example": "en" }, "avatarUrl": { "type": "string", "example": "https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png", "description": "URL of the user's avatar image" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } } } }, "KeysDto": { "type": "object", "properties": { "accessToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "refreshToken": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "accessTokenExpiresAt": { "type": "number" }, "refreshTokenExpiresAt": { "type": "number" } }, "required": ["accessToken", "refreshToken", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "KeysResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/KeysDto" } }, "required": ["status", "data"] }, "CreateOAuthClientInput": { "type": "object", "properties": { "logo": { "type": "string" }, "name": { "type": "string" }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "permissions": { "type": "array", "description": "Array of permission keys like [\"BOOKING_READ\", \"BOOKING_WRITE\"]. Use [\"*\"] to grant all permissions.", "items": { "type": "string", "enum": [ "EVENT_TYPE_READ", "EVENT_TYPE_WRITE", "BOOKING_READ", "BOOKING_WRITE", "SCHEDULE_READ", "SCHEDULE_WRITE", "APPS_READ", "APPS_WRITE", "PROFILE_READ", "PROFILE_WRITE", "*" ] } }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" }, "areDefaultEventTypesEnabled": { "type": "boolean", "default": false, "description": "If true, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Set this as false if you want to create a managed user and then manually create event types for the user." }, "areCalendarEventsEnabled": { "type": "boolean", "default": true, "description": "If true and if managed user has calendar connected, calendar events will be created. Disable it if you manually create calendar events. Default to true." } }, "required": ["name", "redirectUris", "permissions"] }, "CreateOAuthClientOutput": { "type": "object", "properties": { "clientId": { "type": "string", "example": "clsx38nbl0001vkhlwin9fmt0" }, "clientSecret": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi" } }, "required": ["clientId", "clientSecret"] }, "CreateOAuthClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "example": { "clientId": "clsx38nbl0001vkhlwin9fmt0", "clientSecret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi" }, "allOf": [ { "$ref": "#/components/schemas/CreateOAuthClientOutput" } ] } }, "required": ["status", "data"] }, "PlatformOAuthClientDto": { "type": "object", "properties": { "id": { "type": "string", "example": "clsx38nbl0001vkhlwin9fmt0" }, "name": { "type": "string", "example": "MyClient" }, "secret": { "type": "string", "example": "secretValue" }, "permissions": { "type": "array", "description": "Array of permission keys like [\"BOOKING_READ\", \"BOOKING_WRITE\"]", "items": { "type": "string", "enum": [ "EVENT_TYPE_READ", "EVENT_TYPE_WRITE", "BOOKING_READ", "BOOKING_WRITE", "SCHEDULE_READ", "SCHEDULE_WRITE", "APPS_READ", "APPS_WRITE", "PROFILE_READ", "PROFILE_WRITE" ] }, "example": ["BOOKING_READ", "BOOKING_WRITE"] }, "logo": { "type": "object", "example": "https://example.com/logo.png" }, "redirectUris": { "example": ["https://example.com/callback"], "type": "array", "items": { "type": "string" } }, "organizationId": { "type": "number", "example": 1 }, "createdAt": { "format": "date-time", "type": "string", "example": "2024-03-23T08:33:21.851Z" }, "areEmailsEnabled": { "type": "boolean", "example": true }, "areDefaultEventTypesEnabled": { "type": "boolean", "example": true, "description": "If enabled, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Leave this disabled if you want to create a managed user and then manually create event types for the user." }, "areCalendarEventsEnabled": { "type": "boolean", "example": true, "description": "If true and if managed user has calendar connected, calendar events will be created. Disable it if you manually create calendar events. Default to true." }, "bookingRedirectUri": { "type": "string", "example": "https://example.com/booking-redirect" }, "bookingCancelRedirectUri": { "type": "string", "example": "https://example.com/booking-cancel" }, "bookingRescheduleRedirectUri": { "type": "string", "example": "https://example.com/booking-reschedule" } }, "required": [ "id", "name", "secret", "permissions", "redirectUris", "organizationId", "createdAt", "areEmailsEnabled", "areDefaultEventTypesEnabled", "areCalendarEventsEnabled" ] }, "GetOAuthClientsResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/PlatformOAuthClientDto" } } }, "required": ["status", "data"] }, "GetOAuthClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/PlatformOAuthClientDto" } }, "required": ["status", "data"] }, "UpdateOAuthClientInput": { "type": "object", "properties": { "logo": { "type": "string" }, "name": { "type": "string" }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "bookingRedirectUri": { "type": "string" }, "bookingCancelRedirectUri": { "type": "string" }, "bookingRescheduleRedirectUri": { "type": "string" }, "areEmailsEnabled": { "type": "boolean" }, "areDefaultEventTypesEnabled": { "type": "boolean", "description": "If true, when creating a managed user the managed user will have 4 default event types: 30 and 60 minutes without Cal video, 30 and 60 minutes with Cal video. Set this as false if you want to create a managed user and then manually create event types for the user." }, "areCalendarEventsEnabled": { "type": "boolean", "description": "If true and if managed user has calendar connected, calendar events will be created. Disable it if you manually create calendar events. Default to true." } } }, "RefreshTokenInput": { "type": "object", "properties": { "refreshToken": { "type": "string", "description": "Managed user's refresh token." } }, "required": ["refreshToken"] }, "RefreshApiKeyInput": { "type": "object", "properties": { "apiKeyDaysValid": { "type": "number", "minimum": 1, "description": "For how many days is managed organization api key valid. Defaults to 30 days.", "example": 60, "default": 30 }, "apiKeyNeverExpires": { "type": "boolean", "description": "If true, organization api key never expires.", "example": true } } }, "ApiKeyOutput": { "type": "object", "properties": { "apiKey": { "type": "string" } }, "required": ["apiKey"] }, "RefreshApiKeyOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ApiKeyOutput" } }, "required": ["status", "data"] }, "BookerLayouts_2024_06_14": { "type": "object", "properties": { "defaultLayout": { "type": "string", "enum": ["month", "week", "column"] }, "enabledLayouts": { "type": "array", "description": "Array of valid layouts - month, week or column", "items": { "type": "string", "enum": ["month", "week", "column"] } } }, "required": ["defaultLayout", "enabledLayouts"] }, "EventTypeColor_2024_06_14": { "type": "object", "properties": { "lightThemeHex": { "type": "string", "description": "Color used for event types in light theme", "example": "#292929" }, "darkThemeHex": { "type": "string", "description": "Color used for event types in dark theme", "example": "#fafafa" } }, "required": ["lightThemeHex", "darkThemeHex"] }, "DestinationCalendar_2024_06_14": { "type": "object", "properties": { "integration": { "type": "string", "description": "The integration type of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the integration type of your connected calendars." }, "externalId": { "type": "string", "description": "The external ID of the destination calendar. Refer to the /api/v2/calendars endpoint to retrieve the external IDs of your connected calendars." } }, "required": ["integration", "externalId"] }, "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", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ] } }, "required": ["type", "integration"] }, "InputPhoneLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone`" }, "phone": { "type": "string", "example": "+37120993151" }, "public": { "type": "boolean" } }, "required": ["type", "phone", "public"] }, "PhoneFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking. Special slug is `attendeePhoneNumber` - if you create\n a phone input field with this slug for organization team event type you can create an organization team event type that can be booked using phone without requiring an email by setting {\"type\": \"email\", \"required\": false, \"hidden\": true} to the email booking field input in the request body.", "example": "some-slug" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{phone: '+37122222222'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "AddressFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "address", "description": "only allowed value for type is `address`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your address" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 1234 Main St" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`, the address field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{address: 'mainstreat 10, new york'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "TextFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "text", "description": "only allowed value for type is `text`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your text" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Enter text here" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `friend` and the URL contains query parameter `&friend=bob`, the text field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{friend: 'bob'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "NumberFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "number", "description": "only allowed value for type is `number`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter a number" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., 100" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `calories` and the URL contains query parameter `&calories=3000`, the number field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{calories: 3000}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "TextAreaFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "textarea", "description": "only allowed value for type is `textarea`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter detailed information" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Detailed description here..." }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `reflection` and the URL contains query parameter `&reflection=Today I shipped a feature`, the text area will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{reflection: 'Today i shipped a feature'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "SelectFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "select", "description": "only allowed value for type is `select`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select an option" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "Select..." }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' will be selected and the select field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: 'italian'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden"] }, "MultiSelectFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "multiselect", "description": "only allowed value for type is `multiselect`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please select multiple options" }, "required": { "type": "boolean" }, "options": { "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and the URL contains query parameter `&language=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: ['en', 'it']}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "MultiEmailFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "multiemail", "description": "only allowed value for type is `multiemail`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter multiple emails" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., example@example.com" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`, the these emails will be added and none more can be added. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{consultants: ['alice@gmail.com', 'bob@gmail.com']}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "CheckboxGroupFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "checkbox", "description": "only allowed value for type is `checkbox`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select all that apply" }, "required": { "type": "boolean" }, "options": { "example": ["Checkbox 1", "Checkbox 2"], "type": "array", "items": { "type": "string" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `notify` and the URL contains query parameter `¬ify=true`, the checkbox will be selected and the checkbox field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{notify: true}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "RadioGroupFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "radio", "description": "only allowed value for type is `radio`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select one option" }, "required": { "type": "boolean" }, "options": { "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio button will be selected and the select field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: 'italian'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "options", "hidden"] }, "BooleanFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean", "description": "only allowed value for type is `boolean`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Agree to terms?" }, "required": { "type": "boolean" }, "disableOnPrefill": { "type": "boolean", "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` and the URL contains query parameter `¬ify=true`, the checkbox will be selected and the checkbox field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{notify: true}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "hidden"] }, "UrlFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "url", "description": "only allowed value for type is `url`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your text" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Enter url here" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `videourl` and the URL contains query parameter `&videourl=https://youtube.com/abc`the url field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{videourl: 'https://caltube.com/123'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden"] }, "BusinessDaysWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": ["businessDays", "calendarDays", "range"], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { "type": "number", "example": 5, "description": "How many business day into the future can this event be booked" }, "rolling": { "type": "boolean", "example": true, "description": "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " } }, "required": ["type", "value"] }, "CalendarDaysWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": ["businessDays", "calendarDays", "range"], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { "type": "number", "example": 5, "description": "How many calendar days into the future can this event be booked" }, "rolling": { "type": "boolean", "example": true, "description": "\n Determines the behavior of the booking window:\n - If **true**, the window is rolling. This means the number of available days will always be equal the specified 'value' \n and adjust dynamically as bookings are made. For example, if 'value' is 3 and availability is only on Mondays, \n a booker attempting to schedule on November 10 will see slots on November 11, 18, and 25. As one of these days \n becomes fully booked, a new day (e.g., December 2) will open up to ensure 3 available days are always visible.\n - If **false**, the window is fixed. This means the booking window only considers the next 'value' days from the\n moment someone is trying to book. For example, if 'value' is 3, availability is only on Mondays, and the current \n date is November 10, the booker will only see slots on November 11 because the window is restricted to the next \n 3 calendar days (November 10–12).\n " } }, "required": ["type", "value"] }, "RangeWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "enum": ["businessDays", "calendarDays", "range"], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { "example": ["2030-09-05", "2030-09-09"], "description": "Date range for when this event can be booked.", "type": "array", "items": { "type": "string" } } }, "required": ["type", "value"] }, "BaseBookingLimitsCount_2024_06_14": { "type": "object", "properties": { "day": { "type": "number", "description": "The number of bookings per day", "example": 1 }, "week": { "type": "number", "description": "The number of bookings per week", "example": 2 }, "month": { "type": "number", "description": "The number of bookings per month", "example": 3 }, "year": { "type": "number", "description": "The number of bookings per year", "example": 4 }, "disabled": { "type": "boolean", "default": false } } }, "BookerActiveBookingsLimit_2024_06_14": { "type": "object", "properties": { "maximumActiveBookings": { "type": "number", "description": "The maximum number of active bookings a booker can have for this event type.", "example": 3 }, "offerReschedule": { "type": "boolean", "description": "Whether to offer rescheduling the last active booking to the chosen time slot when limit is reached." } } }, "Disabled_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "Only acceptable value for the `disabled` property is `true`. It is used to reset the value of the property for which previously an object containing specific settings was passed.", "example": true } }, "required": ["disabled"] }, "BaseBookingLimitsDuration_2024_06_14": { "type": "object", "properties": { "day": { "type": "number", "description": "The duration of bookings per day (must be a multiple of 15)", "example": 60 }, "week": { "type": "number", "description": "The duration of bookings per week (must be a multiple of 15)", "example": 120 }, "month": { "type": "number", "description": "The duration of bookings per month (must be a multiple of 15)", "example": 180 }, "year": { "type": "number", "description": "The duration of bookings per year (must be a multiple of 15)", "example": 240 } } }, "Recurrence_2024_06_14": { "type": "object", "properties": { "interval": { "type": "number", "example": 10, "description": "Repeats every {count} week | month | year" }, "occurrences": { "type": "number", "example": 10, "description": "Repeats for a maximum of {count} events" }, "frequency": { "type": "string", "enum": ["yearly", "monthly", "weekly"] } }, "required": ["interval", "occurrences", "frequency"] }, "NoticeThreshold_2024_06_14": { "type": "object", "properties": { "unit": { "type": "string", "description": "The unit of time for the notice threshold (e.g., minutes, hours)", "example": "minutes" }, "count": { "type": "number", "description": "The time value for the notice threshold", "example": 30 } }, "required": ["unit", "count"] }, "BaseConfirmationPolicy_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "description": "The policy that determines when confirmation is required", "enum": ["always", "time"], "example": "always" }, "noticeThreshold": { "description": "The notice threshold required before confirmation is needed. Required when type is 'time'.", "allOf": [ { "$ref": "#/components/schemas/NoticeThreshold_2024_06_14" } ] }, "blockUnconfirmedBookingsInBooker": { "type": "boolean", "description": "Unconfirmed bookings still block calendar slots." } }, "required": ["type", "blockUnconfirmedBookingsInBooker"] }, "Seats_2024_06_14": { "type": "object", "properties": { "seatsPerTimeSlot": { "type": "number", "description": "Number of seats available per time slot", "example": 4 }, "showAttendeeInfo": { "type": "boolean", "description": "Show attendee information to other guests", "example": true }, "showAvailabilityCount": { "type": "boolean", "description": "Display the count of available seats", "example": true } }, "required": ["seatsPerTimeSlot", "showAttendeeInfo", "showAvailabilityCount"] }, "InputAttendeeAddressLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeAddress", "description": "only allowed value for type is `attendeeAddress`" } }, "required": ["type"] }, "InputAttendeePhoneLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeePhone", "description": "only allowed value for type is `attendeePhone`" } }, "required": ["type"] }, "InputAttendeeDefinedLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeDefined", "description": "only allowed value for type is `attendeeDefined`" } }, "required": ["type"] }, "NameDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "name", "description": "only allowed value for type is `name`. Used for having 1 booking field for both first name and last name." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&name=bob`, the name field will be prefilled with this value and disabled. In case of Booker atom need to pass 'name' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{name: 'bob'}}`. See guide https://cal.com/docs/platform/guides/booking-fields" } }, "required": ["type", "label", "placeholder"] }, "EmailDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "email", "description": "only allowed value for type is `email`" }, "label": { "type": "string" }, "required": { "type": "object", "description": "Can be set to false only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "hidden": { "type": "boolean", "description": "Can be set to true only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled. In case of Booker atom need to pass 'email' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{email: 'bob@gmail.com'}}`. See guide https://cal.com/docs/platform/guides/booking-field" } }, "required": ["type", "label", "placeholder"] }, "TitleDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "title", "description": "only allowed value for type is `title`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&title=journey`, the title field will be prefilled with this value and disabled. In case of Booker atom need to pass 'title' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{title: 'very important meeting'}}`. See guide https://cal.com/docs/platform/guides/booking-field" } }, "required": ["slug"] }, "LocationDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "location", "description": "only allowed value for type is `location`. This booking field is displayed only when event type has 2 or more locations in order to allow person doing the booking pick the location." }, "label": { "type": "string" } }, "required": ["slug"] }, "NotesDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "notes", "description": "only allowed value for type is `notes`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `¬es=journey`, the notes field will be prefilled with this value and disabled. In case of Booker atom need to pass 'notes' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{notes: 'bring notebook and paper'}}`. See guide https://cal.com/docs/platform/guides/booking-field" } }, "required": ["slug"] }, "GuestsDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "guests", "description": "only allowed value for type is `guests`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&guests=bob@cal.com`, the guests field will be prefilled with this value and disabled. In case of Booker atom need to pass 'guests' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{guests: ['bob@gmail.com', 'alice@gmail.com']}}`. See guide https://cal.com/docs/platform/guides/booking-field" } }, "required": ["slug"] }, "RescheduleReasonDefaultFieldInput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "rescheduleReason", "description": "only allowed value for type is `rescheduleReason`" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&rescheduleReason=travel`, the rescheduleReason field will be prefilled with this value and disabled. In case of Booker atom need to pass 'rescheduleReason' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{rescheduleReason: 'bob'}}`. See guide https://cal.com/docs/platform/guides/booking-field" } }, "required": ["slug"] }, "InputOrganizersDefaultApp_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "organizersDefaultApp", "description": "only allowed value for type is `organizersDefaultApp`" } }, "required": ["type"] }, "EmailSettings_2024_06_14": { "type": "object", "properties": { "disableEmailsToAttendees": { "type": "boolean", "description": "Disables all email communication to attendees for this event type, including booking confirmations, reminders, and cancellations. This DOES NOT include emails sent by custom email workflows." }, "disableEmailsToHosts": { "type": "boolean", "description": "Disables all email communication to hosts for this event type, including booking confirmations, reminders, and cancellations. This DOES NOT include emails sent by custom email workflows." } } }, "DisableRescheduling_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "If true, rescheduling is always disabled for this event type.", "example": true }, "minutesBefore": { "type": "number", "description": "Disable rescheduling when less than the specified number of minutes before the meeting. If set, `disabled` should be false or undefined.", "example": 60 } } }, "DisableCancelling_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "If true, cancelling is always disabled for this event type.", "example": true } } }, "CalVideoSettings": { "type": "object", "properties": { "disableRecordingForOrganizer": { "type": "boolean", "description": "If true, the organizer will not be able to record the meeting" }, "disableRecordingForGuests": { "type": "boolean", "description": "If true, the guests will not be able to record the meeting" }, "redirectUrlOnExit": { "type": "object", "description": "URL to which participants are redirected when they exit the call" }, "enableAutomaticRecordingForOrganizer": { "type": "boolean", "description": "If true, enables the automatic recording for the event when organizer joins the call" }, "enableAutomaticTranscription": { "type": "boolean", "description": "If true, enables the automatic transcription for the event whenever someone joins the call" }, "disableTranscriptionForGuests": { "type": "boolean", "description": "If true, the guests will not be able to receive transcription of the meeting" }, "disableTranscriptionForOrganizer": { "type": "boolean", "description": "If true, the organizer will not be able to receive transcription of the meeting" }, "sendTranscriptionEmails": { "type": "boolean", "description": "Send emails with the transcription of the Cal Video after the meeting ends.", "default": true } } }, "CreateEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of the Argentina by making the best flan ever!" }, "bookingFields": { "type": "array", "description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/UrlFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar before a meeting starts. This gives you time to prepare, review notes, or transition from your previous activity." }, "afterEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar after a meeting ends. This gives you time to wrap up, add notes, or decompress before your next commitment." }, "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" } ] }, "bookerActiveBookingsLimit": { "description": "Limit the number of active bookings a booker can make for this event type.", "oneOf": [ { "$ref": "#/components/schemas/BookerActiveBookingsLimit_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "onlyShowFirstAvailableSlot": { "type": "boolean", "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." }, "bookingLimitsDuration": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "customName": { "type": "string", "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", "example": "{Event type title} between {Organiser} and {Scheduler}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type. Platform customers can't manage this property because currently we have no way of determining if managed user is a host or an attendee.", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "default": false, "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "example": { "disabled": true }, "allOf": [ { "$ref": "#/components/schemas/DisableCancelling_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "example": { "disabled": false, "minutesBefore": 60 }, "allOf": [ { "$ref": "#/components/schemas/DisableRescheduling_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "description": "Set preferred language for the booking interface. Use empty string for visitor's browser language (default).", "enum": [ "", "en", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "es", "es-419", "eu", "et", "fi", "fr", "he", "hu", "it", "ja", "km", "ko", "nl", "no", "pl", "pt-BR", "pt", "ro", "ru", "sk-SK", "sr", "sv", "tr", "uk", "vi", "zh-CN", "zh-TW" ] }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled.", "default": false }, "allowReschedulingCancelledBookings": { "type": "boolean", "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking.", "default": false }, "showOptimizedSlots": { "type": "boolean", "description": "Arrange time slots to optimize availability.", "default": false }, "locations": { "type": "array", "description": "Locations where the event will take place. If not provided, cal video link will be used as the location. Note: Setting a location to a conferencing app does not install the app - the app must already be installed. Via API, only Google Meet (google-meet), Microsoft Teams (office365-video), and Zoom (zoom) can be installed. Cal Video (cal-video) is installed by default. All other conferencing apps must be connected via the Cal.com web app and are not available for Platform plan customers. You can only set an event type location to an app that has already been installed or connected.", "items": { "oneOf": [ { "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" } ] } } }, "required": ["lengthInMinutes", "title", "slug"] }, "OutputAddressLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "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", "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", "example": "integration", "description": "Only allowed value for type is `integration`" }, "integration": { "type": "string", "example": "cal-video", "enum": [ "cal-video", "google-meet", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ] }, "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", "example": "phone", "description": "only allowed value for type is `phone`" }, "phone": { "type": "string", "example": "+37120993151" }, "public": { "type": "boolean" } }, "required": ["type", "phone", "public"] }, "OutputOrganizersDefaultAppLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "organizersDefaultApp", "description": "only allowed value for type is `organizersDefaultApp`" } }, "required": ["type"] }, "OutputUnknownLocation_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "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", "example": "email", "description": "only allowed value for type is `email`", "default": "email" }, "label": { "type": "string" }, "required": { "type": "object", "description": "Can be set to false only for organization team event types and if you also pass booking field {type: \"phone\", slug: \"attendeePhoneNumber\", required: true, hidden: false, label: \"whatever label\"} of booking field type PhoneFieldInput_2024_06_14 - this is done\n to enable phone only bookings where during the booking attendee can provide only their phone number and not provide email, so you must pass to the email booking field {hidden: true, required: false}.\n If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both. Can only be hidden\n for organization team event types when also providing attendee phone number booking field." }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled. In case of Booker atom need to pass 'email' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{email: 'bob@gmail.com'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "slug": { "type": "string", "default": "email" } }, "required": ["type", "label", "placeholder", "isDefault", "slug"] }, "NameDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "name", "description": "only allowed value for type is `name`. Used for having 1 booking field for both first name and last name.", "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. In case of Booker atom need to pass 'name' to defaultFormValues prop with the desired value e.g. `defaultFormValues={{name: 'bob'}}`. See guide https://cal.com/docs/platform/guides/booking-fields" }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "slug": { "type": "string", "default": "name" }, "required": { "type": "boolean" } }, "required": ["type", "label", "placeholder", "isDefault", "slug", "required"] }, "LocationDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "slug": { "type": "string", "default": "location", "description": "This booking field is returned only if the event type has more than one location. The purpose of this field is to allow the user to select the location where the event will take place." }, "type": { "type": "string", "default": "radioInput" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" } }, "required": ["isDefault", "slug", "type", "required", "hidden", "label"] }, "RescheduleReasonDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "rescheduleReason", "description": "only allowed value for type is `rescheduleReason`", "default": "rescheduleReason" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&rescheduleReason=busy`, the reschedule reason field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "type": { "type": "string", "default": "textarea" } }, "required": ["slug", "isDefault", "type"] }, "TitleDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "title", "description": "only allowed value for type is `title`", "default": "title" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&title=masterclass`, the title field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "type": { "type": "string", "default": "text" } }, "required": ["slug", "isDefault", "type"] }, "NotesDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "notes", "description": "only allowed value for type is `notes`", "default": "notes" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `¬es=hello`, the notes field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "type": { "type": "string", "default": "textarea" } }, "required": ["slug", "isDefault", "type"] }, "GuestsDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", "example": "guests", "description": "only allowed value for type is `guests`", "default": "guests" }, "required": { "type": "boolean" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "label": { "type": "string" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&guests=lauris@cal.com`, the guests field will be prefilled with this value and disabled." }, "isDefault": { "type": "object", "description": "This property is always true because it's a default field", "example": true, "default": true }, "type": { "type": "string", "default": "multiemail" } }, "required": ["slug", "isDefault", "type"] }, "AddressFieldOutput_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. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{address: 'mainstreat 10, new york'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "BooleanFieldOutput_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", "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` and the URL contains query parameter `¬ify=true`, the checkbox will be selected and the checkbox field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{notify: true}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "CheckboxGroupFieldOutput_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` and the URL contains query parameter `¬ify=true`, the checkbox will be selected and the checkbox field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{notify: true}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "MultiEmailFieldOutput_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. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{consultants: ['alice@gmail.com', 'bob@gmail.com']}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "MultiSelectFieldOutput_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 `language` and the URL contains query parameter `&language=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: ['en', 'it']}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "UrlFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "url", "description": "only allowed value for type is `url`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Please enter your text" }, "required": { "type": "boolean" }, "placeholder": { "type": "string", "example": "e.g., Enter url here" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `videourl` and the URL contains query parameter `&videourl=https://youtube.com/abc`the url field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{videourl: 'https://caltube.com/123'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "NumberFieldOutput_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` and the URL contains query parameter `&calories=3000`, the number field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{calories: 3000}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "PhoneFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking. Special slug is `attendeePhoneNumber` - if you create\n a phone input field with this slug for organization team event type you can create an organization team event type that can be booked using phone without requiring an email by setting {\"type\": \"email\", \"required\": false, \"hidden\": true} to the email booking field input in the request body.", "example": "some-slug" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "placeholder": { "type": "string" }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{phone: '+37122222222'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "RadioGroupFieldOutput_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", "example": "radio", "description": "only allowed value for type is `radio`" }, "slug": { "type": "string", "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking", "example": "some-slug" }, "label": { "type": "string", "example": "Select one option" }, "required": { "type": "boolean" }, "options": { "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" } }, "disableOnPrefill": { "type": "boolean", "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio button will be selected and the select field will be disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: 'italian'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "SelectFieldOutput_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. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{language: 'italian'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden", "isDefault"] }, "TextAreaFieldOutput_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 `reflection` and the URL contains query parameter `&reflection=Today I shipped a feature`, the text area will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{reflection: 'Today i shipped a feature'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "TextFieldOutput_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 `friend` and the URL contains query parameter `&friend=bob`, the text field will be prefilled with this value and disabled. In case of Booker atom need to pass slug you used for this booking field to defaultFormValues prop with the desired value e.g. `defaultFormValues={{friend: 'bob'}}`. See guide https://cal.com/docs/platform/guides/booking-field" }, "hidden": { "type": "boolean", "description": "If true show under event type settings but don't show this booking field in the Booker. If false show in both." }, "isDefault": { "type": "object", "description": "This property is always false because it's not default field but custom field", "example": false, "default": false } }, "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] }, "BookerActiveBookingsLimitOutput_2024_06_14": { "type": "object", "properties": { "maximumActiveBookings": { "type": "number", "description": "The maximum number of active bookings a booker can have for this event type.", "example": 3 }, "offerReschedule": { "type": "boolean", "description": "Whether to offer rescheduling the last active booking to the chosen time slot when limit is reached." } } }, "DisableCancellingOutput_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "If true, cancelling is always disabled for this event type.", "example": true } } }, "DisableReschedulingOutput_2024_06_14": { "type": "object", "properties": { "disabled": { "type": "boolean", "description": "If true, rescheduling is always disabled for this event type.", "example": true }, "minutesBefore": { "type": "number", "description": "Rescheduling is disabled when less than the specified number of minutes before the meeting.", "example": 60 } } }, "EventTypeOutput_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "number" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of Argentina by making the best flan ever!" }, "locations": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/OutputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputUnknownLocation_2024_06_14" } ] } }, "bookingFields": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/UrlFieldOutput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean" }, "slotInterval": { "type": "object", "example": 60, "nullable": true }, "minimumBookingNotice": { "type": "number", "example": 0 }, "beforeEventBuffer": { "type": "number", "example": 0 }, "afterEventBuffer": { "type": "number", "example": 0 }, "recurrence": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" } ] }, "metadata": { "type": "object" }, "price": { "type": "number" }, "currency": { "type": "string" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "seatsPerTimeSlot": { "type": "object", "nullable": true }, "forwardParamsSuccessRedirect": { "type": "object", "nullable": true }, "successRedirectUrl": { "type": "object", "nullable": true }, "isInstantEvent": { "type": "boolean" }, "seatsShowAvailabilityCount": { "type": "boolean", "nullable": true }, "scheduleId": { "type": "number", "nullable": true }, "bookingLimitsCount": { "type": "object" }, "bookerActiveBookingsLimit": { "$ref": "#/components/schemas/BookerActiveBookingsLimitOutput_2024_06_14" }, "onlyShowFirstAvailableSlot": { "type": "boolean" }, "bookingLimitsDuration": { "type": "object" }, "bookingWindow": { "type": "array", "description": "Limit how far in the future this event can be booked", "items": { "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" } ] } }, "bookerLayouts": { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" }, "confirmationPolicy": { "type": "object" }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "$ref": "#/components/schemas/Seats_2024_06_14" }, "offsetStart": { "type": "number" }, "customName": { "type": "string" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "allOf": [ { "$ref": "#/components/schemas/DisableCancellingOutput_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "allOf": [ { "$ref": "#/components/schemas/DisableReschedulingOutput_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "nullable": true, "description": "Set preferred language for the booking interface." }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled." }, "allowReschedulingCancelledBookings": { "type": "boolean", "nullable": true, "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking." }, "showOptimizedSlots": { "type": "boolean", "nullable": true, "description": "Arrange time slots to optimize availability." }, "ownerId": { "type": "number", "example": 10 }, "users": { "type": "array", "items": { "type": "string" } }, "bookingUrl": { "type": "string", "description": "Full URL to the booking page for this event type", "example": "https://cal.com/john-doe/30min", "format": "uri" } }, "required": [ "id", "lengthInMinutes", "title", "slug", "description", "locations", "bookingFields", "disableGuests", "recurrence", "metadata", "price", "currency", "lockTimeZoneToggleOnBookingPage", "forwardParamsSuccessRedirect", "successRedirectUrl", "isInstantEvent", "scheduleId", "hidden", "bookingRequiresAuthentication", "ownerId", "users", "bookingUrl" ] }, "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"] }, "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", "slug", "bannerUrl", "name", "logoUrl", "weekStart", "brandColor", "darkBrandColor", "theme" ] }, "TeamEventTypeOutput_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "number" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of Argentina by making the best flan ever!" }, "locations": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/OutputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14" }, { "$ref": "#/components/schemas/OutputUnknownLocation_2024_06_14" } ] } }, "bookingFields": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldOutput_2024_06_14" }, { "$ref": "#/components/schemas/UrlFieldOutput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean" }, "slotInterval": { "type": "object", "example": 60, "nullable": true }, "minimumBookingNotice": { "type": "number", "example": 0 }, "beforeEventBuffer": { "type": "number", "example": 0 }, "afterEventBuffer": { "type": "number", "example": 0 }, "recurrence": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" } ] }, "metadata": { "type": "object" }, "price": { "type": "number" }, "currency": { "type": "string" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "seatsPerTimeSlot": { "type": "object", "nullable": true }, "forwardParamsSuccessRedirect": { "type": "object", "nullable": true }, "successRedirectUrl": { "type": "object", "nullable": true }, "isInstantEvent": { "type": "boolean" }, "seatsShowAvailabilityCount": { "type": "boolean", "nullable": true }, "scheduleId": { "type": "number", "nullable": true }, "bookingLimitsCount": { "type": "object" }, "bookerActiveBookingsLimit": { "$ref": "#/components/schemas/BookerActiveBookingsLimitOutput_2024_06_14" }, "onlyShowFirstAvailableSlot": { "type": "boolean" }, "bookingLimitsDuration": { "type": "object" }, "bookingWindow": { "type": "array", "description": "Limit how far in the future this event can be booked", "items": { "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" } ] } }, "bookerLayouts": { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" }, "confirmationPolicy": { "type": "object" }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "$ref": "#/components/schemas/Seats_2024_06_14" }, "offsetStart": { "type": "number" }, "customName": { "type": "string" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "allOf": [ { "$ref": "#/components/schemas/DisableCancellingOutput_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "allOf": [ { "$ref": "#/components/schemas/DisableReschedulingOutput_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "nullable": true, "description": "Set preferred language for the booking interface." }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled." }, "allowReschedulingCancelledBookings": { "type": "boolean", "nullable": true, "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking." }, "showOptimizedSlots": { "type": "boolean", "nullable": true, "description": "Arrange time slots to optimize availability." }, "teamId": { "type": "number" }, "ownerId": { "type": "object", "nullable": true }, "parentEventTypeId": { "type": "object", "description": "For managed event types, parent event type is the event type that this event type is based on", "nullable": true }, "hosts": { "type": "array", "items": { "type": "string" } }, "assignAllTeamMembers": { "type": "boolean" }, "schedulingType": { "type": "string", "enum": ["roundRobin", "collective", "managed"] }, "team": { "$ref": "#/components/schemas/EventTypeTeam" }, "emailSettings": { "description": "Email settings for this event type. Only available for organization team event types.", "allOf": [ { "$ref": "#/components/schemas/EmailSettings_2024_06_14" } ] }, "rescheduleWithSameRoundRobinHost": { "type": "boolean", "description": "Rescheduled events will be assigned to the same host as initially scheduled." } }, "required": [ "id", "lengthInMinutes", "title", "slug", "description", "locations", "bookingFields", "disableGuests", "recurrence", "metadata", "price", "currency", "lockTimeZoneToggleOnBookingPage", "forwardParamsSuccessRedirect", "successRedirectUrl", "isInstantEvent", "scheduleId", "hidden", "bookingRequiresAuthentication", "teamId", "hosts", "schedulingType", "team" ] }, "GetEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "oneOf": [ { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" }, { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } ] } }, "required": ["status", "data"] }, "GetEventTypesOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" } } }, "required": ["status", "data"] }, "UpdateEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of the Argentina by making the best flan ever!" }, "bookingFields": { "type": "array", "description": "Complete set of booking form fields. This array replaces all existing booking fields. To modify existing fields, first fetch the current event type, then include all desired fields in this array. Sending only one field will remove all other custom fields, keeping only default fields plus the provided one.", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar before a meeting starts. This gives you time to prepare, review notes, or transition from your previous activity." }, "afterEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar after a meeting ends. This gives you time to wrap up, add notes, or decompress before your next commitment." }, "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" } ] }, "bookerActiveBookingsLimit": { "description": "Limit the number of active bookings a booker can make for this event type.", "oneOf": [ { "$ref": "#/components/schemas/BookerActiveBookingsLimit_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "onlyShowFirstAvailableSlot": { "type": "boolean", "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." }, "bookingLimitsDuration": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "customName": { "type": "string", "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", "example": "{Event type title} between {Organiser} and {Scheduler}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "default": false, "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "example": { "disabled": true }, "allOf": [ { "$ref": "#/components/schemas/DisableCancelling_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "example": { "disabled": false, "minutesBefore": 60 }, "allOf": [ { "$ref": "#/components/schemas/DisableRescheduling_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "description": "Set preferred language for the booking interface. Use empty string for visitor's browser language (default).", "enum": [ "", "en", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "es", "es-419", "eu", "et", "fi", "fr", "he", "hu", "it", "ja", "km", "ko", "nl", "no", "pl", "pt-BR", "pt", "ro", "ru", "sk-SK", "sr", "sv", "tr", "uk", "vi", "zh-CN", "zh-TW" ] }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled.", "default": false }, "allowReschedulingCancelledBookings": { "type": "boolean", "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking.", "default": false }, "showOptimizedSlots": { "type": "boolean", "description": "Arrange time slots to optimize availability.", "default": false }, "locations": { "type": "array", "description": "Locations where the event will take place. If not provided, cal video link will be used as the location. Note: Setting a location to a conferencing app does not install the app - the app must already be installed. Via API, only Google Meet (google-meet), Microsoft Teams (office365-video), and Zoom (zoom) can be installed. Cal Video (cal-video) is installed by default. All other conferencing apps must be connected via the Cal.com web app and are not available for Platform plan customers. You can only set an event type location to an app that has already been installed or connected.", "items": { "oneOf": [ { "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" } ] } } } }, "UpdateEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" } }, "required": ["status", "data"] }, "DeleteData_2024_06_14": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "lengthInMinutes": { "type": "number", "example": 60 }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string" } }, "required": ["id", "lengthInMinutes", "title", "slug"] }, "DeleteEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "error"], "example": "success" }, "data": { "$ref": "#/components/schemas/DeleteData_2024_06_14" } }, "required": ["status", "data"] }, "SelectedCalendarsInputDto": { "type": "object", "properties": { "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number" }, "delegationCredentialId": { "type": "string" } }, "required": ["integration", "externalId", "credentialId"] }, "SelectedCalendarOutputDto": { "type": "object", "properties": { "userId": { "type": "number" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number", "nullable": true } }, "required": ["userId", "integration", "externalId", "credentialId"] }, "SelectedCalendarOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/SelectedCalendarOutputDto" } }, "required": ["status", "data"] }, "StripConnectOutputDto": { "type": "object", "properties": { "authUrl": { "type": "string" } }, "required": ["authUrl"] }, "StripConnectOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/StripConnectOutputDto" } }, "required": ["status", "data"] }, "StripCredentialsSaveOutputResponseDto": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] }, "StripCredentialsCheckOutputResponseDto": { "type": "object", "properties": { "status": { "type": "object", "example": "success" } }, "required": ["status"] }, "OrgTeamOutputDto": { "type": "object", "properties": { "id": { "type": "number" }, "parentId": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "logoUrl": { "type": "string" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean" }, "isOrganization": { "type": "boolean" }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean", "default": false }, "metadata": { "type": "object", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London" }, "weekStart": { "type": "string", "default": "Sunday" } }, "required": ["id", "name", "isOrganization"] }, "OrgTeamsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrgTeamOutputDto" } } }, "required": ["status", "data"] }, "OrgMeTeamsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrgTeamOutputDto" } } }, "required": ["status", "data"] }, "OrgTeamOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgTeamOutputDto" } }, "required": ["status", "data"] }, "UpdateOrgTeamDto": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean" }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "example": "Monday" }, "bookingLimits": { "type": "string" }, "includeManagedEventsInLimits": { "type": "boolean" } } }, "CreateOrgTeamDto": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug in kebab-case - if not provided will be generated automatically based on name.", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean", "default": false }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "default": "Sunday", "example": "Monday" }, "autoAcceptCreator": { "type": "boolean", "default": true, "description": "If you are a platform customer, don't pass 'false', because then team creator won't be able to create team event types." } }, "required": ["name"] }, "ScheduleAvailabilityInput_2024_06_11": { "type": "object", "properties": { "days": { "type": "array", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "example": ["Monday", "Tuesday"], "description": "Array of days when schedule is active.", "items": { "type": "string", "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] } }, "startTime": { "type": "string", "pattern": "TIME_FORMAT_HH_MM", "example": "08:00", "description": "startTime must be a valid time in format HH:MM e.g. 08:00" }, "endTime": { "type": "string", "pattern": "TIME_FORMAT_HH_MM", "example": "15:00", "description": "endTime must be a valid time in format HH:MM e.g. 15:00" } }, "required": ["days", "startTime", "endTime"] }, "ScheduleOverrideInput_2024_06_11": { "type": "object", "properties": { "date": { "type": "string", "example": "2024-05-20" }, "startTime": { "type": "string", "pattern": "TIME_FORMAT_HH_MM", "example": "12:00", "description": "startTime must be a valid time in format HH:MM e.g. 12:00" }, "endTime": { "type": "string", "pattern": "TIME_FORMAT_HH_MM", "example": "13:00", "description": "endTime must be a valid time in format HH:MM e.g. 13:00" } }, "required": ["date", "startTime", "endTime"] }, "ScheduleOutput_2024_06_11": { "type": "object", "properties": { "id": { "type": "number", "example": 254 }, "ownerId": { "type": "number", "example": 478 }, "name": { "type": "string", "example": "Catch up hours" }, "timeZone": { "type": "string", "example": "Europe/Rome" }, "availability": { "example": [ { "days": ["Monday", "Tuesday"], "startTime": "17:00", "endTime": "19:00" }, { "days": ["Wednesday", "Thursday"], "startTime": "16:00", "endTime": "20:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11" } }, "isDefault": { "type": "boolean", "example": true }, "overrides": { "example": [ { "date": "2024-05-20", "startTime": "18:00", "endTime": "21:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11" } } }, "required": ["id", "ownerId", "name", "timeZone", "availability", "isDefault", "overrides"] }, "GetSchedulesOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, "error": { "type": "object" } }, "required": ["status", "data"] }, "CreateScheduleInput_2024_06_11": { "type": "object", "properties": { "name": { "type": "string", "example": "Catch up hours" }, "timeZone": { "type": "string", "example": "Europe/Rome", "description": "Timezone is used to calculate available times when an event using the schedule is booked." }, "availability": { "description": "Each object contains days and times when the user is available. If not passed, the default availability is Monday to Friday from 09:00 to 17:00.", "example": [ { "days": ["Monday", "Tuesday"], "startTime": "17:00", "endTime": "19:00" }, { "days": ["Wednesday", "Thursday"], "startTime": "16:00", "endTime": "20:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11" } }, "isDefault": { "type": "boolean", "example": true, "description": "Each user should have 1 default schedule. If you specified `timeZone` when creating managed user, then the default schedule will be created with that timezone.\n Default schedule means that if an event type is not tied to a specific schedule then the default schedule is used." }, "overrides": { "description": "Need to change availability for a specific date? Add an override.", "example": [ { "date": "2024-05-20", "startTime": "18:00", "endTime": "21:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11" } } }, "required": ["name", "timeZone", "isDefault"] }, "CreateScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, "required": ["status", "data"] }, "GetScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } ] }, "error": { "type": "object" } }, "required": ["status", "data"] }, "UpdateScheduleInput_2024_06_11": { "type": "object", "properties": { "name": { "type": "string", "example": "One-on-one coaching" }, "timeZone": { "type": "string", "example": "Europe/Rome" }, "availability": { "example": [ { "days": ["Monday", "Tuesday"], "startTime": "09:00", "endTime": "10:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleAvailabilityInput_2024_06_11" } }, "isDefault": { "type": "boolean", "example": true }, "overrides": { "example": [ { "date": "2024-05-20", "startTime": "12:00", "endTime": "14:00" } ], "type": "array", "items": { "$ref": "#/components/schemas/ScheduleOverrideInput_2024_06_11" } } } }, "UpdateScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" }, "error": { "type": "object" } }, "required": ["status", "data"] }, "DeleteScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "ProfileOutput": { "type": "object", "properties": { "id": { "type": "number", "description": "The ID of the profile of user", "example": 1 }, "organizationId": { "type": "number", "description": "The ID of the organization of user", "example": 1 }, "userId": { "type": "number", "description": "The IDof the user", "example": 1 }, "username": { "type": "string", "nullable": true, "description": "The username of the user within the organization context", "example": "john_doe" } }, "required": ["id", "organizationId", "userId"] }, "GetOrgUsersWithProfileOutput": { "type": "object", "properties": { "id": { "type": "number", "description": "The ID of the user", "example": 1 }, "username": { "type": "string", "nullable": true, "description": "The username of the user", "example": "john_doe" }, "name": { "type": "string", "nullable": true, "description": "The name of the user", "example": "John Doe" }, "email": { "type": "string", "description": "The email of the user", "example": "john@example.com" }, "emailVerified": { "format": "date-time", "type": "string", "nullable": true, "description": "The date when the email was verified", "example": "2022-01-01T00:00:00Z" }, "bio": { "type": "string", "nullable": true, "description": "The bio of the user", "example": "I am a software developer" }, "avatarUrl": { "type": "string", "nullable": true, "description": "The URL of the user's avatar", "example": "https://example.com/avatar.jpg" }, "timeZone": { "type": "string", "description": "The time zone of the user", "example": "America/New_York" }, "weekStart": { "type": "string", "description": "The week start day of the user", "example": "Monday" }, "appTheme": { "type": "string", "nullable": true, "description": "The app theme of the user", "example": "light" }, "theme": { "type": "string", "nullable": true, "description": "The theme of the user", "example": "default" }, "defaultScheduleId": { "type": "number", "nullable": true, "description": "The ID of the default schedule for the user", "example": 1 }, "locale": { "type": "string", "nullable": true, "description": "The locale of the user", "example": "en-US" }, "timeFormat": { "type": "number", "nullable": true, "description": "The time format of the user", "example": 12 }, "hideBranding": { "type": "boolean", "description": "Whether to hide branding for the user", "example": false }, "brandColor": { "type": "string", "nullable": true, "description": "The brand color of the user", "example": "#ffffff" }, "darkBrandColor": { "type": "string", "nullable": true, "description": "The dark brand color of the user", "example": "#000000" }, "allowDynamicBooking": { "type": "boolean", "nullable": true, "description": "Whether dynamic booking is allowed for the user", "example": true }, "createdDate": { "format": "date-time", "type": "string", "description": "The date when the user was created", "example": "2022-01-01T00:00:00Z" }, "verified": { "type": "boolean", "nullable": true, "description": "Whether the user is verified", "example": true }, "invitedTo": { "type": "number", "nullable": true, "description": "The ID of the user who invited this user", "example": 1 }, "metadata": { "type": "object", "example": { "key": "value" } }, "profile": { "description": "organization user profile, contains user data within the organizaton context", "allOf": [ { "$ref": "#/components/schemas/ProfileOutput" } ] } }, "required": ["id", "email", "timeZone", "weekStart", "hideBranding", "createdDate", "profile"] }, "GetOrganizationUsersResponseDTO": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GetOrgUsersWithProfileOutput" } } }, "required": ["status", "data"] }, "CreateOrganizationUserInput": { "type": "object", "properties": { "email": { "type": "string", "description": "User email address", "example": "user@example.com" }, "username": { "type": "string", "description": "Username", "example": "user123" }, "weekday": { "type": "string", "description": "Preferred weekday", "example": "Monday" }, "brandColor": { "type": "string", "description": "Brand color in HEX format", "example": "#FFFFFF" }, "bio": { "type": "string", "description": "Bio", "example": "I am a bio" }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and values up to 500 characters.", "example": { "key": "value" } }, "darkBrandColor": { "type": "string", "description": "Dark brand color in HEX format", "example": "#000000" }, "hideBranding": { "type": "boolean", "description": "Hide branding", "example": false }, "timeZone": { "type": "string", "description": "Time zone", "example": "America/New_York" }, "theme": { "type": "string", "nullable": true, "description": "Theme", "example": "dark" }, "appTheme": { "type": "string", "nullable": true, "description": "Application theme", "example": "light" }, "timeFormat": { "type": "number", "description": "Time format", "example": 24 }, "defaultScheduleId": { "type": "number", "minimum": 0, "description": "Default schedule ID", "example": 1 }, "locale": { "type": "string", "nullable": true, "default": "en", "description": "Locale", "example": "en" }, "avatarUrl": { "type": "string", "description": "Avatar URL", "example": "https://example.com/avatar.jpg" }, "organizationRole": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "ADMIN", "OWNER"] }, "autoAccept": { "type": "boolean", "default": true } }, "required": ["email"] }, "GetOrganizationUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/GetOrgUsersWithProfileOutput" } }, "required": ["status", "data"] }, "UpdateOrganizationUserInput": { "type": "object", "properties": {} }, "BaseAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "name"] }, "TextAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "string" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "NumberAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "number" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "SingleSelectAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "option": { "type": "string" }, "optionId": { "type": "string" } }, "required": ["id", "name", "type", "option", "optionId"] }, "MultiSelectAttributeOption": { "type": "object", "properties": { "optionId": { "type": "string" }, "option": { "type": "string" } }, "required": ["optionId", "option"] }, "MultiSelectAttribute": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "options": { "type": "array", "items": { "$ref": "#/components/schemas/MultiSelectAttributeOption" } } }, "required": ["id", "name", "type", "options"] }, "MembershipUserOutputDto": { "type": "object", "properties": { "avatarUrl": { "type": "string" }, "username": { "type": "string" }, "name": { "type": "string" }, "email": { "type": "string" }, "bio": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": ["email"] }, "OrganizationMembershipOutput": { "type": "object", "properties": { "id": { "type": "number" }, "userId": { "type": "number" }, "teamId": { "type": "number" }, "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" }, "user": { "$ref": "#/components/schemas/MembershipUserOutputDto" }, "attributes": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/TextAttribute" }, { "$ref": "#/components/schemas/NumberAttribute" }, { "$ref": "#/components/schemas/SingleSelectAttribute" }, { "$ref": "#/components/schemas/MultiSelectAttribute" } ] } } }, "required": ["id", "userId", "teamId", "accepted", "role", "user", "attributes"] }, "GetAllOrgMemberships": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "CreateOrgMembershipDto": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"], "description": "If you are platform customer then managed users should only have MEMBER role." }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId", "role"] }, "CreateOrgMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "GetOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "DeleteOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "UpdateOrgMembershipDto": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "UpdateOrgMembership": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, "required": ["status", "data"] }, "Host": { "type": "object", "properties": { "userId": { "type": "number", "description": "Which user is the host of this event" }, "mandatory": { "type": "boolean", "description": "Only relevant for round robin event types. If true then the user must attend round robin event always." }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] } }, "required": ["userId"] }, "CreateTeamEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of the Argentina by making the best flan ever!" }, "bookingFields": { "type": "array", "description": "Custom fields that can be added to the booking form when the event is booked by someone. By default booking form has name and email field.", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/UrlFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar before a meeting starts. This gives you time to prepare, review notes, or transition from your previous activity." }, "afterEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar after a meeting ends. This gives you time to wrap up, add notes, or decompress before your next commitment." }, "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" } ] }, "bookerActiveBookingsLimit": { "description": "Limit the number of active bookings a booker can make for this event type.", "oneOf": [ { "$ref": "#/components/schemas/BookerActiveBookingsLimit_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "onlyShowFirstAvailableSlot": { "type": "boolean", "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." }, "bookingLimitsDuration": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "customName": { "type": "string", "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", "example": "{Event type title} between {Organiser} and {Scheduler}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type. Platform customers can't manage this property because currently we have no way of determining if managed user is a host or an attendee.", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "default": false, "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "example": { "disabled": true }, "allOf": [ { "$ref": "#/components/schemas/DisableCancelling_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "example": { "disabled": false, "minutesBefore": 60 }, "allOf": [ { "$ref": "#/components/schemas/DisableRescheduling_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "description": "Set preferred language for the booking interface. Use empty string for visitor's browser language (default).", "enum": [ "", "en", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "es", "es-419", "eu", "et", "fi", "fr", "he", "hu", "it", "ja", "km", "ko", "nl", "no", "pl", "pt-BR", "pt", "ro", "ru", "sk-SK", "sr", "sv", "tr", "uk", "vi", "zh-CN", "zh-TW" ] }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled.", "default": false }, "allowReschedulingCancelledBookings": { "type": "boolean", "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking.", "default": false }, "showOptimizedSlots": { "type": "boolean", "description": "Arrange time slots to optimize availability.", "default": false }, "schedulingType": { "type": "string", "enum": ["collective", "roundRobin", "managed"], "example": "collective", "description": "The scheduling type for the team event - collective, roundRobin or managed." }, "hosts": { "description": "Hosts contain specific team members you want to assign to this event type, but if you want to assign all team members, use `assignAllTeamMembers: true` instead and omit this field. For platform customers the hosts can include userIds only of managed users. Provide either hosts or assignAllTeamMembers but not both", "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. Provide either assignAllTeamMembers or hosts but not both" }, "locations": { "type": "array", "description": "Locations where the event will take place. If not provided, cal video link will be used as the location. Note: Setting a location to a conferencing app does not install the app - the app must already be installed. Via API, only Google Meet (google-meet), Microsoft Teams (office365-video), and Zoom (zoom) can be installed. Cal Video (cal-video) is installed by default. All other conferencing apps must be connected via the Cal.com web app and are not available for Platform plan customers. You can only set an event type location to an app that has already been installed or connected.", "items": { "oneOf": [ { "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" } ] } }, "emailSettings": { "description": "Email settings for this event type - only available for organization team event types.", "allOf": [ { "$ref": "#/components/schemas/EmailSettings_2024_06_14" } ] }, "rescheduleWithSameRoundRobinHost": { "type": "boolean", "description": "Rescheduled events will be assigned to the same host as initially scheduled." } }, "required": ["lengthInMinutes", "title", "slug", "schedulingType"] }, "CreateTeamEventTypeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" }, { "type": "array", "items": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } } ] } }, "required": ["status", "data"] }, "GetTeamEventTypeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } }, "required": ["status", "data"] }, "CreatePhoneCallInput": { "type": "object", "properties": { "yourPhoneNumber": { "type": "string", "pattern": "/^\\+[1-9]\\d{1,14}$/", "description": "Your phone number" }, "numberToCall": { "type": "string", "pattern": "/^\\+[1-9]\\d{1,14}$/", "description": "Number to call" }, "calApiKey": { "type": "string", "description": "CAL API Key" }, "enabled": { "type": "object", "default": true, "description": "Enabled status" }, "templateType": { "default": "CUSTOM_TEMPLATE", "enum": ["CHECK_IN_APPOINTMENT", "CUSTOM_TEMPLATE"], "type": "string", "description": "Template type" }, "schedulerName": { "type": "string", "description": "Scheduler name" }, "guestName": { "type": "string", "description": "Guest name" }, "guestEmail": { "type": "string", "description": "Guest email" }, "guestCompany": { "type": "string", "description": "Guest company" }, "beginMessage": { "type": "string", "description": "Begin message" }, "generalPrompt": { "type": "string", "description": "General prompt" } }, "required": ["yourPhoneNumber", "numberToCall", "calApiKey", "enabled", "templateType"] }, "Data": { "type": "object", "properties": { "callId": { "type": "string" }, "agentId": { "type": "string" } }, "required": ["callId"] }, "CreatePhoneCallOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/Data" } }, "required": ["status", "data"] }, "GetTeamEventTypesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } } }, "required": ["status", "data"] }, "UpdateTeamEventTypeInput_2024_06_14": { "type": "object", "properties": { "lengthInMinutes": { "type": "number", "example": 60 }, "lengthInMinutesOptions": { "example": [15, 30, 60], "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", "type": "array", "items": { "type": "string" } }, "title": { "type": "string", "example": "Learn the secrets of masterchief!" }, "slug": { "type": "string", "example": "learn-the-secrets-of-masterchief" }, "description": { "type": "string", "example": "Discover the culinary wonders of the Argentina by making the best flan ever!" }, "bookingFields": { "type": "array", "description": "Complete set of booking form fields. This array replaces all existing booking fields. To modify existing fields, first fetch the current event type, then include all desired fields in this array. Sending only one field will remove all other custom fields, keeping only default fields plus the provided one.", "items": { "oneOf": [ { "$ref": "#/components/schemas/NameDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/EmailDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TitleDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/LocationDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NotesDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/GuestsDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RescheduleReasonDefaultFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/PhoneFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/AddressFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/NumberFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/TextAreaFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/SelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiSelectFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/MultiEmailFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/CheckboxGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/RadioGroupFieldInput_2024_06_14" }, { "$ref": "#/components/schemas/BooleanFieldInput_2024_06_14" } ] } }, "disableGuests": { "type": "boolean", "description": "If true, person booking this event can't add guests via their emails." }, "slotInterval": { "type": "number", "description": "Number representing length of each slot when event is booked. By default it equal length of the event type.\n If event length is 60 minutes then we would have slots 9AM, 10AM, 11AM etc. but if it was changed to 30 minutes then\n we would have slots 9AM, 9:30AM, 10AM, 10:30AM etc. as the available times to book the 60 minute event." }, "minimumBookingNotice": { "type": "number", "description": "Minimum number of minutes before the event that a booking can be made." }, "beforeEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar before a meeting starts. This gives you time to prepare, review notes, or transition from your previous activity." }, "afterEventBuffer": { "type": "number", "description": "Extra time automatically blocked on your calendar after a meeting ends. This gives you time to wrap up, add notes, or decompress before your next commitment." }, "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" } ] }, "bookerActiveBookingsLimit": { "description": "Limit the number of active bookings a booker can make for this event type.", "oneOf": [ { "$ref": "#/components/schemas/BookerActiveBookingsLimit_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "onlyShowFirstAvailableSlot": { "type": "boolean", "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." }, "bookingLimitsDuration": { "description": "Limit total amount of time that this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "bookingWindow": { "description": "Limit how far in the future this event can be booked", "oneOf": [ { "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" }, { "$ref": "#/components/schemas/RangeWindow_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "offsetStart": { "type": "number", "description": "Offset timeslots shown to bookers by a specified number of minutes" }, "bookerLayouts": { "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", "allOf": [ { "$ref": "#/components/schemas/BookerLayouts_2024_06_14" } ] }, "confirmationPolicy": { "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", "oneOf": [ { "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "recurrence": { "description": "Create a recurring event type.", "oneOf": [ { "$ref": "#/components/schemas/Recurrence_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "requiresBookerEmailVerification": { "type": "boolean" }, "hideCalendarNotes": { "type": "boolean" }, "lockTimeZoneToggleOnBookingPage": { "type": "boolean" }, "color": { "$ref": "#/components/schemas/EventTypeColor_2024_06_14" }, "seats": { "description": "Create an event type with multiple seats.", "oneOf": [ { "$ref": "#/components/schemas/Seats_2024_06_14" }, { "$ref": "#/components/schemas/Disabled_2024_06_14" } ] }, "customName": { "type": "string", "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", "example": "{Event type title} between {Organiser} and {Scheduler}" }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" }, "useDestinationCalendarEmail": { "type": "boolean" }, "hideCalendarEventDetails": { "type": "boolean" }, "successRedirectUrl": { "type": "string", "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", "example": "https://masterchief.com/argentina/flan/video/9129412" }, "hideOrganizerEmail": { "type": "boolean", "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" }, "calVideoSettings": { "description": "Cal video settings for the event type", "allOf": [ { "$ref": "#/components/schemas/CalVideoSettings" } ] }, "hidden": { "type": "boolean" }, "bookingRequiresAuthentication": { "type": "boolean", "default": false, "description": "Boolean to require authentication for booking this event type via api. If true, only authenticated users who are the event-type owner or org/team admin/owner can book this event type." }, "disableCancelling": { "description": "Settings for disabling cancelling of this event type.", "example": { "disabled": true }, "allOf": [ { "$ref": "#/components/schemas/DisableCancelling_2024_06_14" } ] }, "disableRescheduling": { "description": "Settings for disabling rescheduling of this event type. Can be always disabled or disabled when less than X minutes before the meeting.", "example": { "disabled": false, "minutesBefore": 60 }, "allOf": [ { "$ref": "#/components/schemas/DisableRescheduling_2024_06_14" } ] }, "interfaceLanguage": { "type": "string", "description": "Set preferred language for the booking interface. Use empty string for visitor's browser language (default).", "enum": [ "", "en", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "es", "es-419", "eu", "et", "fi", "fr", "he", "hu", "it", "ja", "km", "ko", "nl", "no", "pl", "pt-BR", "pt", "ro", "ru", "sk-SK", "sr", "sv", "tr", "uk", "vi", "zh-CN", "zh-TW" ] }, "allowReschedulingPastBookings": { "type": "boolean", "description": "Enabling this option allows for past events to be rescheduled.", "default": false }, "allowReschedulingCancelledBookings": { "type": "boolean", "description": "When enabled, users will be able to create a new booking when trying to reschedule a cancelled booking.", "default": false }, "showOptimizedSlots": { "type": "boolean", "description": "Arrange time slots to optimize availability.", "default": false }, "schedulingType": { "type": "string", "enum": ["collective", "roundRobin"], "example": "collective", "description": "The scheduling type for the team event - collective or roundRobin. ❗If you change scheduling type you must also provide `hosts` or `assignAllTeamMembers` in the request body, otherwise the event type will have no hosts - this is required because\n in case of collective event type all hosts are mandatory but in case of round robin some or non can be mandatory so we can't predict how you want the hosts to be setup which is why you must provide that information. If you want to convert round robin or collective into managed or managed into round robin or collective then you will have to create a new team event type and delete old one." }, "hosts": { "description": "Hosts contain specific team members you want to assign to this event type, but if you want to assign all team members, use `assignAllTeamMembers: true` instead and omit this field. For platform customers the hosts can include userIds only of managed users. Provide either hosts or assignAllTeamMembers but not both", "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. Provide either assignAllTeamMembers or hosts but not both" }, "locations": { "type": "array", "description": "Locations where the event will take place. If not provided, cal video link will be used as the location. Note: Setting a location to a conferencing app does not install the app - the app must already be installed. Via API, only Google Meet (google-meet), Microsoft Teams (office365-video), and Zoom (zoom) can be installed. Cal Video (cal-video) is installed by default. All other conferencing apps must be connected via the Cal.com web app and are not available for Platform plan customers. You can only set an event type location to an app that has already been installed or connected.", "items": { "oneOf": [ { "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" }, { "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" } ] } }, "emailSettings": { "description": "Email settings for this event type. Only available for organization team event types.", "allOf": [ { "$ref": "#/components/schemas/EmailSettings_2024_06_14" } ] }, "rescheduleWithSameRoundRobinHost": { "type": "boolean", "description": "Rescheduled events will be assigned to the same host as initially scheduled." } } }, "UpdateTeamEventTypeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" }, { "type": "array", "items": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } } ] } }, "required": ["status", "data"] }, "DeleteTeamEventTypeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "object" } }, "required": ["status", "data"] }, "TeamMembershipOutput": { "type": "object", "properties": { "id": { "type": "number" }, "userId": { "type": "number" }, "teamId": { "type": "number" }, "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" }, "user": { "$ref": "#/components/schemas/MembershipUserOutputDto" } }, "required": ["id", "userId", "teamId", "accepted", "role", "user"] }, "OrgTeamMembershipsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamMembershipOutput" } } }, "required": ["status", "data"] }, "OrgTeamMembershipOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "UpdateOrgTeamMembershipDto": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "CreateOrgTeamMembershipDto": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId", "role"] }, "InviteDataDto": { "type": "object", "properties": { "token": { "type": "string", "description": "Unique invitation token for this team. Share this token with prospective members to allow them to join the team/organization.", "example": "f6a5c8b1d2e34c7f90a1b2c3d4e5f6a5b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2" }, "inviteLink": { "type": "string", "description": "Complete invitation URL that can be shared with prospective members. Opens the signup page with the token and redirects to getting started after signup.", "example": "http://app.cal.com/signup?token=f6a5c8b1d2e34c7f90a1b2c3d4e5f6a5b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2&callbackUrl=/getting-started" } }, "required": ["token", "inviteLink"] }, "CreateInviteOutputDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/InviteDataDto" } }, "required": ["status", "data"] }, "Attribute": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the attribute", "example": "attr_123" }, "teamId": { "type": "number", "description": "The team ID associated with the attribute", "example": 1 }, "type": { "type": "string", "description": "The type of the attribute", "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "name": { "type": "string", "description": "The name of the attribute", "example": "Attribute Name" }, "slug": { "type": "string", "description": "The slug of the attribute", "example": "attribute-name" }, "enabled": { "type": "boolean", "description": "Whether the attribute is enabled and displayed on their profile", "example": true }, "usersCanEditRelation": { "type": "boolean", "description": "Whether users can edit the relation", "example": true } }, "required": ["id", "teamId", "type", "name", "slug", "enabled"] }, "GetOrganizationAttributesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Attribute" } } }, "required": ["status", "data"] }, "GetSingleAttributeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Attribute" } ] } }, "required": ["status", "data"] }, "CreateOrganizationAttributeOptionInput": { "type": "object", "properties": { "value": { "type": "string" }, "slug": { "type": "string" } }, "required": ["value", "slug"] }, "CreateOrganizationAttributeInput": { "type": "object", "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "options": { "type": "array", "items": { "$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput" } }, "enabled": { "type": "boolean" } }, "required": ["name", "slug", "type", "options"] }, "CreateOrganizationAttributesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/Attribute" } }, "required": ["status", "data"] }, "UpdateOrganizationAttributeInput": { "type": "object", "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "enabled": { "type": "boolean" } } }, "UpdateOrganizationAttributesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/Attribute" } }, "required": ["status", "data"] }, "DeleteOrganizationAttributesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/Attribute" } }, "required": ["status", "data"] }, "OptionOutput": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the option", "example": "attr_option_id" }, "attributeId": { "type": "string", "description": "The ID of the attribute", "example": "attr_id" }, "value": { "type": "string", "description": "The value of the option", "example": "option_value" }, "slug": { "type": "string", "description": "The slug of the option", "example": "option-slug" } }, "required": ["id", "attributeId", "value", "slug"] }, "CreateAttributeOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, "required": ["status", "data"] }, "DeleteAttributeOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, "required": ["status", "data"] }, "UpdateOrganizationAttributeOptionInput": { "type": "object", "properties": { "value": { "type": "string" }, "slug": { "type": "string" } } }, "UpdateAttributeOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, "required": ["status", "data"] }, "GetAllAttributeOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OptionOutput" } } }, "required": ["status", "data"] }, "AssignedOptionOutput": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the option", "example": "attr_option_id" }, "attributeId": { "type": "string", "description": "The ID of the attribute", "example": "attr_id" }, "value": { "type": "string", "description": "The value of the option", "example": "option_value" }, "slug": { "type": "string", "description": "The slug of the option", "example": "option-slug" }, "assignedUserIds": { "description": "Ids of the users assigned to the attribute option.", "example": [124, 224], "type": "array", "items": { "type": "string" } } }, "required": ["id", "attributeId", "value", "slug", "assignedUserIds"] }, "GetAllAttributeAssignedOptionOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/AssignedOptionOutput" } } }, "required": ["status", "data"] }, "AssignOrganizationAttributeOptionToUserInput": { "type": "object", "properties": { "value": { "type": "string" }, "attributeOptionId": { "type": "string" }, "attributeId": { "type": "string" } }, "required": ["attributeId"] }, "AssignOptionUserOutputData": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the option assigned to the user" }, "memberId": { "type": "number", "description": "The ID form the org membership for the user" }, "attributeOptionId": { "type": "string", "description": "The value of the option" } }, "required": ["id", "memberId", "attributeOptionId"] }, "AssignOptionUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/AssignOptionUserOutputData" } }, "required": ["status", "data"] }, "UnassignOptionUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/AssignOptionUserOutputData" } }, "required": ["status", "data"] }, "GetOptionUserOutputData": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the option assigned to the user" }, "attributeId": { "type": "string", "description": "The ID of the attribute" }, "value": { "type": "string", "description": "The value of the option" }, "slug": { "type": "string", "description": "The slug of the option" } }, "required": ["id", "attributeId", "value", "slug"] }, "GetOptionUserOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GetOptionUserOutputData" } } }, "required": ["status", "data"] }, "TeamWebhookOutputDto": { "type": "object", "properties": { "payloadTemplate": { "type": "string", "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" }, "triggers": { "type": "array", "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "teamId": { "type": "number" }, "id": { "type": "number" }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "triggers", "teamId", "id", "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": "array", "example": [ "BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED", "BOOKING_CONFIRMED", "BOOKING_REJECTED", "BOOKING_COMPLETED", "BOOKING_NO_SHOW", "BOOKING_REOPENED" ], "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "secret": { "type": "string" }, "version": { "type": "string", "description": "The version of the webhook", "example": "2021-10-20", "enum": ["2021-10-20"] } }, "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": "array", "example": [ "BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED", "BOOKING_CONFIRMED", "BOOKING_REJECTED", "BOOKING_COMPLETED", "BOOKING_NO_SHOW", "BOOKING_REOPENED" ], "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "secret": { "type": "string" }, "version": { "type": "string", "description": "The version of the webhook", "example": "2021-10-20", "enum": ["2021-10-20"] } } }, "UserOooOutputDto": { "type": "object", "properties": { "userId": { "type": "number", "description": "The ID of the user.", "example": 2 }, "toUserId": { "type": "number", "description": "The ID of the user covering for the out of office period, if applicable.", "example": 2 }, "id": { "type": "number", "description": "The ID of the ooo entry.", "example": 2 }, "uuid": { "type": "string", "description": "The UUID of the ooo entry.", "example": 2 }, "start": { "format": "date-time", "type": "string", "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-01T00:00:00.000Z" }, "end": { "format": "date-time", "type": "string", "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-10T23:59:59.999Z" }, "notes": { "type": "string", "description": "Optional notes for the out of office entry.", "example": "Vacation in Hawaii" }, "reason": { "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"], "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation" } }, "required": ["userId", "id", "uuid", "start", "end"] }, "UserOoosOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UserOooOutputDto" } } }, "required": ["status", "data"] }, "CreateOutOfOfficeEntryDto": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string", "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-01T00:00:00.000Z" }, "end": { "format": "date-time", "type": "string", "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-10T23:59:59.999Z" }, "notes": { "type": "string", "description": "Optional notes for the out of office entry.", "example": "Vacation in Hawaii" }, "toUserId": { "type": "number", "description": "The ID of the user covering for the out of office period, if applicable.", "example": 2 }, "reason": { "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] } }, "required": ["start", "end"] }, "UserOooOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/UserOooOutputDto" } }, "required": ["status", "data"] }, "UpdateOutOfOfficeEntryDto": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string", "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-01T00:00:00.000Z" }, "end": { "format": "date-time", "type": "string", "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", "example": "2023-05-10T23:59:59.999Z" }, "notes": { "type": "string", "description": "Optional notes for the out of office entry.", "example": "Vacation in Hawaii" }, "toUserId": { "type": "number", "description": "The ID of the user covering for the out of office period, if applicable.", "example": 2 }, "reason": { "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] } } }, "EventTypeWorkflowActivationOutputDto": { "type": "object", "properties": { "isActiveOnAllEventTypes": { "type": "boolean", "default": false, "description": "Whether the workflow is active for all event types associated with the team/user", "example": false }, "activeOnEventTypeIds": { "description": "List of Event Type IDs the workflow is specifically active on (if not active on all)", "example": [698191, 698192], "type": "array", "items": { "type": "number" } } } }, "WorkflowTriggerOffsetOutputDto": { "type": "object", "properties": { "value": { "type": "number", "description": "Time value for offset", "example": 24 }, "unit": { "type": "string", "description": "Unit for the offset time", "example": "hour", "enum": ["hour", "minute", "day"] } }, "required": ["value", "unit"] }, "EventTypeWorkflowTriggerOutputDto": { "type": "object", "properties": { "type": { "type": "string", "description": "Trigger type for the workflow", "example": "beforeEvent", "enum": [ "beforeEvent", "eventCancelled", "newEvent", "afterEvent", "rescheduleEvent", "afterHostsCalVideoNoShow", "afterGuestsCalVideoNoShow", "bookingRejected", "bookingRequested", "bookingPaymentInitiated", "bookingPaid", "bookingNoShowUpdated" ] }, "offset": { "description": "Offset details (present for BEFORE_EVENT/AFTER_EVENT)", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetOutputDto" } ] } }, "required": ["type"] }, "WorkflowMessageOutputDto": { "type": "object", "properties": { "subject": { "type": "string", "description": "Subject of the message", "example": "Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY h:mma} with Cal.com" }, "html": { "type": "string", "description": "HTML content of the message", "example": "

Reminder for {EVENT_NAME}.

" }, "text": { "type": "string", "description": "Text content of the message (used for SMS/WhatsApp)", "example": "Reminder for {EVENT_NAME}." } }, "required": ["subject"] }, "EventTypeWorkflowStepOutputDto": { "type": "object", "properties": { "id": { "type": "number", "description": "Unique identifier of the step", "example": 67244 }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Intended recipient type", "example": "const", "enum": ["const", "attendee", "email", "phone_number"] }, "email": { "type": "string", "description": "Verified Email if action is EMAIL_ADDRESS", "example": 31214 }, "phone": { "type": "string", "description": "Verified Phone if action is SMS_NUMBER or WHATSAPP_NUMBER" }, "phoneRequired": { "type": "boolean", "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true, "default": false }, "template": { "type": "string", "description": "Template type used", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether a calendar event (.ics) was included (for email actions)", "example": true }, "sender": { "type": "string", "description": "Displayed sender name used for this step", "example": "Cal.com Notifications" }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/WorkflowMessageOutputDto" } ] }, "action": { "type": "string", "description": "Action to perform", "example": "email_host", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ] } }, "required": ["id", "stepNumber", "recipient", "template", "sender", "message", "action"] }, "EventTypeWorkflowOutput": { "type": "object", "properties": { "id": { "type": "number", "description": "Unique identifier of the workflow", "example": 101 }, "name": { "type": "string", "description": "Name of the workflow", "example": "Platform Test Workflow" }, "userId": { "type": "number", "description": "ID of the user who owns the workflow (if not team-owned)", "example": 2313 }, "teamId": { "type": "number", "description": "ID of the team owning the workflow", "example": 4214321 }, "createdAt": { "type": "object", "description": "Timestamp of creation", "example": "2024-05-12T10:00:00.000Z" }, "updatedAt": { "type": "object", "description": "Timestamp of last update", "example": "2024-05-12T11:30:00.000Z" }, "type": { "type": "string", "enum": ["event-type"], "description": "type of the workflow", "example": "event-type", "default": "event-type" }, "activation": { "description": "Activation settings for the workflow", "allOf": [ { "$ref": "#/components/schemas/EventTypeWorkflowActivationOutputDto" } ] }, "trigger": { "description": "Trigger configuration", "allOf": [ { "$ref": "#/components/schemas/EventTypeWorkflowTriggerOutputDto" } ] }, "steps": { "description": "Steps comprising the workflow", "type": "array", "items": { "$ref": "#/components/schemas/EventTypeWorkflowStepOutputDto" } } }, "required": ["id", "name", "type", "activation", "trigger", "steps"] }, "GetEventTypeWorkflowsOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Indicates the status of the response", "example": "success", "enum": ["success", "error"] }, "data": { "description": "List of workflows", "type": "array", "items": { "$ref": "#/components/schemas/EventTypeWorkflowOutput" } } }, "required": ["status", "data"] }, "RoutingFormWorkflowActivationOutputDto": { "type": "object", "properties": { "isActiveOnAllRoutingForms": { "type": "boolean", "default": false, "description": "Whether the workflow is active for all routing forms associated with the team/user", "example": false }, "activeOnRoutingFormIds": { "description": "List of Event Type IDs the workflow is specifically active on (if not active on all)", "example": ["5cacdec7-1234-6e1b-78d9-7bcda8a1b332"], "type": "array", "items": { "type": "string" } } } }, "RoutingFormWorkflowTriggerOutputDto": { "type": "object", "properties": { "type": { "type": "string", "description": "Trigger type for the workflow", "example": "formSubmitted", "enum": ["formSubmitted", "formSubmittedNoEvent"] }, "offset": { "description": "Offset details (present for BEFORE_EVENT/AFTER_EVENT/FORM_SUBMITTED_NO_EVENT)", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetOutputDto" } ] } }, "required": ["type"] }, "RoutingFormWorkflowStepOutputDto": { "type": "object", "properties": { "id": { "type": "number", "description": "Unique identifier of the step", "example": 67244 }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Intended recipient type", "example": "const", "enum": ["const", "attendee", "email", "phone_number"] }, "email": { "type": "string", "description": "Verified Email if action is EMAIL_ADDRESS", "example": 31214 }, "phone": { "type": "string", "description": "Verified Phone if action is SMS_NUMBER or WHATSAPP_NUMBER" }, "phoneRequired": { "type": "boolean", "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true, "default": false }, "template": { "type": "string", "description": "Template type used", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether a calendar event (.ics) was included (for email actions)", "example": true }, "sender": { "type": "string", "description": "Displayed sender name used for this step", "example": "Cal.com Notifications" }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/WorkflowMessageOutputDto" } ] }, "action": { "type": "string", "description": "Action to perform", "example": "email_host", "enum": ["email_attendee", "email_address", "sms_attendee", "sms_number"] } }, "required": ["id", "stepNumber", "recipient", "template", "sender", "message", "action"] }, "RoutingFormWorkflowOutput": { "type": "object", "properties": { "id": { "type": "number", "description": "Unique identifier of the workflow", "example": 101 }, "name": { "type": "string", "description": "Name of the workflow", "example": "Platform Test Workflow" }, "userId": { "type": "number", "description": "ID of the user who owns the workflow (if not team-owned)", "example": 2313 }, "teamId": { "type": "number", "description": "ID of the team owning the workflow", "example": 4214321 }, "createdAt": { "type": "object", "description": "Timestamp of creation", "example": "2024-05-12T10:00:00.000Z" }, "updatedAt": { "type": "object", "description": "Timestamp of last update", "example": "2024-05-12T11:30:00.000Z" }, "type": { "type": "string", "enum": ["routing-form"], "description": "type of the workflow", "example": "routing-form", "default": "routing-form" }, "activation": { "description": "Activation settings for the workflow", "allOf": [ { "$ref": "#/components/schemas/RoutingFormWorkflowActivationOutputDto" } ] }, "trigger": { "description": "Trigger configuration", "allOf": [ { "$ref": "#/components/schemas/RoutingFormWorkflowTriggerOutputDto" } ] }, "steps": { "description": "Steps comprising the workflow", "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormWorkflowStepOutputDto" } } }, "required": ["id", "name", "type", "activation", "trigger", "steps"] }, "GetRoutingFormWorkflowsOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Indicates the status of the response", "example": "success", "enum": ["success", "error"] }, "data": { "description": "List of workflows", "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormWorkflowOutput" } } }, "required": ["status", "data"] }, "GetEventTypeWorkflowOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Indicates the status of the response", "example": "success", "enum": ["success", "error"] }, "data": { "description": "workflow", "type": "array", "items": { "$ref": "#/components/schemas/EventTypeWorkflowOutput" } } }, "required": ["status", "data"] }, "GetRoutingFormWorkflowOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Indicates the status of the response", "example": "success", "enum": ["success", "error"] }, "data": { "description": "workflow", "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormWorkflowOutput" } } }, "required": ["status", "data"] }, "WorkflowTriggerOffsetDto": { "type": "object", "properties": { "value": { "type": "number", "description": "Time value for offset before/after event trigger", "example": 24 }, "unit": { "type": "object", "enum": ["hour", "minute", "day"], "description": "Unit for the offset time", "example": "hour" } }, "required": ["value", "unit"] }, "OnBeforeEventTriggerDto": { "type": "object", "properties": { "offset": { "description": "Offset before/after the trigger time; required for BEFORE_EVENT, AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetDto" } ] }, "type": { "type": "string", "default": "beforeEvent", "enum": ["beforeEvent"], "description": "Trigger type for the workflow", "example": "beforeEvent" } }, "required": ["offset", "type"] }, "OnAfterEventTriggerDto": { "type": "object", "properties": { "offset": { "description": "Offset before/after the trigger time; required for BEFORE_EVENT, AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetDto" } ] }, "type": { "type": "string", "default": "afterEvent", "enum": ["afterEvent"], "description": "Trigger type for the workflow", "example": "afterEvent" } }, "required": ["offset", "type"] }, "OnCancelTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "eventCancelled", "enum": ["eventCancelled"], "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnCreationTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "newEvent", "enum": ["newEvent"], "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnRescheduleTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "rescheduleEvent", "enum": ["rescheduleEvent"], "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnNoShowUpdateTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "bookingNoShowUpdated", "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnRejectedTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "bookingRejected", "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnRequestedTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "bookingRequested", "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnPaymentInitiatedTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "bookingPaymentInitiated", "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnPaidTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "bookingPaid", "description": "Trigger type for the workflow" } }, "required": ["type"] }, "OnAfterCalVideoGuestsNoShowTriggerDto": { "type": "object", "properties": { "offset": { "description": "Offset before/after the trigger time; required for BEFORE_EVENT, AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetDto" } ] }, "type": { "type": "string", "default": "afterGuestsCalVideoNoShow", "enum": ["afterGuestsCalVideoNoShow"], "description": "Trigger type for the workflow", "example": "afterGuestsCalVideoNoShow" } }, "required": ["offset", "type"] }, "OnAfterCalVideoHostsNoShowTriggerDto": { "type": "object", "properties": { "offset": { "description": "Offset before/after the trigger time; required for BEFORE_EVENT, AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetDto" } ] }, "type": { "type": "string", "default": "afterHostsCalVideoNoShow", "enum": ["afterHostsCalVideoNoShow"], "description": "Trigger type for the workflow", "example": "afterHostsCalVideoNoShow" } }, "required": ["offset", "type"] }, "HtmlWorkflowMessageDto": { "type": "object", "properties": { "subject": { "type": "string", "description": "Subject of the message", "example": "Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY h:mma} with Cal.com" }, "html": { "type": "string", "description": "HTML content of the message (used for Emails)", "example": "

This is a reminder from {ORGANIZER} of {EVENT_NAME} to {ATTENDEE} starting here {LOCATION} {MEETING_URL} at {START_TIME_h:mma} {TIMEZONE}.

" } }, "required": ["subject", "html"] }, "WorkflowEmailAddressStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_address", "description": "Action to perform, send an email to a specific email address", "example": "email_address" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedEmailId": { "type": "number", "description": "Email address if recipient is EMAIL, required for action EMAIL_ADDRESS", "example": "31214", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-an-email-for-an-org-team" } }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "verifiedEmailId", "includeCalendarEvent", "message" ] }, "WorkflowEmailAttendeeStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_attendee", "description": "Action to perform, send an email to the attendees of the event", "example": "email_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "includeCalendarEvent", "message" ] }, "WorkflowEmailHostStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_host", "description": "Action to perform, send an email to the host of the event", "example": "email_host" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "includeCalendarEvent", "message" ] }, "TextWorkflowMessageDto": { "type": "object", "properties": { "subject": { "type": "string", "description": "Subject of the message", "example": "Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY h:mma} with Cal.com" }, "text": { "type": "string", "description": "Text content of the message (used for SMS)", "example": "This is a reminder message from {ORGANIZER} of {EVENT_NAME} to {ATTENDEE} starting here {LOCATION} {MEETING_URL} at {START_TIME_h:mma} {TIMEZONE}." } }, "required": ["subject", "text"] }, "WorkflowPhoneWhatsAppAttendeeStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "whatsapp_attendee", "description": "Action to perform", "example": "whatsapp_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "message": { "description": "Message content for this step, send a text message via whatsapp to the phone numbers of the attendees", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "phoneRequired": { "type": "boolean", "default": false, "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "WorkflowPhoneWhatsAppNumberStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "whatsapp_number", "description": "Action to perform, send a text message via whatsapp to a specific phone number", "example": "whatsapp_number" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedPhoneId": { "type": "number", "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" } }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "WorkflowPhoneNumberStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "sms_number", "description": "Action to perform, send a text message to a specific phone number", "example": "sms_number" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedPhoneId": { "type": "number", "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" } }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "WorkflowPhoneAttendeeStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "sms_attendee", "description": "Action to perform, send a text message to the phone numbers of the attendees", "example": "sms_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "message": { "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" }, "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "phoneRequired": { "type": "boolean", "default": false, "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "EventTypeWorkflowTriggerDto": { "type": "object", "properties": { "type": { "type": "object", "enum": [ "beforeEvent", "eventCancelled", "newEvent", "afterEvent", "rescheduleEvent", "afterHostsCalVideoNoShow", "afterGuestsCalVideoNoShow", "bookingRejected", "bookingRequested", "bookingPaymentInitiated", "bookingPaid", "bookingNoShowUpdated" ], "description": "Trigger type for the event-type workflow", "example": "beforeEvent" } }, "required": ["type"] }, "WorkflowActivationDto": { "type": "object", "properties": { "isActiveOnAllEventTypes": { "type": "boolean", "default": false, "description": "Whether the workflow is active for all the event-types", "example": false }, "activeOnEventTypeIds": { "default": [], "description": "List of event-types IDs the workflow applies to, required if isActiveOnAllEventTypes is false", "example": [698191], "type": "array", "items": { "type": "number" } } }, "required": ["isActiveOnAllEventTypes"] }, "CreateEventTypeWorkflowDto": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the workflow", "example": "Platform Test Workflow" }, "activation": { "description": "Activation settings for the workflow", "allOf": [ { "$ref": "#/components/schemas/WorkflowActivationDto" } ] }, "trigger": { "description": "Trigger configuration for the event-type workflow, allowed triggers are beforeEvent,eventCancelled,newEvent,afterEvent,rescheduleEvent,afterHostsCalVideoNoShow,afterGuestsCalVideoNoShow,bookingRejected,bookingRequested,bookingPaymentInitiated,bookingPaid,bookingNoShowUpdated", "oneOf": [ { "$ref": "#/components/schemas/OnBeforeEventTriggerDto" }, { "$ref": "#/components/schemas/OnAfterEventTriggerDto" }, { "$ref": "#/components/schemas/OnCancelTriggerDto" }, { "$ref": "#/components/schemas/OnCreationTriggerDto" }, { "$ref": "#/components/schemas/OnRescheduleTriggerDto" }, { "$ref": "#/components/schemas/OnAfterCalVideoGuestsNoShowTriggerDto" }, { "$ref": "#/components/schemas/OnAfterCalVideoHostsNoShowTriggerDto" }, { "$ref": "#/components/schemas/OnRejectedTriggerDto" }, { "$ref": "#/components/schemas/OnRequestedTriggerDto" }, { "$ref": "#/components/schemas/OnPaidTriggerDto" }, { "$ref": "#/components/schemas/OnPaymentInitiatedTriggerDto" }, { "$ref": "#/components/schemas/OnNoShowUpdateTriggerDto" } ] }, "steps": { "type": "array", "description": "Steps to execute as part of the event-type workflow, allowed steps are email_host,email_attendee,email_address,sms_attendee,sms_number,whatsapp_attendee,whatsapp_number,cal_ai_phone_call", "items": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowEmailAddressStepDto" }, { "$ref": "#/components/schemas/WorkflowEmailAttendeeStepDto" }, { "$ref": "#/components/schemas/WorkflowEmailHostStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneWhatsAppAttendeeStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneWhatsAppNumberStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneNumberStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneAttendeeStepDto" } ] } } }, "required": ["name", "activation", "trigger", "steps"] }, "OnFormSubmittedTriggerDto": { "type": "object", "properties": { "type": { "type": "string", "default": "formSubmitted", "enum": ["formSubmitted"], "description": "Trigger type for the workflow", "example": "formSubmitted" } }, "required": ["type"] }, "OnFormSubmittedNoEventTriggerDto": { "type": "object", "properties": { "offset": { "description": "Offset before/after the trigger time; required for BEFORE_EVENT, AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT", "allOf": [ { "$ref": "#/components/schemas/WorkflowTriggerOffsetDto" } ] }, "type": { "type": "string", "default": "formSubmittedNoEvent", "enum": ["formSubmittedNoEvent"], "description": "Trigger type for the workflow", "example": "formSubmittedNoEvent" } }, "required": ["offset", "type"] }, "RoutingFormWorkflowTriggerDto": { "type": "object", "properties": { "type": { "type": "object", "enum": ["formSubmitted", "formSubmittedNoEvent"], "description": "Trigger type for the routing-form workflow", "example": "formSubmitted" } }, "required": ["type"] }, "WorkflowFormActivationDto": { "type": "object", "properties": { "isActiveOnAllRoutingForms": { "type": "boolean", "description": "Whether the workflow is active for all the routing forms", "example": false }, "activeOnRoutingFormIds": { "description": "List of routing form IDs the workflow applies to", "example": ["abd1-123edf-a213d-123dfwf"], "type": "array", "items": { "type": "number" } } }, "required": ["isActiveOnAllRoutingForms"] }, "CreateFormWorkflowDto": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the workflow", "example": "Platform Test Workflow" }, "activation": { "description": "Activation settings for the workflow", "allOf": [ { "$ref": "#/components/schemas/WorkflowFormActivationDto" } ] }, "trigger": { "description": "Trigger configuration for the routing-form workflow, allowed triggers are formSubmitted,formSubmittedNoEvent", "oneOf": [ { "$ref": "#/components/schemas/OnFormSubmittedTriggerDto" }, { "$ref": "#/components/schemas/OnFormSubmittedNoEventTriggerDto" } ] }, "steps": { "type": "array", "description": "Steps to execute as part of the routing-form workflow, allowed steps are email_attendee,email_address,sms_attendee,sms_number", "items": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowEmailAddressStepDto" }, { "$ref": "#/components/schemas/WorkflowEmailAttendeeStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneAttendeeStepDto" }, { "$ref": "#/components/schemas/WorkflowPhoneNumberStepDto" } ] } } }, "required": ["name", "activation", "trigger", "steps"] }, "UpdateEmailAddressWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_address", "description": "Action to perform, send an email to a specific email address", "example": "email_address" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedEmailId": { "type": "number", "description": "Email address if recipient is EMAIL, required for action EMAIL_ADDRESS", "example": "31214", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-an-email-for-an-org-team" } }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "verifiedEmailId", "includeCalendarEvent", "message" ] }, "UpdateEmailAttendeeWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_attendee", "description": "Action to perform, send an email to the attendees of the event", "example": "email_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "includeCalendarEvent", "message" ] }, "UpdateEmailHostWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "email_host", "description": "Action to perform, send an email to the host of the event", "example": "email_host" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "includeCalendarEvent": { "type": "object", "default": false, "description": "Whether to include a calendar event in the notification, can be included with actions email_host, email_attendee, email_address", "example": true }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/HtmlWorkflowMessageDto" } ] }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": [ "action", "stepNumber", "recipient", "template", "sender", "includeCalendarEvent", "message" ] }, "UpdatePhoneAttendeeWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "sms_attendee", "description": "Action to perform, send a text message to the phone numbers of the attendees", "example": "sms_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "message": { "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" }, "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "phoneRequired": { "type": "boolean", "default": false, "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "UpdatePhoneWhatsAppNumberWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "whatsapp_number", "description": "Action to perform, send a text message via whatsapp to a specific phone number", "example": "whatsapp_number" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedPhoneId": { "type": "number", "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" } }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "UpdateWhatsAppAttendeePhoneWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "whatsapp_attendee", "description": "Action to perform", "example": "whatsapp_attendee" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "message": { "description": "Message content for this step, send a text message via whatsapp to the phone numbers of the attendees", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "phoneRequired": { "type": "boolean", "default": false, "description": "whether or not the attendees are required to provide their phone numbers when booking", "example": true }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "UpdatePhoneNumberWorkflowStepDto": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "email_host", "email_attendee", "email_address", "sms_attendee", "sms_number", "whatsapp_attendee", "whatsapp_number", "cal_ai_phone_call" ], "default": "sms_number", "description": "Action to perform, send a text message to a specific phone number", "example": "sms_number" }, "stepNumber": { "type": "number", "description": "Step number in the workflow sequence", "example": 1 }, "recipient": { "type": "string", "description": "Recipient type", "example": "attendee", "enum": ["const", "attendee", "email", "phone_number"] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] }, "sender": { "type": "string", "description": "Displayed sender name." }, "verifiedPhoneId": { "type": "number", "description": "Phone number if recipient is PHONE_NUMBER, required for actions SMS_NUMBER and WHATSAPP_NUMBER", "example": "3243434", "externalDocs": { "url": "https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team" } }, "message": { "description": "Message content for this step", "allOf": [ { "$ref": "#/components/schemas/TextWorkflowMessageDto" } ] }, "id": { "type": "number", "description": "Unique identifier of the step you want to update, if adding a new step do not provide this id", "example": 67244 } }, "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "UpdateEventTypeWorkflowDto": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the workflow", "example": "Platform Test Workflow" }, "activation": { "description": "Activation settings for the workflow", "allOf": [ { "$ref": "#/components/schemas/WorkflowActivationDto" } ] }, "trigger": { "description": "Trigger configuration for the event-type workflow, allowed triggers are beforeEvent,eventCancelled,newEvent,afterEvent,rescheduleEvent,afterHostsCalVideoNoShow,afterGuestsCalVideoNoShow,bookingRejected,bookingRequested,bookingPaymentInitiated,bookingPaid,bookingNoShowUpdated", "oneOf": [ { "$ref": "#/components/schemas/OnBeforeEventTriggerDto" }, { "$ref": "#/components/schemas/OnAfterEventTriggerDto" }, { "$ref": "#/components/schemas/OnCancelTriggerDto" }, { "$ref": "#/components/schemas/OnCreationTriggerDto" }, { "$ref": "#/components/schemas/OnRescheduleTriggerDto" }, { "$ref": "#/components/schemas/OnAfterCalVideoGuestsNoShowTriggerDto" }, { "$ref": "#/components/schemas/OnAfterCalVideoHostsNoShowTriggerDto" }, { "$ref": "#/components/schemas/OnRejectedTriggerDto" }, { "$ref": "#/components/schemas/OnRequestedTriggerDto" }, { "$ref": "#/components/schemas/OnPaidTriggerDto" }, { "$ref": "#/components/schemas/OnPaymentInitiatedTriggerDto" }, { "$ref": "#/components/schemas/OnNoShowUpdateTriggerDto" } ] }, "steps": { "type": "array", "description": "Steps to execute as part of the event-type workflow, allowed steps are email_host,email_attendee,email_address,sms_attendee,sms_number,whatsapp_attendee,whatsapp_number,cal_ai_phone_call", "items": { "oneOf": [ { "$ref": "#/components/schemas/UpdateEmailAddressWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdateEmailAttendeeWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdateEmailHostWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdatePhoneAttendeeWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdatePhoneWhatsAppNumberWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdateWhatsAppAttendeePhoneWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdatePhoneNumberWorkflowStepDto" } ] } } } }, "UpdateFormWorkflowDto": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the workflow", "example": "Rounting-form Test Workflow" }, "trigger": { "description": "Trigger configuration for the routing-form workflow, allowed triggers are formSubmitted,formSubmittedNoEvent", "oneOf": [ { "$ref": "#/components/schemas/OnFormSubmittedTriggerDto" }, { "$ref": "#/components/schemas/OnFormSubmittedNoEventTriggerDto" } ] }, "steps": { "type": "array", "description": "Steps to execute as part of the routing-form workflow, allowed steps are email_attendee,email_address,sms_attendee,sms_number", "items": { "oneOf": [ { "$ref": "#/components/schemas/UpdateEmailAddressWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdateEmailAttendeeWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdatePhoneAttendeeWorkflowStepDto" }, { "$ref": "#/components/schemas/UpdatePhoneNumberWorkflowStepDto" } ] } }, "activation": { "$ref": "#/components/schemas/WorkflowFormActivationDto" } } }, "CreatePrivateLinkInput": { "type": "object", "properties": { "expiresAt": { "type": "string", "description": "Expiration date for time-based links", "format": "date-time", "example": "2024-12-31T23:59:59.000Z" }, "maxUsageCount": { "type": "number", "description": "Maximum number of times the link can be used. If omitted and expiresAt is not provided, defaults to 1 (one time use).", "example": 10, "minimum": 1, "default": 1 } } }, "TimeBasedPrivateLinkOutput": { "type": "object", "properties": { "linkId": { "type": "string", "description": "The private link ID", "example": "abc123def456" }, "eventTypeId": { "type": "number", "description": "Event type ID this link belongs to", "example": 123 }, "isExpired": { "type": "boolean", "description": "Whether the link is currently expired", "example": false }, "bookingUrl": { "type": "string", "description": "Full booking URL for this private link", "format": "uri", "example": "https://cal.com/d/abc123def456/30min" }, "expiresAt": { "type": "string", "description": "Expiration date for this time-based link", "format": "date-time", "example": "2025-12-31T23:59:59.000Z" } }, "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "expiresAt"] }, "UsageBasedPrivateLinkOutput": { "type": "object", "properties": { "linkId": { "type": "string", "description": "The private link ID", "example": "abc123def456" }, "eventTypeId": { "type": "number", "description": "Event type ID this link belongs to", "example": 123 }, "isExpired": { "type": "boolean", "description": "Whether the link is currently expired", "example": false }, "bookingUrl": { "type": "string", "description": "Full booking URL for this private link", "format": "uri", "example": "https://cal.com/d/abc123def456/30min" }, "maxUsageCount": { "type": "number", "description": "Maximum number of times this link can be used", "example": 10 }, "usageCount": { "type": "number", "description": "Current usage count for this link", "example": 3 } }, "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "maxUsageCount", "usageCount"] }, "CreatePrivateLinkOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Response status", "example": "success" }, "data": { "description": "Created private link data (either time-based or usage-based)", "oneOf": [ { "$ref": "#/components/schemas/TimeBasedPrivateLinkOutput" }, { "$ref": "#/components/schemas/UsageBasedPrivateLinkOutput" } ] } }, "required": ["status", "data"] }, "GetPrivateLinksOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Response status", "example": "success" }, "data": { "type": "array", "description": "Array of private links for the event type (mix of time-based and usage-based)", "items": { "oneOf": [ { "$ref": "#/components/schemas/TimeBasedPrivateLinkOutput" }, { "$ref": "#/components/schemas/UsageBasedPrivateLinkOutput" } ] } } }, "required": ["status", "data"] }, "UpdatePrivateLinkOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Response status", "example": "success" }, "data": { "description": "Updated private link data (either time-based or usage-based)", "oneOf": [ { "$ref": "#/components/schemas/TimeBasedPrivateLinkOutput" }, { "$ref": "#/components/schemas/UsageBasedPrivateLinkOutput" } ] } }, "required": ["status", "data"] }, "DeletePrivateLinkOutput": { "type": "object", "properties": { "status": { "type": "string", "description": "Response status", "example": "success" }, "data": { "type": "object", "description": "Deleted link information", "properties": { "linkId": { "type": "string", "example": "abc123def456" }, "message": { "type": "string", "example": "Private link deleted successfully" } } } }, "required": ["status", "data"] }, "GetDefaultScheduleOutput_2024_06_11": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, "required": ["status", "data"] }, "CreateTeamInput": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the team", "example": "CalTeam" }, "slug": { "type": "string", "description": "Team slug in kebab-case - if not provided will be generated automatically based on name.", "example": "caltel" }, "logoUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", "description": "URL of the teams logo image" }, "calVideoLogo": { "type": "string" }, "appLogo": { "type": "string" }, "appIconLogo": { "type": "string" }, "bio": { "type": "string" }, "hideBranding": { "type": "boolean", "default": false }, "isPrivate": { "type": "boolean" }, "hideBookATeamMember": { "type": "boolean" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string", "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", "description": "URL of the teams banner image which is shown on booker" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London", "example": "America/New_York", "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." }, "weekStart": { "type": "string", "default": "Sunday", "example": "Monday" }, "autoAcceptCreator": { "type": "boolean", "default": true, "description": "If you are a platform customer, don't pass 'false', because then team creator won't be able to create team event types." } }, "required": ["name"] }, "TeamOutputDto": { "type": "object", "properties": { "id": { "type": "number" }, "parentId": { "type": "number" }, "name": { "type": "string" }, "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" }, "metadata": { "type": "object", "example": { "key": "value" } }, "theme": { "type": "string" }, "brandColor": { "type": "string" }, "darkBrandColor": { "type": "string" }, "bannerUrl": { "type": "string" }, "timeFormat": { "type": "number" }, "timeZone": { "type": "string", "default": "Europe/London" }, "weekStart": { "type": "string", "default": "Sunday" } }, "required": ["id", "name", "isOrganization"] }, "CreateTeamOutputData": { "type": "object", "properties": { "message": { "type": "string" }, "paymentLink": { "type": "string" }, "pendingTeam": { "$ref": "#/components/schemas/TeamOutputDto" } }, "required": ["message", "paymentLink", "pendingTeam"] }, "CreateTeamOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/CreateTeamOutputData" }, { "$ref": "#/components/schemas/TeamOutputDto" } ], "description": "Either an Output object or a TeamOutputDto." } }, "required": ["status", "data"] }, "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"] }, "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"] }, "GoogleServiceAccountKeyInput": { "type": "object", "properties": { "private_key": { "type": "string" }, "client_email": { "type": "string" }, "client_id": { "type": "string" } }, "required": ["private_key", "client_email", "client_id"] }, "MicrosoftServiceAccountKeyInput": { "type": "object", "properties": { "private_key": { "type": "string" }, "tenant_id": { "type": "string" }, "client_id": { "type": "string" } }, "required": ["private_key", "tenant_id", "client_id"] }, "CreateDelegationCredentialInput": { "type": "object", "properties": { "workspacePlatformSlug": { "type": "string" }, "domain": { "type": "string" }, "serviceAccountKey": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/GoogleServiceAccountKeyInput" }, { "$ref": "#/components/schemas/MicrosoftServiceAccountKeyInput" } ] } } }, "required": ["workspacePlatformSlug", "domain", "serviceAccountKey"] }, "WorkspacePlatformDto": { "type": "object", "properties": { "name": { "type": "string" }, "slug": { "type": "string" } }, "required": ["name", "slug"] }, "DelegationCredentialOutput": { "type": "object", "properties": { "id": { "type": "string" }, "enabled": { "type": "boolean" }, "domain": { "type": "string" }, "organizationId": { "type": "number" }, "workspacePlatform": { "$ref": "#/components/schemas/WorkspacePlatformDto" }, "createdAt": { "format": "date-time", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" } }, "required": [ "id", "enabled", "domain", "organizationId", "workspacePlatform", "createdAt", "updatedAt" ] }, "CreateDelegationCredentialOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, "required": ["status", "data"] }, "UpdateDelegationCredentialInput": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "serviceAccountKey": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/GoogleServiceAccountKeyInput" }, { "$ref": "#/components/schemas/MicrosoftServiceAccountKeyInput" } ] } } } }, "UpdateDelegationCredentialOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, "required": ["status", "data"] }, "CreateIcsFeedInputDto": { "type": "object", "properties": { "urls": { "type": "array", "example": ["https://cal.com/ics/feed.ics", "http://cal.com/ics/feed.ics"], "description": "An array of ICS URLs", "items": { "type": "string", "example": "https://cal.com/ics/feed.ics" } }, "readOnly": { "type": "boolean", "default": true, "example": false, "description": "Whether to allowing writing to the calendar or not" } }, "required": ["urls"] }, "CreateIcsFeedOutput": { "type": "object", "properties": { "id": { "type": "number", "example": 1234567890, "description": "The id of the calendar credential" }, "type": { "type": "string", "example": "ics-feed_calendar", "description": "The type of the calendar" }, "userId": { "type": "integer", "nullable": true, "example": 1234567890, "description": "The user id of the user that created the calendar" }, "teamId": { "type": "integer", "nullable": true, "example": 1234567890, "description": "The team id of the user that created the calendar" }, "appId": { "type": "string", "nullable": true, "example": "ics-feed", "description": "The slug of the calendar" }, "invalid": { "type": "boolean", "nullable": true, "example": false, "description": "Whether the calendar credentials are valid or not" } }, "required": ["id", "type", "userId", "teamId", "appId", "invalid"] }, "CreateIcsFeedOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateIcsFeedOutput" } }, "required": ["status", "data"] }, "BusyTimesOutput": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string" }, "end": { "format": "date-time", "type": "string" }, "source": { "type": "string", "nullable": true } }, "required": ["start", "end"] }, "GetBusyTimesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BusyTimesOutput" } } }, "required": ["status", "data"] }, "Integration": { "type": "object", "properties": { "appData": { "type": "object", "nullable": true }, "dirName": { "type": "string" }, "__template": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "installed": { "type": "boolean" }, "type": { "type": "string" }, "title": { "type": "string" }, "variant": { "type": "string" }, "category": { "type": "string" }, "categories": { "type": "array", "items": { "type": "string" } }, "logo": { "type": "string" }, "publisher": { "type": "string" }, "slug": { "type": "string" }, "url": { "type": "string" }, "email": { "type": "string" }, "locationOption": { "type": "object", "nullable": true } }, "required": [ "name", "description", "type", "variant", "categories", "logo", "publisher", "slug", "url", "email", "locationOption" ] }, "Primary": { "type": "object", "properties": { "externalId": { "type": "string" }, "integration": { "type": "string" }, "name": { "type": "string" }, "primary": { "type": "boolean", "nullable": true }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "isSelected": { "type": "boolean" }, "credentialId": { "type": "number" }, "delegationCredentialId": { "type": "string", "nullable": true } }, "required": ["externalId", "primary", "readOnly", "isSelected", "credentialId"] }, "Calendar": { "type": "object", "properties": { "externalId": { "type": "string" }, "integration": { "type": "string" }, "name": { "type": "string" }, "primary": { "type": "boolean", "nullable": true }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "isSelected": { "type": "boolean" }, "credentialId": { "type": "number" }, "delegationCredentialId": { "type": "string", "nullable": true } }, "required": ["externalId", "readOnly", "isSelected", "credentialId"] }, "ConnectedCalendar": { "type": "object", "properties": { "integration": { "$ref": "#/components/schemas/Integration" }, "credentialId": { "type": "number" }, "delegationCredentialId": { "type": "string", "nullable": true }, "primary": { "$ref": "#/components/schemas/Primary" }, "calendars": { "type": "array", "items": { "$ref": "#/components/schemas/Calendar" } } }, "required": ["integration", "credentialId"] }, "DestinationCalendar": { "type": "object", "properties": { "id": { "type": "object" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "primaryEmail": { "type": "string", "nullable": true }, "userId": { "type": "number", "nullable": true }, "eventTypeId": { "type": "number", "nullable": true }, "credentialId": { "type": "number", "nullable": true }, "delegationCredentialId": { "type": "string", "nullable": true }, "name": { "type": "string", "nullable": true }, "primary": { "type": "boolean" }, "readOnly": { "type": "boolean" }, "email": { "type": "string" }, "integrationTitle": { "type": "string" } }, "required": [ "id", "integration", "externalId", "primaryEmail", "userId", "eventTypeId", "credentialId" ] }, "ConnectedCalendarsData": { "type": "object", "properties": { "connectedCalendars": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectedCalendar" } }, "destinationCalendar": { "$ref": "#/components/schemas/DestinationCalendar" } }, "required": ["connectedCalendars", "destinationCalendar"] }, "ConnectedCalendarsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ConnectedCalendarsData" } }, "required": ["status", "data"] }, "CreateCalendarCredentialsInput": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": ["username", "password"] }, "DeleteCalendarCredentialsInputBodyDto": { "type": "object", "properties": { "id": { "type": "integer", "example": 10, "description": "Credential ID of the calendar to delete, as returned by the /calendars endpoint" } }, "required": ["id"] }, "DeletedCalendarCredentialsOutputDto": { "type": "object", "properties": { "id": { "type": "number" }, "type": { "type": "string" }, "userId": { "type": "number", "nullable": true }, "teamId": { "type": "number", "nullable": true }, "appId": { "type": "string", "nullable": true }, "invalid": { "type": "boolean", "nullable": true } }, "required": ["id", "type", "userId", "teamId", "appId", "invalid"] }, "DeletedCalendarCredentialsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputDto" } }, "required": ["status", "data"] }, "CreateOrganizationInput": { "type": "object", "properties": { "apiKeyDaysValid": { "type": "number", "minimum": 1, "description": "For how many days is managed organization api key valid. Defaults to 30 days.", "example": 60, "default": 30 }, "apiKeyNeverExpires": { "type": "boolean", "description": "If true, organization api key never expires.", "example": true }, "name": { "type": "string", "minLength": 1, "description": "Name of the organization", "example": "CalTeam" }, "slug": { "type": "string", "description": "Organization slug in kebab-case - if not provided will be generated automatically based on name.", "example": "cal-tel" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } } }, "required": ["name"] }, "ManagedOrganizationWithApiKeyOutput": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } }, "apiKey": { "type": "string" } }, "required": ["id", "name", "apiKey"] }, "CreateManagedOrganizationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationWithApiKeyOutput" } }, "required": ["status", "data"] }, "ManagedOrganizationOutput": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string", "minLength": 1 }, "slug": { "type": "string" }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": ["id", "name"] }, "GetManagedOrganizationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationOutput" } }, "required": ["status", "data"] }, "PaginationMetaDto": { "type": "object", "properties": { "totalItems": { "type": "number", "description": "The total number of items available across all pages, matching the query criteria.", "example": 123, "minimum": 0 }, "remainingItems": { "type": "number", "description": "The number of items remaining to be fetched *after* the current page. Calculated as: `totalItems - (skip + itemsPerPage)`.", "example": 103, "minimum": 0 }, "returnedItems": { "type": "number", "description": "The number of items returned in the current page.", "example": 10 }, "itemsPerPage": { "type": "number", "description": "The maximum number of items requested per page.", "example": 10, "minimum": 1 }, "currentPage": { "type": "number", "description": "The current page number being returned.", "example": 2, "minimum": 1 }, "totalPages": { "type": "number", "description": "The total number of pages available.", "example": 13, "minimum": 0 }, "hasNextPage": { "type": "boolean", "description": "Indicates if there is a subsequent page available after the current one.", "example": true }, "hasPreviousPage": { "type": "boolean", "description": "Indicates if there is a preceding page available before the current one.", "example": true } }, "required": [ "totalItems", "remainingItems", "returnedItems", "itemsPerPage", "currentPage", "totalPages", "hasNextPage", "hasPreviousPage" ] }, "GetManagedOrganizationsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ManagedOrganizationOutput" } }, "pagination": { "$ref": "#/components/schemas/PaginationMetaDto" } }, "required": ["status", "data", "pagination"] }, "UpdateOrganizationInput": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the organization", "example": "CalTeam" }, "metadata": { "type": "object", "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", "example": { "key": "value" } } } }, "CreateOrgRoleInput": { "type": "object", "properties": { "color": { "type": "string", "description": "Color for the role (hex code)" }, "description": { "type": "string", "description": "Description of the role" }, "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", "example": ["eventType.read", "eventType.create", "booking.read"], "items": { "type": "string", "enum": [ "*.*", "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.create", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "organization.create", "organization.read", "organization.listMembers", "organization.listMembersPrivate", "organization.invite", "organization.remove", "organization.manageBilling", "organization.changeMemberRole", "organization.impersonate", "organization.passwordReset", "organization.update", "booking.read", "booking.readOrgBookings", "booking.readRecordings", "booking.update", "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "organization.attributes.read", "organization.attributes.update", "organization.attributes.delete", "organization.attributes.create", "organization.attributes.editUsers", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "watchlist.create", "watchlist.read", "watchlist.update", "watchlist.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "name": { "type": "string", "minLength": 1, "description": "Name of the role" } }, "required": ["name"] }, "OrgRoleOutput": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the role" }, "name": { "type": "string", "description": "Name of the role" }, "color": { "type": "string", "nullable": true, "description": "Color for the role (hex code)" }, "description": { "type": "string", "nullable": true, "description": "Description of the role" }, "organizationId": { "type": "number", "nullable": true, "description": "Organization ID this role belongs to" }, "type": { "type": "string", "description": "Type of role", "enum": ["SYSTEM", "CUSTOM"] }, "permissions": { "type": "array", "description": "Permissions assigned to this role in 'resource.action' format.", "example": ["booking.read", "eventType.create"], "items": { "type": "string", "enum": [ "*.*", "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.create", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "organization.create", "organization.read", "organization.listMembers", "organization.listMembersPrivate", "organization.invite", "organization.remove", "organization.manageBilling", "organization.changeMemberRole", "organization.impersonate", "organization.passwordReset", "organization.update", "booking.read", "booking.readOrgBookings", "booking.readRecordings", "booking.update", "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "organization.attributes.read", "organization.attributes.update", "organization.attributes.delete", "organization.attributes.create", "organization.attributes.editUsers", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "watchlist.create", "watchlist.read", "watchlist.update", "watchlist.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "createdAt": { "type": "string", "description": "When the role was created" }, "updatedAt": { "type": "string", "description": "When the role was last updated" } }, "required": ["id", "name", "type", "permissions", "createdAt", "updatedAt"] }, "CreateOrgRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, "required": ["status", "data"] }, "GetOrgRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, "required": ["status", "data"] }, "GetAllOrgRolesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrgRoleOutput" } } }, "required": ["status", "data"] }, "UpdateOrgRoleInput": { "type": "object", "properties": { "color": { "type": "string", "description": "Color for the role (hex code)" }, "description": { "type": "string", "description": "Description of the role" }, "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", "example": ["eventType.read", "eventType.create", "booking.read"], "items": { "type": "string", "enum": [ "*.*", "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.create", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "organization.create", "organization.read", "organization.listMembers", "organization.listMembersPrivate", "organization.invite", "organization.remove", "organization.manageBilling", "organization.changeMemberRole", "organization.impersonate", "organization.passwordReset", "organization.update", "booking.read", "booking.readOrgBookings", "booking.readRecordings", "booking.update", "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "organization.attributes.read", "organization.attributes.update", "organization.attributes.delete", "organization.attributes.create", "organization.attributes.editUsers", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "watchlist.create", "watchlist.read", "watchlist.update", "watchlist.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "name": { "type": "string", "minLength": 1, "description": "Name of the role" } } }, "UpdateOrgRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, "required": ["status", "data"] }, "DeleteOrgRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, "required": ["status", "data"] }, "CreateOrgRolePermissionsInput": { "type": "object", "properties": { "permissions": { "type": "array", "description": "Permissions to add (format: resource.action)", "example": ["eventType.read", "booking.read"], "items": { "type": "string", "enum": [ "*.*", "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.create", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "organization.create", "organization.read", "organization.listMembers", "organization.listMembersPrivate", "organization.invite", "organization.remove", "organization.manageBilling", "organization.changeMemberRole", "organization.impersonate", "organization.passwordReset", "organization.update", "booking.read", "booking.readOrgBookings", "booking.readRecordings", "booking.update", "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "organization.attributes.read", "organization.attributes.update", "organization.attributes.delete", "organization.attributes.create", "organization.attributes.editUsers", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "watchlist.create", "watchlist.read", "watchlist.update", "watchlist.delete", "featureOptIn.read", "featureOptIn.update" ] } } }, "required": ["permissions"] }, "GetOrgRolePermissionsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "data": { "type": "array", "items": { "type": "string" } } }, "required": ["status", "data"] }, "CreateTeamRoleInput": { "type": "object", "properties": { "color": { "type": "string", "description": "Color for the role (hex code)" }, "description": { "type": "string", "description": "Description of the role" }, "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", "example": ["eventType.read", "eventType.create", "booking.read"], "items": { "type": "string", "enum": [ "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "booking.read", "booking.readTeamBookings", "booking.readRecordings", "booking.update", "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "name": { "type": "string", "minLength": 1, "description": "Name of the role" } }, "required": ["name"] }, "TeamRoleOutput": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the role" }, "name": { "type": "string", "description": "Name of the role" }, "color": { "type": "string", "nullable": true, "description": "Color for the role (hex code)" }, "description": { "type": "string", "nullable": true, "description": "Description of the role" }, "teamId": { "type": "number", "nullable": true, "description": "Team ID this role belongs to" }, "type": { "type": "string", "description": "Type of role", "enum": ["SYSTEM", "CUSTOM"] }, "permissions": { "type": "array", "description": "Permissions assigned to this role in 'resource.action' format.", "example": ["booking.read", "eventType.create"], "items": { "type": "string", "enum": [ "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "booking.read", "booking.readTeamBookings", "booking.readRecordings", "booking.update", "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "createdAt": { "type": "string", "description": "When the role was created" }, "updatedAt": { "type": "string", "description": "When the role was last updated" } }, "required": ["id", "name", "type", "permissions", "createdAt", "updatedAt"] }, "CreateTeamRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, "required": ["status", "data"] }, "GetTeamRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, "required": ["status", "data"] }, "GetAllTeamRolesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamRoleOutput" } } }, "required": ["status", "data"] }, "UpdateTeamRoleInput": { "type": "object", "properties": { "color": { "type": "string", "description": "Color for the role (hex code)" }, "description": { "type": "string", "description": "Description of the role" }, "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", "example": ["eventType.read", "eventType.create", "booking.read"], "items": { "type": "string", "enum": [ "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "booking.read", "booking.readTeamBookings", "booking.readRecordings", "booking.update", "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "featureOptIn.read", "featureOptIn.update" ] } }, "name": { "type": "string", "minLength": 1, "description": "Name of the role" } } }, "UpdateTeamRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, "required": ["status", "data"] }, "DeleteTeamRoleOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, "required": ["status", "data"] }, "CreateTeamRolePermissionsInput": { "type": "object", "properties": { "permissions": { "type": "array", "description": "Permissions to add (format: resource.action)", "example": ["eventType.read", "booking.read"], "items": { "type": "string", "enum": [ "role.create", "role.read", "role.update", "role.delete", "eventType.create", "eventType.read", "eventType.update", "eventType.delete", "team.read", "team.update", "team.delete", "team.invite", "team.remove", "team.listMembers", "team.listMembersPrivate", "team.changeMemberRole", "team.impersonate", "booking.read", "booking.readTeamBookings", "booking.readRecordings", "booking.update", "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", "workflow.update", "workflow.delete", "routingForm.create", "routingForm.read", "routingForm.update", "routingForm.delete", "webhook.create", "webhook.read", "webhook.update", "webhook.delete", "featureOptIn.read", "featureOptIn.update" ] } } }, "required": ["permissions"] }, "GetTeamRolePermissionsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "data": { "type": "array", "items": { "type": "string" } } }, "required": ["status", "data"] }, "RoutingFormResponseOutput": { "type": "object", "properties": { "id": { "type": "number" }, "formId": { "type": "string" }, "formFillerId": { "type": "string" }, "routedToBookingUid": { "type": "string" }, "response": { "type": "object", "example": { "f00b26df-f54b-4985-8d98-17c5482c6a24": { "label": "participant", "value": "mamut" } } }, "createdAt": { "format": "date-time", "type": "string" } }, "required": ["id", "formId", "formFillerId", "routedToBookingUid", "response", "createdAt"] }, "GetRoutingFormResponsesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } } }, "required": ["status", "data"] }, "SlotsOutput_2024_09_04": { "type": "object", "properties": {} }, "RangeSlotsOutput_2024_09_04": { "type": "object", "properties": {} }, "Routing": { "type": "object", "properties": { "queuedResponseId": { "type": "string", "nullable": true, "description": "The ID of the queued form response. Only present if the form response was queued.", "example": "123" }, "responseId": { "type": "number", "nullable": true, "description": "The ID of the routing form response.", "example": 123 }, "teamMemberIds": { "description": "Array of team member IDs that were routed to handle this booking.", "example": [101, 102], "type": "array", "items": { "type": "number" } }, "teamMemberEmail": { "type": "string", "description": "The email of the team member assigned to handle this booking.", "example": "john.doe@example.com" }, "skipContactOwner": { "type": "boolean", "description": "Whether to skip contact owner assignment from CRM integration.", "example": true }, "crmAppSlug": { "type": "string", "description": "The CRM application slug for integration.", "example": "salesforce" }, "crmOwnerRecordType": { "type": "string", "description": "The CRM owner record type for contact assignment.", "example": "Account" } }, "required": ["teamMemberIds"] }, "CreateRoutingFormResponseOutputData": { "type": "object", "properties": { "eventTypeId": { "type": "number", "description": "The ID of the event type that was routed to.", "example": 123 }, "routing": { "description": "The routing information that could be passed as is to the booking API.", "example": { "eventTypeId": 123, "routing": { "teamMemberIds": [101, 102], "teamMemberEmail": "john.doe@example.com", "skipContactOwner": true } }, "allOf": [ { "$ref": "#/components/schemas/Routing" } ] }, "routingCustomMessage": { "type": "string", "description": "A custom message to be displayed to the user in case of routing to a custom page.", "example": "This is a custom message." }, "routingExternalRedirectUrl": { "type": "string", "description": "The external redirect URL to be used in case of routing to a non cal.com event type URL.", "example": "https://example.com/" }, "slots": { "oneOf": [ { "$ref": "#/components/schemas/SlotsOutput_2024_09_04" }, { "$ref": "#/components/schemas/RangeSlotsOutput_2024_09_04" } ] } } }, "CreateRoutingFormResponseOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateRoutingFormResponseOutputData" } }, "required": ["status", "data"] }, "UpdateRoutingFormResponseInput": { "type": "object", "properties": { "response": { "type": "object", "description": "The updated response data" } } }, "UpdateRoutingFormResponseOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, "required": ["status", "data"] }, "RoutingFormOutput": { "type": "object", "properties": { "name": { "type": "string", "example": "My Form" }, "description": { "type": "string", "nullable": true, "example": "This is the description." }, "position": { "type": "number", "example": 0 }, "createdAt": { "type": "string", "example": "2024-03-28T10:00:00.000Z" }, "updatedAt": { "type": "string", "example": "2024-03-28T10:00:00.000Z" }, "userId": { "type": "number", "example": 2313 }, "teamId": { "type": "number", "nullable": true, "example": 4214321 }, "disabled": { "type": "boolean", "example": false }, "id": { "type": "string" }, "routes": { "type": "object", "nullable": true }, "fields": { "type": "object", "nullable": true }, "settings": { "type": "object", "nullable": true } }, "required": [ "name", "description", "position", "createdAt", "updatedAt", "userId", "teamId", "disabled", "id", "routes", "fields", "settings" ] }, "GetRoutingFormsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/RoutingFormOutput" } } }, "required": ["status", "data"] }, "ResponseSlotsOutputData": { "type": "object", "properties": { "eventTypeId": { "type": "number" }, "slots": { "oneOf": [ { "$ref": "#/components/schemas/SlotsOutput_2024_09_04" }, { "$ref": "#/components/schemas/RangeSlotsOutput_2024_09_04" } ] } }, "required": ["eventTypeId", "slots"] }, "ResponseSlotsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ResponseSlotsOutputData" } }, "required": ["status", "data"] }, "ReserveSlotInput_2024_09_04": { "type": "object", "properties": { "eventTypeId": { "type": "number", "example": 1, "description": "The ID of the event type for which slot should be reserved." }, "slotStart": { "type": "string", "example": "2024-09-04T09:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing available slot." }, "slotDuration": { "type": "number", "example": "30", "description": "By default slot duration is equal to event type length, but if you want to reserve a slot for an event type that has a variable length you can specify it here as a number in minutes. If you don't have this set explicitly that event type can have one of many lengths you can omit this." }, "reservationDuration": { "type": "number", "example": 5, "description": "ONLY for authenticated requests with api key, access token or OAuth credentials (ID + secret).\n \n For how many minutes the slot should be reserved - for this long time noone else can book this event type at `start` time. If not provided, defaults to 5 minutes." } }, "required": ["eventTypeId", "slotStart"] }, "ReserveSlotOutput_2024_09_04": { "type": "object", "properties": { "eventTypeId": { "type": "number", "example": 1, "description": "The ID of the event type for which slot was reserved." }, "slotStart": { "type": "string", "example": "2024-09-04T09:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing available slot." }, "slotEnd": { "type": "string", "example": "2024-09-04T10:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing slot end." }, "slotDuration": { "type": "number", "example": "30", "description": "By default slot duration is equal to event type length, but if you want to reserve a slot for an event type that has a variable length you can specify it here. If you don't have this set explicitly that event type can have one of many lengths you can omit this." }, "reservationUid": { "type": "string", "example": "e84be5a3-4696-49e3-acc7-b2f3999c3b94", "description": "The unique identifier of the reservation. Use it to update, get or delete the reservation." }, "reservationDuration": { "type": "number", "example": 5, "description": "For how many minutes the slot is reserved - for this long time noone else can book this event type at `start` time." }, "reservationUntil": { "type": "string", "example": "2023-09-04T10:00:00Z", "description": "ISO 8601 datestring in UTC timezone representing time until which the slot is reserved." } }, "required": [ "eventTypeId", "slotStart", "slotEnd", "slotDuration", "reservationUid", "reservationDuration", "reservationUntil" ] }, "ReserveSlotOutputResponse_2024_09_04": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ReserveSlotOutput_2024_09_04" } }, "required": ["status", "data"] }, "GetReservedSlotOutput_2024_09_04": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/GetReservedSlotOutput_2024_09_04" } ] } }, "required": ["status", "data"] }, "UpdatePrivateLinkBody": { "type": "object", "properties": { "expiresAt": { "format": "date-time", "type": "string", "description": "New expiration date for time-based links", "example": "2024-12-31T23:59:59.000Z" }, "maxUsageCount": { "type": "number", "description": "New maximum number of times the link can be used", "example": 10, "minimum": 1 } } }, "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" }, "name": { "type": "string", "nullable": true }, "avatarUrl": { "type": "string", "nullable": true }, "bio": { "type": "string", "nullable": true }, "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", "name", "avatarUrl", "bio", "timeFormat", "defaultScheduleId", "weekStart", "timeZone", "organizationId" ] }, "GetMeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, "required": ["status", "data"] }, "UpdateMeOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, "required": ["status", "data"] }, "BookingInputAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "address", "description": "only allowed value for type is `address` - it refers to address defined by the organizer." } }, "required": ["type"] }, "BookingInputAttendeeAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeAddress", "description": "only allowed value for type is `attendeeAddress`" }, "address": { "type": "string", "example": "123 Example St, City, Country" } }, "required": ["type", "address"] }, "BookingInputAttendeeDefinedLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeDefined", "description": "only allowed value for type is `attendeeDefined`" }, "location": { "type": "string", "example": "321 Example St, City, Country" } }, "required": ["type", "location"] }, "BookingInputAttendeePhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeePhone", "description": "only allowed value for type is `attendeePhone`" }, "phone": { "type": "string", "example": "+37120993151" } }, "required": ["type", "phone"] }, "BookingInputIntegrationLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "integration", "description": "only allowed value for type is `integration`" }, "integration": { "type": "string", "example": "cal-video", "enum": [ "cal-video", "google-meet", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ] } }, "required": ["type", "integration"] }, "BookingInputLinkLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "link", "description": "only allowed value for type is `link` - it refers to link defined by the organizer." } }, "required": ["type"] }, "BookingInputPhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone` - it refers to phone defined by the organizer." } }, "required": ["type"] }, "BookingInputOrganizersDefaultAppLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "organizersDefaultApp", "description": "only available for team event types and the only allowed value for type is `organizersDefaultApp` - it refers to the default app defined by the organizer." } }, "required": ["type"] }, "ValidateBookingLocation_2024_08_13": { "type": "object", "properties": {} }, "CreateBookingAttendee": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the attendee.", "example": "John Doe" }, "timeZone": { "type": "string", "description": "The time zone of the attendee.", "example": "America/New_York" }, "phoneNumber": { "type": "string", "description": "The phone number of the attendee in international format.", "example": "+919876543210" }, "language": { "type": "string", "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "description": "The preferred language of the attendee. Used for booking confirmation.", "example": "it", "default": "en" }, "email": { "type": "string", "description": "The email of the attendee.", "example": "john.doe@example.com" } }, "required": ["name", "timeZone"] }, "CreateBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/CreateBookingAttendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "Deprecated - use 'location' instead. Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.", "example": "https://example.com/meeting", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." }, "routing": { "description": "Routing information from routing forms that determined the booking assignment. Both responseId and teamMemberIds are required if provided.", "example": { "responseId": 123, "teamMemberIds": [101, 102] }, "allOf": [ { "$ref": "#/components/schemas/Routing" } ] }, "emailVerificationCode": { "type": "string", "description": "Email verification code required when event type has email verification enabled.", "example": "123456" } }, "required": ["start", "attendee"] }, "CreateInstantBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/CreateBookingAttendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "Deprecated - use 'location' instead. Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.", "example": "https://example.com/meeting", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." }, "routing": { "description": "Routing information from routing forms that determined the booking assignment. Both responseId and teamMemberIds are required if provided.", "example": { "responseId": 123, "teamMemberIds": [101, 102] }, "allOf": [ { "$ref": "#/components/schemas/Routing" } ] }, "emailVerificationCode": { "type": "string", "description": "Email verification code required when event type has email verification enabled.", "example": "123456" }, "instant": { "type": "boolean", "description": "Flag indicating if the booking is an instant booking. Only available for team events.", "example": true } }, "required": ["start", "attendee", "instant"] }, "CreateRecurringBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "The start time of the booking in ISO 8601 format in UTC timezone.", "example": "2024-08-13T09:00:00Z" }, "attendee": { "description": "The attendee's details.", "allOf": [ { "$ref": "#/components/schemas/CreateBookingAttendee" } ] }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values for custom booking fields added by you.", "example": { "customField": "customValue" } }, "eventTypeId": { "type": "number", "description": "The ID of the event type that is booked. Required unless eventTypeSlug and username are provided as an alternative to identifying the event type.", "example": 123 }, "eventTypeSlug": { "type": "string", "description": "The slug of the event type. Required along with username / teamSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "my-event-type" }, "username": { "type": "string", "description": "The username of the event owner. Required along with eventTypeSlug and optionally organizationSlug if eventTypeId is not provided.", "example": "john-doe" }, "teamSlug": { "type": "string", "description": "Team slug for team that owns event type for which slots are fetched. Required along with eventTypeSlug and optionally organizationSlug if the team is part of organization", "example": "john-doe" }, "organizationSlug": { "type": "string", "description": "The organization slug. Optional, only used when booking with eventTypeSlug + username or eventTypeSlug + teamSlug.", "example": "acme-corp" }, "guests": { "description": "An optional list of guest emails attending the event.", "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "meetingUrl": { "type": "string", "description": "Deprecated - use 'location' instead. Meeting URL just for this booking. Displayed in email and calendar event. If not provided then cal video link will be generated.", "example": "https://example.com/meeting", "deprecated": true }, "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/BookingInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputIntegrationLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/BookingInputOrganizersDefaultAppLocation_2024_08_13" } ] }, "metadata": { "type": "object", "description": "You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters, and string values up to 500 characters.", "example": { "key": "value" } }, "lengthInMinutes": { "type": "number", "example": 30, "description": "If it is an event type that has multiple possible lengths that attendee can pick from, you can pass the desired booking length here.\n If not provided then event type default length will be used for the booking." }, "routing": { "description": "Routing information from routing forms that determined the booking assignment. Both responseId and teamMemberIds are required if provided.", "example": { "responseId": 123, "teamMemberIds": [101, 102] }, "allOf": [ { "$ref": "#/components/schemas/Routing" } ] }, "emailVerificationCode": { "type": "string", "description": "Email verification code required when event type has email verification enabled.", "example": "123456" }, "recurrenceCount": { "type": "number", "description": "The number of recurrences. If not provided then event type recurrence count will be used. Can't be more than\n event type recurrence count", "example": 5 } }, "required": ["start", "attendee"] }, "BookingHost": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "name": { "type": "string", "example": "Jane Doe" }, "email": { "type": "string", "example": "jane100@example.com" }, "displayEmail": { "type": "string", "example": "jane100@example.com", "description": "Clean email for display purposes" }, "username": { "type": "string", "example": "jane100" }, "timeZone": { "type": "string", "example": "America/Los_Angeles" } }, "required": ["id", "name", "email", "displayEmail", "username", "timeZone"] }, "EventType": { "type": "object", "properties": { "id": { "type": "number", "example": 1 }, "slug": { "type": "string", "example": "some-event" } }, "required": ["id", "slug"] }, "BookingAttendee": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john@example.com" }, "displayEmail": { "type": "string", "example": "john@example.com", "description": "Clean email for display purposes" }, "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", "bn" ], "example": "en" }, "absent": { "type": "boolean", "example": false }, "phoneNumber": { "type": "string", "example": "+1234567890" } }, "required": ["name", "email", "displayEmail", "timeZone", "absent"] }, "BookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/BookingAttendee" } }, "guests": { "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "bookingFieldsResponses" ] }, "RecurringBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/BookingAttendee" } }, "guests": { "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" } }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "bookingFieldsResponses", "recurringBookingUid" ] }, "SeatedAttendee": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john@example.com" }, "displayEmail": { "type": "string", "example": "john@example.com", "description": "Clean email for display purposes" }, "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", "bn" ], "example": "en" }, "absent": { "type": "boolean", "example": false }, "phoneNumber": { "type": "string", "example": "+1234567890" }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "bookingFieldsResponses": { "type": "object", "description": "Booking field responses consisting of an object with booking field slug as keys and user response as values.", "example": { "customField": "customValue" } }, "metadata": { "type": "object", "example": { "key": "value" } } }, "required": [ "name", "email", "displayEmail", "timeZone", "absent", "seatUid", "bookingFieldsResponses" ] }, "CreateSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "seatUid", "attendees" ] }, "CreateRecurringSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "seatUid", "attendees", "recurringBookingUid" ] }, "CreateBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/BookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" } }, { "$ref": "#/components/schemas/CreateSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/CreateRecurringSeatedBookingOutput_2024_08_13" } } ], "description": "Booking data, which can be either a BookingOutput object or an array of RecurringBookingOutput objects" } }, "required": ["status", "data"] }, "GetSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees" ] }, "GetRecurringSeatedBookingOutput_2024_08_13": { "type": "object", "properties": { "id": { "type": "number", "example": 123 }, "uid": { "type": "string", "example": "booking_uid_123" }, "title": { "type": "string", "example": "Consultation" }, "description": { "type": "string", "example": "Learn how to integrate scheduling into marketplace." }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/BookingHost" } }, "status": { "type": "string", "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelledByEmail": { "type": "string", "example": "canceller@example.com" }, "reschedulingReason": { "type": "string", "example": "User rescheduled the event" }, "rescheduledByEmail": { "type": "string", "example": "rescheduler@example.com" }, "rescheduledFromUid": { "type": "string", "example": "previous_uid_123", "description": "UID of the previous booking from which this booking was rescheduled." }, "rescheduledToUid": { "type": "string", "example": "new_uid_456", "description": "UID of the new booking to which this booking was rescheduled." }, "start": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "end": { "type": "string", "example": "2024-08-13T16:30:00Z" }, "duration": { "type": "number", "example": 60 }, "eventTypeId": { "type": "number", "example": 50, "deprecated": true, "description": "Deprecated - rely on 'eventType' object containing the id instead." }, "eventType": { "$ref": "#/components/schemas/EventType" }, "meetingUrl": { "type": "string", "description": "Deprecated - rely on 'location' field instead.", "example": "https://example.com/recurring-meeting", "deprecated": true }, "location": { "type": "string", "example": "https://example.com/meeting" }, "absentHost": { "type": "boolean", "example": true }, "createdAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "updatedAt": { "type": "string", "example": "2024-08-13T15:30:00Z" }, "metadata": { "type": "object", "example": { "key": "value" } }, "rating": { "type": "number", "example": 4 }, "icsUid": { "type": "string", "example": "ics_uid_123", "description": "UID of ICS event." }, "attendees": { "type": "array", "items": { "$ref": "#/components/schemas/SeatedAttendee" } }, "recurringBookingUid": { "type": "string", "example": "recurring_uid_987" } }, "required": [ "id", "uid", "title", "description", "hosts", "status", "start", "end", "duration", "eventTypeId", "eventType", "location", "absentHost", "createdAt", "updatedAt", "attendees", "recurringBookingUid" ] }, "GetBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/BookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" } }, { "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" } } ], "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" }, "error": { "type": "object" } }, "required": ["status", "data"] }, "RecordingItem": { "type": "object", "properties": { "id": { "type": "string", "example": "1234567890" }, "roomName": { "type": "string", "example": "daily-video-room-123" }, "startTs": { "type": "number", "example": 1678901234 }, "status": { "type": "string", "example": "completed" }, "maxParticipants": { "type": "number", "example": 10 }, "duration": { "type": "number", "example": 3600 }, "shareToken": { "type": "string", "example": "share-token-123" }, "downloadLink": { "type": "string", "nullable": true, "example": "https://cal-video-recordings.s3.us-east-2.amazonaws.com/meetco/123s" }, "error": { "type": "string", "nullable": true, "example": "Error message" } }, "required": ["id", "roomName", "startTs", "status", "duration", "shareToken"] }, "GetBookingRecordingsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "error": { "type": "object" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/RecordingItem" } } }, "required": ["status", "data"] }, "GetBookingTranscriptsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "example": ["https://transcript1.com", "https://transcript2.com"], "type": "array", "items": { "type": "string" } }, "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" }, "pagination": { "$ref": "#/components/schemas/PaginationMetaDto" }, "error": { "type": "object" } }, "required": ["status", "data", "pagination"] }, "RescheduleBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "Start time in ISO 8601 format for the new booking", "example": "2024-08-13T10:00:00Z" }, "rescheduledBy": { "type": "string", "description": "Email of the person who is rescheduling the booking - only needed when rescheduling a booking that requires a confirmation.\nIf event type owner email is provided then rescheduled booking will be automatically confirmed. If attendee email or no email is passed then the event type\nowner will have to confirm the rescheduled booking." }, "reschedulingReason": { "type": "string", "example": "User requested reschedule", "description": "Reason for rescheduling the booking" }, "emailVerificationCode": { "type": "string", "description": "Email verification code required when event type has email verification enabled.", "example": "123456" } }, "required": ["start"] }, "RescheduleSeatedBookingInput_2024_08_13": { "type": "object", "properties": { "start": { "type": "string", "description": "Start time in ISO 8601 format for the new booking", "example": "2024-08-13T10:00:00Z" }, "rescheduledBy": { "type": "string", "description": "Email of the person who is rescheduling the booking - only needed when rescheduling a booking that requires a confirmation.\nIf event type owner email is provided then rescheduled booking will be automatically confirmed. If attendee email or no email is passed then the event type\nowner will have to confirm the rescheduled booking." }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1", "description": "Uid of the specific seat within booking." }, "emailVerificationCode": { "type": "string", "description": "Email verification code required when event type has email verification enabled.", "example": "123456" } }, "required": ["start", "seatUid"] }, "RescheduleBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/BookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/CreateSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/CreateRecurringSeatedBookingOutput_2024_08_13" } ], "description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object" } }, "required": ["status", "data"] }, "CancelBookingInput_2024_08_13": { "type": "object", "properties": { "cancellationReason": { "type": "string", "example": "User requested cancellation" }, "cancelSubsequentBookings": { "type": "boolean", "description": "For recurring non-seated booking only - if true, cancel booking with the bookingUid of the individual recurrence and all recurrences that come after it." } } }, "CancelSeatedBookingInput_2024_08_13": { "type": "object", "properties": { "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1", "description": "Uid of the specific seat within booking." }, "cancellationReason": { "type": "string", "example": "User requested cancellation" } }, "required": ["seatUid"] }, "CancelBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/BookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" } }, { "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" }, { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" }, { "type": "array", "items": { "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" } } ], "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" } }, "required": ["status", "data"] }, "MarkAbsentAttendee": { "type": "object", "properties": { "email": { "type": "string" }, "absent": { "type": "boolean" } }, "required": ["email", "absent"] }, "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/MarkAbsentAttendee" } } } }, "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" }, "displayEmail": { "type": "string", "example": "john.doe@example.com", "description": "Clean email for display purposes" } }, "required": ["id", "name", "email", "displayEmail"] }, "ReassignBookingOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "oneOf": [ { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } ], "description": "Booking data, which can be either a ReassignAutoBookingOutput object or a ReassignManualBookingOutput object", "allOf": [ { "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" } ] } }, "required": ["status", "data"] }, "ReassignToUserBookingInput_2024_08_13": { "type": "object", "properties": { "reason": { "type": "string", "example": "Host has to take another call", "description": "Reason for reassigning the booking" } } }, "DeclineBookingInput_2024_08_13": { "type": "object", "properties": { "reason": { "type": "string", "example": "Host has to take another call", "description": "Reason for declining a booking that requires a confirmation" } } }, "CalendarLink": { "type": "object", "properties": { "label": { "type": "string", "description": "The label of the calendar link" }, "link": { "type": "string", "description": "The link to the calendar" } }, "required": ["label", "link"] }, "CalendarLinksOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "object", "description": "The status of the request, always 'success' for successful responses", "example": "success" }, "data": { "description": "Calendar links for the booking", "type": "array", "items": { "$ref": "#/components/schemas/CalendarLink" } } }, "required": ["status", "data"] }, "BookingReference": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of the booking reference" }, "eventUid": { "type": "string", "description": "The event uid of the booking" }, "destinationCalendarId": { "type": "string", "nullable": true, "description": "The id of the calendar the event is created in" }, "id": { "type": "number", "description": "The id of the booking reference" } }, "required": ["type", "eventUid", "destinationCalendarId", "id"] }, "BookingReferencesOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "object", "description": "The status of the request, always 'success' for successful responses", "example": "success" }, "data": { "description": "Booking References", "type": "array", "items": { "$ref": "#/components/schemas/BookingReference" } } }, "required": ["status", "data"] }, "CalMeetingParticipant": { "type": "object", "properties": { "userId": { "type": "string", "nullable": true, "example": "user123" }, "userName": { "type": "string", "nullable": true, "example": "John Doe" }, "joinTime": { "type": "number", "example": 1678901234 }, "duration": { "type": "number", "example": 3600 } }, "required": ["userId", "userName", "joinTime", "duration"] }, "CalMeetingSession": { "type": "object", "properties": { "id": { "type": "string", "example": "session123" }, "room": { "type": "string", "example": "daily-video-room-123" }, "startTime": { "type": "number", "example": 1678901234 }, "duration": { "type": "number", "example": 3600 }, "ongoing": { "type": "boolean", "example": false }, "maxParticipants": { "type": "number", "example": 10 }, "participants": { "type": "array", "items": { "$ref": "#/components/schemas/CalMeetingParticipant" } } }, "required": ["id", "room", "startTime", "duration", "ongoing", "maxParticipants", "participants"] }, "GetBookingVideoSessionsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/CalMeetingSession" } }, "error": { "type": "object" } }, "required": ["status", "data"] }, "BookingAttendeeWithId_2024_08_13": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john@example.com" }, "displayEmail": { "type": "string", "example": "john@example.com", "description": "Clean email for display purposes" }, "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", "bn" ], "example": "en" }, "absent": { "type": "boolean", "example": false }, "phoneNumber": { "type": "string", "example": "+1234567890" }, "id": { "type": "number", "example": 251 } }, "required": ["name", "email", "displayEmail", "timeZone", "absent", "id"] }, "GetBookingAttendeesOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BookingAttendeeWithId_2024_08_13" } } }, "required": ["status", "data"] }, "GetBookingAttendeeOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/BookingAttendeeWithId_2024_08_13" } }, "required": ["status", "data"] }, "AddAttendeeInput_2024_08_13": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the attendee.", "example": "John Doe" }, "timeZone": { "type": "string", "description": "The time zone of the attendee.", "example": "America/New_York" }, "phoneNumber": { "type": "string", "description": "The phone number of the attendee in international format.", "example": "+919876543210" }, "language": { "type": "string", "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "description": "The preferred language of the attendee. Used for booking confirmation.", "example": "it", "default": "en" }, "email": { "type": "string", "description": "The email of the attendee.", "example": "john.doe@example.com" } }, "required": ["name", "timeZone", "email"] }, "BookingAttendeeOutput_2024_08_13": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john@example.com" }, "displayEmail": { "type": "string", "example": "john@example.com", "description": "Clean email for display purposes" }, "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", "bn" ], "example": "en" }, "absent": { "type": "boolean", "example": false }, "phoneNumber": { "type": "string", "example": "+1234567890" }, "id": { "type": "number", "example": 251 }, "bookingId": { "type": "number", "example": 313 } }, "required": ["name", "email", "displayEmail", "timeZone", "absent", "id", "bookingId"] }, "AddAttendeeOutput_2024_08_13": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/BookingAttendeeOutput_2024_08_13" } }, "required": ["status", "data"] }, "Guest": { "type": "object", "properties": { "email": { "type": "string", "description": "The email of the guest.", "example": "john.doe@example.com" }, "name": { "type": "string", "description": "The name of the guest.", "example": "John Doe" }, "timeZone": { "type": "string", "description": "The time zone of the guest.", "example": "America/New_York" }, "phoneNumber": { "type": "string", "description": "The phone number of the guest in international format.", "example": "+919876543210" }, "language": { "type": "string", "enum": [ "ar", "ca", "de", "es", "eu", "he", "id", "ja", "lv", "pl", "ro", "sr", "th", "vi", "az", "cs", "el", "es-419", "fi", "hr", "it", "km", "nl", "pt", "ru", "sv", "tr", "zh-CN", "bg", "da", "en", "et", "fr", "hu", "iw", "ko", "no", "pt-BR", "sk", "ta", "uk", "zh-TW", "bn" ], "description": "The preferred language of the guest. Used for booking confirmation.", "example": "it", "default": "en" } }, "required": ["email"] }, "AddGuestsInput_2024_08_13": { "type": "object", "properties": { "guests": { "description": "Array of guests to add to the booking. Maximum 10 guests per request.", "example": [ { "email": "john.doe@example.com", "name": "John Doe", "timeZone": "America/New_York" }, { "email": "jane.smith@example.com", "name": "Jane Smith" } ], "type": "array", "items": { "$ref": "#/components/schemas/Guest" } } }, "required": ["guests"] }, "AddGuestsOutput_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"] }, "UpdateInputAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "address", "description": "only allowed value for type is `address` - it refers to address defined by the organizer." }, "address": { "type": "string", "example": "123 Example St, City, Country" } }, "required": ["type", "address"] }, "UpdateBookingInputAttendeeAddressLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeAddress", "description": "only allowed value for type is `attendeeAddress`" }, "address": { "type": "string", "example": "123 Example St, City, Country" } }, "required": ["type", "address"] }, "UpdateBookingInputAttendeeDefinedLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeeDefined", "description": "only allowed value for type is `attendeeDefined`" }, "location": { "type": "string", "example": "321 Example St, City, Country" } }, "required": ["type", "location"] }, "UpdateBookingInputAttendeePhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "attendeePhone", "description": "only allowed value for type is `attendeePhone`" }, "phone": { "type": "string", "example": "+37120993151" } }, "required": ["type", "phone"] }, "UpdateBookingInputLinkLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "link", "description": "only allowed value for type is `link` - it refers to link defined by the organizer." }, "link": { "type": "string", "example": "https://meet.google.com/txi-fein-xyz" } }, "required": ["type", "link"] }, "UpdateBookingInputPhoneLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "phone", "description": "only allowed value for type is `phone` - it refers to phone defined by the organizer." }, "phone": { "type": "string", "example": "+37120993151" } }, "required": ["type", "phone"] }, "UpdateBookingInputIntegrationLocation_2024_08_13": { "type": "object", "properties": { "type": { "type": "string", "example": "integration", "description": "only allowed value for type is `integration`" }, "integration": { "type": "string", "example": "cal-video", "enum": [ "cal-video", "google-meet", "zoom", "whereby-video", "whatsapp-video", "webex-video", "telegram-video", "tandem", "sylaps-video", "skype-video", "sirius-video", "signal-video", "shimmer-video", "salesroom-video", "roam-video", "riverside-video", "ping-video", "office365-video", "mirotalk-video", "jitsi", "jelly-video", "jelly-conferencing", "huddle", "facetime-video", "element-call-video", "eightxeight-video", "discord-video", "demodesk-video", "campfire-video" ] } }, "required": ["type", "integration"] }, "UpdateBookingLocationInput_2024_08_13": { "type": "object", "properties": { "location": { "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", "oneOf": [ { "$ref": "#/components/schemas/UpdateInputAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputAttendeeAddressLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputAttendeeDefinedLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputAttendeePhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputLinkLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputPhoneLocation_2024_08_13" }, { "$ref": "#/components/schemas/UpdateBookingInputIntegrationLocation_2024_08_13" } ] } } }, "UpdateBookingLocationOutput_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"] }, "CreateTeamMembershipInput": { "type": "object", "properties": { "userId": { "type": "number" }, "accepted": { "type": "boolean", "default": false }, "role": { "type": "string", "default": "MEMBER", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean", "default": false } }, "required": ["userId"] }, "CreateTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "GetTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "GetTeamMembershipsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "UpdateTeamMembershipInput": { "type": "object", "properties": { "accepted": { "type": "boolean" }, "role": { "type": "string", "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" } } }, "UpdateTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "DeleteTeamMembershipOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, "required": ["status", "data"] }, "UserWebhookOutputDto": { "type": "object", "properties": { "payloadTemplate": { "type": "string", "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" }, "triggers": { "type": "array", "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "userId": { "type": "number" }, "id": { "type": "number" }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "triggers", "userId", "id", "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}}\"}" }, "triggers": { "type": "array", "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "eventTypeId": { "type": "number" }, "id": { "type": "number" }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "triggers", "eventTypeId", "id", "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}}\"}" }, "triggers": { "type": "array", "items": { "type": "string", "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", "ROUTING_FORM_FALLBACK_HIT", "DELEGATION_CREDENTIAL_ERROR", "WRONG_ASSIGNMENT_REPORT" ] } }, "oAuthClientId": { "type": "string" }, "id": { "type": "number" }, "subscriberUrl": { "type": "string" }, "active": { "type": "boolean" }, "secret": { "type": "string" } }, "required": ["payloadTemplate", "triggers", "oAuthClientId", "id", "subscriberUrl", "active"] }, "OAuthClientWebhookOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" } }, "required": ["status", "data"] }, "OAuthClientWebhooksOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" } } }, "required": ["status", "data"] }, "DestinationCalendarsInputBodyDto": { "type": "object", "properties": { "integration": { "type": "string", "example": "apple_calendar", "description": "The calendar service you want to integrate, as returned by the /calendars endpoint", "enum": ["apple_calendar", "google_calendar", "office365_calendar"] }, "externalId": { "type": "string", "example": "https://caldav.icloud.com/26962146906/calendars/1644422A-1945-4438-BBC0-4F0Q23A57R7S/", "description": "Unique identifier used to represent the specific calendar, as returned by the /calendars endpoint" }, "delegationCredentialId": { "type": "string" } }, "required": ["integration", "externalId"] }, "DestinationCalendarsOutputDto": { "type": "object", "properties": { "userId": { "type": "number" }, "integration": { "type": "string" }, "externalId": { "type": "string" }, "credentialId": { "type": "number", "nullable": true } }, "required": ["userId", "integration", "externalId", "credentialId"] }, "DestinationCalendarsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DestinationCalendarsOutputDto" } }, "required": ["status", "data"] }, "CalendarConnectionItem": { "type": "object", "properties": { "connectionId": { "type": "string", "description": "Stable ID for this calendar connection (use in connection-scoped endpoints)", "example": "123" }, "type": { "type": "string", "enum": ["google", "office365", "apple"], "description": "Calendar provider type", "example": "google" }, "email": { "type": "string", "nullable": true, "description": "Primary email for this connection (null if unavailable)", "example": "user@gmail.com" } }, "required": ["connectionId", "type"] }, "ListConnectionsData": { "type": "object", "properties": { "connections": { "type": "array", "items": { "$ref": "#/components/schemas/CalendarConnectionItem" } } }, "required": ["connections"] }, "ListConnectionsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ListConnectionsData" } }, "required": ["status", "data"] }, "CalendarEventVideoLocation": { "type": "object", "properties": { "type": { "type": "string", "default": "video", "enum": ["video"], "description": "Indicates this is a video conference location" }, "url": { "type": "string", "description": "URL for joining the video conference" }, "label": { "type": "string", "nullable": true, "description": "Display name for the video conference" }, "password": { "type": "string", "nullable": true, "description": "Password required to join the video conference" }, "meetingCode": { "type": "string", "nullable": true, "description": "Meeting code or ID required to join the conference" }, "accessCode": { "type": "string", "nullable": true, "description": "Access code required to join the conference" } }, "required": ["type", "url"] }, "CalendarEventPhoneLocation": { "type": "object", "properties": { "type": { "type": "string", "default": "phone", "enum": ["phone"], "description": "Indicates this is a phone conference location" }, "url": { "type": "string", "description": "Phone number or URL for dialing into the conference" }, "label": { "type": "string", "nullable": true, "description": "Display name for the phone conference" }, "pin": { "type": "string", "nullable": true, "description": "PIN number required for the phone conference" }, "password": { "type": "string", "nullable": true, "description": "Password required for the phone conference" }, "accessCode": { "type": "string", "nullable": true, "description": "Access code required for the phone conference" }, "regionCode": { "type": "string", "nullable": true, "description": "Country/region code for the phone number" } }, "required": ["type", "url"] }, "CalendarEventSipLocation": { "type": "object", "properties": { "type": { "type": "string", "default": "sip", "enum": ["sip"], "description": "Indicates this is a SIP (Session Initiation Protocol) conference location" }, "url": { "type": "string", "description": "SIP URL for joining the conference" }, "label": { "type": "string", "nullable": true, "description": "Display name for the SIP conference" }, "pin": { "type": "string", "nullable": true, "description": "PIN number required for the SIP conference" }, "password": { "type": "string", "nullable": true, "description": "Password required for the SIP conference" } }, "required": ["type", "url"] }, "CalendarEventMoreLocation": { "type": "object", "properties": { "type": { "type": "string", "default": "more", "enum": ["more"], "description": "Indicates this is an additional conference location type" }, "url": { "type": "string", "description": "URL for accessing this location" }, "label": { "type": "string", "nullable": true, "description": "Display name for this location" } }, "required": ["type", "url"] }, "CalendarEventResponseStatus": { "type": "string", "description": "Response status of the attendee", "enum": ["accepted", "pending", "declined", "needsAction"] }, "CalendarEventAttendee": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of the attendee" }, "name": { "type": "string", "description": "Display name of the attendee" }, "responseStatus": { "nullable": true, "example": "accepted", "$ref": "#/components/schemas/CalendarEventResponseStatus" }, "self": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee is the current user" }, "optional": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee's attendance is optional" }, "host": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee is the host" } }, "required": ["email"] }, "CalendarEventStatus": { "type": "string", "description": "Status of the event (accepted, pending, declined, cancelled)", "enum": ["accepted", "pending", "declined", "cancelled"] }, "CalendarEventHost": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of the event host" }, "name": { "type": "string", "nullable": true, "description": "Display name of the event host" }, "responseStatus": { "nullable": true, "example": "accepted", "$ref": "#/components/schemas/CalendarEventResponseStatus" } }, "required": ["email"] }, "calendarEventOwner": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of the event host" }, "name": { "type": "string", "nullable": true, "description": "Display name of the event host" } }, "required": ["email"] }, "CalendarSource": { "type": "string", "description": "Calendar integration source (e.g., Google Calendar, Office 365, Apple Calendar). Currently only Google Calendar is supported.", "enum": ["google", "office365", "apple"] }, "UnifiedCalendarEventOutput": { "type": "object", "properties": { "start": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time" }, "timeZone": { "type": "string" } }, "description": "Start date and time of the calendar event with timezone information" }, "end": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time" }, "timeZone": { "type": "string" } }, "description": "End date and time of the calendar event with timezone information" }, "id": { "type": "string", "description": "Unique identifier of the calendar event" }, "title": { "type": "string", "description": "Title of the calendar event" }, "description": { "type": "string", "nullable": true, "description": "Detailed description of the calendar event" }, "locations": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/CalendarEventVideoLocation" }, { "$ref": "#/components/schemas/CalendarEventPhoneLocation" }, { "$ref": "#/components/schemas/CalendarEventSipLocation" }, { "$ref": "#/components/schemas/CalendarEventMoreLocation" } ], "discriminator": { "propertyName": "type" } }, "nullable": true, "description": "Conference locations with entry points (video, phone, sip, more)" }, "attendees": { "nullable": true, "description": "List of attendees with their response status", "type": "array", "items": { "$ref": "#/components/schemas/CalendarEventAttendee" } }, "status": { "nullable": true, "example": "accepted", "$ref": "#/components/schemas/CalendarEventStatus" }, "hosts": { "nullable": true, "description": "Information about the event hosts (organizers)", "type": "array", "items": { "$ref": "#/components/schemas/CalendarEventHost" } }, "calendarEventOwner": { "nullable": true, "description": "The calendar account that owns this event. This is the primary calendar where the event is stored and cannot be modified without appropriate permissions. Changing this would require moving the event to a different calendar", "allOf": [ { "$ref": "#/components/schemas/calendarEventOwner" } ] }, "source": { "example": "google", "$ref": "#/components/schemas/CalendarSource" } }, "required": ["start", "end", "id", "title", "source"] }, "ListUnifiedCalendarEventsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UnifiedCalendarEventOutput" } } }, "required": ["status", "data"] }, "CreateEventDateTimeWithZone": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time", "description": "Start or end time in ISO 8601 format" }, "timeZone": { "type": "string", "description": "IANA time zone (e.g. America/New_York)" } }, "required": ["time", "timeZone"] }, "CreateEventAttendee": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of the attendee" }, "name": { "type": "string", "description": "Display name of the attendee" } }, "required": ["email"] }, "CreateUnifiedCalendarEventInput": { "type": "object", "properties": { "title": { "type": "string", "description": "Title of the calendar event" }, "start": { "description": "Start date and time with time zone", "allOf": [ { "$ref": "#/components/schemas/CreateEventDateTimeWithZone" } ] }, "end": { "description": "End date and time with time zone", "allOf": [ { "$ref": "#/components/schemas/CreateEventDateTimeWithZone" } ] }, "description": { "type": "string", "nullable": true, "description": "Description of the event" }, "attendees": { "description": "List of attendees", "type": "array", "items": { "$ref": "#/components/schemas/CreateEventAttendee" } } }, "required": ["title", "start", "end"] }, "GetUnifiedCalendarEventOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/UnifiedCalendarEventOutput" } }, "required": ["status", "data"] }, "UpdateCalendarEventAttendee": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of the attendee" }, "name": { "type": "string", "description": "Display name of the attendee" }, "responseStatus": { "nullable": true, "$ref": "#/components/schemas/CalendarEventResponseStatus" }, "self": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee is the current user" }, "optional": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee's attendance is optional" }, "host": { "type": "boolean", "nullable": true, "description": "Indicates if this attendee is the host" } } }, "UpdateUnifiedCalendarEventInput": { "type": "object", "properties": { "start": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time" }, "timeZone": { "type": "string" } }, "description": "Start date and time of the calendar event with timezone information" }, "end": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time" }, "timeZone": { "type": "string" } }, "description": "End date and time of the calendar event with timezone information" }, "title": { "type": "string", "description": "Title of the calendar event" }, "description": { "type": "string", "nullable": true, "description": "Detailed description of the calendar event" }, "attendees": { "nullable": true, "description": "List of attendees. CAUTION: You must pass the entire array with all updated values. Any attendees not included in this array will be removed from the event.", "type": "array", "items": { "$ref": "#/components/schemas/UpdateCalendarEventAttendee" } }, "status": { "nullable": true, "example": "accepted", "$ref": "#/components/schemas/CalendarEventStatus" } } }, "RequestEmailVerificationInput": { "type": "object", "properties": { "email": { "type": "string", "description": "Email to verify.", "example": "acme@example.com" } }, "required": ["email"] }, "RequestEmailVerificationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "RequestPhoneVerificationInput": { "type": "object", "properties": { "phone": { "type": "string", "description": "Phone number to verify.", "example": "+372 5555 6666" } }, "required": ["phone"] }, "RequestPhoneVerificationOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] } }, "required": ["status"] }, "VerifyEmailInput": { "type": "object", "properties": { "email": { "type": "string", "description": "Email to verify.", "example": "example@acme.com" }, "code": { "type": "string", "description": "verification code sent to the email to verify", "example": "1ABG2C" } }, "required": ["email", "code"] }, "UserVerifiedEmailOutputData": { "type": "object", "properties": { "id": { "type": "number", "description": "The unique identifier for the verified email.", "example": 789 }, "email": { "type": "string", "description": "The verified email address.", "example": "user@example.com", "format": "email" }, "userId": { "type": "number", "description": "The ID of the associated user, if applicable.", "example": 45 } }, "required": ["id", "email", "userId"] }, "UserVerifiedEmailOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/UserVerifiedEmailOutputData" } }, "required": ["status", "data"] }, "VerifyPhoneInput": { "type": "object", "properties": { "phone": { "type": "string", "description": "phone number to verify.", "example": "+37255556666" }, "code": { "type": "string", "description": "verification code sent to the phone number to verify", "example": "1ABG2C" } }, "required": ["phone", "code"] }, "UserVerifiedPhoneOutputData": { "type": "object", "properties": { "id": { "type": "number", "description": "The unique identifier for the verified email.", "example": 789 }, "phoneNumber": { "type": "string", "description": "The verified phone number.", "example": "+37255556666", "format": "phone" }, "userId": { "type": "number", "description": "The ID of the associated user, if applicable.", "example": 45 } }, "required": ["id", "phoneNumber", "userId"] }, "UserVerifiedPhoneOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/UserVerifiedPhoneOutputData" } }, "required": ["status", "data"] }, "UserVerifiedEmailsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UserVerifiedEmailOutputData" } } }, "required": ["status", "data"] }, "UserVerifiedPhonesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UserVerifiedPhoneOutputData" } } }, "required": ["status", "data"] }, "TeamVerifiedEmailOutputData": { "type": "object", "properties": { "id": { "type": "number", "description": "The unique identifier for the verified email.", "example": 789 }, "email": { "type": "string", "description": "The verified email address.", "example": "user@example.com", "format": "email" }, "teamId": { "type": "number", "description": "The ID of the associated team, if applicable.", "example": 89 }, "userId": { "type": "number", "nullable": true, "description": "The ID of the associated user, if applicable.", "example": 45 } }, "required": ["id", "email", "teamId"] }, "TeamVerifiedEmailOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamVerifiedEmailOutputData" } }, "required": ["status", "data"] }, "TeamVerifiedPhoneOutputData": { "type": "object", "properties": { "id": { "type": "number", "description": "The unique identifier for the verified email.", "example": 789 }, "phoneNumber": { "type": "string", "description": "The verified phone number.", "example": "+37255556666", "format": "phone" }, "userId": { "type": "number", "nullable": true, "description": "The ID of the associated user, if applicable.", "example": 45 }, "teamId": { "type": "number", "description": "The ID of the associated team, if applicable.", "example": 89 } }, "required": ["id", "phoneNumber", "teamId"] }, "TeamVerifiedPhoneOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutputData" } }, "required": ["status", "data"] }, "TeamVerifiedEmailsOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamVerifiedEmailOutputData" } } }, "required": ["status", "data"] }, "TeamVerifiedPhonesOutput": { "type": "object", "properties": { "status": { "type": "string", "example": "success", "enum": ["success", "error"] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TeamVerifiedPhoneOutputData" } } }, "required": ["status", "data"] } } } }