@calcom/cal-mcp
Version:
An MCP server for Cal.com generated by @buildwithalyer
1,856 lines (1,855 loc) • 525 kB
text/typescript
import { APITool } from "@buildwithlayer/openapi-to-tools/types.js";
export const tools: APITool[] = [
{
description: "Get a provider",
method: "get",
name: "CalProviderController_verifyClientId",
url: "https://api.cal.com/v2/provider/{clientId}",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Verify an access token",
method: "get",
name: "CalProviderController_verifyAccessToken",
url: "https://api.cal.com/v2/provider/{clientId}/access-token",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Get all managed users",
method: "get",
name: "OAuthClientUsersController_getManagedUsers",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
description: "The number of items to return",
in: "query",
name: "limit",
required: false,
example: 10,
explode: true,
schema: {
type: "number",
},
style: "form",
},
{
description: "The number of items to skip",
in: "query",
name: "offset",
required: false,
example: 0,
explode: true,
schema: {
type: "number",
},
style: "form",
},
{
description:
"Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.",
in: "query",
name: "emails",
required: false,
example: "?emails=email1@example.com,email2@example.com",
explode: true,
schema: {
type: "array",
items: {
type: "string",
},
},
style: "form",
},
],
defs: {},
},
{
description: "Create a managed user",
method: "post",
name: "OAuthClientUsersController_createUser",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateManagedUserInput",
},
contentType: "application/json",
defs: {
CreateManagedUserInput: {
required: ["email", "name"],
type: "object",
properties: {
email: {
examples: ["alice@example.com"],
type: "string",
},
name: {
description: "Managed user's name is used in emails",
examples: ["Alice Smith"],
type: "string",
},
timeFormat: {
description: "Must be a number 12 or 24",
enum: [12, 24],
examples: [12],
type: "number",
},
weekStart: {
enum: [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
],
examples: ["Monday"],
type: "string",
},
timeZone: {
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.",
examples: ["America/New_York"],
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",
],
examples: ["en"],
type: "string",
},
avatarUrl: {
description: "URL of the user's avatar image",
examples: [
"https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png",
],
type: "string",
},
},
},
},
},
{
description: "Get a managed user",
method: "get",
name: "OAuthClientUsersController_getUserById",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users/{userId}",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
defs: {},
},
{
description: "Delete a managed user",
method: "delete",
name: "OAuthClientUsersController_deleteUser",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users/{userId}",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
defs: {},
},
{
description: "Update a managed user",
method: "patch",
name: "OAuthClientUsersController_updateUser",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users/{userId}",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/UpdateManagedUserInput",
},
contentType: "application/json",
defs: {
UpdateManagedUserInput: {
type: "object",
properties: {
email: {
type: "string",
},
name: {
type: "string",
},
timeFormat: {
description: "Must be 12 or 24",
enum: [12, 24],
examples: [12],
type: "number",
},
defaultScheduleId: {
type: "number",
},
weekStart: {
enum: [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
],
examples: ["Monday"],
type: "string",
},
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",
],
examples: ["en"],
type: "string",
},
avatarUrl: {
description: "URL of the user's avatar image",
examples: [
"https://cal.com/api/avatar/2b735186-b01b-46d3-87da-019b8f61776b.png",
],
type: "string",
},
},
},
},
},
{
description:
"If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials.\n Each access token is valid for 60 minutes and each refresh token for 1 year. Make sure to store them later in your database, for example, by updating the User model to have `calAccessToken` and `calRefreshToken` columns.",
method: "post",
name: "OAuthClientUsersController_forceRefresh",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/users/{userId}/force-refresh",
params: [
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description:
"If managed user access token is expired then get a new one using this endpoint. Each access token is valid for 60 minutes and \n each refresh token for 1 year. Make sure to store them later in your database, for example, by updating the User model to have `calAccessToken` and `calRefreshToken` columns.",
method: "post",
name: "OAuthFlowController_refreshTokens",
url: "https://api.cal.com/v2/oauth/{clientId}/refresh",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
description: "OAuth client secret key.",
in: "header",
name: "x-cal-secret-key",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/RefreshTokenInput",
},
contentType: "application/json",
defs: {
RefreshTokenInput: {
required: ["refreshToken"],
type: "object",
properties: {
refreshToken: {
description: "Managed user's refresh token.",
type: "string",
},
},
},
},
},
{
description: "Get all webhooks",
method: "get",
name: "OAuthClientWebhooksController_getOAuthClientWebhooks",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
description: "The number of items to return",
in: "query",
name: "take",
required: false,
example: 10,
explode: true,
schema: {
type: "number",
},
style: "form",
},
{
description: "The number of items to skip",
in: "query",
name: "skip",
required: false,
example: 0,
explode: true,
schema: {
type: "number",
},
style: "form",
},
],
defs: {},
},
{
description: "Create a webhook",
method: "post",
name: "OAuthClientWebhooksController_createOAuthClientWebhook",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateWebhookInputDto",
},
contentType: "application/json",
defs: {
CreateWebhookInputDto: {
required: ["active", "subscriberUrl", "triggers"],
type: "object",
properties: {
payloadTemplate: {
description:
"The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
examples: [
'{"content":"A new event has been scheduled","type":"{{type}}","name":"{{title}}","organizer":"{{organizer.name}}","booker":"{{attendees.0.name}}"}',
],
type: "string",
},
active: {
type: "boolean",
},
subscriberUrl: {
type: "string",
},
triggers: {
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",
],
examples: [
[
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED",
],
],
type: "string",
},
secret: {
type: "string",
},
},
},
},
},
{
description: "Delete all webhooks",
method: "delete",
name: "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks",
params: [
{
in: "path",
name: "clientId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Get a webhook",
method: "get",
name: "OAuthClientWebhooksController_getOAuthClientWebhook",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks/{webhookId}",
defs: {},
},
{
description: "Delete a webhook",
method: "delete",
name: "OAuthClientWebhooksController_deleteOAuthClientWebhook",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks/{webhookId}",
defs: {},
},
{
description: "Update a webhook",
method: "patch",
name: "OAuthClientWebhooksController_updateOAuthClientWebhook",
url: "https://api.cal.com/v2/oauth-clients/{clientId}/webhooks/{webhookId}",
params: [
{
in: "path",
name: "webhookId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/UpdateWebhookInputDto",
},
contentType: "application/json",
defs: {
UpdateWebhookInputDto: {
type: "object",
properties: {
payloadTemplate: {
description:
"The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information",
examples: [
'{"content":"A new event has been scheduled","type":"{{type}}","name":"{{title}}","organizer":"{{organizer.name}}","booker":"{{attendees.0.name}}"}',
],
type: "string",
},
active: {
type: "boolean",
},
subscriberUrl: {
type: "string",
},
triggers: {
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",
],
examples: [
[
"BOOKING_CREATED",
"BOOKING_RESCHEDULED",
"BOOKING_CANCELLED",
"BOOKING_CONFIRMED",
"BOOKING_REJECTED",
"BOOKING_COMPLETED",
"BOOKING_NO_SHOW",
"BOOKING_REOPENED",
],
],
type: "string",
},
secret: {
type: "string",
},
},
},
},
},
{
description: "Get all attributes",
method: "get",
name: "OrganizationsAttributesController_getOrganizationAttributes",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
description: "The number of items to return",
in: "query",
name: "take",
required: false,
example: 10,
explode: true,
schema: {
type: "number",
},
style: "form",
},
{
description: "The number of items to skip",
in: "query",
name: "skip",
required: false,
example: 0,
explode: true,
schema: {
type: "number",
},
style: "form",
},
],
defs: {},
},
{
description: "Create an attribute",
method: "post",
name: "OrganizationsAttributesController_createOrganizationAttribute",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateOrganizationAttributeInput",
},
contentType: "application/json",
defs: {
CreateOrganizationAttributeInput: {
required: ["name", "slug", "type", "options"],
type: "object",
properties: {
name: {
type: "string",
},
slug: {
type: "string",
},
type: {
enum: ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"],
type: "string",
},
options: {
type: "array",
items: {
$ref: "#/$defs/CreateOrganizationAttributeOptionInput",
},
},
enabled: {
type: "boolean",
},
},
},
CreateOrganizationAttributeOptionInput: {
required: ["value", "slug"],
type: "object",
properties: {
value: {
type: "string",
},
slug: {
type: "string",
},
},
},
},
},
{
description: "Get an attribute",
method: "get",
name: "OrganizationsAttributesController_getOrganizationAttribute",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Delete an attribute",
method: "delete",
name: "OrganizationsAttributesController_deleteOrganizationAttribute",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Update an attribute",
method: "patch",
name: "OrganizationsAttributesController_updateOrganizationAttribute",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/UpdateOrganizationAttributeInput",
},
contentType: "application/json",
defs: {
UpdateOrganizationAttributeInput: {
type: "object",
properties: {
name: {
type: "string",
},
slug: {
type: "string",
},
type: {
enum: ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"],
type: "string",
},
enabled: {
type: "boolean",
},
},
},
},
},
{
description: "Get all attribute options",
method: "get",
name: "OrganizationsAttributesOptionsController_getOrganizationAttribut",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}/options",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Create an attribute option",
method: "post",
name: "OrganizationsAttributesOptionsController_createOrganizationAttri",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}/options",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateOrganizationAttributeOptionInput",
},
contentType: "application/json",
defs: {
CreateOrganizationAttributeOptionInput: {
required: ["value", "slug"],
type: "object",
properties: {
value: {
type: "string",
},
slug: {
type: "string",
},
},
},
},
},
{
description: "Delete an attribute option",
method: "delete",
name: "OrganizationsAttributesOptionsController_deleteOrganizationAttri",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
in: "path",
name: "optionId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Update an attribute option",
method: "patch",
name: "OrganizationsAttributesOptionsController_updateOrganizationAttri",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
{
in: "path",
name: "optionId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/UpdateOrganizationAttributeOptionInput",
},
contentType: "application/json",
defs: {
UpdateOrganizationAttributeOptionInput: {
type: "object",
properties: {
value: {
type: "string",
},
slug: {
type: "string",
},
},
},
},
},
{
description: "Get all attribute options for a user",
method: "get",
name: "OrganizationsAttributesOptionsController_getOrganizationAttribut",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/options/{userId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
defs: {},
},
{
description: "Assign an attribute to a user",
method: "post",
name: "OrganizationsAttributesOptionsController_assignOrganizationAttri",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/options/{userId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/AssignOrganizationAttributeOptionToUserInput",
},
contentType: "application/json",
defs: {
AssignOrganizationAttributeOptionToUserInput: {
required: ["attributeId"],
type: "object",
properties: {
value: {
type: "string",
},
attributeOptionId: {
type: "string",
},
attributeId: {
type: "string",
},
},
},
},
},
{
description: "Unassign an attribute from a user",
method: "delete",
name: "OrganizationsAttributesOptionsController_unassignOrganizationAtt",
url: "https://api.cal.com/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "userId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "attributeOptionId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
defs: {},
},
{
description: "Save delegation credentials for your organization.",
method: "post",
name: "OrganizationsDelegationCredentialController_createDelegationCred",
url: "https://api.cal.com/v2/organizations/{orgId}/delegation-credentials",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateDelegationCredentialInput",
},
contentType: "application/json",
defs: {
CreateDelegationCredentialInput: {
required: ["workspacePlatformSlug", "domain", "serviceAccountKey"],
type: "object",
properties: {
workspacePlatformSlug: {
type: "string",
},
domain: {
type: "string",
},
serviceAccountKey: {
type: "array",
items: {
anyOf: [
{
$ref: "#/$defs/GoogleServiceAccountKeyInput",
},
],
type: "object",
},
},
},
},
GoogleServiceAccountKeyInput: {
required: ["private_key", "client_email", "client_id"],
type: "object",
properties: {
private_key: {
type: "string",
},
client_email: {
type: "string",
},
client_id: {
type: "string",
},
},
},
},
},
{
description: "Update delegation credentials of your organization.",
method: "patch",
name: "OrganizationsDelegationCredentialController_updateDelegationCred",
url: "https://api.cal.com/v2/organizations/{orgId}/delegation-credentials/{credentialId}",
params: [
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "credentialId",
required: true,
explode: false,
schema: {
type: "string",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/UpdateDelegationCredentialInput",
},
contentType: "application/json",
defs: {
UpdateDelegationCredentialInput: {
type: "object",
properties: {
enabled: {
type: "boolean",
},
serviceAccountKey: {
type: "array",
items: {
anyOf: [
{
$ref: "#/$defs/GoogleServiceAccountKeyInput",
},
],
type: "object",
},
},
},
},
GoogleServiceAccountKeyInput: {
required: ["private_key", "client_email", "client_id"],
type: "object",
properties: {
private_key: {
type: "string",
},
client_email: {
type: "string",
},
client_id: {
type: "string",
},
},
},
},
},
{
description: "Get a team event type",
method: "get",
name: "OrganizationsEventTypesController_getTeamEventTypes",
url: "https://api.cal.com/v2/organizations/{orgId}/teams/{teamId}/event-types",
params: [
{
in: "path",
name: "teamId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
description: "Slug of team event type to return.",
in: "query",
name: "eventSlug",
required: false,
explode: true,
schema: {
type: "string",
},
style: "form",
},
{
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.",
in: "query",
name: "hostsLimit",
required: false,
explode: true,
schema: {
type: "number",
},
style: "form",
},
],
defs: {},
},
{
description: "Create an event type",
method: "post",
name: "OrganizationsEventTypesController_createTeamEventType",
url: "https://api.cal.com/v2/organizations/{orgId}/teams/{teamId}/event-types",
params: [
{
in: "path",
name: "teamId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
{
in: "path",
name: "orgId",
required: true,
explode: false,
schema: {
type: "number",
},
style: "simple",
},
],
body: {
$ref: "#/$defs/CreateTeamEventTypeInput_2024_06_14",
},
contentType: "application/json",
defs: {
CreateTeamEventTypeInput_2024_06_14: {
required: [
"lengthInMinutes",
"title",
"slug",
"schedulingType",
"hosts",
],
type: "object",
properties: {
lengthInMinutes: {
examples: [60],
type: "number",
},
lengthInMinutesOptions: {
description:
"If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.",
examples: [[15, 30, 60]],
type: "array",
items: {
type: "string",
},
},
title: {
examples: ["Learn the secrets of masterchief!"],
type: "string",
},
slug: {
examples: ["learn-the-secrets-of-masterchief"],
type: "string",
},
description: {
examples: [
"Discover the culinary wonders of the Argentina by making the best flan ever!",
],
type: "string",
},
bookingFields: {
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.",
type: "array",
items: {
anyOf: [
{
$ref: "#/$defs/NameDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/EmailDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/TitleDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/NotesDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/GuestsDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/RescheduleReasonDefaultFieldInput_2024_06_14",
},
{
$ref: "#/$defs/PhoneFieldInput_2024_06_14",
},
{
$ref: "#/$defs/AddressFieldInput_2024_06_14",
},
{
$ref: "#/$defs/TextFieldInput_2024_06_14",
},
{
$ref: "#/$defs/NumberFieldInput_2024_06_14",
},
{
$ref: "#/$defs/TextAreaFieldInput_2024_06_14",
},
{
$ref: "#/$defs/SelectFieldInput_2024_06_14",
},
{
$ref: "#/$defs/MultiSelectFieldInput_2024_06_14",
},
{
$ref: "#/$defs/MultiEmailFieldInput_2024_06_14",
},
{
$ref: "#/$defs/CheckboxGroupFieldInput_2024_06_14",
},
{
$ref: "#/$defs/RadioGroupFieldInput_2024_06_14",
},
{
$ref: "#/$defs/BooleanFieldInput_2024_06_14",
},
{
$ref: "#/$defs/UrlFieldInput_2024_06_14",
},
],
type: "object",
},
},
disableGuests: {
description:
"If true, person booking this event can't add guests via their emails.",
type: "boolean",
},
slotInterval: {
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.",
type: "number",
},
minimumBookingNotice: {
description:
"Minimum number of minutes before the event that a booking can be made.",
type: "number",
},
beforeEventBuffer: {
description:
"Time spaces that can be prepended before an event to give more time before it.",
type: "number",
},
afterEventBuffer: {
description:
"Time spaces that can be appended after an event to give more time after it.",
type: "number",
},
scheduleId: {
description:
"If you want that this event has different schedule than user's default one you can specify it here.",
type: "number",
},
bookingLimitsCount: {
description: "Limit how many times this event can be booked",
anyOf: [
{
$ref: "#/$defs/BaseBookingLimitsCount_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
onlyShowFirstAvailableSlot: {
description:
"This will limit your availability for this event type to one slot per day, scheduled at the earliest available time.",
type: "boolean",
},
bookingLimitsDuration: {
description:
"Limit total amount of time that this event can be booked",
anyOf: [
{
$ref: "#/$defs/BaseBookingLimitsDuration_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
bookingWindow: {
description: "Limit how far in the future this event can be booked",
anyOf: [
{
$ref: "#/$defs/BusinessDaysWindow_2024_06_14",
},
{
$ref: "#/$defs/CalendarDaysWindow_2024_06_14",
},
{
$ref: "#/$defs/RangeWindow_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
offsetStart: {
description:
"Offset timeslots shown to bookers by a specified number of minutes",
type: "number",
},
bookerLayouts: {
description:
"Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.",
allOf: [
{
$ref: "#/$defs/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.",
anyOf: [
{
$ref: "#/$defs/BaseConfirmationPolicy_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
recurrence: {
description: "Create a recurring event type.",
anyOf: [
{
$ref: "#/$defs/Recurrence_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
requiresBookerEmailVerification: {
type: "boolean",
},
hideCalendarNotes: {
type: "boolean",
},
lockTimeZoneToggleOnBookingPage: {
type: "boolean",
},
color: {
$ref: "#/$defs/EventTypeColor_2024_06_14",
},
seats: {
description: "Create an event type with multiple seats.",
anyOf: [
{
$ref: "#/$defs/Seats_2024_06_14",
},
{
$ref: "#/$defs/Disabled_2024_06_14",
},
],
type: "object",
},
customName: {
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}",
examples: [
"{Event type title} between {Organiser} and {Scheduler}",
],
type: "string",
},
destinationCalendar: {
$ref: "#/$defs/DestinationCalendar_2024_06_14",
},
useDestinationCalendarEmail: {
type: "boolean",
},
hideCalendarEventDetails: {
type: "boolean",
},
successRedirectUrl: {
description:
"A valid URL where the booker will redirect to, once the booking is completed successfully",
examples: ["https://masterchief.com/argentina/flan/video/9129412"],
type: "string",
},
schedulingType: {
type: "object",
},
hosts: {
type: "array",
items: {
$ref: "#/$defs/Host",
},
},
assignAllTeamMembers: {
description:
"If true, all current and future team members will be assigned to this event type",
type: "boolean",
},
locations: {
description:
"Locations where the event will take place. If not provided, cal video link will be used as the location.",
type: "array",
items: {
anyOf: [
{
$ref: "#/$defs/InputAddressLocation_2024_06_14",
},
{
$ref: "#/$defs/InputLinkLocation_2024_06_14",
},
{
$ref: "#/$defs/InputIntegrationLocation_2024_06_14",
},
{
$ref: "#/$defs/InputPhoneLocation_2024_06_14",
},
{
$ref: "#/$defs/InputAttendeeAddressLocation_2024_06_14",
},
{
$ref: "#/$defs/InputAttendeePhoneLocation_2024_06_14",
},
{
$ref: "#/$defs/InputAttendeeDefinedLocation_2024_06_14",
},
{
$ref: "#/$defs/InputOrganizersDefaultApp_2024_06_14",
},
],
type: "object",
},
},
},
},
NameDefaultFieldInput_2024_06_14: {
required: ["type", "label", "placeholder"],
type: "object",
properties: {
type: {
description:
"only allowed value for type is `name`. Used for having 1 booking field for both first name and last name.",
examples: ["name"],
type: "string",
},
label: {
type: "string",
},
placeholder: {
type: "string",
},
disableOnPrefill: {
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.",
type: "boolean",
},
},
},
EmailDefaultFieldInput_2024_06_14: {
required: ["type", "label", "required", "placeholder"],
type: "object",
properties: {
type: {
description: "only allowed value for type is `email`",
examples: ["email"],
type: "string",
},
label: {
type: "string",
},
required: {
type: "object",
},
placeholder: {
type: "string",
},
disableOnPrefill: {
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.",
type: "boolean",
},
},
},
TitleDefaultFieldInput_2024_06_14: {
required: ["slug"],
type: "object",
properties: {
slug: {
description: "only allowed value for type is `title`",
examples: ["title"],
type: "string",
},
required: {
type: "boolean",
},
hidden: {
description:
"If true show under event type settings but don't show this booking field in the Booker. If false show in both.",
type: "boolean",
},
label: {
type: "string",
},
placeholder: {
type: "string",
},
disableOnPrefill: {
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.",
type: "boolean",
},
},
},
NotesDefaultFieldInput_2024_06_14: {
required: ["slug"],
type: "object",
properties: {
slug: {
description: "only allowed value for type is `notes`",
examples: ["notes"],
type: "string",
},
required: {
type: "boolean",
},
hidden: {
description:
"If true show under event type settings but don't show this booking field in the Booker. If false show in both.",
type: "boolean",
},
label: {
type: "string",
},
placeholder: {
type: "string",
},
disableOnPrefill: {
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.",
type: "boolean",
},
},
},
GuestsDefaultFieldInput_2024_06_14: {
required: ["slug"],
type: "object",
properties: {
slug: {
description: "only allowed value for type is `guests`",
examples: ["guests"],
type: "string",
},
required: {
type: "boolean",
}