diff --git a/.github/workflows/e2e-api-v2.yml b/.github/workflows/e2e-api-v2.yml index 4806dcc7ff42ff..2074f0b69f755a 100644 --- a/.github/workflows/e2e-api-v2.yml +++ b/.github/workflows/e2e-api-v2.yml @@ -1,4 +1,4 @@ -name: E2E +name: Check breaking changes and run E2E on: workflow_call: env: @@ -23,6 +23,10 @@ env: STRIPE_CLIENT_ID: ${{ secrets.CI_STRIPE_CLIENT_ID }} STRIPE_WEBHOOK_SECRET: ${{ secrets.CI_STRIPE_WEBHOOK_SECRET }} SLOTS_CACHE_TTL: ${{ secrets.CI_SLOTS_CACHE_TTL }} + NEXT_PUBLIC_VAPID_PUBLIC_KEY: ${{ secrets.NEXT_PUBLIC_VAPID_PUBLIC_KEY }} + VAPID_PRIVATE_KEY: ${{ secrets.VAPID_PRIVATE_KEY }} + JWT_SECRET: ${{ secrets.CI_JWT_SECRET }} + NODE_ENV: ${{ vars.CI_NODE_ENV }} jobs: e2e: timeout-minutes: 20 @@ -68,6 +72,18 @@ jobs: - uses: ./.github/actions/dangerous-git-checkout - uses: ./.github/actions/yarn-install - uses: ./.github/actions/cache-db + + - name: Generate Swagger + working-directory: apps/api/v2 + run: yarn generate-swagger + + - name: Check breaking changes + uses: oasdiff/oasdiff-action/breaking@main + with: + base: https://raw.githubusercontent.com/calcom/cal.com/refs/heads/main/docs/api-reference/v2/openapi.json + revision: docs/api-reference/v2/openapi.json + fail-on: WARN + - name: Run Tests working-directory: apps/api/v2 run: | @@ -75,6 +91,7 @@ jobs: EXIT_CODE=$? echo "yarn workspace @calcom/platform-libraries build && yarn test:e2e command exit code: $EXIT_CODE" exit $EXIT_CODE + - name: Upload Test Results if: ${{ always() }} uses: actions/upload-artifact@v4 diff --git a/.prettierignore b/.prettierignore index 76b9ebc554d5b3..82be0c91348a6c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,5 +16,4 @@ public packages/prisma/zod packages/prisma/enums apps/web/public/embed -apps/api/v2/swagger/documentation.json packages/ui/components/icon/dynamicIconImports.tsx diff --git a/apps/api/v2/package.json b/apps/api/v2/package.json index 07dd0d8d3ab8b6..2006fd05d441f5 100644 --- a/apps/api/v2/package.json +++ b/apps/api/v2/package.json @@ -16,7 +16,7 @@ "_dev:build:watch:enums": "yarn workspace @calcom/platform-enums build:watch", "_dev:build:watch:utils": "yarn workspace @calcom/platform-utils build:watch", "_dev:build:watch:types": "yarn workspace @calcom/platform-types build:watch", - "dev:build": "yarn workspace @calcom/platform-constants build && yarn workspace @calcom/platform-enums build && yarn workspace @calcom/platform-utils build && yarn workspace @calcom/platform-types build", + "dev:build": "yarn workspace @calcom/platform-constants build && yarn workspace @calcom/platform-enums build && yarn workspace @calcom/platform-utils build && yarn workspace @calcom/platform-types build && yarn workspace @calcom/platform-libraries build", "dev": "yarn dev:build && ts-node scripts/docker-start.ts && yarn copy-swagger-module && yarn start --watch", "dev:no-docker": "yarn dev:build && yarn copy-swagger-module && yarn start --watch", "start:debug": "nest start --debug --watch", @@ -30,7 +30,8 @@ "test:e2e:watch": "yarn dev:build && jest --runInBand --detectOpenHandles --forceExit --config ./jest-e2e.ts --watch", "prisma": "yarn workspace @calcom/prisma prisma", "generate-schemas": "yarn prisma generate && yarn prisma format", - "copy-swagger-module": "ts-node -r tsconfig-paths/register swagger/copy-swagger-module.ts", + "copy-swagger-module": "ts-node -r tsconfig-paths/register src/swagger/copy-swagger-module.ts", + "generate-swagger": "yarn copy-swagger-module && yarn build && node ./dist/apps/api/v2/src/swagger/generate-swagger-script.js", "prepare": "yarn run snyk-protect", "snyk-protect": "snyk-protect" }, diff --git a/apps/api/v2/src/main.ts b/apps/api/v2/src/main.ts index b16f360d92af0d..e7f51f7a157a99 100644 --- a/apps/api/v2/src/main.ts +++ b/apps/api/v2/src/main.ts @@ -1,39 +1,29 @@ import type { AppConfig } from "@/config/type"; -import { getEnv } from "@/env"; import { Logger } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { NestFactory } from "@nestjs/core"; import type { NestExpressApplication } from "@nestjs/platform-express"; -import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger"; -import { - PathItemObject, - PathsObject, - OperationObject, - TagObject, -} from "@nestjs/swagger/dist/interfaces/open-api-spec.interface"; import "dotenv/config"; -import * as fs from "fs"; -import { Server } from "http"; import { WinstonModule } from "nest-winston"; import { bootstrap } from "./app"; import { AppModule } from "./app.module"; import { loggerConfig } from "./lib/logger"; +import { generateSwaggerForApp } from "./swagger/generate-swagger"; -const HttpMethods: (keyof PathItemObject)[] = ["get", "post", "put", "delete", "patch", "options", "head"]; - -const run = async () => { - const app = await NestFactory.create(AppModule, { - logger: WinstonModule.createLogger(loggerConfig()), - bodyParser: false, - }); +run().catch((error: Error) => { + console.error("Failed to start Cal Platform API", { error: error.stack }); + process.exit(1); +}); +async function run() { + const app = await createNestApp(); const logger = new Logger("App"); try { bootstrap(app); const port = app.get(ConfigService).get("api.port", { infer: true }); - void generateSwagger(app); + generateSwaggerForApp(app); await app.listen(port); logger.log(`Application started on port: ${port}`); } catch (error) { @@ -42,97 +32,11 @@ const run = async () => { error, }); } -}; - -function customTagSort(a: string, b: string): number { - const platformPrefix = "Platform"; - const orgsPrefix = "Orgs"; - - if (a.startsWith(platformPrefix) && !b.startsWith(platformPrefix)) { - return -1; - } - if (!a.startsWith(platformPrefix) && b.startsWith(platformPrefix)) { - return 1; - } - - if (a.startsWith(orgsPrefix) && !b.startsWith(orgsPrefix)) { - return -1; - } - if (!a.startsWith(orgsPrefix) && b.startsWith(orgsPrefix)) { - return 1; - } - - return a.localeCompare(b); } -function isOperationObject(obj: any): obj is OperationObject { - return obj && typeof obj === "object" && "tags" in obj; -} - -function groupAndSortPathsByFirstTag(paths: PathsObject): PathsObject { - const groupedPaths: { [key: string]: PathsObject } = {}; - - Object.keys(paths).forEach((pathKey) => { - const pathItem = paths[pathKey]; - - HttpMethods.forEach((method) => { - const operation = pathItem[method]; - - if (isOperationObject(operation) && operation.tags && operation.tags.length > 0) { - const firstTag = operation.tags[0]; - - if (!groupedPaths[firstTag]) { - groupedPaths[firstTag] = {}; - } - - groupedPaths[firstTag][pathKey] = pathItem; - } - }); - }); - - const sortedTags = Object.keys(groupedPaths).sort(customTagSort); - const sortedPaths: PathsObject = {}; - - sortedTags.forEach((tag) => { - Object.assign(sortedPaths, groupedPaths[tag]); +export async function createNestApp() { + return NestFactory.create(AppModule, { + logger: WinstonModule.createLogger(loggerConfig()), + bodyParser: false, }); - - return sortedPaths; -} - -async function generateSwagger(app: NestExpressApplication) { - const logger = new Logger("App"); - logger.log(`Generating Swagger documentation...\n`); - - const config = new DocumentBuilder().setTitle("Cal.com API v2").build(); - const document = SwaggerModule.createDocument(app, config); - document.paths = groupAndSortPathsByFirstTag(document.paths); - - const swaggerOutputFile = "./swagger/documentation.json"; - const docsOutputFile = "../../../docs/api-reference/v2/openapi.json"; - const stringifiedContents = JSON.stringify(document, null, 2); - - if (fs.existsSync(swaggerOutputFile)) { - fs.unlinkSync(swaggerOutputFile); - } - - fs.writeFileSync(swaggerOutputFile, stringifiedContents, { encoding: "utf8" }); - - if (fs.existsSync(docsOutputFile) && getEnv("NODE_ENV") === "development") { - fs.unlinkSync(docsOutputFile); - fs.writeFileSync(docsOutputFile, stringifiedContents, { encoding: "utf8" }); - } - - if (!process.env.DOCS_URL) { - SwaggerModule.setup("docs", app, document, { - customCss: ".swagger-ui .topbar { display: none }", - }); - - logger.log(`Swagger documentation available in the "/docs" endpoint\n`); - } } - -run().catch((error: Error) => { - console.error("Failed to start Cal Platform API", { error: error.stack }); - process.exit(1); -}); diff --git a/apps/api/v2/swagger/copy-swagger-module.ts b/apps/api/v2/src/swagger/copy-swagger-module.ts similarity index 88% rename from apps/api/v2/swagger/copy-swagger-module.ts rename to apps/api/v2/src/swagger/copy-swagger-module.ts index 8f6f23d3f382ff..b48fbe44a898ae 100644 --- a/apps/api/v2/swagger/copy-swagger-module.ts +++ b/apps/api/v2/src/swagger/copy-swagger-module.ts @@ -8,8 +8,8 @@ import * as path from "path"; // "nest-cli" with the "nest-cli.json" file, and for nest cli to be loaded with plugins correctly the "@nestjs/swagger" // should reside in the project's node_modules already before the "nest start" command is executed. async function copyNestSwagger() { - const monorepoRoot = path.resolve(__dirname, "../../../../"); - const nodeModulesNestjs = path.resolve(__dirname, "../node_modules/@nestjs"); + const monorepoRoot = path.resolve(__dirname, "../../../../../"); + const nodeModulesNestjs = path.resolve(__dirname, "../../node_modules/@nestjs"); const swaggerModulePath = "@nestjs/swagger"; const sourceDir = path.join(monorepoRoot, "node_modules", swaggerModulePath); diff --git a/apps/api/v2/src/swagger/generate-swagger-script.ts b/apps/api/v2/src/swagger/generate-swagger-script.ts new file mode 100644 index 00000000000000..3dbb64dae1a277 --- /dev/null +++ b/apps/api/v2/src/swagger/generate-swagger-script.ts @@ -0,0 +1,29 @@ +import "dotenv/config"; + +import { bootstrap } from "../app"; +import { createNestApp } from "../main"; +import { generateSwaggerForApp } from "../swagger/generate-swagger"; + +generateSwagger() + .then(() => { + console.log("✅ Swagger generation completed successfully"); + process.exit(0); + }) + .catch((error: Error) => { + console.error("❌ Failed to generate swagger", { error: error.stack }); + process.exit(1); + }); + +async function generateSwagger() { + const app = await createNestApp(); + + try { + bootstrap(app); + await generateSwaggerForApp(app); + } catch (error) { + console.error(error); + throw error; + } finally { + await app.close(); + } +} diff --git a/apps/api/v2/src/swagger/generate-swagger.ts b/apps/api/v2/src/swagger/generate-swagger.ts new file mode 100644 index 00000000000000..1d1519804d5aeb --- /dev/null +++ b/apps/api/v2/src/swagger/generate-swagger.ts @@ -0,0 +1,97 @@ +import { getEnv } from "@/env"; +import { Logger } from "@nestjs/common"; +import type { NestExpressApplication } from "@nestjs/platform-express"; +import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger"; +import { + PathItemObject, + PathsObject, + OperationObject, +} from "@nestjs/swagger/dist/interfaces/open-api-spec.interface"; +import "dotenv/config"; +import * as fs from "fs"; +import { Server } from "http"; +import { spawnSync } from "node:child_process"; + +const HttpMethods: (keyof PathItemObject)[] = ["get", "post", "put", "delete", "patch", "options", "head"]; + +export async function generateSwaggerForApp(app: NestExpressApplication) { + const logger = new Logger("App"); + logger.log(`Generating Swagger documentation...\n`); + + const config = new DocumentBuilder().setTitle("Cal.com API v2").build(); + const document = SwaggerModule.createDocument(app, config); + document.paths = groupAndSortPathsByFirstTag(document.paths); + + const docsOutputFile = "../../../docs/api-reference/v2/openapi.json"; + const stringifiedContents = JSON.stringify(document, null, 2); + + if (fs.existsSync(docsOutputFile) && getEnv("NODE_ENV") === "development") { + fs.unlinkSync(docsOutputFile); + fs.writeFileSync(docsOutputFile, stringifiedContents, { encoding: "utf8" }); + spawnSync("npx", ["prettier", docsOutputFile, "--write"], { stdio: "inherit" }); + } + + if (!process.env.DOCS_URL) { + SwaggerModule.setup("docs", app, document, { + customCss: ".swagger-ui .topbar { display: none }", + }); + + logger.log(`Swagger documentation available in the "/docs" endpoint\n`); + } +} + +function groupAndSortPathsByFirstTag(paths: PathsObject): PathsObject { + const groupedPaths: { [key: string]: PathsObject } = {}; + + Object.keys(paths).forEach((pathKey) => { + const pathItem = paths[pathKey]; + + HttpMethods.forEach((method) => { + const operation = pathItem[method]; + + if (isOperationObject(operation) && operation.tags && operation.tags.length > 0) { + const firstTag = operation.tags[0]; + + if (!groupedPaths[firstTag]) { + groupedPaths[firstTag] = {}; + } + + groupedPaths[firstTag][pathKey] = pathItem; + } + }); + }); + + const sortedTags = Object.keys(groupedPaths).sort(customTagSort); + const sortedPaths: PathsObject = {}; + + sortedTags.forEach((tag) => { + Object.assign(sortedPaths, groupedPaths[tag]); + }); + + return sortedPaths; +} + +function customTagSort(a: string, b: string): number { + const platformPrefix = "Platform"; + const orgsPrefix = "Orgs"; + + if (a.startsWith(platformPrefix) && !b.startsWith(platformPrefix)) { + return -1; + } + if (!a.startsWith(platformPrefix) && b.startsWith(platformPrefix)) { + return 1; + } + + if (a.startsWith(orgsPrefix) && !b.startsWith(orgsPrefix)) { + return -1; + } + if (!a.startsWith(orgsPrefix) && b.startsWith(orgsPrefix)) { + return 1; + } + + return a.localeCompare(b); +} + +function isOperationObject(obj: any): obj is OperationObject { + return obj && typeof obj === "object" && "tags" in obj; +} diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json deleted file mode 100644 index a30e4e41dcda7d..00000000000000 --- a/apps/api/v2/swagger/documentation.json +++ /dev/null @@ -1,30164 +0,0 @@ -{ - "openapi": "3.0.0", - "paths": { - "/v2/oauth-clients/{clientId}/users": { - "get": { - "operationId": "OAuthClientUsersController_getManagedUsers", - "summary": "Get all managed users", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "type": "number" - } - }, - { - "name": "offset", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "type": "number" - } - }, - { - "name": "emails", - "required": false, - "in": "query", - "description": "Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.", - "example": "?emails=email1@example.com,email2@example.com", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUsersOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "post": { - "operationId": "OAuthClientUsersController_createUser", - "summary": "Create a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateManagedUserInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/users/{userId}": { - "get": { - "operationId": "OAuthClientUsersController_getUserById", - "summary": "Get a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "patch": { - "operationId": "OAuthClientUsersController_updateUser", - "summary": "Update a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateManagedUserInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "delete": { - "operationId": "OAuthClientUsersController_deleteUser", - "summary": "Delete a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { - "post": { - "operationId": "OAuthClientUsersController_forceRefresh", - "summary": "Force refresh tokens", - "description": "If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KeysResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth/{clientId}/refresh": { - "post": { - "operationId": "OAuthFlowController_refreshTokens", - "summary": "Refresh managed user tokens", - "description": "If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use\n \"refresh token rotation\" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", - "parameters": [ - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "required": true, - "in": "header", - "description": "OAuth client secret key.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RefreshTokenInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KeysResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/webhooks": { - "post": { - "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", - "summary": "Create a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWebhookInputDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "get": { - "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", - "summary": "Get all webhooks", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "delete": { - "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", - "summary": "Delete all webhooks", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - } - }, - "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { - "patch": { - "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", - "summary": "Update a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "webhookId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWebhookInputDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "get": { - "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", - "summary": "Get a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "delete": { - "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", - "summary": "Delete a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - } - }, - "/v2/organizations/{orgId}/attributes": { - "get": { - "operationId": "OrganizationsAttributesController_getOrganizationAttributes", - "summary": "Get all attributes", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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.", - "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "teamIds", - "required": false, - "in": "query", - "description": "Filter by teamIds. Team ids must be separated by a comma.", - "example": "?teamIds=100,200", - "schema": { - "type": "array", - "items": { - "type": "number" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Attributes / Options" - ] - } - }, - "/v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned": { - "get": { - "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeAssignedOptionsBySlug", - "summary": "Get 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.", - "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "teamIds", - "required": false, - "in": "query", - "description": "Filter by teamIds. Team ids must be separated by a comma.", - "example": "?teamIds=100,200", - "schema": { - "type": "array", - "items": { - "type": "number" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetAllAttributeAssignedOptionOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Attributes / Options" - ] - } - }, - "/v2/organizations/{orgId}/attributes/options/{userId}": { - "post": { - "operationId": "OrganizationsAttributesOptionsController_assignOrganizationAttributeOptionToUser", - "summary": "Assign an attribute to a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssignOrganizationAttributeOptionToUserInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssignOptionUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Attributes / Options" - ] - }, - "get": { - "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptionsForUser", - "summary": "Get all attribute options for a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOptionUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Attributes / Options" - ] - } - }, - "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { - "delete": { - "operationId": "OrganizationsAttributesOptionsController_unassignOrganizationAttributeOptionFromUser", - "summary": "Unassign an attribute from a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "attributeOptionId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UnassignOptionUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Attributes / Options" - ] - } - }, - "/v2/organizations/{orgId}/bookings": { - "get": { - "operationId": "OrganizationsBookingsController_getAllOrgTeamBookings", - "summary": "Get organization bookings", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "status", - "required": false, - "in": "query", - "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", - "example": "?status=upcoming,past", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] - } - } - }, - { - "name": "attendeeEmail", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's email address.", - "example": "example@domain.com", - "schema": { - "type": "string" - } - }, - { - "name": "attendeeName", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's name.", - "example": "John Doe", - "schema": { - "type": "string" - } - }, - { - "name": "bookingUid", - "required": false, - "in": "query", - "description": "Filter bookings by the booking Uid.", - "example": "2NtaeaVcKfpmSZ4CthFdfk", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeIds", - "required": false, - "in": "query", - "description": "Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.", - "example": "?eventTypeIds=100,200", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": false, - "in": "query", - "description": "Filter bookings by event type id belonging to the user.", - "example": "?eventTypeId=100", - "schema": { - "type": "string" - } - }, - { - "name": "teamsIds", - "required": false, - "in": "query", - "description": "Filter bookings by team ids that user is part of. Team ids must be separated by a comma.", - "example": "?teamIds=50,60", - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": false, - "in": "query", - "description": "Filter bookings by team id that user is part of", - "example": "?teamId=50", - "schema": { - "type": "string" - } - }, - { - "name": "afterStart", - "required": false, - "in": "query", - "description": "Filter bookings with start after this date string.", - "example": "?afterStart=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeEnd", - "required": false, - "in": "query", - "description": "Filter bookings with end before this date string.", - "example": "?beforeEnd=2025-03-07T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created after this date string.", - "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created before this date string.", - "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated after this date string.", - "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated before this date string.", - "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortCreated", - "required": false, - "in": "query", - "description": "Sort results by their creation time (when booking was made) in ascending or descending order.", - "example": "?sortCreated=asc OR ?sortCreated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortUpdatedAt", - "required": false, - "in": "query", - "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", - "example": "?sortUpdated=asc OR ?sortUpdated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "default": 100, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "default": 0, - "type": "number" - } - }, - { - "name": "userIds", - "required": false, - "in": "query", - "description": "Filter bookings by ids of users within your organization.", - "example": "?userIds=100,200", - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Orgs / Bookings" - ] - } - }, - "/v2/organizations/{orgId}/delegation-credentials": { - "post": { - "operationId": "OrganizationsDelegationCredentialController_createDelegationCredential", - "summary": "Save delegation credentials for your organization", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateDelegationCredentialInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateDelegationCredentialOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Delegation Credentials" - ] - } - }, - "/v2/organizations/{orgId}/delegation-credentials/{credentialId}": { - "patch": { - "operationId": "OrganizationsDelegationCredentialController_updateDelegationCredential", - "summary": "Update delegation credentials of your organization", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "credentialId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateDelegationCredentialInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateDelegationCredentialOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Delegation Credentials" - ] - } - }, - "/v2/organizations/{orgId}/memberships": { - "get": { - "operationId": "OrganizationsMembershipsController_getAllMemberships", - "summary": "Get all memberships", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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}/routing-forms": { - "get": { - "operationId": "OrganizationsRoutingFormsController_getOrganizationRoutingForms", - "summary": "Get organization routing forms", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of responses to skip", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Number of responses to take", - "schema": { - "type": "number" - } - }, - { - "name": "sortCreatedAt", - "required": false, - "in": "query", - "description": "Sort by creation time", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortUpdatedAt", - "required": false, - "in": "query", - "description": "Sort by update time", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "afterCreatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created after this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "beforeCreatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created before this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "afterUpdatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created after this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "beforeUpdatedAt", - "required": false, - "in": "query", - "description": "Filter by responses updated before this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "routedToBookingUid", - "required": false, - "in": "query", - "description": "Filter by responses routed to a specific booking", - "schema": { - "type": "string" - } - }, - { - "name": "teamIds", - "required": false, - "in": "query", - "description": "Filter by teamIds. Team ids must be separated by a comma.", - "example": "?teamIds=100,200", - "schema": { - "type": "array", - "items": { - "type": "number" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetRoutingFormsOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Routing forms" - ] - } - }, - "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses": { - "get": { - "operationId": "OrganizationsRoutingFormsResponsesController_getRoutingFormResponses", - "summary": "Get routing form responses", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "routingFormId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of responses to skip", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Number of responses to take", - "schema": { - "type": "number" - } - }, - { - "name": "sortCreatedAt", - "required": false, - "in": "query", - "description": "Sort by creation time", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortUpdatedAt", - "required": false, - "in": "query", - "description": "Sort by update time", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "afterCreatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created after this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "beforeCreatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created before this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "afterUpdatedAt", - "required": false, - "in": "query", - "description": "Filter by responses created after this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "beforeUpdatedAt", - "required": false, - "in": "query", - "description": "Filter by responses updated before this date", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "routedToBookingUid", - "required": false, - "in": "query", - "description": "Filter by responses routed to a specific booking", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetRoutingFormResponsesOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Routing forms" - ] - }, - "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 ", - "example": "2050-09-05", - "schema": { - "type": "string" - } - }, - { - "name": "end", - "required": true, - "in": "query", - "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", - "example": "2050-09-06", - "schema": { - "type": "string" - } - }, - { - "name": "timeZone", - "required": false, - "in": "query", - "description": "Time zone in which the available slots should be returned. Defaults to UTC.", - "example": "Europe/Rome", - "schema": { - "type": "string" - } - }, - { - "name": "duration", - "required": false, - "in": "query", - "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", - "example": "60", - "schema": { - "type": "number" - } - }, - { - "name": "format", - "required": false, - "in": "query", - "description": "Format of slot times in response. Use 'range' to get start and end times.", - "example": "range", - "schema": { - "enum": [ - "range", - "time" - ], - "type": "string" - } - }, - { - "name": "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.", - "example": "abc123def456", - "schema": { - "type": "string" - } - }, - { - "name": "queueResponse", - "required": false, - "in": "query", - "description": "Whether to queue the form response.", - "example": true, - "schema": { - "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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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" - } - } - ], - "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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgMeTeamsOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}": { - "get": { - "operationId": "OrganizationsTeamsController_getTeam", - "summary": "Get a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgTeamOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams" - ] - }, - "delete": { - "operationId": "OrganizationsTeamsController_deleteTeam", - "summary": "Delete a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgTeamOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams" - ] - }, - "patch": { - "operationId": "OrganizationsTeamsController_updateTeam", - "summary": "Update a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrgTeamDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgTeamOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/bookings": { - "get": { - "operationId": "OrganizationsTeamsBookingsController_getAllOrgTeamBookings", - "summary": "Get organization team bookings", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "status", - "required": false, - "in": "query", - "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", - "example": "?status=upcoming,past", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] - } - } - }, - { - "name": "attendeeEmail", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's email address.", - "example": "example@domain.com", - "schema": { - "type": "string" - } - }, - { - "name": "attendeeName", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's name.", - "example": "John Doe", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeIds", - "required": false, - "in": "query", - "description": "Filter bookings by event type ids belonging to the team. Event type ids must be separated by a comma.", - "example": "?eventTypeIds=100,200", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": false, - "in": "query", - "description": "Filter bookings by event type id belonging to the team.", - "example": "?eventTypeId=100", - "schema": { - "type": "string" - } - }, - { - "name": "afterStart", - "required": false, - "in": "query", - "description": "Filter bookings with start after this date string.", - "example": "?afterStart=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeEnd", - "required": false, - "in": "query", - "description": "Filter bookings with end before this date string.", - "example": "?beforeEnd=2025-03-07T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortCreated", - "required": false, - "in": "query", - "description": "Sort results by their creation time (when booking was made) in ascending or descending order.", - "example": "?sortCreated=asc OR ?sortCreated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "minimum": 1, - "maximum": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "type": "number" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Bookings" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references": { - "get": { - "operationId": "OrganizationsTeamsBookingsController_getBookingReferences", - "summary": "Get booking references", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "type", - "required": false, - "in": "query", - "description": "Filter booking references by type", - "example": "google_calendar", - "schema": { - "enum": [ - "google_calendar", - "office365_calendar", - "daily_video", - "google_video", - "office365_video", - "zoom_video" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Bookings" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect": { - "post": { - "operationId": "OrganizationsConferencingController_connectTeamApp", - "summary": "Connect your conferencing application to a team", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "google-meet" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url": { - "get": { - "operationId": "OrganizationsConferencingController_getTeamOAuthUrl", - "summary": "Get OAuth conferencing app's auth URL for a team", - "parameters": [ - { - "name": "Authorization", - "required": true, - "in": "header", - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "zoom", - "msteams" - ], - "type": "string" - } - }, - { - "name": "returnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "onErrorReturnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing": { - "get": { - "operationId": "OrganizationsConferencingController_listTeamConferencingApps", - "summary": "List team conferencing applications", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConferencingAppsOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default": { - "post": { - "operationId": "OrganizationsConferencingController_setTeamDefaultApp", - "summary": "Set team default conferencing application", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams", - "daily-video" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetDefaultConferencingAppOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/default": { - "get": { - "operationId": "OrganizationsConferencingController_getTeamDefaultApp", - "summary": "Get team default conferencing application", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams", - "daily-video" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetDefaultConferencingAppOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect": { - "delete": { - "operationId": "OrganizationsConferencingController_disconnectTeamApp", - "summary": "Disconnect team conferencing application", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DisconnectConferencingAppOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback": { - "get": { - "operationId": "OrganizationsConferencingController_saveTeamOauthCredentials", - "summary": "Save conferencing app OAuth credentials", - "parameters": [ - { - "name": "state", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "code", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "Orgs / Teams / Conferencing" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/event-types": { - "post": { - "operationId": "OrganizationsEventTypesController_createTeamEventType", - "summary": "Create an event type", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - }, - "get": { - "operationId": "OrganizationsEventTypesController_getTeamEventTypes", - "summary": "Get team event types", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventSlug", - "required": false, - "in": "query", - "description": "Slug of team event type to return.", - "schema": { - "type": "string" - } - }, - { - "name": "hostsLimit", - "required": false, - "in": "query", - "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamEventTypesOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { - "get": { - "operationId": "OrganizationsEventTypesController_getTeamEventType", - "summary": "Get an event type", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - }, - "patch": { - "operationId": "OrganizationsEventTypesController_updateTeamEventType", - "summary": "Update a team event type", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - }, - "delete": { - "operationId": "OrganizationsEventTypesController_deleteTeamEventType", - "summary": "Delete a team event type", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { - "post": { - "operationId": "OrganizationsEventTypesController_createPhoneCall", - "summary": "Create a phone call", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePhoneCallInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePhoneCallOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types" - ] - } - }, - "/v2/organizations/{orgId}/teams/event-types": { - "get": { - "operationId": "OrganizationsEventTypesController_getTeamsEventTypes", - "summary": "Get all team event types", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "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}/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" - } - } - ], - "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" - } - } - ], - "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" - } - } - ], - "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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeletePrivateLinkOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Event Types / Private Links" - ] - } - }, - "/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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}/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 ", - "example": "2050-09-05", - "schema": { - "type": "string" - } - }, - { - "name": "end", - "required": true, - "in": "query", - "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", - "example": "2050-09-06", - "schema": { - "type": "string" - } - }, - { - "name": "timeZone", - "required": false, - "in": "query", - "description": "Time zone in which the available slots should be returned. Defaults to UTC.", - "example": "Europe/Rome", - "schema": { - "type": "string" - } - }, - { - "name": "duration", - "required": false, - "in": "query", - "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", - "example": "60", - "schema": { - "type": "number" - } - }, - { - "name": "format", - "required": false, - "in": "query", - "description": "Format of slot times in response. Use 'range' to get start and end times.", - "example": "range", - "schema": { - "enum": [ - "range", - "time" - ], - "type": "string" - } - }, - { - "name": "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.", - "example": "abc123def456", - "schema": { - "type": "string" - } - }, - { - "name": "queueResponse", - "required": false, - "in": "query", - "description": "Whether to queue the form response.", - "example": true, - "schema": { - "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" - } - } - ], - "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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "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": "string" - } - }, - { - "name": "returnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "onErrorReturnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StripConnectOutputResponseDto" - } - } - } - } - }, - "tags": [ - "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" - } - } - ], - "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" - } - } - ], - "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" - } - } - ], - "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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWorkflowsOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Teams / Workflows" - ] - }, - "post": { - "operationId": "OrganizationTeamWorkflowsController_createWorkflow", - "summary": "Create 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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWorkflowDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWorkflowOutput" - } - } - } - } - }, - "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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWorkflowOutput" - } - } - } - } - }, - "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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWorkflowDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWorkflowOutput" - } - } - } - } - }, - "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" - } - } - ], - "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", - "example": 10, - "schema": { - "minimum": 1, - "maximum": 1000, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "type": "number" - } - }, - { - "name": "emails", - "required": false, - "in": "query", - "description": "The email address or an array of email addresses to filter by", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "assignedOptionIds", - "required": false, - "in": "query", - "description": "Filter by assigned attribute option ids. ids must be separated by a comma.", - "example": "?assignedOptionIds=aaaaaaaa-bbbb-cccc-dddd-eeeeee1eee,aaaaaaaa-bbbb-cccc-dddd-eeeeee2eee", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "attributeQueryOperator", - "required": false, - "in": "query", - "description": "Query operator used to filter assigned options, AND by default.", - "example": "NONE", - "schema": { - "default": "AND", - "enum": [ - "OR", - "AND", - "NONE" - ], - "type": "string" - } - }, - { - "name": "teamIds", - "required": false, - "in": "query", - "description": "Filter by teamIds. Team ids must be separated by a comma.", - "example": "?teamIds=100,200", - "schema": { - "type": "array", - "items": { - "type": "number" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOrganizationUsersResponseDTO" - } - } - } - } - }, - "tags": [ - "Orgs / Users" - ] - }, - "post": { - "operationId": "OrganizationsUsersController_createOrganizationUser", - "summary": "Create a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationUserInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOrganizationUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Users" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}": { - "patch": { - "operationId": "OrganizationsUsersController_updateOrganizationUser", - "summary": "Update a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrganizationUserInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOrganizationUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Users" - ] - }, - "delete": { - "operationId": "OrganizationsUsersController_deleteOrganizationUser", - "summary": "Delete a user", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOrganizationUserOutput" - } - } - } - } - }, - "tags": [ - "Orgs / Users" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}/bookings": { - "get": { - "operationId": "OrganizationsUsersBookingsController_getOrganizationUserBookings", - "summary": "Get all bookings 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.", - "example": "?status=upcoming,past", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] - } - } - }, - { - "name": "attendeeEmail", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's email address.", - "example": "example@domain.com", - "schema": { - "type": "string" - } - }, - { - "name": "attendeeName", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's name.", - "example": "John Doe", - "schema": { - "type": "string" - } - }, - { - "name": "bookingUid", - "required": false, - "in": "query", - "description": "Filter bookings by the booking Uid.", - "example": "2NtaeaVcKfpmSZ4CthFdfk", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeIds", - "required": false, - "in": "query", - "description": "Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.", - "example": "?eventTypeIds=100,200", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": false, - "in": "query", - "description": "Filter bookings by event type id belonging to the user.", - "example": "?eventTypeId=100", - "schema": { - "type": "string" - } - }, - { - "name": "teamsIds", - "required": false, - "in": "query", - "description": "Filter bookings by team ids that user is part of. Team ids must be separated by a comma.", - "example": "?teamIds=50,60", - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": false, - "in": "query", - "description": "Filter bookings by team id that user is part of", - "example": "?teamId=50", - "schema": { - "type": "string" - } - }, - { - "name": "afterStart", - "required": false, - "in": "query", - "description": "Filter bookings with start after this date string.", - "example": "?afterStart=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeEnd", - "required": false, - "in": "query", - "description": "Filter bookings with end before this date string.", - "example": "?beforeEnd=2025-03-07T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created after this date string.", - "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created before this date string.", - "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated after this date string.", - "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated before this date string.", - "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortCreated", - "required": false, - "in": "query", - "description": "Sort results by their creation time (when booking was made) in ascending or descending order.", - "example": "?sortCreated=asc OR ?sortCreated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortUpdatedAt", - "required": false, - "in": "query", - "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", - "example": "?sortUpdated=asc OR ?sortUpdated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "default": 100, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "default": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "Orgs / Users / Bookings" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}/ooo": { - "get": { - "operationId": "OrganizationsUsersOOOController_getOrganizationUserOOO", - "summary": "Get all 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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "Orgs / Users / OOO" - ] - }, - "post": { - "operationId": "OrganizationsUsersOOOController_createOrganizationUserOOO", - "summary": "Create an 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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOutOfOfficeEntryDto" - } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": [ - "Orgs / Users / OOO" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}/ooo/{oooId}": { - "patch": { - "operationId": "OrganizationsUsersOOOController_updateOrganizationUserOOO", - "summary": "Update 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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOutOfOfficeEntryDto" - } - } - } - }, - "responses": { - "200": { - "description": "" - } - }, - "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" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "email", - "required": false, - "in": "query", - "description": "Filter ooo entries by the user email address. user must be within your organization.", - "example": "example@domain.com", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "Orgs / Users / OOO" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}/schedules": { - "post": { - "operationId": "OrganizationsSchedulesController_createUserSchedule", - "summary": "Create a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Orgs / Users / Schedules" - ] - }, - "get": { - "operationId": "OrganizationsSchedulesController_getUserSchedules", - "summary": "Get all schedules", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Orgs / Users / Schedules" - ] - } - }, - "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { - "get": { - "operationId": "OrganizationsSchedulesController_getUserSchedule", - "summary": "Get a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Orgs / Users / Schedules" - ] - }, - "patch": { - "operationId": "OrganizationsSchedulesController_updateUserSchedule", - "summary": "Update a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Orgs / Users / Schedules" - ] - }, - "delete": { - "operationId": "OrganizationsSchedulesController_deleteUserSchedule", - "summary": "Delete a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Orgs / Users / Schedules" - ] - } - }, - "/v2/organizations/{orgId}/webhooks": { - "get": { - "operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks", - "summary": "Get all webhooks", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Webhooks" - ] - }, - "delete": { - "operationId": "OrganizationsWebhooksController_deleteWebhook", - "summary": "Delete a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "webhookId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Webhooks" - ] - }, - "patch": { - "operationId": "OrganizationsWebhooksController_updateOrgWebhook", - "summary": "Update a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "webhookId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWebhookInputDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Orgs / Webhooks" - ] - } - }, - "/v2/api-keys/refresh": { - "post": { - "operationId": "ApiKeysController_refresh", - "summary": "Refresh API Key", - "description": "Generate a new API key and delete the current one. Provide API key to refresh as a Bearer token in the Authorization header (e.g. \"Authorization: Bearer \").", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RefreshApiKeyInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RefreshApiKeyOutput" - } - } - } - } - }, - "tags": [ - "Api Keys" - ] - } - }, - "/v2/bookings": { - "post": { - "operationId": "BookingsController_2024_08_13_createBooking", - "summary": "Create a booking", - "description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n\n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n\n Finally, there are 2 ways to book an event type belonging to an individual user:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `username` and optionally `organizationSlug` if the user with the username is within an organization.\n\n And 2 ways to book and event type belonging to a team:\n 1. Provide `eventTypeId` in the request body.\n 2. Provide `eventTypeSlug` and `teamSlug` and optionally `organizationSlug` if the team with the teamSlug is within an organization.\n\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 ", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "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", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "status", - "required": false, - "in": "query", - "description": "Filter bookings by status. If you want to filter by multiple statuses, separate them with a comma.", - "example": "?status=upcoming,past", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] - } - } - }, - { - "name": "attendeeEmail", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's email address.", - "example": "example@domain.com", - "schema": { - "type": "string" - } - }, - { - "name": "attendeeName", - "required": false, - "in": "query", - "description": "Filter bookings by the attendee's name.", - "example": "John Doe", - "schema": { - "type": "string" - } - }, - { - "name": "bookingUid", - "required": false, - "in": "query", - "description": "Filter bookings by the booking Uid.", - "example": "2NtaeaVcKfpmSZ4CthFdfk", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeIds", - "required": false, - "in": "query", - "description": "Filter bookings by event type ids belonging to the user. Event type ids must be separated by a comma.", - "example": "?eventTypeIds=100,200", - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": false, - "in": "query", - "description": "Filter bookings by event type id belonging to the user.", - "example": "?eventTypeId=100", - "schema": { - "type": "string" - } - }, - { - "name": "teamsIds", - "required": false, - "in": "query", - "description": "Filter bookings by team ids that user is part of. Team ids must be separated by a comma.", - "example": "?teamIds=50,60", - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": false, - "in": "query", - "description": "Filter bookings by team id that user is part of", - "example": "?teamId=50", - "schema": { - "type": "string" - } - }, - { - "name": "afterStart", - "required": false, - "in": "query", - "description": "Filter bookings with start after this date string.", - "example": "?afterStart=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeEnd", - "required": false, - "in": "query", - "description": "Filter bookings with end before this date string.", - "example": "?beforeEnd=2025-03-07T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created after this date string.", - "example": "?afterCreatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeCreatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been created before this date string.", - "example": "?beforeCreatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "afterUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated after this date string.", - "example": "?afterUpdatedAt=2025-03-07T10:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "beforeUpdatedAt", - "required": false, - "in": "query", - "description": "Filter bookings that have been updated before this date string.", - "example": "?beforeUpdatedAt=2025-03-14T11:00:00.000Z", - "schema": { - "type": "string" - } - }, - { - "name": "sortStart", - "required": false, - "in": "query", - "description": "Sort results by their start time in ascending or descending order.", - "example": "?sortStart=asc OR ?sortStart=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortEnd", - "required": false, - "in": "query", - "description": "Sort results by their end time in ascending or descending order.", - "example": "?sortEnd=asc OR ?sortEnd=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortCreated", - "required": false, - "in": "query", - "description": "Sort results by their creation time (when booking was made) in ascending or descending order.", - "example": "?sortCreated=asc OR ?sortCreated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortUpdatedAt", - "required": false, - "in": "query", - "description": "Sort results by their updated time (for example when booking status changes) in ascending or descending order.", - "example": "?sortUpdated=asc OR ?sortUpdated=desc", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "default": 100, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingsOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}": { - "get": { - "operationId": "BookingsController_2024_08_13_getBooking", - "summary": "Get a booking", - "description": "`:bookingUid` can be\n\n 1. uid of a normal booking\n\n 2. uid of one of the recurring booking recurrences\n\n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).\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 ", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": 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`", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingRecordingsOutput" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/transcripts": { - "get": { - "operationId": "BookingsController_2024_08_13_getBookingTranscripts", - "summary": "Get all the transcripts download links for the booking", - "description": "Fetches all the transcripts download links for the booking `:bookingUid`", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": 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).\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 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 - host can cancel booking for all attendees aka for every seat. 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 ", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": 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) or Cancel Seated Booking (Option 2)", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/CancelBookingInput_2024_08_13" - }, - { - "$ref": "#/components/schemas/CancelSeatedBookingInput_2024_08_13" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CancelBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/mark-absent": { - "post": { - "operationId": "BookingsController_2024_08_13_markNoShow", - "summary": "Mark a booking absence", - "description": "The provided authorization header refers to the owner of the booking.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MarkAbsentBookingInput_2024_08_13" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MarkAbsentBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/reassign": { - "post": { - "operationId": "BookingsController_2024_08_13_reassignBooking", - "summary": "Reassign a booking to auto-selected host", - "description": "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/reassign/{userId}": { - "post": { - "operationId": "BookingsController_2024_08_13_reassignBookingToUser", - "summary": "Reassign a booking to a specific host", - "description": "Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReassignToUserBookingInput_2024_08_13" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/confirm": { - "post": { - "operationId": "BookingsController_2024_08_13_confirmBooking", - "summary": "Confirm a booking", - "description": "The provided authorization header refers to the owner of the booking.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/decline": { - "post": { - "operationId": "BookingsController_2024_08_13_declineBooking", - "summary": "Decline a booking", - "description": "The provided authorization header refers to the owner of the booking.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeclineBookingInput_2024_08_13" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBookingOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/calendar-links": { - "get": { - "operationId": "BookingsController_2024_08_13_getCalendarLinks", - "summary": "Get 'Add to Calendar' links for a booking", - "description": "Retrieve calendar links for a booking that can be used to add the event to various calendar services. Returns links for Google Calendar, Microsoft Office, Microsoft Outlook, and a downloadable ICS file.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalendarLinksOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/bookings/{bookingUid}/references": { - "get": { - "operationId": "BookingsController_2024_08_13_getBookingReferences", - "summary": "Get booking references", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-08-13", - "required": true, - "schema": { - "type": "string", - "default": "2024-08-13" - } - }, - { - "name": "bookingUid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "type", - "required": false, - "in": "query", - "description": "Filter booking references by type", - "example": "google_calendar", - "schema": { - "enum": [ - "google_calendar", - "office365_calendar", - "daily_video", - "google_video", - "office365_video", - "zoom_video" - ], - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BookingReferencesOutput_2024_08_13" - } - } - } - } - }, - "tags": [ - "Bookings" - ] - } - }, - "/v2/calendars/{calendar}/event/{eventUid}": { - "get": { - "operationId": "CalUnifiedCalendarsController_getCalendarEventDetails", - "summary": "Get meeting details from calendar", - "description": "Returns detailed information about a meeting including attendance metrics", - "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" - ] - } - }, - "/v2/calendars/{calendar}/events/{eventUid}": { - "patch": { - "operationId": "CalUnifiedCalendarsController_updateCalendarEvent", - "summary": "Update meeting details in calendar", - "description": "Updates event information in the specified calendar provider", - "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/ics-feed/save": { - "post": { - "operationId": "CalendarsController_createIcsFeed", - "summary": "Save an ICS feed", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateIcsFeedInputDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateIcsFeedOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/ics-feed/check": { - "get": { - "operationId": "CalendarsController_checkIcsFeed", - "summary": "Check an ICS feed", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/busy-times": { - "get": { - "operationId": "CalendarsController_getBusyTimes", - "summary": "Get busy times", - "description": "Get busy times from a calendar. Example request URL is `https://api.cal.com/v2/calendars/busy-times?loggedInUsersTz=Europe%2FMadrid&dateFrom=2024-12-18&dateTo=2024-12-18&calendarsToLoad[0][credentialId]=135&calendarsToLoad[0][externalId]=skrauciz%40gmail.com`", - "parameters": [ - { - "name": "loggedInUsersTz", - "required": true, - "in": "query", - "description": "The timezone of the logged in user represented as a string", - "example": "America/New_York", - "schema": { - "type": "string" - } - }, - { - "name": "dateFrom", - "required": false, - "in": "query", - "description": "The starting date for the busy times query", - "example": "2023-10-01", - "schema": { - "type": "string" - } - }, - { - "name": "dateTo", - "required": false, - "in": "query", - "description": "The ending date for the busy times query", - "example": "2023-10-31", - "schema": { - "type": "string" - } - }, - { - "name": "credentialId", - "in": "query", - "required": true, - "schema": { - "type": "number" - } - }, - { - "name": "externalId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetBusyTimesOutput" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars": { - "get": { - "operationId": "CalendarsController_getCalendars", - "summary": "Get all calendars", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConnectedCalendarsOutput" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/{calendar}/connect": { - "get": { - "operationId": "CalendarsController_redirect", - "summary": "Get OAuth connect URL", - "parameters": [ - { - "name": "Authorization", - "required": true, - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "schema": { - "type": "string" - } - }, - { - "name": "calendar", - "required": true, - "in": "path", - "schema": { - "enum": [ - "office365", - "google" - ], - "type": "string" - } - }, - { - "name": "isDryRun", - "required": true, - "in": "query", - "schema": { - "type": "boolean" - } - }, - { - "name": "redir", - "required": false, - "in": "query", - "description": "Redirect URL after successful calendar authorization.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/{calendar}/save": { - "get": { - "operationId": "CalendarsController_save", - "summary": "Save Google or Outlook calendar credentials", - "parameters": [ - { - "name": "state", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "code", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "calendar", - "required": true, - "in": "path", - "schema": { - "enum": [ - "office365", - "google" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/{calendar}/credentials": { - "post": { - "operationId": "CalendarsController_syncCredentials", - "summary": "Save Apple calendar credentials", - "parameters": [ - { - "name": "calendar", - "required": true, - "in": "path", - "schema": { - "enum": [ - "apple" - ], - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCalendarCredentialsInput" - } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/{calendar}/check": { - "get": { - "operationId": "CalendarsController_check", - "summary": "Check a calendar connection", - "parameters": [ - { - "name": "calendar", - "required": true, - "in": "path", - "schema": { - "enum": [ - "apple", - "google", - "office365" - ], - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/calendars/{calendar}/disconnect": { - "post": { - "operationId": "CalendarsController_deleteCalendarCredentials", - "summary": "Disconnect a calendar", - "parameters": [ - { - "name": "calendar", - "required": true, - "in": "path", - "schema": { - "enum": [ - "apple", - "google", - "office365" - ], - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteCalendarCredentialsInputBodyDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Calendars" - ] - } - }, - "/v2/conferencing/{app}/connect": { - "post": { - "operationId": "ConferencingController_connect", - "summary": "Connect your conferencing application", - "parameters": [ - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "google-meet" - ], - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConferencingAppOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Conferencing" - ] - } - }, - "/v2/conferencing/{app}/oauth/auth-url": { - "get": { - "operationId": "ConferencingController_redirect", - "summary": "Get OAuth conferencing app auth URL", - "parameters": [ - { - "name": "Authorization", - "required": true, - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "schema": { - "type": "string" - } - }, - { - "name": "app", - "required": true, - "in": "path", - "description": "Conferencing application type", - "schema": { - "enum": [ - "zoom", - "msteams" - ], - "type": "string" - } - }, - { - "name": "returnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "onErrorReturnTo", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetConferencingAppsOauthUrlResponseDto" - } - } - } - } - }, - "tags": [ - "Conferencing" - ] - } - }, - "/v2/conferencing/{app}/oauth/callback": { - "get": { - "operationId": "ConferencingController_save", - "summary": "Conferencing 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/destination-calendars": { - "put": { - "operationId": "DestinationCalendarsController_updateDestinationCalendars", - "summary": "Update destination calendars", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DestinationCalendarsInputBodyDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DestinationCalendarsOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Destination Calendars" - ] - } - }, - "/v2/event-types": { - "post": { - "operationId": "EventTypesController_2024_06_14_createEventType", - "summary": "Create an event type", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-14", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-14" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEventTypeOutput_2024_06_14" - } - } - } - } - }, - "tags": [ - "Event Types" - ] - }, - "get": { - "operationId": "EventTypesController_2024_06_14_getEventTypes", - "summary": "Get all event types", - "description": "Hidden event types are returned only if authentication is provided and it belongs to the event type owner.", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-14", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-14" - } - }, - { - "name": "username", - "required": false, - "in": "query", - "description": "The username of the user to get event types for. If only username provided will get all event types.", - "schema": { - "type": "string" - } - }, - { - "name": "eventSlug", - "required": false, - "in": "query", - "description": "Slug of event type to return. Notably, if eventSlug is provided then username must be provided too, because multiple users can have event with same slug.", - "schema": { - "type": "string" - } - }, - { - "name": "usernames", - "required": false, - "in": "query", - "description": "Get dynamic event type for multiple usernames separated by comma. e.g `usernames=alice,bob`", - "schema": { - "type": "string" - } - }, - { - "name": "orgSlug", - "required": false, - "in": "query", - "description": "slug of the user's organization if he is in one, orgId is not required if using this parameter", - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": false, - "in": "query", - "description": "ID of the organization of the user you want the get the event-types of, orgSlug is not needed when using this parameter", - "schema": { - "type": "number" - } - }, - { - "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", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-14", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-14" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetEventTypeOutput_2024_06_14" - } - } - } - } - }, - "tags": [ - "Event Types" - ] - }, - "patch": { - "operationId": "EventTypesController_2024_06_14_updateEventType", - "summary": "Update an event type", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-14", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-14" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEventTypeOutput_2024_06_14" - } - } - } - } - }, - "tags": [ - "Event Types" - ] - }, - "delete": { - "operationId": "EventTypesController_2024_06_14_deleteEventType", - "summary": "Delete an event type", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-14", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-14" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteEventTypeOutput_2024_06_14" - } - } - } - } - }, - "tags": [ - "Event Types" - ] - } - }, - "/v2/event-types/{eventTypeId}/webhooks": { - "post": { - "operationId": "EventTypeWebhooksController_createEventTypeWebhook", - "summary": "Create a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWebhookInputDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Event Types / Webhooks" - ] - }, - "get": { - "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", - "summary": "Get all webhooks", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWebhookInputDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Event Types / Webhooks" - ] - }, - "get": { - "operationId": "EventTypeWebhooksController_getEventTypeWebhook", - "summary": "Get a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Event Types / Webhooks" - ] - }, - "delete": { - "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", - "summary": "Delete a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Event Types / Webhooks" - ] - } - }, - "/v2/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "slug", - "required": false, - "in": "query", - "example": "organization-slug", - "description": "The slug of the managed organization", - "schema": { - "type": "string" - } - }, - { - "name": "metadataKey", - "required": false, - "in": "query", - "example": "metadata-key", - "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": { - "type": "string" - } - }, - { - "name": "metadataValue", - "required": false, - "in": "query", - "example": "metadata-value", - "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": { - "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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedOrganizationOutput" - } - } - } - } - }, - "tags": [ - "Managed Orgs" - ] - }, - "patch": { - "operationId": "OrganizationsOrganizationsController_updateOrganization", - "summary": "Update an organization within an organization", - "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "managedOrganizationId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrganizationInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedOrganizationOutput" - } - } - } - } - }, - "tags": [ - "Managed Orgs" - ] - }, - "delete": { - "operationId": "OrganizationsOrganizationsController_deleteOrganization", - "summary": "Delete an organization within an organization", - "description": "Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint.", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "For platform customers - OAuth client secret key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "managedOrganizationId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedOrganizationOutput" - } - } - } - } - }, - "tags": [ - "Managed Orgs" - ] - } - }, - "/v2/me": { - "get": { - "operationId": "MeController_getMe", - "summary": "Get my profile", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetMeOutput" - } - } - } - } - }, - "tags": [ - "Me" - ] - }, - "patch": { - "operationId": "MeController_updateMe", - "summary": "Update my profile", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateManagedUserInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateMeOutput" - } - } - } - } - }, - "tags": [ - "Me" - ] - } - }, - "/v2/oauth-clients": { - "post": { - "operationId": "OAuthClientsController_createOAuthClient", - "summary": "Create an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOAuthClientInput" - } - } - } - }, - "responses": { - "201": { - "description": "Create an OAuth client", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "get": { - "operationId": "OAuthClientsController_getOAuthClients", - "summary": "Get all OAuth clients", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientsResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - } - }, - "/v2/oauth-clients/{clientId}": { - "get": { - "operationId": "OAuthClientsController_getOAuthClientById", - "summary": "Get an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "patch": { - "operationId": "OAuthClientsController_updateOAuthClient", - "summary": "Update an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOAuthClientInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "delete": { - "operationId": "OAuthClientsController_deleteOAuthClient", - "summary": "Delete an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { - "post": { - "operationId": "OrgTeamsVerifiedResourcesController_requestEmailVerificationCode", - "summary": "Request email verification code", - "description": "Sends a verification code to the email", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestEmailVerificationInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestEmailVerificationOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request": { - "post": { - "operationId": "OrgTeamsVerifiedResourcesController_requestPhoneVerificationCode", - "summary": "Request phone number verification code", - "description": "Sends a verification code to the phone number", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestPhoneVerificationInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestPhoneVerificationOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify": { - "post": { - "operationId": "OrgTeamsVerifiedResourcesController_verifyEmail", - "summary": "Verify an email for an org team", - "description": "Use code to verify an email", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyEmailInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedEmailOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify": { - "post": { - "operationId": "OrgTeamsVerifiedResourcesController_verifyPhoneNumber", - "summary": "Verify a phone number for an org team", - "description": "Use code to verify a phone number", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyPhoneInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails": { - "get": { - "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmails", - "summary": "Get list of verified emails of an org team", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedPhonesOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id}": { - "get": { - "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedEmailById", - "summary": "Get verified email of an org team by id", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedEmailOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id}": { - "get": { - "operationId": "OrgTeamsVerifiedResourcesController_getVerifiedPhoneById", - "summary": "Get verified phone number of an org team by id", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" - } - } - } - } - }, - "tags": [ - "Organization Team Verified Resources" - ] - } - }, - "/v2/routing-forms/{routingFormId}/calculate-slots": { - "post": { - "operationId": "RoutingFormsController_calculateSlotsBasedOnRoutingFormResponse", - "summary": "Calculate slots based on routing form response", - "description": "It will not actually save the response just return the routed event type and slots when it can be booked.", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "start", - "required": true, - "in": "query", - "description": "\n Time starting from which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z\n ", - "example": "2050-09-05", - "schema": { - "type": "string" - } - }, - { - "name": "end", - "required": true, - "in": "query", - "description": "\n Time until which available slots should be checked.\n \n Must be in UTC timezone as ISO 8601 datestring.\n \n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z", - "example": "2050-09-06", - "schema": { - "type": "string" - } - }, - { - "name": "timeZone", - "required": false, - "in": "query", - "description": "Time zone in which the available slots should be returned. Defaults to UTC.", - "example": "Europe/Rome", - "schema": { - "type": "string" - } - }, - { - "name": "duration", - "required": false, - "in": "query", - "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", - "example": "60", - "schema": { - "type": "number" - } - }, - { - "name": "format", - "required": false, - "in": "query", - "description": "Format of slot times in response. Use 'range' to get start and end times.", - "example": "range", - "schema": { - "enum": [ - "range", - "time" - ], - "type": "string" - } - }, - { - "name": "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.", - "example": "abc123def456", - "schema": { - "type": "string" - } - }, - { - "name": "routingFormId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResponseSlotsOutput" - } - } - } - } - }, - "tags": [ - "Routing forms" - ] - } - }, - "/v2/schedules": { - "post": { - "operationId": "SchedulesController_2024_06_11_createSchedule", - "summary": "Create a schedule", - "description": "\n Create a schedule for the authenticated user.\n\n The point of creating schedules is for event types to be available at specific times.\n\n The first goal of schedules is to have a default schedule. If you are platform customer and created managed users, then it is important to note that each managed user should have a default schedule.\n 1. If you passed `timeZone` when creating managed user, then the default schedule from Monday to Friday from 9AM to 5PM will be created with that timezone. The managed user can then change the default schedule via the `AvailabilitySettings` atom.\n 2. If you did not, then we assume you want the user to have this specific schedule right away. You should create a default schedule by specifying\n `\"isDefault\": true` in the request body. Until the user has a default schedule the user can't be booked nor manage their schedule via the AvailabilitySettings atom.\n\n The second goal of schedules is to create another schedule that event types can point to. This is useful for when an event is booked because availability is not checked against the default schedule but instead against that specific schedule.\n After creating a non-default schedule, you can update an event type to point to that schedule via the PATCH `event-types/{eventTypeId}` endpoint.\n\n When specifying start time and end time for each day use the 24 hour format e.g. 08:00, 15:00 etc.\n ", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateScheduleInput_2024_06_11" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "get": { - "operationId": "SchedulesController_2024_06_11_getSchedules", - "summary": "Get all schedules", - "description": "Get all schedules of the authenticated user.", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetSchedulesOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/v2/schedules/default": { - "get": { - "operationId": "SchedulesController_2024_06_11_getDefaultSchedule", - "summary": "Get default schedule", - "description": "Get the default schedule of the authenticated user.", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetDefaultScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/v2/schedules/{scheduleId}": { - "get": { - "operationId": "SchedulesController_2024_06_11_getSchedule", - "summary": "Get a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "patch": { - "operationId": "SchedulesController_2024_06_11_updateSchedule", - "summary": "Update a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateScheduleInput_2024_06_11" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "delete": { - "operationId": "SchedulesController_2024_06_11_deleteSchedule", - "summary": "Delete a schedule", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-06-11", - "required": true, - "schema": { - "type": "string", - "default": "2024-06-11" - } - }, - { - "name": "scheduleId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteScheduleOutput_2024_06_11" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/v2/selected-calendars": { - "post": { - "operationId": "SelectedCalendarsController_addSelectedCalendar", - "summary": "Add a selected calendar", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SelectedCalendarsInputDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Selected Calendars" - ] - }, - "delete": { - "operationId": "SelectedCalendarsController_deleteSelectedCalendar", - "summary": "Delete a selected calendar", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "integration", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "externalId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "credentialId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "delegationCredentialId", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SelectedCalendarOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Selected Calendars" - ] - } - }, - "/v2/slots": { - "get": { - "operationId": "SlotsController_2024_09_04_getAvailableSlots", - "summary": "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. Event type id can be of user and team event types. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'\n\n 2. By event type slug + username. Example '/v2/slots?eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 3. By event type slug + username + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06'\n\n 4. By usernames only (used for dynamic event type - there is no specific event but you want to know when 2 or more people are available). Example '/v2/slots?usernames=alice,bob&username=bob&organizationSlug=org-slug&start=2050-09-05&end=2050-09-06'. As you see you also need to provide the slug of the organization to which each user in the 'usernames' array belongs.\n\n And 3 ways to get available slots for team event type:\n\n 1. By team event type id. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome'\n\n 2. By team event type slug + team slug. Example '/v2/slots?eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n 3. By team event type slug + team slug + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06'\n\n All of them require \"start\" and \"end\" query parameters which define the time range for which available slots should be checked.\n Optional parameters are:\n - timeZone: Time zone in which the available slots should be returned. Defaults to UTC.\n - duration: Only use for event types that allow multiple durations or for dynamic event types. If not passed for multiple duration event types defaults to default duration. For dynamic event types defaults to 30 aka each returned slot is 30 minutes long. So duration=60 means that returned slots will be each 60 minutes long.\n - 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 ", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-09-04", - "required": true, - "schema": { - "type": "string", - "default": "2024-09-04" - } - }, - { - "name": "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.", - "example": "abc123def456", - "schema": {} - }, - { - "name": "start", - "required": true, - "in": "query", - "description": "\n Time starting from which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to start of day or specify hours:\n 2024-08-13 (will have hours 00:00:00 aka at very beginning of the date) or you can specify hours manually like 2024-08-13T09:00:00Z.", - "example": "2050-09-05", - "schema": {} - }, - { - "name": "end", - "required": true, - "in": "query", - "description": "\n Time until which available slots should be checked.\n\n Must be in UTC timezone as ISO 8601 datestring.\n\n You can pass date without hours which defaults to end of day or specify hours:\n 2024-08-20 (will have hours 23:59:59 aka at the very end of the date) or you can specify hours manually like 2024-08-20T18:00:00Z.", - "example": "2050-09-06", - "schema": {} - }, - { - "name": "organizationSlug", - "required": false, - "in": "query", - "description": "The slug of the organization to which user with username belongs or team with teamSlug belongs.", - "example": "org-slug", - "schema": {} - }, - { - "name": "teamSlug", - "required": false, - "in": "query", - "description": "The slug of the team who owns event type with eventTypeSlug - used when slots are checked for team event type.", - "example": "team-slug", - "schema": {} - }, - { - "name": "username", - "required": false, - "in": "query", - "description": "The username of the user who owns event type with eventTypeSlug - used when slots are checked for individual user event type.", - "example": "bob", - "schema": {} - }, - { - "name": "eventTypeSlug", - "required": false, - "in": "query", - "description": "The slug of the event type for which available slots should be checked. If slug is provided then username or teamSlug must be provided too and if relevant organizationSlug too.", - "example": "event-type-slug", - "schema": {} - }, - { - "name": "eventTypeId", - "required": false, - "in": "query", - "description": "The ID of the event type for which available slots should be checked.", - "example": "100", - "schema": {} - }, - { - "name": "usernames", - "required": false, - "in": "query", - "description": "The usernames for which available slots should be checked separated by a comma.\n\n Checking slots by usernames is used mainly for dynamic events where there is no specific event but we just want to know when 2 or more people are available.\n\n Must contain at least 2 usernames.", - "example": "alice,bob", - "schema": {} - }, - { - "name": "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.", - "example": "range", - "schema": {} - }, - { - "name": "duration", - "required": false, - "in": "query", - "description": "If event type has multiple possible durations then you can specify the desired duration here. Also, if you are fetching slots for a dynamic event then you can specify the duration her which defaults to 30, meaning that returned slots will be each 30 minutes long.", - "example": "60", - "schema": {} - }, - { - "name": "timeZone", - "required": false, - "in": "query", - "description": "Time zone in which the available slots should be returned. Defaults to UTC.", - "example": "Europe/Rome", - "schema": {} - } - ], - "responses": { - "200": { - "description": "A map of available slots indexed by date, where each date is associated with an array of time slots. If format=range is specified, each slot will be an object with start and end properties denoting start and end of the slot.\n For seated slots each object will have attendeesCount and bookingUid properties.", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "title": "Default format (or with format=time)", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - }, - "example": { - "status": "success", - "data": { - "2050-09-05": [ - { - "start": "2050-09-05T09:00:00.000+02:00" - }, - { - "start": "2050-09-05T10:00:00.000+02:00" - } - ], - "2050-09-06": [ - { - "start": "2050-09-06T09:00:00.000+02:00" - }, - { - "start": "2050-09-06T10:00:00.000+02:00" - } - ] - } - } - }, - { - "type": "object", - "title": "Range format (when format=range)", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "start": { - "type": "string" - }, - "end": { - "type": "string" - } - } - } - }, - "example": { - "status": "success", - "data": { - "2050-09-05": [ - { - "start": "2050-09-05T09:00:00.000+02:00", - "end": "2050-09-05T10:00:00.000+02:00" - }, - { - "start": "2050-09-05T10:00:00.000+02:00", - "end": "2050-09-05T11:00:00.000+02:00" - } - ], - "2050-09-06": [ - { - "start": "2050-09-06T09:00:00.000+02:00", - "end": "2050-09-06T10:00:00.000+02:00" - }, - { - "start": "2050-09-06T10:00:00.000+02:00", - "end": "2050-09-06T11:00:00.000+02:00" - } - ] - } - } - } - ] - } - } - } - } - }, - "tags": [ - "Slots" - ] - } - }, - "/v2/slots/reservations": { - "post": { - "operationId": "SlotsController_2024_09_04_reserveSlot", - "summary": "Reserve a slot", - "description": "Make a slot not available for others to book for a certain period of time. If you authenticate using oAuth credentials, api key or access token\n then you can also specify custom duration for how long the slot should be reserved for (defaults to 5 minutes).", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-09-04", - "required": true, - "schema": { - "type": "string", - "default": "2024-09-04" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-client-id", - "in": "header", - "description": "For platform customers - OAuth client ID", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" - } - } - } - } - }, - "tags": [ - "Slots" - ] - } - }, - "/v2/slots/reservations/{uid}": { - "get": { - "operationId": "SlotsController_2024_09_04_getReservedSlot", - "summary": "Get reserved slot", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-09-04", - "required": true, - "schema": { - "type": "string", - "default": "2024-09-04" - } - }, - { - "name": "uid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetReservedSlotOutput_2024_09_04" - } - } - } - } - }, - "tags": [ - "Slots" - ] - }, - "patch": { - "operationId": "SlotsController_2024_09_04_updateReservedSlot", - "summary": "Update a reserved slot", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-09-04", - "required": true, - "schema": { - "type": "string", - "default": "2024-09-04" - } - }, - { - "name": "uid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReserveSlotInput_2024_09_04" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReserveSlotOutputResponse_2024_09_04" - } - } - } - } - }, - "tags": [ - "Slots" - ] - }, - "delete": { - "operationId": "SlotsController_2024_09_04_deleteReservedSlot", - "summary": "Delete a reserved slot", - "parameters": [ - { - "name": "cal-api-version", - "in": "header", - "description": "Must be set to 2024-09-04", - "required": true, - "schema": { - "type": "string", - "default": "2024-09-04" - } - }, - { - "name": "uid", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "example": { - "status": "success" - } - } - } - } - } - }, - "tags": [ - "Slots" - ] - } - }, - "/v2/stripe/connect": { - "get": { - "operationId": "StripeController_redirect", - "summary": "Get Stripe connect URL", - "parameters": [ - { - "name": "Authorization", - "required": true, - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StripConnectOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Stripe" - ] - } - }, - "/v2/stripe/save": { - "get": { - "operationId": "StripeController_save", - "summary": "Save Stripe credentials", - "parameters": [ - { - "name": "state", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "code", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StripCredentialsSaveOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Stripe" - ] - } - }, - "/v2/stripe/check": { - "get": { - "operationId": "StripeController_check", - "summary": "Check Stripe connection", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StripCredentialsCheckOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Stripe" - ] - } - }, - "/v2/teams": { - "post": { - "operationId": "TeamsController_createTeam", - "summary": "Create a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamOutput" - } - } - } - } - }, - "tags": [ - "Teams" - ] - }, - "get": { - "operationId": "TeamsController_getTeams", - "summary": "Get teams", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamsOutput" - } - } - } - } - }, - "tags": [ - "Teams" - ] - } - }, - "/v2/teams/{teamId}": { - "get": { - "operationId": "TeamsController_getTeam", - "summary": "Get a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamOutput" - } - } - } - } - }, - "tags": [ - "Teams" - ] - }, - "patch": { - "operationId": "TeamsController_updateTeam", - "summary": "Update a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrgTeamDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamOutput" - } - } - } - } - }, - "tags": [ - "Teams" - ] - }, - "delete": { - "operationId": "TeamsController_deleteTeam", - "summary": "Delete a team", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgTeamOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Teams" - ] - } - }, - "/v2/teams/{teamId}/event-types": { - "post": { - "operationId": "TeamsEventTypesController_createTeamEventType", - "summary": "Create an event type", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - }, - "get": { - "operationId": "TeamsEventTypesController_getTeamEventTypes", - "summary": "Get a team event type", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventSlug", - "required": false, - "in": "query", - "description": "Slug of team event type to return.", - "schema": { - "type": "string" - } - }, - { - "name": "hostsLimit", - "required": false, - "in": "query", - "description": "Specifies the maximum number of hosts to include in the response. This limit helps optimize performance. If not provided, all Hosts will be fetched.", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamEventTypesOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - } - }, - "/v2/teams/{teamId}/event-types/{eventTypeId}": { - "get": { - "operationId": "TeamsEventTypesController_getTeamEventType", - "summary": "Get an event type", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - }, - "patch": { - "operationId": "TeamsEventTypesController_updateTeamEventType", - "summary": "Update a team event type", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamEventTypeInput_2024_06_14" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - }, - "delete": { - "operationId": "TeamsEventTypesController_deleteTeamEventType", - "summary": "Delete a team event type", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteTeamEventTypeOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - } - }, - "/v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { - "post": { - "operationId": "TeamsEventTypesController_createPhoneCall", - "summary": "Create a phone call", - "parameters": [ - { - "name": "eventTypeId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "orgId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePhoneCallInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePhoneCallOutput" - } - } - } - } - }, - "tags": [ - "Teams / Event Types" - ] - } - }, - "/v2/teams/{teamId}/memberships": { - "post": { - "operationId": "TeamsMembershipsController_createTeamMembership", - "summary": "Create a membership", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamMembershipInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTeamMembershipOutput" - } - } - } - } - }, - "tags": [ - "Teams / Memberships" - ] - }, - "get": { - "operationId": "TeamsMembershipsController_getTeamMemberships", - "summary": "Get all memberships", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamMembershipsOutput" - } - } - } - } - }, - "tags": [ - "Teams / Memberships" - ] - } - }, - "/v2/teams/{teamId}/memberships/{membershipId}": { - "get": { - "operationId": "TeamsMembershipsController_getTeamMembership", - "summary": "Get a membership", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "membershipId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTeamMembershipOutput" - } - } - } - } - }, - "tags": [ - "Teams / Memberships" - ] - }, - "patch": { - "operationId": "TeamsMembershipsController_updateTeamMembership", - "summary": "Update membership", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "membershipId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamMembershipInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTeamMembershipOutput" - } - } - } - } - }, - "tags": [ - "Teams / Memberships" - ] - }, - "delete": { - "operationId": "TeamsMembershipsController_deleteTeamMembership", - "summary": "Delete a membership", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "membershipId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteTeamMembershipOutput" - } - } - } - } - }, - "tags": [ - "Teams / Memberships" - ] - } - }, - "/v2/teams/{teamId}/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestEmailVerificationInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestEmailVerificationOutput" - } - } - } - } - }, - "tags": [ - "Teams Verified Resources" - ] - } - }, - "/v2/teams/{teamId}/verified-resources/phones/verification-code/request": { - "post": { - "operationId": "TeamsVerifiedResourcesController_requestPhoneVerificationCode", - "summary": "Request phone number verification code", - "description": "Sends a verification code to the phone number", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestPhoneVerificationInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestPhoneVerificationOutput" - } - } - } - } - }, - "tags": [ - "Teams Verified Resources" - ] - } - }, - "/v2/teams/{teamId}/verified-resources/emails/verification-code/verify": { - "post": { - "operationId": "TeamsVerifiedResourcesController_verifyEmail", - "summary": "Verify an email for a team", - "description": "Use code to verify an email", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyEmailInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedEmailOutput" - } - } - } - } - }, - "tags": [ - "Teams Verified Resources" - ] - } - }, - "/v2/teams/{teamId}/verified-resources/phones/verification-code/verify": { - "post": { - "operationId": "TeamsVerifiedResourcesController_verifyPhoneNumber", - "summary": "Verify a phone number for an org team", - "description": "Use code to verify a phone number", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyPhoneInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TeamVerifiedPhoneOutput" - } - } - } - } - }, - "tags": [ - "Teams Verified Resources" - ] - } - }, - "/v2/teams/{teamId}/verified-resources/emails": { - "get": { - "operationId": "TeamsVerifiedResourcesController_getVerifiedEmails", - "summary": "Get list of verified emails of a team", - "parameters": [ - { - "name": "teamId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/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", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 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" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Webhooks" - ] - }, - "delete": { - "operationId": "WebhooksController_deleteWebhook", - "summary": "Delete a webhook", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "webhookId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Webhooks" - ] - } - } - }, - "info": { - "title": "Cal.com API v2", - "description": "", - "version": "1.0.0", - "contact": {} - }, - "tags": [], - "servers": [], - "components": { - "schemas": { - "ManagedUserOutput": { - "type": "object", - "properties": { - "id": { - "type": "number", - "example": 1 - }, - "email": { - "type": "string", - "example": "alice+cluo37fwd0001khkzqqynkpj3@example.com" - }, - "username": { - "type": "string", - "nullable": true, - "example": "alice" - }, - "name": { - "type": "string", - "nullable": true, - "example": "alice" - }, - "bio": { - "type": "string", - "nullable": true, - "example": "bio" - }, - "timeZone": { - "type": "string", - "example": "America/New_York" - }, - "weekStart": { - "type": "string", - "example": "Sunday" - }, - "createdDate": { - "type": "string", - "example": "2024-04-01T00:00:00.000Z" - }, - "timeFormat": { - "type": "number", - "nullable": true, - "example": 12 - }, - "defaultScheduleId": { - "type": "number", - "nullable": true, - "example": null - }, - "locale": { - "enum": [ - "ar", - "ca", - "de", - "es", - "eu", - "he", - "id", - "ja", - "lv", - "pl", - "ro", - "sr", - "th", - "vi", - "az", - "cs", - "el", - "es-419", - "fi", - "hr", - "it", - "km", - "nl", - "pt", - "ru", - "sv", - "tr", - "zh-CN", - "bg", - "da", - "en", - "et", - "fr", - "hu", - "iw", - "ko", - "no", - "pt-BR", - "sk", - "ta", - "uk", - "zh-TW", - "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", - "office365-video", - "zoom" - ] - } - }, - "required": [ - "type", - "integration" - ] - }, - "InputPhoneLocation_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "phone", - "description": "only allowed value for type is `phone`" - }, - "phone": { - "type": "string", - "example": "+37120993151" - }, - "public": { - "type": "boolean" - } - }, - "required": [ - "type", - "phone", - "public" - ] - }, - "PhoneFieldInput_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "phone", - "description": "only allowed value for type is `phone`" - }, - "slug": { - "type": "string", - "description": "Unique identifier for the field in format `some-slug`. It is used to access response to this booking field during the booking. Special slug is `attendeePhoneNumber` - if you create\n a phone input field with this slug for organization team event type you can create an organization team event type that can be booked using phone without requiring an email by setting {\"type\": \"email\", \"required\": false, \"hidden\": true} to the email booking field input in the request body.", - "example": "some-slug" - }, - "label": { - "type": "string" - }, - "required": { - "type": "boolean" - }, - "placeholder": { - "type": "string" - }, - "disableOnPrefill": { - "type": "boolean", - "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled. 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 - } - } - }, - "Disabled_2024_06_14": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Indicates if the option is disabled", - "example": true, - "default": false - } - }, - "required": [ - "disabled" - ] - }, - "BaseBookingLimitsDuration_2024_06_14": { - "type": "object", - "properties": { - "day": { - "type": "number", - "description": "The duration of bookings per day (must be a multiple of 15)", - "example": 60 - }, - "week": { - "type": "number", - "description": "The duration of bookings per week (must be a multiple of 15)", - "example": 120 - }, - "month": { - "type": "number", - "description": "The duration of bookings per month (must be a multiple of 15)", - "example": 180 - }, - "year": { - "type": "number", - "description": "The duration of bookings per year (must be a multiple of 15)", - "example": 240 - } - } - }, - "Recurrence_2024_06_14": { - "type": "object", - "properties": { - "interval": { - "type": "number", - "example": 10, - "description": "Repeats every {count} week | month | year" - }, - "occurrences": { - "type": "number", - "example": 10, - "description": "Repeats for a maximum of {count} events" - }, - "frequency": { - "type": "string", - "enum": [ - "yearly", - "monthly", - "weekly" - ] - } - }, - "required": [ - "interval", - "occurrences", - "frequency" - ] - }, - "NoticeThreshold_2024_06_14": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "description": "The unit of time for the notice threshold (e.g., minutes, hours)", - "example": "minutes" - }, - "count": { - "type": "number", - "description": "The time value for the notice threshold", - "example": 30 - } - }, - "required": [ - "unit", - "count" - ] - }, - "BaseConfirmationPolicy_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "The policy that determines when confirmation is required", - "enum": [ - "always", - "time" - ], - "example": "always" - }, - "noticeThreshold": { - "description": "The notice threshold required before confirmation is needed. Required when type is 'time'.", - "allOf": [ - { - "$ref": "#/components/schemas/NoticeThreshold_2024_06_14" - } - ] - }, - "blockUnconfirmedBookingsInBooker": { - "type": "boolean", - "description": "Unconfirmed bookings still block calendar slots." - } - }, - "required": [ - "type", - "blockUnconfirmedBookingsInBooker" - ] - }, - "Seats_2024_06_14": { - "type": "object", - "properties": { - "seatsPerTimeSlot": { - "type": "number", - "description": "Number of seats available per time slot", - "example": 4 - }, - "showAttendeeInfo": { - "type": "boolean", - "description": "Show attendee information to other guests", - "example": true - }, - "showAvailabilityCount": { - "type": "boolean", - "description": "Display the count of available seats", - "example": true - } - }, - "required": [ - "seatsPerTimeSlot", - "showAttendeeInfo", - "showAvailabilityCount" - ] - }, - "InputAttendeeAddressLocation_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeeAddress", - "description": "only allowed value for type is `attendeeAddress`" - } - }, - "required": [ - "type" - ] - }, - "InputAttendeePhoneLocation_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeePhone", - "description": "only allowed value for type is `attendeePhone`" - } - }, - "required": [ - "type" - ] - }, - "InputAttendeeDefinedLocation_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeeDefined", - "description": "only allowed value for type is `attendeeDefined`" - } - }, - "required": [ - "type" - ] - }, - "NameDefaultFieldInput_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "name", - "description": "only allowed value for type is `name`. Used for having 1 booking field for both first name and last name." - }, - "label": { - "type": "string" - }, - "placeholder": { - "type": "string" - }, - "disableOnPrefill": { - "type": "boolean", - "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&name=bob`, the name field will be prefilled with this value and disabled. 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" - ] - }, - "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" - } - } - }, - "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": "Time spaces that can be prepended before an event to give more time before it." - }, - "afterEventBuffer": { - "type": "number", - "description": "Time spaces that can be appended after an event to give more time after it." - }, - "scheduleId": { - "type": "number", - "description": "If you want that this event has different schedule than user's default one you can specify it here." - }, - "bookingLimitsCount": { - "description": "Limit how many times this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "onlyShowFirstAvailableSlot": { - "type": "boolean", - "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." - }, - "bookingLimitsDuration": { - "description": "Limit total amount of time that this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "bookingWindow": { - "description": "Limit how far in the future this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/RangeWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "offsetStart": { - "type": "number", - "description": "Offset timeslots shown to bookers by a specified number of minutes" - }, - "bookerLayouts": { - "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", - "allOf": [ - { - "$ref": "#/components/schemas/BookerLayouts_2024_06_14" - } - ] - }, - "confirmationPolicy": { - "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "recurrence": { - "description": "Create a recurring event type.", - "oneOf": [ - { - "$ref": "#/components/schemas/Recurrence_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "requiresBookerEmailVerification": { - "type": "boolean" - }, - "hideCalendarNotes": { - "type": "boolean" - }, - "lockTimeZoneToggleOnBookingPage": { - "type": "boolean" - }, - "color": { - "$ref": "#/components/schemas/EventTypeColor_2024_06_14" - }, - "seats": { - "description": "Create an event type with multiple seats.", - "oneOf": [ - { - "$ref": "#/components/schemas/Seats_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "customName": { - "type": "string", - "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", - "example": "{Event type title} between {Organiser} and {Scheduler}" - }, - "destinationCalendar": { - "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" - }, - "useDestinationCalendarEmail": { - "type": "boolean" - }, - "hideCalendarEventDetails": { - "type": "boolean" - }, - "successRedirectUrl": { - "type": "string", - "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", - "example": "https://masterchief.com/argentina/flan/video/9129412" - }, - "hideOrganizerEmail": { - "type": "boolean", - "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" - }, - "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." - }, - "locations": { - "type": "array", - "description": "Locations where the event will take place. If not provided, cal video link will be used as the location.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" - } - ] - } - } - }, - "required": [ - "lengthInMinutes", - "title", - "slug" - ] - }, - "OutputAddressLocation_2024_06_14": { - "type": "object", - "properties": { - "type": { - "type": "string", - "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" - ] - }, - "EventTypeOutput_2024_06_14": { - "type": "object", - "properties": { - "id": { - "type": "number", - "example": 1 - }, - "lengthInMinutes": { - "type": "number", - "example": 60 - }, - "lengthInMinutesOptions": { - "example": [ - 15, - 30, - 60 - ], - "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", - "type": "array", - "items": { - "type": "number" - } - }, - "title": { - "type": "string", - "example": "Learn the secrets of masterchief!" - }, - "slug": { - "type": "string", - "example": "learn-the-secrets-of-masterchief" - }, - "description": { - "type": "string", - "example": "Discover the culinary wonders of Argentina by making the best flan ever!" - }, - "locations": { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/OutputAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/OutputLinkLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/OutputIntegrationLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/OutputPhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/OutputOrganizersDefaultAppLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/OutputUnknownLocation_2024_06_14" - } - ] - } - }, - "bookingFields": { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/NameDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/EmailDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/LocationDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/RescheduleReasonDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/TitleDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/NotesDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/GuestsDefaultFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/PhoneFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/AddressFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/TextFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/NumberFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/TextAreaFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/SelectFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/MultiSelectFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/MultiEmailFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/CheckboxGroupFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/RadioGroupFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/BooleanFieldOutput_2024_06_14" - }, - { - "$ref": "#/components/schemas/UrlFieldOutput_2024_06_14" - } - ] - } - }, - "disableGuests": { - "type": "boolean" - }, - "slotInterval": { - "type": "object", - "example": 60, - "nullable": true - }, - "minimumBookingNotice": { - "type": "number", - "example": 0 - }, - "beforeEventBuffer": { - "type": "number", - "example": 0 - }, - "afterEventBuffer": { - "type": "number", - "example": 0 - }, - "recurrence": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/Recurrence_2024_06_14" - } - ] - }, - "metadata": { - "type": "object" - }, - "price": { - "type": "number" - }, - "currency": { - "type": "string" - }, - "lockTimeZoneToggleOnBookingPage": { - "type": "boolean" - }, - "seatsPerTimeSlot": { - "type": "object", - "nullable": true - }, - "forwardParamsSuccessRedirect": { - "type": "object", - "nullable": true - }, - "successRedirectUrl": { - "type": "object", - "nullable": true - }, - "isInstantEvent": { - "type": "boolean" - }, - "seatsShowAvailabilityCount": { - "type": "boolean", - "nullable": true - }, - "scheduleId": { - "type": "number", - "nullable": true - }, - "bookingLimitsCount": { - "type": "object" - }, - "onlyShowFirstAvailableSlot": { - "type": "boolean" - }, - "bookingLimitsDuration": { - "type": "object" - }, - "bookingWindow": { - "type": "array", - "description": "Limit how far in the future this event can be booked", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/RangeWindow_2024_06_14" - } - ] - } - }, - "bookerLayouts": { - "$ref": "#/components/schemas/BookerLayouts_2024_06_14" - }, - "confirmationPolicy": { - "type": "object" - }, - "requiresBookerEmailVerification": { - "type": "boolean" - }, - "hideCalendarNotes": { - "type": "boolean" - }, - "color": { - "$ref": "#/components/schemas/EventTypeColor_2024_06_14" - }, - "seats": { - "$ref": "#/components/schemas/Seats_2024_06_14" - }, - "offsetStart": { - "type": "number" - }, - "customName": { - "type": "string" - }, - "destinationCalendar": { - "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" - }, - "useDestinationCalendarEmail": { - "type": "boolean" - }, - "hideCalendarEventDetails": { - "type": "boolean" - }, - "hideOrganizerEmail": { - "type": "boolean", - "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" - }, - "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." - }, - "ownerId": { - "type": "number", - "example": 10 - }, - "users": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "id", - "lengthInMinutes", - "title", - "slug", - "description", - "locations", - "bookingFields", - "disableGuests", - "recurrence", - "metadata", - "price", - "currency", - "lockTimeZoneToggleOnBookingPage", - "forwardParamsSuccessRedirect", - "successRedirectUrl", - "isInstantEvent", - "scheduleId", - "hidden", - "bookingRequiresAuthentication", - "ownerId", - "users" - ] - }, - "CreateEventTypeOutput_2024_06_14": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "success", - "error" - ], - "example": "success" - }, - "data": { - "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" - } - }, - "required": [ - "status", - "data" - ] - }, - "GetEventTypeOutput_2024_06_14": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "success", - "error" - ], - "example": "success" - }, - "data": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" - } - ] - } - }, - "required": [ - "status", - "data" - ] - }, - "GetEventTypesOutput_2024_06_14": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "success", - "error" - ], - "example": "success" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateEventTypeInput_2024_06_14": { - "type": "object", - "properties": { - "lengthInMinutes": { - "type": "number", - "example": 60 - }, - "lengthInMinutesOptions": { - "example": [ - 15, - 30, - 60 - ], - "description": "If you want that user can choose between different lengths of the event you can specify them here. Must include the provided `lengthInMinutes`.", - "type": "array", - "items": { - "type": "string" - } - }, - "title": { - "type": "string", - "example": "Learn the secrets of masterchief!" - }, - "slug": { - "type": "string", - "example": "learn-the-secrets-of-masterchief" - }, - "description": { - "type": "string", - "example": "Discover the culinary wonders of the Argentina by making the best flan ever!" - }, - "bookingFields": { - "type": "array", - "description": "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": "Time spaces that can be prepended before an event to give more time before it." - }, - "afterEventBuffer": { - "type": "number", - "description": "Time spaces that can be appended after an event to give more time after it." - }, - "scheduleId": { - "type": "number", - "description": "If you want that this event has different schedule than user's default one you can specify it here." - }, - "bookingLimitsCount": { - "description": "Limit how many times this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "onlyShowFirstAvailableSlot": { - "type": "boolean", - "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." - }, - "bookingLimitsDuration": { - "description": "Limit total amount of time that this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "bookingWindow": { - "description": "Limit how far in the future this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/RangeWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "offsetStart": { - "type": "number", - "description": "Offset timeslots shown to bookers by a specified number of minutes" - }, - "bookerLayouts": { - "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", - "allOf": [ - { - "$ref": "#/components/schemas/BookerLayouts_2024_06_14" - } - ] - }, - "confirmationPolicy": { - "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "recurrence": { - "description": "Create a recurring event type.", - "oneOf": [ - { - "$ref": "#/components/schemas/Recurrence_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "requiresBookerEmailVerification": { - "type": "boolean" - }, - "hideCalendarNotes": { - "type": "boolean" - }, - "lockTimeZoneToggleOnBookingPage": { - "type": "boolean" - }, - "color": { - "$ref": "#/components/schemas/EventTypeColor_2024_06_14" - }, - "seats": { - "description": "Create an event type with multiple seats.", - "oneOf": [ - { - "$ref": "#/components/schemas/Seats_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "customName": { - "type": "string", - "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", - "example": "{Event type title} between {Organiser} and {Scheduler}" - }, - "destinationCalendar": { - "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" - }, - "useDestinationCalendarEmail": { - "type": "boolean" - }, - "hideCalendarEventDetails": { - "type": "boolean" - }, - "successRedirectUrl": { - "type": "string", - "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", - "example": "https://masterchief.com/argentina/flan/video/9129412" - }, - "hideOrganizerEmail": { - "type": "boolean", - "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" - }, - "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." - }, - "locations": { - "type": "array", - "description": "Locations where the event will take place. If not provided, cal video link will be used as the location.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" - } - ] - } - } - } - }, - "UpdateEventTypeOutput_2024_06_14": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "success", - "error" - ], - "example": "success" - }, - "data": { - "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteData_2024_06_14": { - "type": "object", - "properties": { - "id": { - "type": "number", - "example": 1 - }, - "lengthInMinutes": { - "type": "number", - "example": 60 - }, - "title": { - "type": "string", - "example": "Learn the secrets of masterchief!" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "id", - "lengthInMinutes", - "title", - "slug" - ] - }, - "DeleteEventTypeOutput_2024_06_14": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "success", - "error" - ], - "example": "success" - }, - "data": { - "$ref": "#/components/schemas/DeleteData_2024_06_14" - } - }, - "required": [ - "status", - "data" - ] - }, - "SelectedCalendarsInputDto": { - "type": "object", - "properties": { - "integration": { - "type": "string" - }, - "externalId": { - "type": "string" - }, - "credentialId": { - "type": "number" - }, - "delegationCredentialId": { - "type": "string" - } - }, - "required": [ - "integration", - "externalId", - "credentialId" - ] - }, - "SelectedCalendarOutputDto": { - "type": "object", - "properties": { - "userId": { - "type": "number" - }, - "integration": { - "type": "string" - }, - "externalId": { - "type": "string" - }, - "credentialId": { - "type": "number", - "nullable": true - } - }, - "required": [ - "userId", - "integration", - "externalId", - "credentialId" - ] - }, - "SelectedCalendarOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/SelectedCalendarOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "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": "Time spaces that can be prepended before an event to give more time before it." - }, - "afterEventBuffer": { - "type": "number", - "description": "Time spaces that can be appended after an event to give more time after it." - }, - "scheduleId": { - "type": "number", - "description": "If you want that this event has different schedule than user's default one you can specify it here." - }, - "bookingLimitsCount": { - "description": "Limit how many times this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "onlyShowFirstAvailableSlot": { - "type": "boolean", - "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." - }, - "bookingLimitsDuration": { - "description": "Limit total amount of time that this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "bookingWindow": { - "description": "Limit how far in the future this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/RangeWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "offsetStart": { - "type": "number", - "description": "Offset timeslots shown to bookers by a specified number of minutes" - }, - "bookerLayouts": { - "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", - "allOf": [ - { - "$ref": "#/components/schemas/BookerLayouts_2024_06_14" - } - ] - }, - "confirmationPolicy": { - "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "recurrence": { - "description": "Create a recurring event type.", - "oneOf": [ - { - "$ref": "#/components/schemas/Recurrence_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "requiresBookerEmailVerification": { - "type": "boolean" - }, - "hideCalendarNotes": { - "type": "boolean" - }, - "lockTimeZoneToggleOnBookingPage": { - "type": "boolean" - }, - "color": { - "$ref": "#/components/schemas/EventTypeColor_2024_06_14" - }, - "seats": { - "description": "Create an event type with multiple seats.", - "oneOf": [ - { - "$ref": "#/components/schemas/Seats_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "customName": { - "type": "string", - "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", - "example": "{Event type title} between {Organiser} and {Scheduler}" - }, - "destinationCalendar": { - "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" - }, - "useDestinationCalendarEmail": { - "type": "boolean" - }, - "hideCalendarEventDetails": { - "type": "boolean" - }, - "successRedirectUrl": { - "type": "string", - "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", - "example": "https://masterchief.com/argentina/flan/video/9129412" - }, - "hideOrganizerEmail": { - "type": "boolean", - "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" - }, - "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." - }, - "schedulingType": { - "type": "string", - "enum": [ - "collective", - "roundRobin", - "managed" - ], - "example": "collective", - "description": "The scheduling type for the team event - collective, roundRobin or managed." - }, - "hosts": { - "description": "Hosts contain specific team members you want to assign to this event type, but if you want to assign all team members, use `assignAllTeamMembers: true` instead and omit this field. For platform customers the hosts can include userIds only of managed users.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Host" - } - }, - "assignAllTeamMembers": { - "type": "boolean", - "description": "If true, all current and future team members will be assigned to this event type" - }, - "locations": { - "type": "array", - "description": "Locations where the event will take place. If not provided, cal video link will be used as the location.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" - } - ] - } - } - }, - "required": [ - "lengthInMinutes", - "title", - "slug", - "schedulingType" - ] - }, - "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" - }, - "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." - }, - "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" - } - }, - "required": [ - "id", - "lengthInMinutes", - "title", - "slug", - "description", - "locations", - "bookingFields", - "disableGuests", - "recurrence", - "metadata", - "price", - "currency", - "lockTimeZoneToggleOnBookingPage", - "forwardParamsSuccessRedirect", - "successRedirectUrl", - "isInstantEvent", - "scheduleId", - "hidden", - "bookingRequiresAuthentication", - "teamId", - "hosts", - "schedulingType", - "team" - ] - }, - "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": "Time spaces that can be prepended before an event to give more time before it." - }, - "afterEventBuffer": { - "type": "number", - "description": "Time spaces that can be appended after an event to give more time after it." - }, - "scheduleId": { - "type": "number", - "description": "If you want that this event has different schedule than user's default one you can specify it here." - }, - "bookingLimitsCount": { - "description": "Limit how many times this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsCount_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "onlyShowFirstAvailableSlot": { - "type": "boolean", - "description": "This will limit your availability for this event type to one slot per day, scheduled at the earliest available time." - }, - "bookingLimitsDuration": { - "description": "Limit total amount of time that this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseBookingLimitsDuration_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "bookingWindow": { - "description": "Limit how far in the future this event can be booked", - "oneOf": [ - { - "$ref": "#/components/schemas/BusinessDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/CalendarDaysWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/RangeWindow_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "offsetStart": { - "type": "number", - "description": "Offset timeslots shown to bookers by a specified number of minutes" - }, - "bookerLayouts": { - "description": "Should booker have week, month or column view. Specify default layout and enabled layouts user can pick.", - "allOf": [ - { - "$ref": "#/components/schemas/BookerLayouts_2024_06_14" - } - ] - }, - "confirmationPolicy": { - "description": "Specify how the booking needs to be manually confirmed before it is pushed to the integrations and a confirmation mail is sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/BaseConfirmationPolicy_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "recurrence": { - "description": "Create a recurring event type.", - "oneOf": [ - { - "$ref": "#/components/schemas/Recurrence_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "requiresBookerEmailVerification": { - "type": "boolean" - }, - "hideCalendarNotes": { - "type": "boolean" - }, - "lockTimeZoneToggleOnBookingPage": { - "type": "boolean" - }, - "color": { - "$ref": "#/components/schemas/EventTypeColor_2024_06_14" - }, - "seats": { - "description": "Create an event type with multiple seats.", - "oneOf": [ - { - "$ref": "#/components/schemas/Seats_2024_06_14" - }, - { - "$ref": "#/components/schemas/Disabled_2024_06_14" - } - ] - }, - "customName": { - "type": "string", - "description": "Customizable event name with valid variables:\n {Event type title}, {Organiser}, {Scheduler}, {Location}, {Organiser first name},\n {Scheduler first name}, {Scheduler last name}, {Event duration}, {LOCATION},\n {HOST/ATTENDEE}, {HOST}, {ATTENDEE}, {USER}", - "example": "{Event type title} between {Organiser} and {Scheduler}" - }, - "destinationCalendar": { - "$ref": "#/components/schemas/DestinationCalendar_2024_06_14" - }, - "useDestinationCalendarEmail": { - "type": "boolean" - }, - "hideCalendarEventDetails": { - "type": "boolean" - }, - "successRedirectUrl": { - "type": "string", - "description": "A valid URL where the booker will redirect to, once the booking is completed successfully", - "example": "https://masterchief.com/argentina/flan/video/9129412" - }, - "hideOrganizerEmail": { - "type": "boolean", - "description": "Boolean to Hide organizer's email address from the booking screen, email notifications, and calendar events" - }, - "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." - }, - "hosts": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Host" - } - }, - "assignAllTeamMembers": { - "type": "boolean", - "description": "If true, all current and future team members will be assigned to this event type" - }, - "locations": { - "type": "array", - "description": "Locations where the event will take place. If not provided, cal video link will be used as the location.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/InputAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputLinkLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputIntegrationLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputPhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeAddressLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeePhoneLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputAttendeeDefinedLocation_2024_06_14" - }, - { - "$ref": "#/components/schemas/InputOrganizersDefaultApp_2024_06_14" - } - ] - } - } - } - }, - "UpdateTeamEventTypeOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" - } - } - ] - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteTeamEventTypeOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "object" - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamMembershipOutput": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "userId": { - "type": "number" - }, - "teamId": { - "type": "number" - }, - "accepted": { - "type": "boolean" - }, - "role": { - "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] - }, - "disableImpersonation": { - "type": "boolean" - }, - "user": { - "$ref": "#/components/schemas/MembershipUserOutputDto" - } - }, - "required": [ - "id", - "userId", - "teamId", - "accepted", - "role", - "user" - ] - }, - "OrgTeamMembershipsOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "OrgTeamMembershipOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateOrgTeamMembershipDto": { - "type": "object", - "properties": { - "accepted": { - "type": "boolean" - }, - "role": { - "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] - }, - "disableImpersonation": { - "type": "boolean" - } - } - }, - "CreateOrgTeamMembershipDto": { - "type": "object", - "properties": { - "userId": { - "type": "number" - }, - "accepted": { - "type": "boolean", - "default": false - }, - "role": { - "type": "string", - "default": "MEMBER", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] - }, - "disableImpersonation": { - "type": "boolean", - "default": false - } - }, - "required": [ - "userId", - "role" - ] - }, - "Attribute": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the attribute", - "example": "attr_123" - }, - "teamId": { - "type": "number", - "description": "The team ID associated with the attribute", - "example": 1 - }, - "type": { - "type": "string", - "description": "The type of the attribute", - "enum": [ - "TEXT", - "NUMBER", - "SINGLE_SELECT", - "MULTI_SELECT" - ] - }, - "name": { - "type": "string", - "description": "The name of the attribute", - "example": "Attribute Name" - }, - "slug": { - "type": "string", - "description": "The slug of the attribute", - "example": "attribute-name" - }, - "enabled": { - "type": "boolean", - "description": "Whether the attribute is enabled and displayed on their profile", - "example": true - }, - "usersCanEditRelation": { - "type": "boolean", - "description": "Whether users can edit the relation", - "example": true - } - }, - "required": [ - "id", - "teamId", - "type", - "name", - "slug", - "enabled" - ] - }, - "GetOrganizationAttributesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Attribute" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "GetSingleAttributeOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/Attribute" - } - ] - } - }, - "required": [ - "status", - "data" - ] - }, - "CreateOrganizationAttributeOptionInput": { - "type": "object", - "properties": { - "value": { - "type": "string" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "value", - "slug" - ] - }, - "CreateOrganizationAttributeInput": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "TEXT", - "NUMBER", - "SINGLE_SELECT", - "MULTI_SELECT" - ] - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CreateOrganizationAttributeOptionInput" - } - }, - "enabled": { - "type": "boolean" - } - }, - "required": [ - "name", - "slug", - "type", - "options" - ] - }, - "CreateOrganizationAttributesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/Attribute" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateOrganizationAttributeInput": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "TEXT", - "NUMBER", - "SINGLE_SELECT", - "MULTI_SELECT" - ] - }, - "enabled": { - "type": "boolean" - } - } - }, - "UpdateOrganizationAttributesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/Attribute" - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteOrganizationAttributesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/Attribute" - } - }, - "required": [ - "status", - "data" - ] - }, - "OptionOutput": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the option", - "example": "attr_option_id" - }, - "attributeId": { - "type": "string", - "description": "The ID of the attribute", - "example": "attr_id" - }, - "value": { - "type": "string", - "description": "The value of the option", - "example": "option_value" - }, - "slug": { - "type": "string", - "description": "The slug of the option", - "example": "option-slug" - } - }, - "required": [ - "id", - "attributeId", - "value", - "slug" - ] - }, - "CreateAttributeOptionOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/OptionOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteAttributeOptionOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/OptionOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateOrganizationAttributeOptionInput": { - "type": "object", - "properties": { - "value": { - "type": "string" - }, - "slug": { - "type": "string" - } - } - }, - "UpdateAttributeOptionOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/OptionOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "GetAllAttributeOptionOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OptionOutput" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "AssignedOptionOutput": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the option", - "example": "attr_option_id" - }, - "attributeId": { - "type": "string", - "description": "The ID of the attribute", - "example": "attr_id" - }, - "value": { - "type": "string", - "description": "The value of the option", - "example": "option_value" - }, - "slug": { - "type": "string", - "description": "The slug of the option", - "example": "option-slug" - }, - "assignedUserIds": { - "description": "Ids of the users assigned to the attribute option.", - "example": [ - 124, - 224 - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "id", - "attributeId", - "value", - "slug", - "assignedUserIds" - ] - }, - "GetAllAttributeAssignedOptionOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AssignedOptionOutput" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "AssignOrganizationAttributeOptionToUserInput": { - "type": "object", - "properties": { - "value": { - "type": "string" - }, - "attributeOptionId": { - "type": "string" - }, - "attributeId": { - "type": "string" - } - }, - "required": [ - "attributeId" - ] - }, - "AssignOptionUserOutputData": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the option assigned to the user" - }, - "memberId": { - "type": "number", - "description": "The ID form the org membership for the user" - }, - "attributeOptionId": { - "type": "string", - "description": "The value of the option" - } - }, - "required": [ - "id", - "memberId", - "attributeOptionId" - ] - }, - "AssignOptionUserOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/AssignOptionUserOutputData" - } - }, - "required": [ - "status", - "data" - ] - }, - "UnassignOptionUserOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/AssignOptionUserOutputData" - } - }, - "required": [ - "status", - "data" - ] - }, - "GetOptionUserOutputData": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the option assigned to the user" - }, - "attributeId": { - "type": "string", - "description": "The ID of the attribute" - }, - "value": { - "type": "string", - "description": "The value of the option" - }, - "slug": { - "type": "string", - "description": "The slug of the option" - } - }, - "required": [ - "id", - "attributeId", - "value", - "slug" - ] - }, - "GetOptionUserOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GetOptionUserOutputData" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamWebhookOutputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "teamId": { - "type": "number" - }, - "id": { - "type": "number" - }, - "triggers": { - "type": "array", - "items": { - "type": "object" - } - }, - "subscriberUrl": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "secret": { - "type": "string" - } - }, - "required": [ - "payloadTemplate", - "teamId", - "id", - "triggers", - "subscriberUrl", - "active" - ] - }, - "TeamWebhooksOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TeamWebhookOutputDto" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "CreateWebhookInputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "active": { - "type": "boolean" - }, - "subscriberUrl": { - "type": "string" - }, - "triggers": { - "type": "string", - "example": [ - "BOOKING_CREATED", - "BOOKING_RESCHEDULED", - "BOOKING_CANCELLED", - "BOOKING_CONFIRMED", - "BOOKING_REJECTED", - "BOOKING_COMPLETED", - "BOOKING_NO_SHOW", - "BOOKING_REOPENED" - ], - "enum": [ - "BOOKING_CREATED", - "BOOKING_PAYMENT_INITIATED", - "BOOKING_PAID", - "BOOKING_RESCHEDULED", - "BOOKING_REQUESTED", - "BOOKING_CANCELLED", - "BOOKING_REJECTED", - "BOOKING_NO_SHOW_UPDATED", - "FORM_SUBMITTED", - "MEETING_ENDED", - "MEETING_STARTED", - "RECORDING_READY", - "INSTANT_MEETING", - "RECORDING_TRANSCRIPTION_GENERATED", - "OOO_CREATED", - "AFTER_HOSTS_CAL_VIDEO_NO_SHOW", - "AFTER_GUESTS_CAL_VIDEO_NO_SHOW", - "FORM_SUBMITTED_NO_EVENT" - ] - }, - "secret": { - "type": "string" - } - }, - "required": [ - "active", - "subscriberUrl", - "triggers" - ] - }, - "TeamWebhookOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamWebhookOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateWebhookInputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "active": { - "type": "boolean" - }, - "subscriberUrl": { - "type": "string" - }, - "triggers": { - "type": "string", - "example": [ - "BOOKING_CREATED", - "BOOKING_RESCHEDULED", - "BOOKING_CANCELLED", - "BOOKING_CONFIRMED", - "BOOKING_REJECTED", - "BOOKING_COMPLETED", - "BOOKING_NO_SHOW", - "BOOKING_REOPENED" - ], - "enum": [ - "BOOKING_CREATED", - "BOOKING_PAYMENT_INITIATED", - "BOOKING_PAID", - "BOOKING_RESCHEDULED", - "BOOKING_REQUESTED", - "BOOKING_CANCELLED", - "BOOKING_REJECTED", - "BOOKING_NO_SHOW_UPDATED", - "FORM_SUBMITTED", - "MEETING_ENDED", - "MEETING_STARTED", - "RECORDING_READY", - "INSTANT_MEETING", - "RECORDING_TRANSCRIPTION_GENERATED", - "OOO_CREATED", - "AFTER_HOSTS_CAL_VIDEO_NO_SHOW", - "AFTER_GUESTS_CAL_VIDEO_NO_SHOW", - "FORM_SUBMITTED_NO_EVENT" - ] - }, - "secret": { - "type": "string" - } - } - }, - "CreateOutOfOfficeEntryDto": { - "type": "object", - "properties": { - "start": { - "format": "date-time", - "type": "string", - "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", - "example": "2023-05-01T00:00:00.000Z" - }, - "end": { - "format": "date-time", - "type": "string", - "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", - "example": "2023-05-10T23:59:59.999Z" - }, - "notes": { - "type": "string", - "description": "Optional notes for the out of office entry.", - "example": "Vacation in Hawaii" - }, - "toUserId": { - "type": "number", - "description": "The ID of the user covering for the out of office period, if applicable.", - "example": 2 - }, - "reason": { - "type": "string", - "description": "the reason for the out of office entry, if applicable", - "example": "vacation", - "enum": [ - "unspecified", - "vacation", - "travel", - "sick", - "public_holiday" - ] - } - }, - "required": [ - "start", - "end" - ] - }, - "UpdateOutOfOfficeEntryDto": { - "type": "object", - "properties": { - "start": { - "format": "date-time", - "type": "string", - "description": "The start date and time of the out of office period in ISO 8601 format in UTC timezone.", - "example": "2023-05-01T00:00:00.000Z" - }, - "end": { - "format": "date-time", - "type": "string", - "description": "The end date and time of the out of office period in ISO 8601 format in UTC timezone.", - "example": "2023-05-10T23:59:59.999Z" - }, - "notes": { - "type": "string", - "description": "Optional notes for the out of office entry.", - "example": "Vacation in Hawaii" - }, - "toUserId": { - "type": "number", - "description": "The ID of the user covering for the out of office period, if applicable.", - "example": 2 - }, - "reason": { - "type": "string", - "description": "the reason for the out of office entry, if applicable", - "example": "vacation", - "enum": [ - "unspecified", - "vacation", - "travel", - "sick", - "public_holiday" - ] - } - } - }, - "WorkflowActivationOutputDto": { - "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" - ] - }, - "WorkflowTriggerOutputDto": { - "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" - ] - }, - "WorkflowStepOutputDto": { - "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 - }, - "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" - ] - }, - "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" - }, - "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" - } - ] - } - }, - "required": [ - "id", - "stepNumber", - "action", - "recipient", - "template", - "sender", - "message" - ] - }, - "WorkflowOutput": { - "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 - }, - "activation": { - "description": "Activation settings (scope)", - "allOf": [ - { - "$ref": "#/components/schemas/WorkflowActivationOutputDto" - } - ] - }, - "trigger": { - "description": "Trigger configuration", - "allOf": [ - { - "$ref": "#/components/schemas/WorkflowTriggerOutputDto" - } - ] - }, - "steps": { - "description": "Steps comprising the workflow", - "type": "array", - "items": { - "$ref": "#/components/schemas/WorkflowStepOutputDto" - } - }, - "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" - } - }, - "required": [ - "id", - "name", - "activation", - "trigger", - "steps" - ] - }, - "GetWorkflowsOutput": { - "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/WorkflowOutput" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "GetWorkflowOutput": { - "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/WorkflowOutput" - } - } - }, - "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 and AFTER_EVENT only", - "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 and AFTER_EVENT only", - "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 and AFTER_EVENT only", - "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 and AFTER_EVENT only", - "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" - } - ] - } - }, - "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" - } - ] - } - }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "message" - ] - }, - "BaseWorkflowTriggerDto": { - "type": "object", - "properties": { - "type": { - "type": "object", - "enum": [ - [ - "beforeEvent", - "eventCancelled", - "newEvent", - "afterEvent", - "rescheduleEvent", - "afterHostsCalVideoNoShow", - "afterGuestsCalVideoNoShow", - "bookingRejected", - "bookingRequested", - "bookingPaymentInitiated", - "bookingPaid", - "bookingNoShowUpdated" - ] - ], - "description": "Trigger type for the workflow" - } - }, - "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" - ] - }, - "CreateWorkflowDto": { - "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 workflow", - "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 workflow", - "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" - ] - }, - "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" - } - ] - }, - "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" - } - ] - }, - "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" - ] - }, - "UpdateWorkflowDto": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the workflow", - "example": "Platform Test Workflow" - }, - "activation": { - "description": "Activation settings for the workflow, the action that will trigger the workflow.", - "allOf": [ - { - "$ref": "#/components/schemas/WorkflowActivationDto" - } - ] - }, - "trigger": { - "description": "Trigger configuration for the workflow", - "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 workflow", - "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" - } - ] - } - } - } - }, - "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" - ] - }, - "StripConnectOutputDto": { - "type": "object", - "properties": { - "authUrl": { - "type": "string" - } - }, - "required": [ - "authUrl" - ] - }, - "StripConnectOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/StripConnectOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "StripCredentialsSaveOutputResponseDto": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - }, - "StripCredentialsCheckOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "object", - "example": "success" - } - }, - "required": [ - "status" - ] - }, - "GetDefaultScheduleOutput_2024_06_11": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" - } - }, - "required": [ - "status", - "data" - ] - }, - "CreateTeamInput": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "Name of the team", - "example": "CalTeam" - }, - "slug": { - "type": "string", - "description": "Team slug in kebab-case - if not provided will be generated automatically based on name.", - "example": "caltel" - }, - "logoUrl": { - "type": "string", - "example": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png", - "description": "URL of the teams logo image" - }, - "calVideoLogo": { - "type": "string" - }, - "appLogo": { - "type": "string" - }, - "appIconLogo": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "hideBranding": { - "type": "boolean", - "default": false - }, - "isPrivate": { - "type": "boolean" - }, - "hideBookATeamMember": { - "type": "boolean" - }, - "metadata": { - "type": "object", - "description": "You can store any additional data you want here.\nMetadata must have at most 50 keys, each key up to 40 characters.\nValues can be strings (up to 500 characters), numbers, or booleans.", - "example": { - "key": "value" - } - }, - "theme": { - "type": "string" - }, - "brandColor": { - "type": "string" - }, - "darkBrandColor": { - "type": "string" - }, - "bannerUrl": { - "type": "string", - "example": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png", - "description": "URL of the teams banner image which is shown on booker" - }, - "timeFormat": { - "type": "number" - }, - "timeZone": { - "type": "string", - "default": "Europe/London", - "example": "America/New_York", - "description": "Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed." - }, - "weekStart": { - "type": "string", - "default": "Sunday", - "example": "Monday" - }, - "autoAcceptCreator": { - "type": "boolean", - "default": true, - "description": "If you are a platform customer, don't pass 'false', because then team creator won't be able to create team event types." - } - }, - "required": [ - "name" - ] - }, - "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" - } - } - } - }, - "RoutingFormResponseOutput": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "formId": { - "type": "string" - }, - "formFillerId": { - "type": "string" - }, - "routedToBookingUid": { - "type": "string" - }, - "response": { - "type": "object", - "example": { - "f00b26df-f54b-4985-8d98-17c5482c6a24": { - "label": "participant", - "value": "mamut" - } - } - }, - "createdAt": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "id", - "formId", - "formFillerId", - "routedToBookingUid", - "response", - "createdAt" - ] - }, - "GetRoutingFormResponsesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/RoutingFormResponseOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "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" - }, - "timeFormat": { - "type": "number" - }, - "defaultScheduleId": { - "type": "number", - "nullable": true - }, - "weekStart": { - "type": "string" - }, - "timeZone": { - "type": "string" - }, - "organizationId": { - "type": "number", - "nullable": true - }, - "organization": { - "$ref": "#/components/schemas/MeOrgOutput" - } - }, - "required": [ - "id", - "username", - "email", - "timeFormat", - "defaultScheduleId", - "weekStart", - "timeZone", - "organizationId" - ] - }, - "GetMeOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/MeOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateMeOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/MeOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "BookingInputAddressLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "address", - "description": "only allowed value for type is `address` - it refers to address defined by the organizer." - } - }, - "required": [ - "type" - ] - }, - "BookingInputAttendeeAddressLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeeAddress", - "description": "only allowed value for type is `attendeeAddress`" - }, - "address": { - "type": "string", - "example": "123 Example St, City, Country" - } - }, - "required": [ - "type", - "address" - ] - }, - "BookingInputAttendeeDefinedLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeeDefined", - "description": "only allowed value for type is `attendeeDefined`" - }, - "location": { - "type": "string", - "example": "321 Example St, City, Country" - } - }, - "required": [ - "type", - "location" - ] - }, - "BookingInputAttendeePhoneLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "attendeePhone", - "description": "only allowed value for type is `attendeePhone`" - }, - "phone": { - "type": "string", - "example": "+37120993151" - } - }, - "required": [ - "type", - "phone" - ] - }, - "BookingInputIntegrationLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "integration", - "description": "only allowed value for type is `integration`" - }, - "integration": { - "type": "string", - "example": "cal-video", - "enum": [ - "cal-video", - "google-meet", - "zoom", - "whereby-video", - "whatsapp-video", - "webex-video", - "telegram-video", - "tandem", - "sylaps-video", - "skype-video", - "sirius-video", - "signal-video", - "shimmer-video", - "salesroom-video", - "roam-video", - "riverside-video", - "ping-video", - "office365-video", - "mirotalk-video", - "jitsi", - "jelly-video", - "jelly-conferencing", - "huddle", - "facetime-video", - "element-call-video", - "eightxeight-video", - "discord-video", - "demodesk-video", - "campfire-video" - ] - } - }, - "required": [ - "type", - "integration" - ] - }, - "BookingInputLinkLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "link", - "description": "only allowed value for type is `link` - it refers to link defined by the organizer." - } - }, - "required": [ - "type" - ] - }, - "BookingInputPhoneLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "phone", - "description": "only allowed value for type is `phone` - it refers to phone defined by the organizer." - } - }, - "required": [ - "type" - ] - }, - "BookingInputOrganizersDefaultAppLocation_2024_08_13": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "organizersDefaultApp", - "description": "only available for team event types and the only allowed value for type is `organizersDefaultApp` - it refers to the default app defined by the organizer." - } - }, - "required": [ - "type" - ] - }, - "ValidateBookingLocation_2024_08_13": { - "type": "object", - "properties": {} - }, - "CreateBookingAttendee": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the attendee.", - "example": "John Doe" - }, - "email": { - "type": "string", - "description": "The email of the attendee.", - "example": "john.doe@example.com" - }, - "timeZone": { - "type": "string", - "description": "The time zone of the attendee.", - "example": "America/New_York" - }, - "phoneNumber": { - "type": "string", - "description": "The phone number of the attendee in international format.", - "example": "+919876543210" - }, - "language": { - "type": "string", - "enum": [ - "ar", - "ca", - "de", - "es", - "eu", - "he", - "id", - "ja", - "lv", - "pl", - "ro", - "sr", - "th", - "vi", - "az", - "cs", - "el", - "es-419", - "fi", - "hr", - "it", - "km", - "nl", - "pt", - "ru", - "sv", - "tr", - "zh-CN", - "bg", - "da", - "en", - "et", - "fr", - "hu", - "iw", - "ko", - "no", - "pt-BR", - "sk", - "ta", - "uk", - "zh-TW", - "bn" - ], - "description": "The preferred language of the attendee. Used for booking confirmation.", - "example": "it", - "default": "en" - } - }, - "required": [ - "name", - "timeZone" - ] - }, - "CreateBookingInput_2024_08_13": { - "type": "object", - "properties": { - "start": { - "type": "string", - "description": "The start time of the booking in ISO 8601 format in UTC timezone.", - "example": "2024-08-13T09:00:00Z" - }, - "attendee": { - "description": "The attendee's details.", - "allOf": [ - { - "$ref": "#/components/schemas/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" - }, - "username": { - "type": "string", - "example": "jane100" - }, - "timeZone": { - "type": "string", - "example": "America/Los_Angeles" - } - }, - "required": [ - "id", - "name", - "email", - "username", - "timeZone" - ] - }, - "EventType": { - "type": "object", - "properties": { - "id": { - "type": "number", - "example": 1 - }, - "slug": { - "type": "string", - "example": "some-event" - } - }, - "required": [ - "id", - "slug" - ] - }, - "BookingAttendee": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "John Doe" - }, - "email": { - "type": "string", - "example": "john@example.com" - }, - "timeZone": { - "type": "string", - "example": "America/New_York" - }, - "language": { - "type": "string", - "enum": [ - "ar", - "ca", - "de", - "es", - "eu", - "he", - "id", - "ja", - "lv", - "pl", - "ro", - "sr", - "th", - "vi", - "az", - "cs", - "el", - "es-419", - "fi", - "hr", - "it", - "km", - "nl", - "pt", - "ru", - "sv", - "tr", - "zh-CN", - "bg", - "da", - "en", - "et", - "fr", - "hu", - "iw", - "ko", - "no", - "pt-BR", - "sk", - "ta", - "uk", - "zh-TW", - "bn" - ], - "example": "en" - }, - "absent": { - "type": "boolean", - "example": false - }, - "phoneNumber": { - "type": "string", - "example": "+1234567890" - } - }, - "required": [ - "name", - "email", - "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" - }, - "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", - "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 - if true, cancel booking with the bookingUid of the individual recurrence and all recurrences that come after it." - } - } - }, - "CancelSeatedBookingInput_2024_08_13": { - "type": "object", - "properties": { - "seatUid": { - "type": "string", - "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1", - "description": "Uid of the specific seat within booking." - } - }, - "required": [ - "seatUid" - ] - }, - "CancelBookingOutput_2024_08_13": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/BookingOutput_2024_08_13" - }, - { - "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" - } - }, - { - "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" - }, - { - "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" - } - } - ], - "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" - } - }, - "required": [ - "status", - "data" - ] - }, - "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" - } - }, - "required": [ - "id", - "name", - "email" - ] - }, - "ReassignBookingOutput_2024_08_13": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" - } - ], - "description": "Booking data, which can be either a ReassignAutoBookingOutput object or a ReassignManualBookingOutput object", - "allOf": [ - { - "$ref": "#/components/schemas/ReassignBookingOutput_2024_08_13" - } - ] - } - }, - "required": [ - "status", - "data" - ] - }, - "ReassignToUserBookingInput_2024_08_13": { - "type": "object", - "properties": { - "reason": { - "type": "string", - "example": "Host has to take another call", - "description": "Reason for reassigning the booking" - } - } - }, - "DeclineBookingInput_2024_08_13": { - "type": "object", - "properties": { - "reason": { - "type": "string", - "example": "Host has to take another call", - "description": "Reason for declining a booking that requires a confirmation" - } - } - }, - "CalendarLink": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "The label of the calendar link" - }, - "link": { - "type": "string", - "description": "The link to the calendar" - } - }, - "required": [ - "label", - "link" - ] - }, - "CalendarLinksOutput_2024_08_13": { - "type": "object", - "properties": { - "status": { - "type": "object", - "description": "The status of the request, always 'success' for successful responses", - "example": "success" - }, - "data": { - "description": "Calendar links for the booking", - "type": "array", - "items": { - "$ref": "#/components/schemas/CalendarLink" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "BookingReference": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "The type of the booking reference" - }, - "eventUid": { - "type": "string", - "description": "The event uid of the booking" - }, - "destinationCalendarId": { - "type": "string", - "nullable": true, - "description": "The id of the calendar the event is created in" - }, - "id": { - "type": "number", - "description": "The id of the booking reference" - } - }, - "required": [ - "type", - "eventUid", - "destinationCalendarId", - "id" - ] - }, - "BookingReferencesOutput_2024_08_13": { - "type": "object", - "properties": { - "status": { - "type": "object", - "description": "The status of the request, always 'success' for successful responses", - "example": "success" - }, - "data": { - "description": "Booking References", - "type": "array", - "items": { - "$ref": "#/components/schemas/BookingReference" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "CreateTeamMembershipInput": { - "type": "object", - "properties": { - "userId": { - "type": "number" - }, - "accepted": { - "type": "boolean", - "default": false - }, - "role": { - "type": "string", - "default": "MEMBER", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] - }, - "disableImpersonation": { - "type": "boolean", - "default": false - } - }, - "required": [ - "userId" - ] - }, - "CreateTeamMembershipOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "GetTeamMembershipOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "GetTeamMembershipsOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UpdateTeamMembershipInput": { - "type": "object", - "properties": { - "accepted": { - "type": "boolean" - }, - "role": { - "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] - }, - "disableImpersonation": { - "type": "boolean" - } - } - }, - "UpdateTeamMembershipOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteTeamMembershipOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/TeamMembershipOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UserWebhookOutputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "userId": { - "type": "number" - }, - "id": { - "type": "number" - }, - "triggers": { - "type": "array", - "items": { - "type": "object" - } - }, - "subscriberUrl": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "secret": { - "type": "string" - } - }, - "required": [ - "payloadTemplate", - "userId", - "id", - "triggers", - "subscriberUrl", - "active" - ] - }, - "UserWebhookOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/UserWebhookOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "UserWebhooksOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UserWebhookOutputDto" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "EventTypeWebhookOutputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "eventTypeId": { - "type": "number" - }, - "id": { - "type": "number" - }, - "triggers": { - "type": "array", - "items": { - "type": "object" - } - }, - "subscriberUrl": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "secret": { - "type": "string" - } - }, - "required": [ - "payloadTemplate", - "eventTypeId", - "id", - "triggers", - "subscriberUrl", - "active" - ] - }, - "EventTypeWebhookOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/EventTypeWebhookOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "EventTypeWebhooksOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventTypeWebhookOutputDto" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "DeleteManyWebhooksOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "string" - } - }, - "required": [ - "status", - "data" - ] - }, - "OAuthClientWebhookOutputDto": { - "type": "object", - "properties": { - "payloadTemplate": { - "type": "string", - "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", - "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" - }, - "oAuthClientId": { - "type": "string" - }, - "id": { - "type": "number" - }, - "triggers": { - "type": "array", - "items": { - "type": "object" - } - }, - "subscriberUrl": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "secret": { - "type": "string" - } - }, - "required": [ - "payloadTemplate", - "oAuthClientId", - "id", - "triggers", - "subscriberUrl", - "active" - ] - }, - "OAuthClientWebhookOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "OAuthClientWebhooksOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" - } - } - }, - "required": [ - "status", - "data" - ] - }, - "DestinationCalendarsInputBodyDto": { - "type": "object", - "properties": { - "integration": { - "type": "string", - "example": "apple_calendar", - "description": "The calendar service you want to integrate, as returned by the /calendars endpoint", - "enum": [ - "apple_calendar", - "google_calendar", - "office365_calendar" - ] - }, - "externalId": { - "type": "string", - "example": "https://caldav.icloud.com/26962146906/calendars/1644422A-1945-4438-BBC0-4F0Q23A57R7S/", - "description": "Unique identifier used to represent the specific calendar, as returned by the /calendars endpoint" - }, - "delegationCredentialId": { - "type": "string" - } - }, - "required": [ - "integration", - "externalId" - ] - }, - "DestinationCalendarsOutputDto": { - "type": "object", - "properties": { - "userId": { - "type": "number" - }, - "integration": { - "type": "string" - }, - "externalId": { - "type": "string" - }, - "credentialId": { - "type": "number", - "nullable": true - } - }, - "required": [ - "userId", - "integration", - "externalId", - "credentialId" - ] - }, - "DestinationCalendarsOutputResponseDto": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/DestinationCalendarsOutputDto" - } - }, - "required": [ - "status", - "data" - ] - }, - "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" - ] - }, - "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" - ] - }, - "WorkingHours": { - "type": "object", - "properties": { - "days": { - "type": "array", - "items": { - "type": "number" - } - }, - "startTime": { - "type": "number" - }, - "endTime": { - "type": "number" - }, - "userId": { - "type": "number", - "nullable": true - } - }, - "required": [ - "days", - "startTime", - "endTime" - ] - }, - "AvailabilityModel": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "userId": { - "type": "number", - "nullable": true - }, - "eventTypeId": { - "type": "number", - "nullable": true - }, - "days": { - "type": "array", - "items": { - "type": "number" - } - }, - "startTime": { - "format": "date-time", - "type": "string" - }, - "endTime": { - "format": "date-time", - "type": "string" - }, - "date": { - "format": "date-time", - "type": "string", - "nullable": true - }, - "scheduleId": { - "type": "number", - "nullable": true - } - }, - "required": [ - "id", - "days", - "startTime", - "endTime" - ] - }, - "ScheduleOutput": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "name": { - "type": "string" - }, - "isManaged": { - "type": "boolean" - }, - "workingHours": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WorkingHours" - } - }, - "schedule": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AvailabilityModel" - } - }, - "availability": { - "items": { - "type": "array" - }, - "type": "array" - }, - "timeZone": { - "type": "string" - }, - "dateOverrides": { - "type": "array", - "items": { - "type": "object" - } - }, - "isDefault": { - "type": "boolean" - }, - "isLastSchedule": { - "type": "boolean" - }, - "readOnly": { - "type": "boolean" - } - }, - "required": [ - "id", - "name", - "isManaged", - "workingHours", - "schedule", - "availability", - "timeZone", - "isDefault", - "isLastSchedule", - "readOnly" - ] - }, - "UserVerifiedEmailOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "VerifyPhoneInput": { - "type": "object", - "properties": { - "phone": { - "type": "string", - "description": "phone number to verify.", - "example": "+37255556666" - }, - "code": { - "type": "string", - "description": "verification code sent to the phone number to verify", - "example": "1ABG2C" - } - }, - "required": [ - "phone", - "code" - ] - }, - "UserVerifiedPhoneOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UserVerifiedEmailsOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "UserVerifiedPhonesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamVerifiedEmailOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamVerifiedPhoneOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamVerifiedEmailsOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - }, - "TeamVerifiedPhonesOutput": { - "type": "object", - "properties": { - "status": { - "type": "string", - "example": "success", - "enum": [ - "success", - "error" - ] - }, - "data": { - "$ref": "#/components/schemas/ScheduleOutput" - } - }, - "required": [ - "status", - "data" - ] - } - } - } -} \ No newline at end of file