diff --git a/.vscode/settings.json b/.vscode/settings.json index f1a8fd8ccd..0e4897cf37 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,15 @@ { "typescript.tsdk": "node_modules/typescript/lib", "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "biomejs.biome", "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, "typescript.preferences.importModuleSpecifier": "non-relative", "spellright.language": ["en"], "spellright.documentTypes": ["markdown", "typescript", "typescriptreact"], - "tailwindCSS.classFunctions": ["cva"] + "tailwindCSS.classFunctions": ["cva"], + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + } } diff --git a/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.e2e-spec.ts b/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.e2e-spec.ts new file mode 100644 index 0000000000..6b937d28f0 --- /dev/null +++ b/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.e2e-spec.ts @@ -0,0 +1,328 @@ +import { bootstrap } from "@/app"; +import { AppModule } from "@/app.module"; +import { PrismaModule } from "@/modules/prisma/prisma.module"; +import { TokensModule } from "@/modules/tokens/tokens.module"; +import { UsersModule } from "@/modules/users/users.module"; +import { CreateWebhookInputDto, UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { + EventTypeWebhookOutputResponseDto, + EventTypeWebhooksOutputResponseDto, +} from "@/modules/webhooks/outputs/event-type-webhook.output"; +import { DeleteManyWebhooksOutputResponseDto } from "@/modules/webhooks/outputs/webhook.output"; +import { INestApplication } from "@nestjs/common"; +import { NestExpressApplication } from "@nestjs/platform-express"; +import { Test } from "@nestjs/testing"; +import * as request from "supertest"; +import { EventTypesRepositoryFixture } from "test/fixtures/repository/event-types.repository.fixture"; +import { MembershipRepositoryFixture } from "test/fixtures/repository/membership.repository.fixture"; +import { TeamRepositoryFixture } from "test/fixtures/repository/team.repository.fixture"; +import { UserRepositoryFixture } from "test/fixtures/repository/users.repository.fixture"; +import { WebhookRepositoryFixture } from "test/fixtures/repository/webhooks.repository.fixture"; +import { randomString } from "test/utils/randomString"; +import { withApiAuth } from "test/utils/withApiAuth"; + +import type { EventType, Team, User, Webhook } from "@calcom/prisma/client"; + +describe("Teams EventTypes WebhooksController (e2e)", () => { + let app: INestApplication; + const userEmail = `teams-event-types-webhooks-user-${randomString()}@api.com`; + let userAdmin: User; + let otherUser: User; + let team: Team; + let otherTeam: Team; + let teamEventType: EventType; + let teamEventType2: EventType; + let otherTeamEventType: EventType; + + let eventTypeRepositoryFixture: EventTypesRepositoryFixture; + let userRepositoryFixture: UserRepositoryFixture; + let webhookRepositoryFixture: WebhookRepositoryFixture; + let teamsRepositoryFixture: TeamRepositoryFixture; + let membershipsRepositoryFixture: MembershipRepositoryFixture; + + let webhook: EventTypeWebhookOutputResponseDto["data"]; + let otherWebhook: Webhook; + + beforeAll(async () => { + const moduleRef = await withApiAuth( + userEmail, + Test.createTestingModule({ + imports: [AppModule, PrismaModule, UsersModule, TokensModule], + }) + ).compile(); + userRepositoryFixture = new UserRepositoryFixture(moduleRef); + webhookRepositoryFixture = new WebhookRepositoryFixture(moduleRef); + eventTypeRepositoryFixture = new EventTypesRepositoryFixture(moduleRef); + teamsRepositoryFixture = new TeamRepositoryFixture(moduleRef); + membershipsRepositoryFixture = new MembershipRepositoryFixture(moduleRef); + + userAdmin = await userRepositoryFixture.create({ + email: userEmail, + username: userEmail, + }); + + otherUser = await userRepositoryFixture.create({ + email: `teams-event-types-webhooks-other-user-${randomString()}@api.com`, + username: `teams-event-types-webhooks-other-user-${randomString()}@api.com`, + }); + + team = await teamsRepositoryFixture.create({ + name: `teams-event-types-webhooks-team-${randomString()}`, + isOrganization: false, + }); + + otherTeam = await teamsRepositoryFixture.create({ + name: `teams-event-types-webhooks-other-team-${randomString()}`, + isOrganization: false, + }); + + await membershipsRepositoryFixture.create({ + role: "ADMIN", + user: { connect: { id: userAdmin.id } }, + team: { connect: { id: team.id } }, + accepted: true, + }); + + await membershipsRepositoryFixture.create({ + role: "ADMIN", + user: { connect: { id: otherUser.id } }, + team: { connect: { id: otherTeam.id } }, + accepted: true, + }); + + teamEventType = await eventTypeRepositoryFixture.createTeamEventType({ + team: { connect: { id: team.id } }, + title: "Team Event Type 1", + slug: `teams-event-types-webhooks-event-type-${randomString()}`, + length: 60, + schedulingType: "COLLECTIVE", + }); + + teamEventType2 = await eventTypeRepositoryFixture.createTeamEventType({ + team: { connect: { id: team.id } }, + title: "Team Event Type 2", + slug: `teams-event-types-webhooks-event-type-${randomString()}`, + length: 60, + schedulingType: "COLLECTIVE", + }); + + otherTeamEventType = await eventTypeRepositoryFixture.createTeamEventType({ + team: { connect: { id: otherTeam.id } }, + title: "Other Team Event Type", + slug: `teams-event-types-webhooks-other-event-type-${randomString()}`, + length: 60, + schedulingType: "COLLECTIVE", + }); + + otherWebhook = await webhookRepositoryFixture.create({ + id: `teams-webhooks-${randomString()}`, + subscriberUrl: "https://example.com/other", + eventTriggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + eventType: { connect: { id: otherTeamEventType.id } }, + }); + + app = moduleRef.createNestApplication(); + bootstrap(app as NestExpressApplication); + + await app.init(); + }); + + afterAll(async () => { + await userRepositoryFixture.deleteByEmail(userAdmin.email); + await userRepositoryFixture.deleteByEmail(otherUser.email); + await webhookRepositoryFixture.delete(otherWebhook.id); + await teamsRepositoryFixture.delete(team.id); + await teamsRepositoryFixture.delete(otherTeam.id); + await app.close(); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (POST)", () => { + return request(app.getHttpServer()) + .post(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks`) + .send({ + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + } satisfies CreateWebhookInputDto) + .expect(201) + .then(async (res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + eventTypeId: teamEventType.id, + }, + } satisfies EventTypeWebhookOutputResponseDto); + webhook = res.body.data; + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (POST) - create webhook for second event type", () => { + return request(app.getHttpServer()) + .post(`/v2/teams/${team.id}/event-types/${teamEventType2.id}/webhooks`) + .send({ + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + } satisfies CreateWebhookInputDto) + .expect(201) + .then(async (res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + eventTypeId: teamEventType2.id, + }, + } satisfies EventTypeWebhookOutputResponseDto); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (POST) should fail to create a webhook for an event-type that does not belong to user's team", () => { + return request(app.getHttpServer()) + .post(`/v2/teams/${otherTeam.id}/event-types/${otherTeamEventType.id}/webhooks`) + .send({ + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + } satisfies CreateWebhookInputDto) + .expect(403); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (PATCH)", () => { + return request(app.getHttpServer()) + .patch(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/${webhook.id}`) + .send({ + active: false, + } satisfies UpdateWebhookInputDto) + .expect(200) + .then((res) => { + expect(res.body.data.active).toBe(false); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (PATCH) should fail to patch a webhook for an event-type that does not belong to user's team", () => { + return request(app.getHttpServer()) + .patch(`/v2/teams/${otherTeam.id}/event-types/${otherTeamEventType.id}/webhooks/${otherWebhook.id}`) + .send({ + active: false, + } satisfies UpdateWebhookInputDto) + .expect(403); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (GET)", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/${webhook.id}`) + .expect(200) + .then((res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: false, + payloadTemplate: "string", + eventTypeId: teamEventType.id, + }, + } satisfies EventTypeWebhookOutputResponseDto); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (GET) should fail to get a webhook that does not exist", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/90284`) + .expect(404); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (GET) should fail to get a webhook of an eventType that does not belong to user's team", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${otherTeam.id}/event-types/${otherTeamEventType.id}/webhooks/${otherWebhook.id}`) + .expect(403); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (GET) should fail to get a webhook that does not belong to the eventType", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/${otherWebhook.id}`) + .expect(403); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (GET)", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks`) + .expect(200) + .then((res) => { + const responseBody = res.body as EventTypeWebhooksOutputResponseDto; + responseBody.data.forEach((webhook) => { + expect(webhook.eventTypeId).toBe(teamEventType.id); + }); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (GET) - list webhooks for second event type", () => { + return request(app.getHttpServer()) + .get(`/v2/teams/${team.id}/event-types/${teamEventType2.id}/webhooks`) + .expect(200) + .then((res) => { + const responseBody = res.body as EventTypeWebhooksOutputResponseDto; + responseBody.data.forEach((webhook) => { + expect(webhook.eventTypeId).toBe(teamEventType2.id); + }); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (DELETE)", () => { + return request(app.getHttpServer()) + .delete(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/${webhook.id}`) + .expect(200) + .then((res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: false, + payloadTemplate: "string", + eventTypeId: teamEventType.id, + }, + } satisfies EventTypeWebhookOutputResponseDto); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks (DELETE)", () => { + return request(app.getHttpServer()) + .delete(`/v2/teams/${team.id}/event-types/${teamEventType2.id}/webhooks`) + .expect(200) + .then((res) => { + expect(res.body).toMatchObject({ + status: "success", + data: "1 webhooks deleted", + } satisfies DeleteManyWebhooksOutputResponseDto); + }); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (DELETE) should fail to delete a webhook that does not exist", () => { + return request(app.getHttpServer()) + .delete(`/v2/teams/${team.id}/event-types/${teamEventType.id}/webhooks/1234453`) + .expect(404); + }); + + it("/teams/:teamId/event-types/:eventTypeId/webhooks/:webhookId (DELETE) should fail to delete a webhook that does not belong to user's team", () => { + return request(app.getHttpServer()) + .delete(`/v2/teams/${otherTeam.id}/event-types/${otherTeamEventType.id}/webhooks/${otherWebhook.id}`) + .expect(403); + }); +}); diff --git a/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.ts b/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.ts new file mode 100644 index 0000000000..3afa706fb4 --- /dev/null +++ b/apps/api/v2/src/modules/teams/event-types/controllers/teams-event-types-webhooks.controller.ts @@ -0,0 +1,146 @@ +import { SUCCESS_STATUS } from "@calcom/platform-constants"; +import { SkipTakePagination } from "@calcom/platform-types"; +import type { Webhook } from "@calcom/prisma/client"; +import { + Body, + Controller, + Delete, + Get, + Param, + ParseIntPipe, + Patch, + Post, + Query, + UseGuards, +} from "@nestjs/common"; +import { ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; +import { plainToClass } from "class-transformer"; +import { API_VERSIONS_VALUES } from "@/lib/api-versions"; +import { API_KEY_HEADER } from "@/lib/docs/headers"; +import { Roles } from "@/modules/auth/decorators/roles/roles.decorator"; +import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; +import { RolesGuard } from "@/modules/auth/guards/roles/roles.guard"; +import { GetWebhook } from "@/modules/webhooks/decorators/get-webhook-decorator"; +import { IsTeamEventTypeWebhookGuard } from "@/modules/webhooks/guards/is-team-event-type-webhook-guard"; +import { CreateWebhookInputDto, UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { + EventTypeWebhookOutputDto, + type EventTypeWebhookOutputResponseDto, + type EventTypeWebhooksOutputResponseDto, +} from "@/modules/webhooks/outputs/event-type-webhook.output"; +import type { DeleteManyWebhooksOutputResponseDto } from "@/modules/webhooks/outputs/webhook.output"; +import { PartialWebhookInputPipe, WebhookInputPipe } from "@/modules/webhooks/pipes/WebhookInputPipe"; +import { WebhookOutputPipe } from "@/modules/webhooks/pipes/WebhookOutputPipe"; +import { TeamEventTypeWebhooksService } from "@/modules/webhooks/services/team-event-type-webhooks.service"; +import { WebhooksService } from "@/modules/webhooks/services/webhooks.service"; + +@Controller({ + path: "/v2/teams/:teamId/event-types/:eventTypeId/webhooks", + version: API_VERSIONS_VALUES, +}) +@UseGuards(ApiAuthGuard, RolesGuard, IsTeamEventTypeWebhookGuard) +@DocsTags("Teams / Event Types / Webhooks") +@ApiHeader(API_KEY_HEADER) +export class TeamsEventTypesWebhooksController { + constructor( + private readonly webhooksService: WebhooksService, + private readonly teamEventTypeWebhooksService: TeamEventTypeWebhooksService + ) {} + + @Post("/") + @ApiOperation({ summary: "Create a webhook for a team event type" }) + @Roles("TEAM_ADMIN") + async createTeamEventTypeWebhook( + @Body() body: CreateWebhookInputDto, + @Param("eventTypeId", ParseIntPipe) eventTypeId: number + ): Promise { + const webhook = await this.teamEventTypeWebhooksService.createTeamEventTypeWebhook( + eventTypeId, + new WebhookInputPipe().transform(body) + ); + return { + status: SUCCESS_STATUS, + data: plainToClass(EventTypeWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Patch("/:webhookId") + @ApiOperation({ summary: "Update a webhook for a team event type" }) + @Roles("TEAM_ADMIN") + async updateTeamEventTypeWebhook( + @Body() body: UpdateWebhookInputDto, + @Param("webhookId") webhookId: string + ): Promise { + const webhook = await this.webhooksService.updateWebhook( + webhookId, + new PartialWebhookInputPipe().transform(body) + ); + return { + status: SUCCESS_STATUS, + data: plainToClass(EventTypeWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Get("/:webhookId") + @ApiOperation({ summary: "Get a webhook for a team event type" }) + @Roles("TEAM_MEMBER") + async getTeamEventTypeWebhook(@GetWebhook() webhook: Webhook): Promise { + return { + status: SUCCESS_STATUS, + data: plainToClass(EventTypeWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Get("/") + @Roles("TEAM_MEMBER") + @ApiOperation({ summary: "Get all webhooks for a team event type" }) + async getTeamEventTypeWebhooks( + @Param("eventTypeId", ParseIntPipe) eventTypeId: number, + @Query() pagination: SkipTakePagination + ): Promise { + const webhooks = await this.teamEventTypeWebhooksService.getTeamEventTypeWebhooksPaginated( + eventTypeId, + pagination.skip ?? 0, + pagination.take ?? 250 + ); + return { + status: SUCCESS_STATUS, + data: webhooks.map((webhook) => + plainToClass(EventTypeWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }) + ), + }; + } + + @Delete("/:webhookId") + @Roles("TEAM_ADMIN") + @ApiOperation({ summary: "Delete a webhook for a team event type" }) + async deleteTeamEventTypeWebhook( + @GetWebhook() webhook: Webhook + ): Promise { + await this.webhooksService.deleteWebhook(webhook.id); + return { + status: SUCCESS_STATUS, + data: plainToClass(EventTypeWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Delete("/") + @Roles("TEAM_ADMIN") + @ApiOperation({ summary: "Delete all webhooks for a team event type" }) + async deleteAllTeamEventTypeWebhooks( + @Param("eventTypeId", ParseIntPipe) eventTypeId: number + ): Promise { + const data = await this.teamEventTypeWebhooksService.deleteAllTeamEventTypeWebhooks(eventTypeId); + return { status: SUCCESS_STATUS, data: `${data.count} webhooks deleted` }; + } +} diff --git a/apps/api/v2/src/modules/teams/event-types/teams-event-types.module.ts b/apps/api/v2/src/modules/teams/event-types/teams-event-types.module.ts index 843dda9ff2..c4b8d01e68 100644 --- a/apps/api/v2/src/modules/teams/event-types/teams-event-types.module.ts +++ b/apps/api/v2/src/modules/teams/event-types/teams-event-types.module.ts @@ -1,3 +1,4 @@ +import { Module } from "@nestjs/common"; import { EventTypesModule_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/event-types.module"; import { ConferencingRepository } from "@/modules/conferencing/repositories/conferencing.repository"; import { MembershipsModule } from "@/modules/memberships/memberships.module"; @@ -13,7 +14,6 @@ import { TeamsEventTypesService } from "@/modules/teams/event-types/services/tea import { TeamsEventTypesRepository } from "@/modules/teams/event-types/teams-event-types.repository"; import { TeamsModule } from "@/modules/teams/teams/teams.module"; import { UsersModule } from "@/modules/users/users.module"; -import { Module } from "@nestjs/common"; @Module({ imports: [ diff --git a/apps/api/v2/src/modules/webhooks/guards/is-team-event-type-webhook-guard.ts b/apps/api/v2/src/modules/webhooks/guards/is-team-event-type-webhook-guard.ts new file mode 100644 index 0000000000..f215ee3381 --- /dev/null +++ b/apps/api/v2/src/modules/webhooks/guards/is-team-event-type-webhook-guard.ts @@ -0,0 +1,90 @@ +import type { EventType, Webhook } from "@calcom/prisma/client"; +import { + BadRequestException, + type CanActivate, + type ExecutionContext, + ForbiddenException, + Injectable, + NotFoundException, +} from "@nestjs/common"; +import type { Request } from "express"; +import type { ApiAuthGuardUser } from "@/modules/auth/strategies/api-auth/api-auth.strategy"; +import { MembershipsRepository } from "@/modules/memberships/memberships.repository"; +import { TeamsEventTypesRepository } from "@/modules/teams/event-types/teams-event-types.repository"; +import { WebhooksRepository } from "@/modules/webhooks/webhooks.repository"; + +type WebhookRequest = Request & { webhook: Webhook; eventType: EventType }; + +@Injectable() +export class IsTeamEventTypeWebhookGuard implements CanActivate { + constructor( + private readonly webhooksRepository: WebhooksRepository, + private readonly teamsEventTypesRepository: TeamsEventTypesRepository, + private readonly membershipsRepository: MembershipsRepository + ) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const user = request.user as ApiAuthGuardUser; + const { webhookId, eventTypeId, teamId } = request.params; + + this.validateInitialRequest(user, teamId, eventTypeId); + + await this.validateTeamMembership(user.id, Number(teamId)); + + request.eventType = await this.validateAndGetEventType(Number(teamId), Number(eventTypeId)); + + if (webhookId) { + request.webhook = await this.validateAndGetWebhook(webhookId, Number(eventTypeId)); + } + + return true; + } + + private validateInitialRequest(user: ApiAuthGuardUser, teamId: string, eventTypeId: string): void { + if (!user) { + throw new ForbiddenException("IsTeamEventTypeWebhookGuard - No user associated with the request."); + } + if (!teamId) { + throw new BadRequestException("IsTeamEventTypeWebhookGuard - Team ID is required."); + } + if (!eventTypeId) { + throw new BadRequestException("IsTeamEventTypeWebhookGuard - Event Type ID is required."); + } + } + + private async validateTeamMembership(userId: number, teamId: number): Promise { + const membership = await this.membershipsRepository.getUserAdminOrOwnerTeamMembership(userId, teamId); + if (!membership) { + throw new ForbiddenException( + `IsTeamEventTypeWebhookGuard - User (${userId}) is not an admin/owner of team (${teamId})` + ); + } + } + + private async validateAndGetEventType(teamId: number, eventTypeId: number): Promise { + const eventType = await this.teamsEventTypesRepository.getTeamEventType(teamId, eventTypeId); + if (!eventType) { + throw new NotFoundException( + `IsTeamEventTypeWebhookGuard - Event type (${eventTypeId}) not found for team (${teamId})` + ); + } + return eventType; + } + + private async validateAndGetWebhook(webhookId: string, eventTypeId: number): Promise { + const webhook = await this.webhooksRepository.getWebhookById(webhookId); + + if (!webhook) { + throw new NotFoundException(`IsTeamEventTypeWebhookGuard - Webhook (${webhookId}) not found`); + } + if (!webhook.eventTypeId) { + throw new BadRequestException(`IsTeamEventTypeWebhookGuard - Webhook (${webhookId}) no event type`); + } + if (webhook.eventTypeId !== eventTypeId) { + throw new ForbiddenException(`IsTeamEventTypeWebhookGuard - Webhook mismatch with event type`); + } + + return webhook; + } +} diff --git a/apps/api/v2/src/modules/webhooks/services/team-event-type-webhooks.service.ts b/apps/api/v2/src/modules/webhooks/services/team-event-type-webhooks.service.ts new file mode 100644 index 0000000000..6bee517af5 --- /dev/null +++ b/apps/api/v2/src/modules/webhooks/services/team-event-type-webhooks.service.ts @@ -0,0 +1,38 @@ +import { WebhookTriggerEvents } from "@calcom/prisma/enums"; +import { BadRequestException, ConflictException, Injectable } from "@nestjs/common"; +import type { PipedInputWebhookType } from "@/modules/webhooks/pipes/WebhookInputPipe"; +import { WebhooksRepository } from "@/modules/webhooks/webhooks.repository"; + +@Injectable() +export class TeamEventTypeWebhooksService { + constructor(private readonly webhooksRepository: WebhooksRepository) {} + + async createTeamEventTypeWebhook(eventTypeId: number, body: PipedInputWebhookType) { + if (body.eventTriggers.includes(WebhookTriggerEvents.DELEGATION_CREDENTIAL_ERROR)) { + throw new BadRequestException( + "DELEGATION_CREDENTIAL_ERROR trigger is only available for organization webhooks" + ); + } + + const existingWebhook = await this.webhooksRepository.getEventTypeWebhookByUrl( + eventTypeId, + body.subscriberUrl + ); + if (existingWebhook) { + throw new ConflictException("Webhook with this subscriber url already exists for this event type"); + } + return this.webhooksRepository.createEventTypeWebhook(eventTypeId, { + ...body, + payloadTemplate: body.payloadTemplate ?? null, + secret: body.secret ?? null, + }); + } + + getTeamEventTypeWebhooksPaginated(eventTypeId: number, skip: number, take: number) { + return this.webhooksRepository.getEventTypeWebhooksPaginated(eventTypeId, skip, take); + } + + async deleteAllTeamEventTypeWebhooks(eventTypeId: number): Promise<{ count: number }> { + return this.webhooksRepository.deleteAllEventTypeWebhooks(eventTypeId); + } +} diff --git a/apps/api/v2/src/modules/webhooks/webhooks.module.ts b/apps/api/v2/src/modules/webhooks/webhooks.module.ts index 03ccd8d0c2..3861b9ab46 100644 --- a/apps/api/v2/src/modules/webhooks/webhooks.module.ts +++ b/apps/api/v2/src/modules/webhooks/webhooks.module.ts @@ -1,8 +1,9 @@ +import { Module } from "@nestjs/common"; import { EventTypesModule_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/event-types.module"; import { EventTypeWebhooksController } from "@/modules/event-types/controllers/event-types-webhooks.controller"; import { OAuthClientWebhooksController } from "@/modules/oauth-clients/controllers/oauth-client-webhooks/oauth-client-webhooks.controller"; import { OAuthClientModule } from "@/modules/oauth-clients/oauth-client.module"; -import { Module } from "@nestjs/common"; +import { TeamsEventTypesRepository } from "@/modules/teams/event-types/teams-event-types.repository"; import { MembershipsModule } from "../memberships/memberships.module"; import { OrganizationsModule } from "../organizations/organizations.module"; @@ -11,13 +12,17 @@ import { UsersModule } from "../users/users.module"; import { WebhooksController } from "./controllers/webhooks.controller"; import { EventTypeWebhooksService } from "./services/event-type-webhooks.service"; import { OAuthClientWebhooksService } from "./services/oauth-clients-webhooks.service"; +import { TeamEventTypeWebhooksService } from "./services/team-event-type-webhooks.service"; import { UserWebhooksService } from "./services/user-webhooks.service"; import { WebhooksService } from "./services/webhooks.service"; import { WebhooksRepository } from "./webhooks.repository"; +import { TeamsEventTypesWebhooksController } from "@/modules/teams/event-types/controllers/teams-event-types-webhooks.controller"; +import { RedisModule } from "@/modules/redis/redis.module"; @Module({ imports: [ PrismaModule, + RedisModule, UsersModule, EventTypesModule_2024_06_14, OAuthClientModule, @@ -25,13 +30,20 @@ import { WebhooksRepository } from "./webhooks.repository"; MembershipsModule, OAuthClientModule, ], - controllers: [WebhooksController, EventTypeWebhooksController, OAuthClientWebhooksController], + controllers: [ + WebhooksController, + EventTypeWebhooksController, + OAuthClientWebhooksController, + TeamsEventTypesWebhooksController, + ], providers: [ + TeamsEventTypesRepository, WebhooksService, WebhooksRepository, UserWebhooksService, EventTypeWebhooksService, OAuthClientWebhooksService, + TeamEventTypeWebhooksService, ], exports: [ WebhooksService, @@ -39,6 +51,7 @@ import { WebhooksRepository } from "./webhooks.repository"; UserWebhooksService, EventTypeWebhooksService, OAuthClientWebhooksService, + TeamEventTypeWebhooksService, ], }) export class WebhooksModule {} diff --git a/biome.json b/biome.json index 9b305aa059..1d4963e567 100644 --- a/biome.json +++ b/biome.json @@ -48,6 +48,9 @@ ] }, "javascript": { + "parser": { + "unsafeParameterDecoratorsEnabled": true + }, "formatter": { "arrowParentheses": "always", "bracketSpacing": true, @@ -70,6 +73,21 @@ } }, "overrides": [ + { + "includes": ["docs/api-reference/v2/openapi.json"], + "linter": { "enabled": false }, + "formatter": { "enabled": false } + }, + { + "includes": ["apps/api/v2/**/*.ts", "apps/api/v2/**/*.controller.ts"], + "linter": { + "rules": { + "style": { + "useImportType": "off" + } + } + } + }, { "includes": ["**/*.tsx"], "javascript": { @@ -140,7 +158,7 @@ } }, { - "includes": ["**/*.test.ts", "**/*.test.tsx"], + "includes": ["**/*.test.ts", "**/*.test.tsx", "**/*.e2e-spec.ts"], "linter": { "rules": { "complexity": { diff --git a/docs/api-reference/v2/openapi.json b/docs/api-reference/v2/openapi.json index bf01859e4a..16ba4bf668 100644 --- a/docs/api-reference/v2/openapi.json +++ b/docs/api-reference/v2/openapi.json @@ -69,7 +69,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] }, "post": { "operationId": "OAuthClientUsersController_createUser", @@ -115,7 +117,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] } }, "/v2/oauth-clients/{clientId}/users/{userId}": { @@ -161,7 +165,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] }, "patch": { "operationId": "OAuthClientUsersController_updateUser", @@ -215,7 +221,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] }, "delete": { "operationId": "OAuthClientUsersController_deleteUser", @@ -259,7 +267,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] } }, "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { @@ -306,7 +316,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] } }, "/v2/oauth/{clientId}/refresh": { @@ -355,7 +367,9 @@ } } }, - "tags": ["Platform / Managed Users"] + "tags": [ + "Platform / Managed Users" + ] } }, "/v2/oauth-clients/{clientId}/webhooks": { @@ -403,7 +417,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", @@ -464,7 +480,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", @@ -500,7 +518,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] } }, "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { @@ -548,7 +568,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", @@ -576,7 +598,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", @@ -604,7 +628,9 @@ } } }, - "tags": ["Platform / Webhooks"] + "tags": [ + "Platform / Webhooks" + ] } }, "/v2/organizations/{orgId}/attributes": { @@ -667,7 +693,9 @@ } } }, - "tags": ["Orgs / Attributes"] + "tags": [ + "Orgs / Attributes" + ] }, "post": { "operationId": "OrganizationsAttributesController_createOrganizationAttribute", @@ -713,7 +741,9 @@ } } }, - "tags": ["Orgs / Attributes"] + "tags": [ + "Orgs / Attributes" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}": { @@ -759,7 +789,9 @@ } } }, - "tags": ["Orgs / Attributes"] + "tags": [ + "Orgs / Attributes" + ] }, "patch": { "operationId": "OrganizationsAttributesController_updateOrganizationAttribute", @@ -813,7 +845,9 @@ } } }, - "tags": ["Orgs / Attributes"] + "tags": [ + "Orgs / Attributes" + ] }, "delete": { "operationId": "OrganizationsAttributesController_deleteOrganizationAttribute", @@ -857,7 +891,9 @@ } } }, - "tags": ["Orgs / Attributes"] + "tags": [ + "Orgs / Attributes" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options": { @@ -913,7 +949,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptions", @@ -957,7 +995,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": { @@ -1011,7 +1051,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] }, "patch": { "operationId": "OrganizationsAttributesOptionsController_updateOrganizationAttributeOption", @@ -1073,7 +1115,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/assigned": { @@ -1163,7 +1207,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned": { @@ -1253,7 +1299,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { @@ -1309,7 +1357,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptionsForUser", @@ -1353,7 +1403,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { @@ -1407,7 +1459,9 @@ } } }, - "tags": ["Orgs / Attributes / Options"] + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/bookings": { @@ -1452,7 +1506,13 @@ "type": "array", "items": { "type": "string", - "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] + "enum": [ + "upcoming", + "recurring", + "past", + "cancelled", + "unconfirmed" + ] } } }, @@ -1593,7 +1653,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -1604,7 +1667,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -1615,7 +1681,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -1626,7 +1695,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -1683,7 +1755,9 @@ } } }, - "tags": ["Orgs / Bookings"] + "tags": [ + "Orgs / Bookings" + ] } }, "/v2/organizations/{orgId}/delegation-credentials": { @@ -1749,7 +1823,9 @@ } } }, - "tags": ["Orgs / Delegation Credentials"] + "tags": [ + "Orgs / Delegation Credentials" + ] } }, "/v2/organizations/{orgId}/delegation-credentials/{credentialId}": { @@ -1823,7 +1899,9 @@ } } }, - "tags": ["Orgs / Delegation Credentials"] + "tags": [ + "Orgs / Delegation Credentials" + ] } }, "/v2/organizations/{orgId}/memberships": { @@ -1904,7 +1982,9 @@ } } }, - "tags": ["Orgs / Memberships"] + "tags": [ + "Orgs / Memberships" + ] }, "post": { "operationId": "OrganizationsMembershipsController_createMembership", @@ -1968,7 +2048,9 @@ } } }, - "tags": ["Orgs / Memberships"] + "tags": [ + "Orgs / Memberships" + ] } }, "/v2/organizations/{orgId}/memberships/{membershipId}": { @@ -2032,7 +2114,9 @@ } } }, - "tags": ["Orgs / Memberships"] + "tags": [ + "Orgs / Memberships" + ] }, "delete": { "operationId": "OrganizationsMembershipsController_deleteMembership", @@ -2094,7 +2178,9 @@ } } }, - "tags": ["Orgs / Memberships"] + "tags": [ + "Orgs / Memberships" + ] }, "patch": { "operationId": "OrganizationsMembershipsController_updateMembership", @@ -2166,7 +2252,9 @@ } } }, - "tags": ["Orgs / Memberships"] + "tags": [ + "Orgs / Memberships" + ] } }, "/v2/organizations/{orgId}/roles": { @@ -2232,7 +2320,9 @@ } } }, - "tags": ["Orgs / Roles"] + "tags": [ + "Orgs / Roles" + ] }, "get": { "operationId": "OrganizationsRolesController_getAllRoles", @@ -2311,7 +2401,9 @@ } } }, - "tags": ["Orgs / Roles"] + "tags": [ + "Orgs / Roles" + ] } }, "/v2/organizations/{orgId}/roles/{roleId}": { @@ -2375,7 +2467,9 @@ } } }, - "tags": ["Orgs / Roles"] + "tags": [ + "Orgs / Roles" + ] }, "patch": { "operationId": "OrganizationsRolesController_updateRole", @@ -2447,7 +2541,9 @@ } } }, - "tags": ["Orgs / Roles"] + "tags": [ + "Orgs / Roles" + ] }, "delete": { "operationId": "OrganizationsRolesController_deleteRole", @@ -2509,7 +2605,9 @@ } } }, - "tags": ["Orgs / Roles"] + "tags": [ + "Orgs / Roles" + ] } }, "/v2/organizations/{orgId}/roles/{roleId}/permissions": { @@ -2583,7 +2681,9 @@ } } }, - "tags": ["Orgs / Roles / Permissions"] + "tags": [ + "Orgs / Roles / Permissions" + ] }, "get": { "operationId": "OrganizationsRolesPermissionsController_listPermissions", @@ -2645,7 +2745,9 @@ } } }, - "tags": ["Orgs / Roles / Permissions"] + "tags": [ + "Orgs / Roles / Permissions" + ] }, "put": { "operationId": "OrganizationsRolesPermissionsController_setPermissions", @@ -2717,7 +2819,9 @@ } } }, - "tags": ["Orgs / Roles / Permissions"] + "tags": [ + "Orgs / Roles / Permissions" + ] }, "delete": { "operationId": "OrganizationsRolesPermissionsController_removePermissions", @@ -2810,6 +2914,7 @@ "booking.readOrgBookings", "booking.readRecordings", "booking.update", + "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -2842,7 +2947,9 @@ "description": "" } }, - "tags": ["Orgs / Roles / Permissions"] + "tags": [ + "Orgs / Roles / Permissions" + ] } }, "/v2/organizations/{orgId}/roles/{roleId}/permissions/{permission}": { @@ -2907,7 +3014,9 @@ "description": "" } }, - "tags": ["Orgs / Roles / Permissions"] + "tags": [ + "Orgs / Roles / Permissions" + ] } }, "/v2/organizations/{orgId}/routing-forms": { @@ -2956,7 +3065,10 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -2966,7 +3078,10 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -3045,7 +3160,9 @@ } } }, - "tags": ["Orgs / Routing forms"] + "tags": [ + "Orgs / Routing forms" + ] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses": { @@ -3102,7 +3219,10 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -3112,7 +3232,10 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -3178,7 +3301,9 @@ } } }, - "tags": ["Orgs / Routing forms"] + "tags": [ + "Orgs / Routing forms" + ] }, "post": { "operationId": "OrganizationsRoutingFormsResponsesController_createRoutingFormResponse", @@ -3256,7 +3381,10 @@ "description": "Format of slot times in response. Use 'range' to get start and end times.", "example": "range", "schema": { - "enum": ["range", "time"], + "enum": [ + "range", + "time" + ], "type": "string" } }, @@ -3293,7 +3421,9 @@ } } }, - "tags": ["Orgs / Routing forms"] + "tags": [ + "Orgs / Routing forms" + ] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses/{responseId}": { @@ -3357,7 +3487,9 @@ } } }, - "tags": ["Orgs / Routing forms"] + "tags": [ + "Orgs / Routing forms" + ] } }, "/v2/organizations/{orgId}/schedules": { @@ -3438,7 +3570,9 @@ } } }, - "tags": ["Orgs / Schedules"] + "tags": [ + "Orgs / Schedules" + ] } }, "/v2/organizations/{orgId}/teams": { @@ -3480,6 +3614,31 @@ "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": { @@ -3494,7 +3653,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", @@ -3558,7 +3719,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] } }, "/v2/organizations/{orgId}/teams/me": { @@ -3600,6 +3763,31 @@ "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": { @@ -3614,7 +3802,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}": { @@ -3662,7 +3852,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", @@ -3724,7 +3916,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] }, "patch": { "operationId": "OrganizationsTeamsController_updateTeam", @@ -3796,7 +3990,9 @@ } } }, - "tags": ["Orgs / Teams"] + "tags": [ + "Orgs / Teams" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings": { @@ -3841,7 +4037,13 @@ "type": "array", "items": { "type": "string", - "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] + "enum": [ + "upcoming", + "recurring", + "past", + "cancelled", + "unconfirmed" + ] } } }, @@ -3922,7 +4124,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -3933,7 +4138,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -3944,7 +4152,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -4000,7 +4211,9 @@ } } }, - "tags": ["Orgs / Teams / Bookings"] + "tags": [ + "Orgs / Teams / Bookings" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references": { @@ -4074,7 +4287,9 @@ } } }, - "tags": ["Orgs / Teams / Bookings"] + "tags": [ + "Orgs / Teams / Bookings" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect": { @@ -4104,7 +4319,9 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet"], + "enum": [ + "google-meet" + ], "type": "string" } } @@ -4121,7 +4338,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url": { @@ -4159,7 +4378,10 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["zoom", "msteams"], + "enum": [ + "zoom", + "msteams" + ], "type": "string" } }, @@ -4192,7 +4414,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing": { @@ -4221,7 +4445,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default": { @@ -4243,7 +4469,12 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet", "zoom", "msteams", "daily-video"], + "enum": [ + "google-meet", + "zoom", + "msteams", + "daily-video" + ], "type": "string" } } @@ -4260,7 +4491,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/default": { @@ -4282,7 +4515,12 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet", "zoom", "msteams", "daily-video"], + "enum": [ + "google-meet", + "zoom", + "msteams", + "daily-video" + ], "type": "string" } } @@ -4299,7 +4537,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect": { @@ -4321,7 +4561,11 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet", "zoom", "msteams"], + "enum": [ + "google-meet", + "zoom", + "msteams" + ], "type": "string" } } @@ -4338,7 +4582,9 @@ } } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback": { @@ -4392,7 +4638,9 @@ "description": "" } }, - "tags": ["Orgs / Teams / Conferencing"] + "tags": [ + "Orgs / Teams / Conferencing" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { @@ -4466,7 +4714,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", @@ -4532,7 +4782,10 @@ "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } } @@ -4549,7 +4802,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { @@ -4613,7 +4868,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", @@ -4685,7 +4942,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", @@ -4747,7 +5006,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { @@ -4821,7 +5082,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] } }, "/v2/organizations/{orgId}/teams/event-types": { @@ -4896,7 +5159,10 @@ "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } } @@ -4913,7 +5179,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types"] + "tags": [ + "Orgs / Teams / Event Types" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links": { @@ -4987,7 +5255,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types / Private Links"] + "tags": [ + "Orgs / Teams / Event Types / Private Links" + ] }, "get": { "operationId": "OrganizationsEventTypesPrivateLinksController_getPrivateLinks", @@ -5049,7 +5319,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types / Private Links"] + "tags": [ + "Orgs / Teams / Event Types / Private Links" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links/{linkId}": { @@ -5121,7 +5393,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types / Private Links"] + "tags": [ + "Orgs / Teams / Event Types / Private Links" + ] }, "delete": { "operationId": "OrganizationsEventTypesPrivateLinksController_deletePrivateLink", @@ -5191,7 +5465,9 @@ } } }, - "tags": ["Orgs / Teams / Event Types / Private Links"] + "tags": [ + "Orgs / Teams / Event Types / Private Links" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/invite": { @@ -5255,7 +5531,9 @@ } } }, - "tags": ["Orgs / Teams / Invite"] + "tags": [ + "Orgs / Teams / Invite" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { @@ -5344,7 +5622,9 @@ } } }, - "tags": ["Orgs / Teams / Memberships"] + "tags": [ + "Orgs / Teams / Memberships" + ] }, "post": { "operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership", @@ -5416,7 +5696,9 @@ } } }, - "tags": ["Orgs / Teams / Memberships"] + "tags": [ + "Orgs / Teams / Memberships" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": { @@ -5488,7 +5770,9 @@ } } }, - "tags": ["Orgs / Teams / Memberships"] + "tags": [ + "Orgs / Teams / Memberships" + ] }, "delete": { "operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership", @@ -5558,7 +5842,9 @@ } } }, - "tags": ["Orgs / Teams / Memberships"] + "tags": [ + "Orgs / Teams / Memberships" + ] }, "patch": { "operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership", @@ -5638,7 +5924,9 @@ } } }, - "tags": ["Orgs / Teams / Memberships"] + "tags": [ + "Orgs / Teams / Memberships" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles": { @@ -5712,7 +6000,9 @@ } } }, - "tags": ["Orgs / Teams / Roles"] + "tags": [ + "Orgs / Teams / Roles" + ] }, "get": { "operationId": "OrganizationsTeamsRolesController_getAllRoles", @@ -5799,7 +6089,9 @@ } } }, - "tags": ["Orgs / Teams / Roles"] + "tags": [ + "Orgs / Teams / Roles" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}": { @@ -5871,7 +6163,9 @@ } } }, - "tags": ["Orgs / Teams / Roles"] + "tags": [ + "Orgs / Teams / Roles" + ] }, "patch": { "operationId": "OrganizationsTeamsRolesController_updateRole", @@ -5951,7 +6245,9 @@ } } }, - "tags": ["Orgs / Teams / Roles"] + "tags": [ + "Orgs / Teams / Roles" + ] }, "delete": { "operationId": "OrganizationsTeamsRolesController_deleteRole", @@ -6021,7 +6317,9 @@ } } }, - "tags": ["Orgs / Teams / Roles"] + "tags": [ + "Orgs / Teams / Roles" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}/permissions": { @@ -6103,7 +6401,9 @@ } } }, - "tags": ["Orgs / Teams / Roles / Permissions"] + "tags": [ + "Orgs / Teams / Roles / Permissions" + ] }, "get": { "operationId": "OrganizationsTeamsRolesPermissionsController_listPermissions", @@ -6173,7 +6473,9 @@ } } }, - "tags": ["Orgs / Teams / Roles / Permissions"] + "tags": [ + "Orgs / Teams / Roles / Permissions" + ] }, "put": { "operationId": "OrganizationsTeamsRolesPermissionsController_setPermissions", @@ -6253,7 +6555,9 @@ } } }, - "tags": ["Orgs / Teams / Roles / Permissions"] + "tags": [ + "Orgs / Teams / Roles / Permissions" + ] }, "delete": { "operationId": "OrganizationsTeamsRolesPermissionsController_removePermissions", @@ -6342,6 +6646,7 @@ "booking.readTeamBookings", "booking.readRecordings", "booking.update", + "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -6365,7 +6670,9 @@ "description": "" } }, - "tags": ["Orgs / Teams / Roles / Permissions"] + "tags": [ + "Orgs / Teams / Roles / Permissions" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/roles/{roleId}/permissions/{permission}": { @@ -6438,7 +6745,9 @@ "description": "" } }, - "tags": ["Orgs / Teams / Roles / Permissions"] + "tags": [ + "Orgs / Teams / Roles / Permissions" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms": { @@ -6495,7 +6804,10 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -6505,7 +6817,10 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -6571,7 +6886,9 @@ } } }, - "tags": ["Orgs / Teams / Routing forms"] + "tags": [ + "Orgs / Teams / Routing forms" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses": { @@ -6636,7 +6953,10 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -6646,7 +6966,10 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -6712,7 +7035,9 @@ } } }, - "tags": ["Orgs / Teams / Routing forms / Responses"] + "tags": [ + "Orgs / Teams / Routing forms / Responses" + ] }, "post": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_createRoutingFormResponse", @@ -6798,7 +7123,10 @@ "description": "Format of slot times in response. Use 'range' to get start and end times.", "example": "range", "schema": { - "enum": ["range", "time"], + "enum": [ + "range", + "time" + ], "type": "string" } }, @@ -6835,7 +7163,9 @@ } } }, - "tags": ["Orgs / Teams / Routing forms / Responses"] + "tags": [ + "Orgs / Teams / Routing forms / Responses" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses/{responseId}": { @@ -6899,7 +7229,9 @@ } } }, - "tags": ["Orgs / Teams / Routing forms / Responses"] + "tags": [ + "Orgs / Teams / Routing forms / Responses" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/schedules": { @@ -6988,7 +7320,9 @@ } } }, - "tags": ["Orgs / Teams / Schedules"] + "tags": [ + "Orgs / Teams / Schedules" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/connect": { @@ -7049,7 +7383,9 @@ } } }, - "tags": ["Orgs / Teams / Stripe"] + "tags": [ + "Orgs / Teams / Stripe" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/check": { @@ -7078,7 +7414,9 @@ } } }, - "tags": ["Orgs / Teams / Stripe"] + "tags": [ + "Orgs / Teams / Stripe" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/save": { @@ -7123,7 +7461,9 @@ } } }, - "tags": ["Orgs / Teams / Stripe"] + "tags": [ + "Orgs / Teams / Stripe" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules": { @@ -7195,7 +7535,9 @@ } } }, - "tags": ["Orgs / Teams / Users / Schedules"] + "tags": [ + "Orgs / Teams / Users / Schedules" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows": { @@ -7284,7 +7626,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "post": { "operationId": "OrganizationTeamWorkflowsController_createEventTypeWorkflow", @@ -7348,7 +7692,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/routing-form": { @@ -7437,7 +7783,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "post": { "operationId": "OrganizationTeamWorkflowsController_createFormWorkflow", @@ -7501,7 +7849,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId}": { @@ -7565,7 +7915,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "patch": { "operationId": "OrganizationTeamWorkflowsController_updateWorkflow", @@ -7637,7 +7989,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "delete": { "operationId": "OrganizationTeamWorkflowsController_deleteWorkflow", @@ -7692,7 +8046,9 @@ "description": "" } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId}/routing-form": { @@ -7756,7 +8112,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "patch": { "operationId": "OrganizationTeamWorkflowsController_updateRoutingFormWorkflow", @@ -7828,7 +8186,9 @@ } } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] }, "delete": { "operationId": "OrganizationTeamWorkflowsController_deleteRoutingFormWorkflow", @@ -7883,7 +8243,9 @@ "description": "" } }, - "tags": ["Orgs / Teams / Workflows"] + "tags": [ + "Orgs / Teams / Workflows" + ] } }, "/v2/organizations/{orgId}/users": { @@ -7954,7 +8316,10 @@ "required": false, "in": "query", "description": "The email address or an array of email addresses to filter by", - "example": ["user1@example.com", "user2@example.com"], + "example": [ + "user1@example.com", + "user2@example.com" + ], "schema": { "type": "array", "items": { @@ -7983,7 +8348,11 @@ "example": "NONE", "schema": { "default": "AND", - "enum": ["OR", "AND", "NONE"], + "enum": [ + "OR", + "AND", + "NONE" + ], "type": "string" } }, @@ -8013,7 +8382,9 @@ } } }, - "tags": ["Orgs / Users"] + "tags": [ + "Orgs / Users" + ] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", @@ -8069,7 +8440,9 @@ } } }, - "tags": ["Orgs / Users"] + "tags": [ + "Orgs / Users" + ] } }, "/v2/organizations/{orgId}/users/{userId}": { @@ -8143,7 +8516,9 @@ } } }, - "tags": ["Orgs / Users"] + "tags": [ + "Orgs / Users" + ] }, "delete": { "operationId": "OrganizationsUsersController_deleteOrganizationUser", @@ -8205,7 +8580,9 @@ } } }, - "tags": ["Orgs / Users"] + "tags": [ + "Orgs / Users" + ] } }, "/v2/organizations/{orgId}/users/{userId}/bookings": { @@ -8266,7 +8643,13 @@ "type": "array", "items": { "type": "string", - "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] + "enum": [ + "upcoming", + "recurring", + "past", + "cancelled", + "unconfirmed" + ] } } }, @@ -8407,7 +8790,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8418,7 +8804,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8429,7 +8818,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8440,7 +8832,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8472,7 +8867,9 @@ "description": "" } }, - "tags": ["Orgs / Users / Bookings"] + "tags": [ + "Orgs / Users / Bookings" + ] } }, "/v2/organizations/{orgId}/users/{userId}/ooo": { @@ -8547,7 +8944,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8558,7 +8958,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } } @@ -8568,7 +8971,9 @@ "description": "" } }, - "tags": ["Orgs / Users / OOO"] + "tags": [ + "Orgs / Users / OOO" + ] }, "post": { "operationId": "OrganizationsUsersOOOController_createOrganizationUserOOO", @@ -8625,7 +9030,9 @@ "description": "" } }, - "tags": ["Orgs / Users / OOO"] + "tags": [ + "Orgs / Users / OOO" + ] } }, "/v2/organizations/{orgId}/users/{userId}/ooo/{oooId}": { @@ -8692,7 +9099,9 @@ "description": "" } }, - "tags": ["Orgs / Users / OOO"] + "tags": [ + "Orgs / Users / OOO" + ] }, "delete": { "operationId": "OrganizationsUsersOOOController_deleteOrganizationUserOOO", @@ -8739,7 +9148,9 @@ "description": "" } }, - "tags": ["Orgs / Users / OOO"] + "tags": [ + "Orgs / Users / OOO" + ] } }, "/v2/organizations/{orgId}/ooo": { @@ -8814,7 +9225,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8825,7 +9239,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -8845,7 +9262,9 @@ "description": "" } }, - "tags": ["Orgs / Users / OOO"] + "tags": [ + "Orgs / Users / OOO" + ] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { @@ -8911,7 +9330,9 @@ } } }, - "tags": ["Orgs / Users / Schedules"] + "tags": [ + "Orgs / Users / Schedules" + ] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", @@ -8965,7 +9386,9 @@ } } }, - "tags": ["Orgs / Users / Schedules"] + "tags": [ + "Orgs / Users / Schedules" + ] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { @@ -9029,7 +9452,9 @@ } } }, - "tags": ["Orgs / Users / Schedules"] + "tags": [ + "Orgs / Users / Schedules" + ] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", @@ -9101,7 +9526,9 @@ } } }, - "tags": ["Orgs / Users / Schedules"] + "tags": [ + "Orgs / Users / Schedules" + ] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", @@ -9163,7 +9590,9 @@ } } }, - "tags": ["Orgs / Users / Schedules"] + "tags": [ + "Orgs / Users / Schedules" + ] } }, "/v2/organizations/{orgId}/webhooks": { @@ -9244,7 +9673,9 @@ } } }, - "tags": ["Orgs / Webhooks"] + "tags": [ + "Orgs / Webhooks" + ] }, "post": { "operationId": "OrganizationsWebhooksController_createOrganizationWebhook", @@ -9308,7 +9739,9 @@ } } }, - "tags": ["Orgs / Webhooks"] + "tags": [ + "Orgs / Webhooks" + ] } }, "/v2/organizations/{orgId}/webhooks/{webhookId}": { @@ -9364,7 +9797,9 @@ } } }, - "tags": ["Orgs / Webhooks"] + "tags": [ + "Orgs / Webhooks" + ] }, "delete": { "operationId": "OrganizationsWebhooksController_deleteWebhook", @@ -9418,7 +9853,9 @@ } } }, - "tags": ["Orgs / Webhooks"] + "tags": [ + "Orgs / Webhooks" + ] }, "patch": { "operationId": "OrganizationsWebhooksController_updateOrgWebhook", @@ -9482,7 +9919,9 @@ } } }, - "tags": ["Orgs / Webhooks"] + "tags": [ + "Orgs / Webhooks" + ] } }, "/v2/api-keys/refresh": { @@ -9523,7 +9962,9 @@ } } }, - "tags": ["Api Keys"] + "tags": [ + "Api Keys" + ] } }, "/v2/bookings": { @@ -9603,7 +10044,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] }, "get": { "operationId": "BookingsController_2024_08_13_getBookings", @@ -9630,7 +10073,13 @@ "type": "array", "items": { "type": "string", - "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] + "enum": [ + "upcoming", + "recurring", + "past", + "cancelled", + "unconfirmed" + ] } } }, @@ -9771,7 +10220,10 @@ "description": "Sort results by their start time in ascending or descending order.", "example": "?sortStart=asc OR ?sortStart=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -9782,7 +10234,10 @@ "description": "Sort results by their end time in ascending or descending order.", "example": "?sortEnd=asc OR ?sortEnd=desc", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -9793,7 +10248,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -9804,7 +10262,10 @@ "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"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -9852,7 +10313,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}": { @@ -9919,7 +10382,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/recordings": { @@ -9968,7 +10433,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/transcripts": { @@ -10017,7 +10484,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/reschedule": { @@ -10102,7 +10571,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/cancel": { @@ -10187,7 +10658,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/mark-absent": { @@ -10246,7 +10719,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/reassign": { @@ -10295,7 +10770,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/reassign/{userId}": { @@ -10362,7 +10839,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/confirm": { @@ -10411,7 +10890,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/decline": { @@ -10470,7 +10951,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/calendar-links": { @@ -10519,7 +11002,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/references": { @@ -10586,7 +11071,9 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/conferencing-sessions": { @@ -10635,7 +11122,69 @@ } } }, - "tags": ["Bookings"] + "tags": [ + "Bookings" + ] + } + }, + "/v2/bookings/{bookingUid}/location": { + "patch": { + "operationId": "BookingLocationController_2024_08_13_updateBookingLocation", + "summary": "Update booking location for an existing booking", + "description": "**Current Limitation:** Updating a booking location will update the location in Cal.com, but the corresponding Calendar event will not be updated automatically. The old location will persist in the Calendar event. This is a known limitation that will be addressed in a future update.\n \n The cal-api-version header is required for this endpoint. Without it, the request will fail with a 404 error.", + "parameters": [ + { + "name": "cal-api-version", + "in": "header", + "description": "Must be set to 2024-08-13. This header is required as this endpoint does not exist in older API versions.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bookingUid", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateBookingLocationInput_2024_08_13" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateBookingLocationOutput_2024_08_13" + } + } + } + } + }, + "tags": [ + "Bookings" + ] } }, "/v2/bookings/{bookingUid}/guests": { @@ -10693,7 +11242,9 @@ } } }, - "tags": ["Bookings / Guests"] + "tags": [ + "Bookings / Guests" + ] } }, "/v2/calendars/{calendar}/event/{eventUid}": { @@ -10707,7 +11258,9 @@ "required": true, "in": "path", "schema": { - "enum": ["google"], + "enum": [ + "google" + ], "type": "string" } }, @@ -10742,7 +11295,9 @@ } } }, - "tags": ["Cal Unified Calendars"] + "tags": [ + "Cal Unified Calendars" + ] } }, "/v2/calendars/{calendar}/events/{eventUid}": { @@ -10756,7 +11311,9 @@ "required": true, "in": "path", "schema": { - "enum": ["google"], + "enum": [ + "google" + ], "type": "string" } }, @@ -10801,7 +11358,9 @@ } } }, - "tags": ["Cal Unified Calendars"] + "tags": [ + "Cal Unified Calendars" + ] } }, "/v2/calendars/ics-feed/save": { @@ -10841,7 +11400,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/ics-feed/check": { @@ -10871,7 +11432,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/busy-times": { @@ -10948,7 +11511,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars": { @@ -10978,7 +11543,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/{calendar}/connect": { @@ -11000,7 +11567,10 @@ "required": true, "in": "path", "schema": { - "enum": ["office365", "google"], + "enum": [ + "office365", + "google" + ], "type": "string" } }, @@ -11034,7 +11604,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/{calendar}/save": { @@ -11063,7 +11635,10 @@ "required": true, "in": "path", "schema": { - "enum": ["office365", "google"], + "enum": [ + "office365", + "google" + ], "type": "string" } } @@ -11073,7 +11648,9 @@ "description": "" } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/{calendar}/credentials": { @@ -11086,7 +11663,9 @@ "required": true, "in": "path", "schema": { - "enum": ["apple"], + "enum": [ + "apple" + ], "type": "string" } }, @@ -11115,7 +11694,9 @@ "description": "" } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/{calendar}/check": { @@ -11128,7 +11709,11 @@ "required": true, "in": "path", "schema": { - "enum": ["apple", "google", "office365"], + "enum": [ + "apple", + "google", + "office365" + ], "type": "string" } }, @@ -11154,7 +11739,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/calendars/{calendar}/disconnect": { @@ -11167,7 +11754,11 @@ "required": true, "in": "path", "schema": { - "enum": ["apple", "google", "office365"], + "enum": [ + "apple", + "google", + "office365" + ], "type": "string" } }, @@ -11203,7 +11794,9 @@ } } }, - "tags": ["Calendars"] + "tags": [ + "Calendars" + ] } }, "/v2/conferencing/{app}/connect": { @@ -11217,7 +11810,9 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet"], + "enum": [ + "google-meet" + ], "type": "string" } }, @@ -11243,7 +11838,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing/{app}/oauth/auth-url": { @@ -11266,7 +11863,10 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["zoom", "msteams"], + "enum": [ + "zoom", + "msteams" + ], "type": "string" } }, @@ -11299,7 +11899,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing/{app}/oauth/callback": { @@ -11321,7 +11923,10 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["zoom", "msteams"], + "enum": [ + "zoom", + "msteams" + ], "type": "string" } }, @@ -11339,7 +11944,9 @@ "description": "" } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing": { @@ -11369,7 +11976,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing/{app}/default": { @@ -11383,7 +11992,12 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet", "zoom", "msteams", "daily-video"], + "enum": [ + "google-meet", + "zoom", + "msteams", + "daily-video" + ], "type": "string" } }, @@ -11409,7 +12023,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing/default": { @@ -11439,7 +12055,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/conferencing/{app}/disconnect": { @@ -11453,7 +12071,11 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": ["google-meet", "zoom", "msteams"], + "enum": [ + "google-meet", + "zoom", + "msteams" + ], "type": "string" } }, @@ -11479,7 +12101,9 @@ } } }, - "tags": ["Conferencing"] + "tags": [ + "Conferencing" + ] } }, "/v2/destination-calendars": { @@ -11519,7 +12143,9 @@ } } }, - "tags": ["Destination Calendars"] + "tags": [ + "Destination Calendars" + ] } }, "/v2/event-types": { @@ -11570,7 +12196,9 @@ } } }, - "tags": ["Event Types"] + "tags": [ + "Event Types" + ] }, "get": { "operationId": "EventTypesController_2024_06_14_getEventTypes", @@ -11638,7 +12266,10 @@ "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } }, @@ -11682,7 +12313,9 @@ } } }, - "tags": ["Event Types"] + "tags": [ + "Event Types" + ] } }, "/v2/event-types/{eventTypeId}": { @@ -11731,7 +12364,9 @@ } } }, - "tags": ["Event Types"] + "tags": [ + "Event Types" + ] }, "patch": { "operationId": "EventTypesController_2024_06_14_updateEventType", @@ -11788,7 +12423,9 @@ } } }, - "tags": ["Event Types"] + "tags": [ + "Event Types" + ] }, "delete": { "operationId": "EventTypesController_2024_06_14_deleteEventType", @@ -11835,7 +12472,9 @@ } } }, - "tags": ["Event Types"] + "tags": [ + "Event Types" + ] } }, "/v2/event-types/{eventTypeId}/webhooks": { @@ -11883,7 +12522,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", @@ -11944,7 +12585,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] }, "delete": { "operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks", @@ -11980,7 +12623,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] } }, "/v2/event-types/{eventTypeId}/webhooks/{webhookId}": { @@ -12028,7 +12673,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhook", @@ -12056,7 +12703,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", @@ -12084,7 +12733,9 @@ } } }, - "tags": ["Event Types / Webhooks"] + "tags": [ + "Event Types / Webhooks" + ] } }, "/v2/event-types/{eventTypeId}/private-links": { @@ -12132,7 +12783,9 @@ } } }, - "tags": ["Event Types Private Links"] + "tags": [ + "Event Types Private Links" + ] }, "get": { "operationId": "EventTypesPrivateLinksController_getPrivateLinks", @@ -12168,7 +12821,9 @@ } } }, - "tags": ["Event Types Private Links"] + "tags": [ + "Event Types Private Links" + ] } }, "/v2/event-types/{eventTypeId}/private-links/{linkId}": { @@ -12224,7 +12879,9 @@ } } }, - "tags": ["Event Types Private Links"] + "tags": [ + "Event Types Private Links" + ] }, "delete": { "operationId": "EventTypesPrivateLinksController_deletePrivateLink", @@ -12268,7 +12925,9 @@ } } }, - "tags": ["Event Types Private Links"] + "tags": [ + "Event Types Private Links" + ] } }, "/v2/organizations/{orgId}/organizations": { @@ -12326,7 +12985,9 @@ } } }, - "tags": ["Managed Orgs"] + "tags": [ + "Managed Orgs" + ] }, "get": { "operationId": "OrganizationsOrganizationsController_getOrganizations", @@ -12427,7 +13088,9 @@ } } }, - "tags": ["Managed Orgs"] + "tags": [ + "Managed Orgs" + ] } }, "/v2/organizations/{orgId}/organizations/{managedOrganizationId}": { @@ -12475,7 +13138,9 @@ } } }, - "tags": ["Managed Orgs"] + "tags": [ + "Managed Orgs" + ] }, "patch": { "operationId": "OrganizationsOrganizationsController_updateOrganization", @@ -12539,7 +13204,9 @@ } } }, - "tags": ["Managed Orgs"] + "tags": [ + "Managed Orgs" + ] }, "delete": { "operationId": "OrganizationsOrganizationsController_deleteOrganization", @@ -12585,7 +13252,9 @@ } } }, - "tags": ["Managed Orgs"] + "tags": [ + "Managed Orgs" + ] } }, "/v2/me": { @@ -12615,7 +13284,9 @@ } } }, - "tags": ["Me"] + "tags": [ + "Me" + ] }, "patch": { "operationId": "MeController_updateMe", @@ -12653,7 +13324,9 @@ } } }, - "tags": ["Me"] + "tags": [ + "Me" + ] } }, "/v2/oauth-clients": { @@ -12693,7 +13366,9 @@ } } }, - "tags": ["OAuth Clients"] + "tags": [ + "OAuth Clients" + ] }, "get": { "operationId": "OAuthClientsController_getOAuthClients", @@ -12721,7 +13396,9 @@ } } }, - "tags": ["OAuth Clients"] + "tags": [ + "OAuth Clients" + ] } }, "/v2/oauth-clients/{clientId}": { @@ -12759,7 +13436,9 @@ } } }, - "tags": ["OAuth Clients"] + "tags": [ + "OAuth Clients" + ] }, "patch": { "operationId": "OAuthClientsController_updateOAuthClient", @@ -12805,7 +13484,9 @@ } } }, - "tags": ["OAuth Clients"] + "tags": [ + "OAuth Clients" + ] }, "delete": { "operationId": "OAuthClientsController_deleteOAuthClient", @@ -12841,7 +13522,9 @@ } } }, - "tags": ["OAuth Clients"] + "tags": [ + "OAuth Clients" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { @@ -12882,7 +13565,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request": { @@ -12923,7 +13608,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify": { @@ -12972,7 +13659,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify": { @@ -13021,7 +13710,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails": { @@ -13084,7 +13775,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones": { @@ -13147,7 +13840,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id}": { @@ -13193,7 +13888,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id}": { @@ -13239,7 +13936,9 @@ } } }, - "tags": ["Organization Team Verified Resources"] + "tags": [ + "Organization Team Verified Resources" + ] } }, "/v2/routing-forms/{routingFormId}/calculate-slots": { @@ -13304,7 +14003,10 @@ "description": "Format of slot times in response. Use 'range' to get start and end times.", "example": "range", "schema": { - "enum": ["range", "time"], + "enum": [ + "range", + "time" + ], "type": "string" } }, @@ -13339,7 +14041,9 @@ } } }, - "tags": ["Routing forms"] + "tags": [ + "Routing forms" + ] } }, "/v2/schedules": { @@ -13390,7 +14094,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] }, "get": { "operationId": "SchedulesController_2024_06_11_getSchedules", @@ -13429,7 +14135,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] } }, "/v2/schedules/default": { @@ -13470,7 +14178,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] } }, "/v2/schedules/{scheduleId}": { @@ -13519,7 +14229,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] }, "patch": { "operationId": "SchedulesController_2024_06_11_updateSchedule", @@ -13576,7 +14288,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] }, "delete": { "operationId": "SchedulesController_2024_06_11_deleteSchedule", @@ -13623,7 +14337,9 @@ } } }, - "tags": ["Schedules"] + "tags": [ + "Schedules" + ] } }, "/v2/selected-calendars": { @@ -13663,7 +14379,9 @@ } } }, - "tags": ["Selected Calendars"] + "tags": [ + "Selected Calendars" + ] }, "delete": { "operationId": "SelectedCalendarsController_deleteSelectedCalendar", @@ -13723,7 +14441,9 @@ } } }, - "tags": ["Selected Calendars"] + "tags": [ + "Selected Calendars" + ] } }, "/v2/slots": { @@ -13926,7 +14646,9 @@ } } }, - "tags": ["Slots"] + "tags": [ + "Slots" + ] } }, "/v2/slots/reservations": { @@ -13986,7 +14708,9 @@ } } }, - "tags": ["Slots"] + "tags": [ + "Slots" + ] } }, "/v2/slots/reservations/{uid}": { @@ -14026,7 +14750,9 @@ } } }, - "tags": ["Slots"] + "tags": [ + "Slots" + ] }, "patch": { "operationId": "SlotsController_2024_09_04_updateReservedSlot", @@ -14074,7 +14800,9 @@ } } }, - "tags": ["Slots"] + "tags": [ + "Slots" + ] }, "delete": { "operationId": "SlotsController_2024_09_04_deleteReservedSlot", @@ -14115,7 +14843,9 @@ } } }, - "tags": ["Slots"] + "tags": [ + "Slots" + ] } }, "/v2/stripe/connect": { @@ -14145,7 +14875,9 @@ } } }, - "tags": ["Stripe"] + "tags": [ + "Stripe" + ] } }, "/v2/stripe/save": { @@ -14182,7 +14914,9 @@ } } }, - "tags": ["Stripe"] + "tags": [ + "Stripe" + ] } }, "/v2/stripe/check": { @@ -14212,7 +14946,9 @@ } } }, - "tags": ["Stripe"] + "tags": [ + "Stripe" + ] } }, "/v2/teams": { @@ -14252,7 +14988,9 @@ } } }, - "tags": ["Teams"] + "tags": [ + "Teams" + ] }, "get": { "operationId": "TeamsController_getTeams", @@ -14280,7 +15018,9 @@ } } }, - "tags": ["Teams"] + "tags": [ + "Teams" + ] } }, "/v2/teams/{teamId}": { @@ -14318,7 +15058,9 @@ } } }, - "tags": ["Teams"] + "tags": [ + "Teams" + ] }, "patch": { "operationId": "TeamsController_updateTeam", @@ -14364,7 +15106,9 @@ } } }, - "tags": ["Teams"] + "tags": [ + "Teams" + ] }, "delete": { "operationId": "TeamsController_deleteTeam", @@ -14400,7 +15144,9 @@ } } }, - "tags": ["Teams"] + "tags": [ + "Teams" + ] } }, "/v2/teams/{teamId}/event-types": { @@ -14448,7 +15194,9 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] }, "get": { "operationId": "TeamsEventTypesController_getTeamEventTypes", @@ -14487,7 +15235,10 @@ "in": "query", "description": "Sort event types by creation date. When not provided, no explicit ordering is applied.", "schema": { - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" } } @@ -14504,7 +15255,9 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}": { @@ -14550,7 +15303,9 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] }, "patch": { "operationId": "TeamsEventTypesController_updateTeamEventType", @@ -14604,7 +15359,9 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] }, "delete": { "operationId": "TeamsEventTypesController_deleteTeamEventType", @@ -14648,7 +15405,9 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { @@ -14704,7 +15463,245 @@ } } }, - "tags": ["Teams / Event Types"] + "tags": [ + "Teams / Event Types" + ] + } + }, + "/v2/teams/{teamId}/event-types/{eventTypeId}/webhooks": { + "post": { + "operationId": "TeamsEventTypesWebhooksController_createTeamEventTypeWebhook", + "summary": "Create a webhook for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "eventTypeId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWebhookInputDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] + }, + "get": { + "operationId": "TeamsEventTypesWebhooksController_getTeamEventTypeWebhooks", + "summary": "Get all webhooks for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "eventTypeId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeWebhooksOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] + }, + "delete": { + "operationId": "TeamsEventTypesWebhooksController_deleteAllTeamEventTypeWebhooks", + "summary": "Delete all webhooks for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "eventTypeId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] + } + }, + "/v2/teams/{teamId}/event-types/{eventTypeId}/webhooks/{webhookId}": { + "patch": { + "operationId": "TeamsEventTypesWebhooksController_updateTeamEventTypeWebhook", + "summary": "Update a webhook for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "webhookId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateWebhookInputDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] + }, + "get": { + "operationId": "TeamsEventTypesWebhooksController_getTeamEventTypeWebhook", + "summary": "Get a webhook for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] + }, + "delete": { + "operationId": "TeamsEventTypesWebhooksController_deleteTeamEventTypeWebhook", + "summary": "Delete a webhook for a team event type", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Teams / Event Types / Webhooks" + ] } }, "/v2/teams/{teamId}/memberships": { @@ -14752,7 +15749,9 @@ } } }, - "tags": ["Teams / Memberships"] + "tags": [ + "Teams / Memberships" + ] }, "get": { "operationId": "TeamsMembershipsController_getTeamMemberships", @@ -14827,7 +15826,9 @@ } } }, - "tags": ["Teams / Memberships"] + "tags": [ + "Teams / Memberships" + ] } }, "/v2/teams/{teamId}/memberships/{membershipId}": { @@ -14873,7 +15874,9 @@ } } }, - "tags": ["Teams / Memberships"] + "tags": [ + "Teams / Memberships" + ] }, "patch": { "operationId": "TeamsMembershipsController_updateTeamMembership", @@ -14927,7 +15930,9 @@ } } }, - "tags": ["Teams / Memberships"] + "tags": [ + "Teams / Memberships" + ] }, "delete": { "operationId": "TeamsMembershipsController_deleteTeamMembership", @@ -14971,7 +15976,9 @@ } } }, - "tags": ["Teams / Memberships"] + "tags": [ + "Teams / Memberships" + ] } }, "/v2/teams/{teamId}/schedules": { @@ -15034,7 +16041,9 @@ } } }, - "tags": ["Teams / Schedules"] + "tags": [ + "Teams / Schedules" + ] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/request": { @@ -15075,7 +16084,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/request": { @@ -15116,7 +16127,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/verify": { @@ -15165,7 +16178,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/verify": { @@ -15214,7 +16229,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/emails": { @@ -15277,7 +16294,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/phones": { @@ -15340,7 +16359,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/emails/{id}": { @@ -15386,7 +16407,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/teams/{teamId}/verified-resources/phones/{id}": { @@ -15432,7 +16455,9 @@ } } }, - "tags": ["Teams Verified Resources"] + "tags": [ + "Teams Verified Resources" + ] } }, "/v2/verified-resources/emails/verification-code/request": { @@ -15473,7 +16498,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/phones/verification-code/request": { @@ -15514,7 +16541,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/emails/verification-code/verify": { @@ -15555,7 +16584,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/phones/verification-code/verify": { @@ -15596,7 +16627,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/emails": { @@ -15651,7 +16684,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/phones": { @@ -15706,7 +16741,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/emails/{id}": { @@ -15744,7 +16781,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/verified-resources/phones/{id}": { @@ -15782,7 +16821,9 @@ } } }, - "tags": ["Verified Resources"] + "tags": [ + "Verified Resources" + ] } }, "/v2/webhooks": { @@ -15822,7 +16863,9 @@ } } }, - "tags": ["Webhooks"] + "tags": [ + "Webhooks" + ] }, "get": { "operationId": "WebhooksController_getWebhooks", @@ -15876,7 +16919,9 @@ } } }, - "tags": ["Webhooks"] + "tags": [ + "Webhooks" + ] } }, "/v2/webhooks/{webhookId}": { @@ -15924,7 +16969,9 @@ } } }, - "tags": ["Webhooks"] + "tags": [ + "Webhooks" + ] }, "get": { "operationId": "WebhooksController_getWebhook", @@ -15952,7 +16999,9 @@ } } }, - "tags": ["Webhooks"] + "tags": [ + "Webhooks" + ] }, "delete": { "operationId": "WebhooksController_deleteWebhook", @@ -15988,7 +17037,9 @@ } } }, - "tags": ["Webhooks"] + "tags": [ + "Webhooks" + ] } } }, @@ -16131,7 +17182,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -16140,7 +17194,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateManagedUserInput": { "type": "object", @@ -16156,14 +17213,25 @@ }, "timeFormat": { "type": "number", - "enum": [12, 24], + "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"] + "enum": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ] }, "timeZone": { "type": "string", @@ -16237,7 +17305,10 @@ } } }, - "required": ["email", "name"] + "required": [ + "email", + "name" + ] }, "CreateManagedUserData": { "type": "object", @@ -16260,7 +17331,13 @@ "type": "number" } }, - "required": ["accessToken", "refreshToken", "user", "accessTokenExpiresAt", "refreshTokenExpiresAt"] + "required": [ + "accessToken", + "refreshToken", + "user", + "accessTokenExpiresAt", + "refreshTokenExpiresAt" + ] }, "CreateManagedUserOutput": { "type": "object", @@ -16268,7 +17345,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/CreateManagedUserData" @@ -16277,7 +17357,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetManagedUserOutput": { "type": "object", @@ -16285,13 +17368,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ManagedUserOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateManagedUserInput": { "type": "object", @@ -16304,7 +17393,10 @@ }, "timeFormat": { "type": "number", - "enum": [12, 24], + "enum": [ + 12, + 24 + ], "example": 12, "description": "Must be 12 or 24" }, @@ -16313,7 +17405,15 @@ }, "weekStart": { "type": "string", - "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + "enum": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], "example": "Monday" }, "timeZone": { @@ -16405,7 +17505,12 @@ "type": "number" } }, - "required": ["accessToken", "refreshToken", "accessTokenExpiresAt", "refreshTokenExpiresAt"] + "required": [ + "accessToken", + "refreshToken", + "accessTokenExpiresAt", + "refreshTokenExpiresAt" + ] }, "KeysResponseDto": { "type": "object", @@ -16413,13 +17518,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/KeysDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOAuthClientInput": { "type": "object", @@ -16479,7 +17590,11 @@ "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"] + "required": [ + "name", + "redirectUris", + "permissions" + ] }, "CreateOAuthClientOutput": { "type": "object", @@ -16493,14 +17608,20 @@ "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi" } }, - "required": ["clientId", "clientSecret"] + "required": [ + "clientId", + "clientSecret" + ] }, "CreateOAuthClientResponseDto": { "type": "object", "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { @@ -16515,7 +17636,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "PlatformOAuthClientDto": { "type": "object", @@ -16550,14 +17674,19 @@ "PROFILE_WRITE" ] }, - "example": ["BOOKING_READ", "BOOKING_WRITE"] + "example": [ + "BOOKING_READ", + "BOOKING_WRITE" + ] }, "logo": { "type": "object", "example": "https://example.com/logo.png" }, "redirectUris": { - "example": ["https://example.com/callback"], + "example": [ + "https://example.com/callback" + ], "type": "array", "items": { "type": "string" @@ -16618,7 +17747,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -16627,7 +17759,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetOAuthClientResponseDto": { "type": "object", @@ -16635,13 +17770,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/PlatformOAuthClientDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOAuthClientInput": { "type": "object", @@ -16688,7 +17829,9 @@ "description": "Managed user's refresh token." } }, - "required": ["refreshToken"] + "required": [ + "refreshToken" + ] }, "RefreshApiKeyInput": { "type": "object", @@ -16714,7 +17857,9 @@ "type": "string" } }, - "required": ["apiKey"] + "required": [ + "apiKey" + ] }, "RefreshApiKeyOutput": { "type": "object", @@ -16722,31 +17867,48 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ApiKeyOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "BookerLayouts_2024_06_14": { "type": "object", "properties": { "defaultLayout": { "type": "string", - "enum": ["month", "week", "column"] + "enum": [ + "month", + "week", + "column" + ] }, "enabledLayouts": { "type": "array", "description": "Array of valid layouts - month, week or column", "items": { "type": "string", - "enum": ["month", "week", "column"] + "enum": [ + "month", + "week", + "column" + ] } } }, - "required": ["defaultLayout", "enabledLayouts"] + "required": [ + "defaultLayout", + "enabledLayouts" + ] }, "EventTypeColor_2024_06_14": { "type": "object", @@ -16762,7 +17924,10 @@ "example": "#fafafa" } }, - "required": ["lightThemeHex", "darkThemeHex"] + "required": [ + "lightThemeHex", + "darkThemeHex" + ] }, "DestinationCalendar_2024_06_14": { "type": "object", @@ -16776,7 +17941,10 @@ "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"] + "required": [ + "integration", + "externalId" + ] }, "InputAddressLocation_2024_06_14": { "type": "object", @@ -16794,7 +17962,11 @@ "type": "boolean" } }, - "required": ["type", "address", "public"] + "required": [ + "type", + "address", + "public" + ] }, "InputLinkLocation_2024_06_14": { "type": "object", @@ -16812,7 +17984,11 @@ "type": "boolean" } }, - "required": ["type", "link", "public"] + "required": [ + "type", + "link", + "public" + ] }, "InputIntegrationLocation_2024_06_14": { "type": "object", @@ -16858,7 +18034,10 @@ ] } }, - "required": ["type", "integration"] + "required": [ + "type", + "integration" + ] }, "InputPhoneLocation_2024_06_14": { "type": "object", @@ -16876,7 +18055,11 @@ "type": "boolean" } }, - "required": ["type", "phone", "public"] + "required": [ + "type", + "phone", + "public" + ] }, "PhoneFieldInput_2024_06_14": { "type": "object", @@ -16909,7 +18092,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "AddressFieldInput_2024_06_14": { "type": "object", @@ -16944,7 +18134,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "TextFieldInput_2024_06_14": { "type": "object", @@ -16979,7 +18176,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "NumberFieldInput_2024_06_14": { "type": "object", @@ -17014,7 +18218,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "TextAreaFieldInput_2024_06_14": { "type": "object", @@ -17049,7 +18260,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "SelectFieldInput_2024_06_14": { "type": "object", @@ -17076,7 +18294,10 @@ "example": "Select..." }, "options": { - "example": ["Option 1", "Option 2"], + "example": [ + "Option 1", + "Option 2" + ], "type": "array", "items": { "type": "string" @@ -17091,7 +18312,15 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "options", + "hidden" + ] }, "MultiSelectFieldInput_2024_06_14": { "type": "object", @@ -17114,7 +18343,10 @@ "type": "boolean" }, "options": { - "example": ["Option 1", "Option 2"], + "example": [ + "Option 1", + "Option 2" + ], "type": "array", "items": { "type": "string" @@ -17129,7 +18361,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden" + ] }, "MultiEmailFieldInput_2024_06_14": { "type": "object", @@ -17164,7 +18403,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "CheckboxGroupFieldInput_2024_06_14": { "type": "object", @@ -17187,7 +18433,10 @@ "type": "boolean" }, "options": { - "example": ["Checkbox 1", "Checkbox 2"], + "example": [ + "Checkbox 1", + "Checkbox 2" + ], "type": "array", "items": { "type": "string" @@ -17202,7 +18451,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden" + ] }, "RadioGroupFieldInput_2024_06_14": { "type": "object", @@ -17225,7 +18481,10 @@ "type": "boolean" }, "options": { - "example": ["Radio 1", "Radio 2"], + "example": [ + "Radio 1", + "Radio 2" + ], "type": "array", "items": { "type": "string" @@ -17240,7 +18499,14 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden" + ] }, "BooleanFieldInput_2024_06_14": { "type": "object", @@ -17271,7 +18537,13 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "hidden" + ] }, "UrlFieldInput_2024_06_14": { "type": "object", @@ -17306,14 +18578,25 @@ "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"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden" + ] }, "BusinessDaysWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", - "enum": ["businessDays", "calendarDays", "range"], + "enum": [ + "businessDays", + "calendarDays", + "range" + ], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { @@ -17327,14 +18610,21 @@ "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"] + "required": [ + "type", + "value" + ] }, "CalendarDaysWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", - "enum": ["businessDays", "calendarDays", "range"], + "enum": [ + "businessDays", + "calendarDays", + "range" + ], "description": "Whether the window should be business days, calendar days or a range of dates" }, "value": { @@ -17348,18 +18638,28 @@ "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"] + "required": [ + "type", + "value" + ] }, "RangeWindow_2024_06_14": { "type": "object", "properties": { "type": { "type": "string", - "enum": ["businessDays", "calendarDays", "range"], + "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"], + "example": [ + "2030-09-05", + "2030-09-09" + ], "description": "Date range for when this event can be booked.", "type": "array", "items": { @@ -17367,7 +18667,10 @@ } } }, - "required": ["type", "value"] + "required": [ + "type", + "value" + ] }, "BaseBookingLimitsCount_2024_06_14": { "type": "object", @@ -17421,7 +18724,9 @@ "example": true } }, - "required": ["disabled"] + "required": [ + "disabled" + ] }, "BaseBookingLimitsDuration_2024_06_14": { "type": "object", @@ -17463,10 +18768,18 @@ }, "frequency": { "type": "string", - "enum": ["yearly", "monthly", "weekly"] + "enum": [ + "yearly", + "monthly", + "weekly" + ] } }, - "required": ["interval", "occurrences", "frequency"] + "required": [ + "interval", + "occurrences", + "frequency" + ] }, "NoticeThreshold_2024_06_14": { "type": "object", @@ -17482,7 +18795,10 @@ "example": 30 } }, - "required": ["unit", "count"] + "required": [ + "unit", + "count" + ] }, "BaseConfirmationPolicy_2024_06_14": { "type": "object", @@ -17490,7 +18806,10 @@ "type": { "type": "string", "description": "The policy that determines when confirmation is required", - "enum": ["always", "time"], + "enum": [ + "always", + "time" + ], "example": "always" }, "noticeThreshold": { @@ -17506,7 +18825,10 @@ "description": "Unconfirmed bookings still block calendar slots." } }, - "required": ["type", "blockUnconfirmedBookingsInBooker"] + "required": [ + "type", + "blockUnconfirmedBookingsInBooker" + ] }, "Seats_2024_06_14": { "type": "object", @@ -17527,7 +18849,11 @@ "example": true } }, - "required": ["seatsPerTimeSlot", "showAttendeeInfo", "showAvailabilityCount"] + "required": [ + "seatsPerTimeSlot", + "showAttendeeInfo", + "showAvailabilityCount" + ] }, "InputAttendeeAddressLocation_2024_06_14": { "type": "object", @@ -17538,7 +18864,9 @@ "description": "only allowed value for type is `attendeeAddress`" } }, - "required": ["type"] + "required": [ + "type" + ] }, "InputAttendeePhoneLocation_2024_06_14": { "type": "object", @@ -17549,7 +18877,9 @@ "description": "only allowed value for type is `attendeePhone`" } }, - "required": ["type"] + "required": [ + "type" + ] }, "InputAttendeeDefinedLocation_2024_06_14": { "type": "object", @@ -17560,7 +18890,9 @@ "description": "only allowed value for type is `attendeeDefined`" } }, - "required": ["type"] + "required": [ + "type" + ] }, "NameDefaultFieldInput_2024_06_14": { "type": "object", @@ -17581,7 +18913,11 @@ "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"] + "required": [ + "type", + "label", + "placeholder" + ] }, "EmailDefaultFieldInput_2024_06_14": { "type": "object", @@ -17610,7 +18946,11 @@ "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"] + "required": [ + "type", + "label", + "placeholder" + ] }, "TitleDefaultFieldInput_2024_06_14": { "type": "object", @@ -17638,7 +18978,9 @@ "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"] + "required": [ + "slug" + ] }, "LocationDefaultFieldInput_2024_06_14": { "type": "object", @@ -17652,7 +18994,9 @@ "type": "string" } }, - "required": ["slug"] + "required": [ + "slug" + ] }, "NotesDefaultFieldInput_2024_06_14": { "type": "object", @@ -17680,7 +19024,9 @@ "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"] + "required": [ + "slug" + ] }, "GuestsDefaultFieldInput_2024_06_14": { "type": "object", @@ -17708,7 +19054,9 @@ "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"] + "required": [ + "slug" + ] }, "RescheduleReasonDefaultFieldInput_2024_06_14": { "type": "object", @@ -17736,7 +19084,9 @@ "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"] + "required": [ + "slug" + ] }, "InputOrganizersDefaultApp_2024_06_14": { "type": "object", @@ -17747,7 +19097,9 @@ "description": "only allowed value for type is `organizersDefaultApp`" } }, - "required": ["type"] + "required": [ + "type" + ] }, "EmailSettings_2024_06_14": { "type": "object", @@ -17803,7 +19155,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -18091,7 +19447,11 @@ } } }, - "required": ["lengthInMinutes", "title", "slug"] + "required": [ + "lengthInMinutes", + "title", + "slug" + ] }, "OutputAddressLocation_2024_06_14": { "type": "object", @@ -18109,7 +19469,11 @@ "type": "boolean" } }, - "required": ["type", "address", "public"] + "required": [ + "type", + "address", + "public" + ] }, "OutputLinkLocation_2024_06_14": { "type": "object", @@ -18127,7 +19491,11 @@ "type": "boolean" } }, - "required": ["type", "link", "public"] + "required": [ + "type", + "link", + "public" + ] }, "OutputIntegrationLocation_2024_06_14": { "type": "object", @@ -18181,7 +19549,10 @@ "description": "Credential ID associated with the integration" } }, - "required": ["type", "integration"] + "required": [ + "type", + "integration" + ] }, "OutputPhoneLocation_2024_06_14": { "type": "object", @@ -18199,7 +19570,11 @@ "type": "boolean" } }, - "required": ["type", "phone", "public"] + "required": [ + "type", + "phone", + "public" + ] }, "OutputOrganizersDefaultAppLocation_2024_06_14": { "type": "object", @@ -18210,7 +19585,9 @@ "description": "only allowed value for type is `organizersDefaultApp`" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OutputUnknownLocation_2024_06_14": { "type": "object", @@ -18224,7 +19601,10 @@ "type": "string" } }, - "required": ["type", "location"] + "required": [ + "type", + "location" + ] }, "EmailDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18264,7 +19644,13 @@ "default": "email" } }, - "required": ["type", "label", "placeholder", "isDefault", "slug"] + "required": [ + "type", + "label", + "placeholder", + "isDefault", + "slug" + ] }, "NameDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18299,7 +19685,14 @@ "type": "boolean" } }, - "required": ["type", "label", "placeholder", "isDefault", "slug", "required"] + "required": [ + "type", + "label", + "placeholder", + "isDefault", + "slug", + "required" + ] }, "LocationDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18330,7 +19723,14 @@ "type": "string" } }, - "required": ["isDefault", "slug", "type", "required", "hidden", "label"] + "required": [ + "isDefault", + "slug", + "type", + "required", + "hidden", + "label" + ] }, "RescheduleReasonDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18369,7 +19769,11 @@ "default": "textarea" } }, - "required": ["slug", "isDefault", "type"] + "required": [ + "slug", + "isDefault", + "type" + ] }, "TitleDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18408,7 +19812,11 @@ "default": "text" } }, - "required": ["slug", "isDefault", "type"] + "required": [ + "slug", + "isDefault", + "type" + ] }, "NotesDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18447,7 +19855,11 @@ "default": "textarea" } }, - "required": ["slug", "isDefault", "type"] + "required": [ + "slug", + "isDefault", + "type" + ] }, "GuestsDefaultFieldOutput_2024_06_14": { "type": "object", @@ -18486,7 +19898,11 @@ "default": "multiemail" } }, - "required": ["slug", "isDefault", "type"] + "required": [ + "slug", + "isDefault", + "type" + ] }, "AddressFieldOutput_2024_06_14": { "type": "object", @@ -18527,7 +19943,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "BooleanFieldOutput_2024_06_14": { "type": "object", @@ -18564,7 +19988,14 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "hidden", + "isDefault" + ] }, "CheckboxGroupFieldOutput_2024_06_14": { "type": "object", @@ -18587,7 +20018,10 @@ "type": "boolean" }, "options": { - "example": ["Checkbox 1", "Checkbox 2"], + "example": [ + "Checkbox 1", + "Checkbox 2" + ], "type": "array", "items": { "type": "string" @@ -18608,7 +20042,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden", + "isDefault" + ] }, "MultiEmailFieldOutput_2024_06_14": { "type": "object", @@ -18649,7 +20091,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "MultiSelectFieldOutput_2024_06_14": { "type": "object", @@ -18672,7 +20122,10 @@ "type": "boolean" }, "options": { - "example": ["Option 1", "Option 2"], + "example": [ + "Option 1", + "Option 2" + ], "type": "array", "items": { "type": "string" @@ -18693,7 +20146,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden", + "isDefault" + ] }, "UrlFieldOutput_2024_06_14": { "type": "object", @@ -18734,7 +20195,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "NumberFieldOutput_2024_06_14": { "type": "object", @@ -18775,7 +20244,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "PhoneFieldOutput_2024_06_14": { "type": "object", @@ -18814,7 +20291,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "RadioGroupFieldOutput_2024_06_14": { "type": "object", @@ -18837,7 +20322,10 @@ "type": "boolean" }, "options": { - "example": ["Radio 1", "Radio 2"], + "example": [ + "Radio 1", + "Radio 2" + ], "type": "array", "items": { "type": "string" @@ -18858,7 +20346,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "options", + "hidden", + "isDefault" + ] }, "SelectFieldOutput_2024_06_14": { "type": "object", @@ -18885,7 +20381,10 @@ "example": "Select..." }, "options": { - "example": ["Option 1", "Option 2"], + "example": [ + "Option 1", + "Option 2" + ], "type": "array", "items": { "type": "string" @@ -18906,7 +20405,16 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "options", + "hidden", + "isDefault" + ] }, "TextAreaFieldOutput_2024_06_14": { "type": "object", @@ -18947,7 +20455,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "TextFieldOutput_2024_06_14": { "type": "object", @@ -18988,7 +20504,15 @@ "default": false } }, - "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] + "required": [ + "type", + "slug", + "label", + "required", + "placeholder", + "hidden", + "isDefault" + ] }, "BookerActiveBookingsLimitOutput_2024_06_14": { "type": "object", @@ -19016,7 +20540,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -19308,14 +20836,20 @@ "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "EventTypeTeam": { "type": "object", @@ -19372,7 +20906,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -19647,7 +21185,11 @@ }, "schedulingType": { "type": "string", - "enum": ["roundRobin", "collective", "managed"] + "enum": [ + "roundRobin", + "collective", + "managed" + ] }, "team": { "$ref": "#/components/schemas/EventTypeTeam" @@ -19696,7 +21238,10 @@ "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { @@ -19710,14 +21255,20 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetEventTypesOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { @@ -19727,7 +21278,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateEventTypeInput_2024_06_14": { "type": "object", @@ -19737,7 +21291,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -20028,14 +21586,20 @@ "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { "$ref": "#/components/schemas/EventTypeOutput_2024_06_14" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteData_2024_06_14": { "type": "object", @@ -20056,21 +21620,32 @@ "type": "string" } }, - "required": ["id", "lengthInMinutes", "title", "slug"] + "required": [ + "id", + "lengthInMinutes", + "title", + "slug" + ] }, "DeleteEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", - "enum": ["success", "error"], + "enum": [ + "success", + "error" + ], "example": "success" }, "data": { "$ref": "#/components/schemas/DeleteData_2024_06_14" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "SelectedCalendarsInputDto": { "type": "object", @@ -20088,7 +21663,11 @@ "type": "string" } }, - "required": ["integration", "externalId", "credentialId"] + "required": [ + "integration", + "externalId", + "credentialId" + ] }, "SelectedCalendarOutputDto": { "type": "object", @@ -20107,7 +21686,12 @@ "nullable": true } }, - "required": ["userId", "integration", "externalId", "credentialId"] + "required": [ + "userId", + "integration", + "externalId", + "credentialId" + ] }, "SelectedCalendarOutputResponseDto": { "type": "object", @@ -20115,13 +21699,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/SelectedCalendarOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "StripConnectOutputDto": { "type": "object", @@ -20130,7 +21720,9 @@ "type": "string" } }, - "required": ["authUrl"] + "required": [ + "authUrl" + ] }, "StripConnectOutputResponseDto": { "type": "object", @@ -20138,13 +21730,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/StripConnectOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "StripCredentialsSaveOutputResponseDto": { "type": "object", @@ -20153,7 +21751,9 @@ "type": "string" } }, - "required": ["url"] + "required": [ + "url" + ] }, "StripCredentialsCheckOutputResponseDto": { "type": "object", @@ -20163,7 +21763,9 @@ "example": "success" } }, - "required": ["status"] + "required": [ + "status" + ] }, "OrgTeamOutputDto": { "type": "object", @@ -20239,7 +21841,11 @@ "default": "Sunday" } }, - "required": ["id", "name", "isOrganization"] + "required": [ + "id", + "name", + "isOrganization" + ] }, "OrgTeamsOutputResponseDto": { "type": "object", @@ -20247,7 +21853,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -20256,7 +21865,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OrgMeTeamsOutputResponseDto": { "type": "object", @@ -20264,7 +21876,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -20273,7 +21888,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OrgTeamOutputResponseDto": { "type": "object", @@ -20281,13 +21899,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrgTeamOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrgTeamDto": { "type": "object", @@ -20452,19 +22076,40 @@ "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"] + "required": [ + "name" + ] }, "ScheduleAvailabilityInput_2024_06_11": { "type": "object", "properties": { "days": { "type": "array", - "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - "example": ["Monday", "Tuesday"], + "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"] + "enum": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ] } }, "startTime": { @@ -20480,7 +22125,11 @@ "description": "endTime must be a valid time in format HH:MM e.g. 15:00" } }, - "required": ["days", "startTime", "endTime"] + "required": [ + "days", + "startTime", + "endTime" + ] }, "ScheduleOverrideInput_2024_06_11": { "type": "object", @@ -20502,7 +22151,11 @@ "description": "endTime must be a valid time in format HH:MM e.g. 13:00" } }, - "required": ["date", "startTime", "endTime"] + "required": [ + "date", + "startTime", + "endTime" + ] }, "ScheduleOutput_2024_06_11": { "type": "object", @@ -20526,12 +22179,18 @@ "availability": { "example": [ { - "days": ["Monday", "Tuesday"], + "days": [ + "Monday", + "Tuesday" + ], "startTime": "17:00", "endTime": "19:00" }, { - "days": ["Wednesday", "Thursday"], + "days": [ + "Wednesday", + "Thursday" + ], "startTime": "16:00", "endTime": "20:00" } @@ -20559,7 +22218,15 @@ } } }, - "required": ["id", "ownerId", "name", "timeZone", "availability", "isDefault", "overrides"] + "required": [ + "id", + "ownerId", + "name", + "timeZone", + "availability", + "isDefault", + "overrides" + ] }, "GetSchedulesOutput_2024_06_11": { "type": "object", @@ -20567,7 +22234,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -20579,7 +22249,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateScheduleInput_2024_06_11": { "type": "object", @@ -20597,12 +22270,18 @@ "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"], + "days": [ + "Monday", + "Tuesday" + ], "startTime": "17:00", "endTime": "19:00" }, { - "days": ["Wednesday", "Thursday"], + "days": [ + "Wednesday", + "Thursday" + ], "startTime": "16:00", "endTime": "20:00" } @@ -20632,7 +22311,11 @@ } } }, - "required": ["name", "timeZone", "isDefault"] + "required": [ + "name", + "timeZone", + "isDefault" + ] }, "CreateScheduleOutput_2024_06_11": { "type": "object", @@ -20640,13 +22323,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetScheduleOutput_2024_06_11": { "type": "object", @@ -20654,7 +22343,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "nullable": true, @@ -20668,7 +22360,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateScheduleInput_2024_06_11": { "type": "object", @@ -20684,7 +22379,10 @@ "availability": { "example": [ { - "days": ["Monday", "Tuesday"], + "days": [ + "Monday", + "Tuesday" + ], "startTime": "09:00", "endTime": "10:00" } @@ -20719,7 +22417,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" @@ -20728,7 +22429,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteScheduleOutput_2024_06_11": { "type": "object", @@ -20736,10 +22440,15 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "ProfileOutput": { "type": "object", @@ -20766,7 +22475,11 @@ "example": "john_doe" } }, - "required": ["id", "organizationId", "userId"] + "required": [ + "id", + "organizationId", + "userId" + ] }, "GetOrgUsersWithProfileOutput": { "type": "object", @@ -20908,7 +22621,15 @@ ] } }, - "required": ["id", "email", "timeZone", "weekStart", "hideBranding", "createdDate", "profile"] + "required": [ + "id", + "email", + "timeZone", + "weekStart", + "hideBranding", + "createdDate", + "profile" + ] }, "GetOrganizationUsersResponseDTO": { "type": "object", @@ -20916,7 +22637,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -20925,7 +22649,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOrganizationUserInput": { "type": "object", @@ -21015,14 +22742,20 @@ "organizationRole": { "type": "string", "default": "MEMBER", - "enum": ["MEMBER", "ADMIN", "OWNER"] + "enum": [ + "MEMBER", + "ADMIN", + "OWNER" + ] }, "autoAccept": { "type": "boolean", "default": true } }, - "required": ["email"] + "required": [ + "email" + ] }, "GetOrganizationUserOutput": { "type": "object", @@ -21030,13 +22763,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/GetOrgUsersWithProfileOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrganizationUserInput": { "type": "object", @@ -21052,7 +22791,10 @@ "type": "string" } }, - "required": ["id", "name"] + "required": [ + "id", + "name" + ] }, "TextAttribute": { "type": "object", @@ -21073,7 +22815,13 @@ "type": "string" } }, - "required": ["id", "name", "type", "option", "optionId"] + "required": [ + "id", + "name", + "type", + "option", + "optionId" + ] }, "NumberAttribute": { "type": "object", @@ -21094,7 +22842,13 @@ "type": "string" } }, - "required": ["id", "name", "type", "option", "optionId"] + "required": [ + "id", + "name", + "type", + "option", + "optionId" + ] }, "SingleSelectAttribute": { "type": "object", @@ -21115,7 +22869,13 @@ "type": "string" } }, - "required": ["id", "name", "type", "option", "optionId"] + "required": [ + "id", + "name", + "type", + "option", + "optionId" + ] }, "MultiSelectAttributeOption": { "type": "object", @@ -21127,7 +22887,10 @@ "type": "string" } }, - "required": ["optionId", "option"] + "required": [ + "optionId", + "option" + ] }, "MultiSelectAttribute": { "type": "object", @@ -21148,7 +22911,12 @@ } } }, - "required": ["id", "name", "type", "options"] + "required": [ + "id", + "name", + "type", + "options" + ] }, "MembershipUserOutputDto": { "type": "object", @@ -21175,7 +22943,9 @@ } } }, - "required": ["email"] + "required": [ + "email" + ] }, "OrganizationMembershipOutput": { "type": "object", @@ -21194,7 +22964,11 @@ }, "role": { "type": "string", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean" @@ -21222,7 +22996,15 @@ } } }, - "required": ["id", "userId", "teamId", "accepted", "role", "user", "attributes"] + "required": [ + "id", + "userId", + "teamId", + "accepted", + "role", + "user", + "attributes" + ] }, "GetAllOrgMemberships": { "type": "object", @@ -21230,13 +23012,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOrgMembershipDto": { "type": "object", @@ -21251,7 +23039,11 @@ "role": { "type": "string", "default": "MEMBER", - "enum": ["MEMBER", "OWNER", "ADMIN"], + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ], "description": "If you are platform customer then managed users should only have MEMBER role." }, "disableImpersonation": { @@ -21259,7 +23051,10 @@ "default": false } }, - "required": ["userId", "role"] + "required": [ + "userId", + "role" + ] }, "CreateOrgMembershipOutput": { "type": "object", @@ -21267,13 +23062,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetOrgMembership": { "type": "object", @@ -21281,13 +23082,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteOrgMembership": { "type": "object", @@ -21295,13 +23102,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrgMembershipDto": { "type": "object", @@ -21311,7 +23124,11 @@ }, "role": { "type": "string", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean" @@ -21324,13 +23141,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrganizationMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "Host": { "type": "object", @@ -21345,10 +23168,18 @@ }, "priority": { "type": "string", - "enum": ["lowest", "low", "medium", "high", "highest"] + "enum": [ + "lowest", + "low", + "medium", + "high", + "highest" + ] } }, - "required": ["userId"] + "required": [ + "userId" + ] }, "CreateTeamEventTypeInput_2024_06_14": { "type": "object", @@ -21358,7 +23189,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -21618,7 +23453,11 @@ }, "schedulingType": { "type": "string", - "enum": ["collective", "roundRobin", "managed"], + "enum": [ + "collective", + "roundRobin", + "managed" + ], "example": "collective", "description": "The scheduling type for the team event - collective, roundRobin or managed." }, @@ -21678,7 +23517,12 @@ "description": "Rescheduled events will be assigned to the same host as initially scheduled." } }, - "required": ["lengthInMinutes", "title", "slug", "schedulingType"] + "required": [ + "lengthInMinutes", + "title", + "slug", + "schedulingType" + ] }, "CreateTeamEventTypeOutput": { "type": "object", @@ -21686,7 +23530,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -21702,7 +23549,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamEventTypeOutput": { "type": "object", @@ -21710,13 +23560,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamEventTypeOutput_2024_06_14" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreatePhoneCallInput": { "type": "object", @@ -21742,7 +23598,10 @@ }, "templateType": { "default": "CUSTOM_TEMPLATE", - "enum": ["CHECK_IN_APPOINTMENT", "CUSTOM_TEMPLATE"], + "enum": [ + "CHECK_IN_APPOINTMENT", + "CUSTOM_TEMPLATE" + ], "type": "string", "description": "Template type" }, @@ -21771,7 +23630,13 @@ "description": "General prompt" } }, - "required": ["yourPhoneNumber", "numberToCall", "calApiKey", "enabled", "templateType"] + "required": [ + "yourPhoneNumber", + "numberToCall", + "calApiKey", + "enabled", + "templateType" + ] }, "Data": { "type": "object", @@ -21783,7 +23648,9 @@ "type": "string" } }, - "required": ["callId"] + "required": [ + "callId" + ] }, "CreatePhoneCallOutput": { "type": "object", @@ -21791,13 +23658,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/Data" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamEventTypesOutput": { "type": "object", @@ -21805,7 +23678,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -21814,7 +23690,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateTeamEventTypeInput_2024_06_14": { "type": "object", @@ -21824,7 +23703,11 @@ "example": 60 }, "lengthInMinutesOptions": { - "example": [15, 30, 60], + "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": { @@ -22081,7 +23964,10 @@ }, "schedulingType": { "type": "string", - "enum": ["collective", "roundRobin"], + "enum": [ + "collective", + "roundRobin" + ], "example": "collective", "description": "The scheduling type for the team event - collective or roundRobin. ❗If you change scheduling type you must also provide `hosts` or `assignAllTeamMembers` in the request body, otherwise the event type will have no hosts - this is required because\n in case of collective event type all hosts are mandatory but in case of round robin some or non can be mandatory so we can't predict how you want the hosts to be setup which is why you must provide that information. If you want to convert round robin or collective into managed or managed into round robin or collective then you will have to create a new team event type and delete old one." }, @@ -22148,7 +24034,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -22164,7 +24053,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteTeamEventTypeOutput": { "type": "object", @@ -22172,13 +24064,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamMembershipOutput": { "type": "object", @@ -22197,7 +24095,11 @@ }, "role": { "type": "string", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean" @@ -22206,7 +24108,14 @@ "$ref": "#/components/schemas/MembershipUserOutputDto" } }, - "required": ["id", "userId", "teamId", "accepted", "role", "user"] + "required": [ + "id", + "userId", + "teamId", + "accepted", + "role", + "user" + ] }, "OrgTeamMembershipsOutputResponseDto": { "type": "object", @@ -22214,7 +24123,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22223,7 +24135,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OrgTeamMembershipOutputResponseDto": { "type": "object", @@ -22231,13 +24146,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrgTeamMembershipDto": { "type": "object", @@ -22247,7 +24168,11 @@ }, "role": { "type": "string", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean" @@ -22267,14 +24192,21 @@ "role": { "type": "string", "default": "MEMBER", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean", "default": false } }, - "required": ["userId", "role"] + "required": [ + "userId", + "role" + ] }, "InviteDataDto": { "type": "object", @@ -22290,7 +24222,10 @@ "example": "http://app.cal.com/signup?token=f6a5c8b1d2e34c7f90a1b2c3d4e5f6a5b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2&callbackUrl=/getting-started" } }, - "required": ["token", "inviteLink"] + "required": [ + "token", + "inviteLink" + ] }, "CreateInviteOutputDto": { "type": "object", @@ -22303,7 +24238,10 @@ "$ref": "#/components/schemas/InviteDataDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "Attribute": { "type": "object", @@ -22321,7 +24259,12 @@ "type": { "type": "string", "description": "The type of the attribute", - "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] + "enum": [ + "TEXT", + "NUMBER", + "SINGLE_SELECT", + "MULTI_SELECT" + ] }, "name": { "type": "string", @@ -22344,7 +24287,14 @@ "example": true } }, - "required": ["id", "teamId", "type", "name", "slug", "enabled"] + "required": [ + "id", + "teamId", + "type", + "name", + "slug", + "enabled" + ] }, "GetOrganizationAttributesOutput": { "type": "object", @@ -22352,7 +24302,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22361,7 +24314,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetSingleAttributeOutput": { "type": "object", @@ -22369,7 +24325,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "nullable": true, @@ -22380,7 +24339,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOrganizationAttributeOptionInput": { "type": "object", @@ -22392,7 +24354,10 @@ "type": "string" } }, - "required": ["value", "slug"] + "required": [ + "value", + "slug" + ] }, "CreateOrganizationAttributeInput": { "type": "object", @@ -22405,7 +24370,12 @@ }, "type": { "type": "string", - "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] + "enum": [ + "TEXT", + "NUMBER", + "SINGLE_SELECT", + "MULTI_SELECT" + ] }, "options": { "type": "array", @@ -22417,7 +24387,12 @@ "type": "boolean" } }, - "required": ["name", "slug", "type", "options"] + "required": [ + "name", + "slug", + "type", + "options" + ] }, "CreateOrganizationAttributesOutput": { "type": "object", @@ -22425,13 +24400,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/Attribute" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrganizationAttributeInput": { "type": "object", @@ -22444,7 +24425,12 @@ }, "type": { "type": "string", - "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] + "enum": [ + "TEXT", + "NUMBER", + "SINGLE_SELECT", + "MULTI_SELECT" + ] }, "enabled": { "type": "boolean" @@ -22457,13 +24443,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/Attribute" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteOrganizationAttributesOutput": { "type": "object", @@ -22471,13 +24463,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/Attribute" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OptionOutput": { "type": "object", @@ -22503,7 +24501,12 @@ "example": "option-slug" } }, - "required": ["id", "attributeId", "value", "slug"] + "required": [ + "id", + "attributeId", + "value", + "slug" + ] }, "CreateAttributeOptionOutput": { "type": "object", @@ -22511,13 +24514,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteAttributeOptionOutput": { "type": "object", @@ -22525,13 +24534,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrganizationAttributeOptionInput": { "type": "object", @@ -22550,13 +24565,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OptionOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetAllAttributeOptionOutput": { "type": "object", @@ -22564,7 +24585,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22573,7 +24597,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "AssignedOptionOutput": { "type": "object", @@ -22600,14 +24627,23 @@ }, "assignedUserIds": { "description": "Ids of the users assigned to the attribute option.", - "example": [124, 224], + "example": [ + 124, + 224 + ], "type": "array", "items": { "type": "string" } } }, - "required": ["id", "attributeId", "value", "slug", "assignedUserIds"] + "required": [ + "id", + "attributeId", + "value", + "slug", + "assignedUserIds" + ] }, "GetAllAttributeAssignedOptionOutput": { "type": "object", @@ -22615,7 +24651,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22624,7 +24663,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "AssignOrganizationAttributeOptionToUserInput": { "type": "object", @@ -22639,7 +24681,9 @@ "type": "string" } }, - "required": ["attributeId"] + "required": [ + "attributeId" + ] }, "AssignOptionUserOutputData": { "type": "object", @@ -22657,7 +24701,11 @@ "description": "The value of the option" } }, - "required": ["id", "memberId", "attributeOptionId"] + "required": [ + "id", + "memberId", + "attributeOptionId" + ] }, "AssignOptionUserOutput": { "type": "object", @@ -22665,13 +24713,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/AssignOptionUserOutputData" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UnassignOptionUserOutput": { "type": "object", @@ -22679,13 +24733,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/AssignOptionUserOutputData" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetOptionUserOutputData": { "type": "object", @@ -22707,7 +24767,12 @@ "description": "The slug of the option" } }, - "required": ["id", "attributeId", "value", "slug"] + "required": [ + "id", + "attributeId", + "value", + "slug" + ] }, "GetOptionUserOutput": { "type": "object", @@ -22715,7 +24780,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22724,7 +24792,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamWebhookOutputDto": { "type": "object", @@ -22756,7 +24827,14 @@ "type": "string" } }, - "required": ["payloadTemplate", "teamId", "id", "triggers", "subscriberUrl", "active"] + "required": [ + "payloadTemplate", + "teamId", + "id", + "triggers", + "subscriberUrl", + "active" + ] }, "TeamWebhooksOutputResponseDto": { "type": "object", @@ -22764,7 +24842,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -22773,7 +24854,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateWebhookInputDto": { "type": "object", @@ -22825,9 +24909,21 @@ }, "secret": { "type": "string" + }, + "version": { + "type": "string", + "description": "The version of the webhook", + "example": "2021-10-20", + "enum": [ + "2021-10-20" + ] } }, - "required": ["active", "subscriberUrl", "triggers"] + "required": [ + "active", + "subscriberUrl", + "triggers" + ] }, "TeamWebhookOutputResponseDto": { "type": "object", @@ -22835,13 +24931,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamWebhookOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateWebhookInputDto": { "type": "object", @@ -22893,6 +24995,14 @@ }, "secret": { "type": "string" + }, + "version": { + "type": "string", + "description": "The version of the webhook", + "example": "2021-10-20", + "enum": [ + "2021-10-20" + ] } } }, @@ -22925,10 +25035,19 @@ "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", - "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] + "enum": [ + "unspecified", + "vacation", + "travel", + "sick", + "public_holiday" + ] } }, - "required": ["start", "end"] + "required": [ + "start", + "end" + ] }, "UpdateOutOfOfficeEntryDto": { "type": "object", @@ -22959,7 +25078,13 @@ "type": "string", "description": "the reason for the out of office entry, if applicable", "example": "vacation", - "enum": ["unspecified", "vacation", "travel", "sick", "public_holiday"] + "enum": [ + "unspecified", + "vacation", + "travel", + "sick", + "public_holiday" + ] } } }, @@ -22974,7 +25099,10 @@ }, "activeOnEventTypeIds": { "description": "List of Event Type IDs the workflow is specifically active on (if not active on all)", - "example": [698191, 698192], + "example": [ + 698191, + 698192 + ], "type": "array", "items": { "type": "number" @@ -22994,10 +25122,17 @@ "type": "string", "description": "Unit for the offset time", "example": "hour", - "enum": ["hour", "minute", "day"] + "enum": [ + "hour", + "minute", + "day" + ] } }, - "required": ["value", "unit"] + "required": [ + "value", + "unit" + ] }, "EventTypeWorkflowTriggerOutputDto": { "type": "object", @@ -23030,7 +25165,9 @@ ] } }, - "required": ["type"] + "required": [ + "type" + ] }, "WorkflowMessageOutputDto": { "type": "object", @@ -23051,7 +25188,9 @@ "example": "Reminder for {EVENT_NAME}." } }, - "required": ["subject"] + "required": [ + "subject" + ] }, "EventTypeWorkflowStepOutputDto": { "type": "object", @@ -23070,7 +25209,12 @@ "type": "string", "description": "Intended recipient type", "example": "const", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "email": { "type": "string", @@ -23091,7 +25235,14 @@ "type": "string", "description": "Template type used", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "includeCalendarEvent": { "type": "object", @@ -23128,7 +25279,15 @@ ] } }, - "required": ["id", "stepNumber", "recipient", "template", "sender", "message", "action"] + "required": [ + "id", + "stepNumber", + "recipient", + "template", + "sender", + "message", + "action" + ] }, "EventTypeWorkflowOutput": { "type": "object", @@ -23165,7 +25324,9 @@ }, "type": { "type": "string", - "enum": ["event-type"], + "enum": [ + "event-type" + ], "description": "type of the workflow", "example": "event-type", "default": "event-type" @@ -23194,7 +25355,14 @@ } } }, - "required": ["id", "name", "type", "activation", "trigger", "steps"] + "required": [ + "id", + "name", + "type", + "activation", + "trigger", + "steps" + ] }, "GetEventTypeWorkflowsOutput": { "type": "object", @@ -23203,7 +25371,10 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "description": "List of workflows", @@ -23213,7 +25384,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "RoutingFormWorkflowActivationOutputDto": { "type": "object", @@ -23226,7 +25400,9 @@ }, "activeOnRoutingFormIds": { "description": "List of Event Type IDs the workflow is specifically active on (if not active on all)", - "example": ["5cacdec7-1234-6e1b-78d9-7bcda8a1b332"], + "example": [ + "5cacdec7-1234-6e1b-78d9-7bcda8a1b332" + ], "type": "array", "items": { "type": "string" @@ -23241,7 +25417,10 @@ "type": "string", "description": "Trigger type for the workflow", "example": "formSubmitted", - "enum": ["formSubmitted", "formSubmittedNoEvent"] + "enum": [ + "formSubmitted", + "formSubmittedNoEvent" + ] }, "offset": { "description": "Offset details (present for BEFORE_EVENT/AFTER_EVENT/FORM_SUBMITTED_NO_EVENT)", @@ -23252,7 +25431,9 @@ ] } }, - "required": ["type"] + "required": [ + "type" + ] }, "RoutingFormWorkflowStepOutputDto": { "type": "object", @@ -23271,7 +25452,12 @@ "type": "string", "description": "Intended recipient type", "example": "const", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "email": { "type": "string", @@ -23292,7 +25478,14 @@ "type": "string", "description": "Template type used", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "includeCalendarEvent": { "type": "object", @@ -23317,10 +25510,23 @@ "type": "string", "description": "Action to perform", "example": "email_host", - "enum": ["email_attendee", "email_address", "sms_attendee", "sms_number"] + "enum": [ + "email_attendee", + "email_address", + "sms_attendee", + "sms_number" + ] } }, - "required": ["id", "stepNumber", "recipient", "template", "sender", "message", "action"] + "required": [ + "id", + "stepNumber", + "recipient", + "template", + "sender", + "message", + "action" + ] }, "RoutingFormWorkflowOutput": { "type": "object", @@ -23357,7 +25563,9 @@ }, "type": { "type": "string", - "enum": ["routing-form"], + "enum": [ + "routing-form" + ], "description": "type of the workflow", "example": "routing-form", "default": "routing-form" @@ -23386,7 +25594,14 @@ } } }, - "required": ["id", "name", "type", "activation", "trigger", "steps"] + "required": [ + "id", + "name", + "type", + "activation", + "trigger", + "steps" + ] }, "GetRoutingFormWorkflowsOutput": { "type": "object", @@ -23395,7 +25610,10 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "description": "List of workflows", @@ -23405,7 +25623,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetEventTypeWorkflowOutput": { "type": "object", @@ -23414,7 +25635,10 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "description": "workflow", @@ -23424,7 +25648,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetRoutingFormWorkflowOutput": { "type": "object", @@ -23433,7 +25660,10 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "description": "workflow", @@ -23443,7 +25673,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "WorkflowTriggerOffsetDto": { "type": "object", @@ -23455,12 +25688,19 @@ }, "unit": { "type": "object", - "enum": ["hour", "minute", "day"], + "enum": [ + "hour", + "minute", + "day" + ], "description": "Unit for the offset time", "example": "hour" } }, - "required": ["value", "unit"] + "required": [ + "value", + "unit" + ] }, "OnBeforeEventTriggerDto": { "type": "object", @@ -23476,12 +25716,17 @@ "type": { "type": "string", "default": "beforeEvent", - "enum": ["beforeEvent"], + "enum": [ + "beforeEvent" + ], "description": "Trigger type for the workflow", "example": "beforeEvent" } }, - "required": ["offset", "type"] + "required": [ + "offset", + "type" + ] }, "OnAfterEventTriggerDto": { "type": "object", @@ -23497,12 +25742,17 @@ "type": { "type": "string", "default": "afterEvent", - "enum": ["afterEvent"], + "enum": [ + "afterEvent" + ], "description": "Trigger type for the workflow", "example": "afterEvent" } }, - "required": ["offset", "type"] + "required": [ + "offset", + "type" + ] }, "OnCancelTriggerDto": { "type": "object", @@ -23510,11 +25760,15 @@ "type": { "type": "string", "default": "eventCancelled", - "enum": ["eventCancelled"], + "enum": [ + "eventCancelled" + ], "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnCreationTriggerDto": { "type": "object", @@ -23522,11 +25776,15 @@ "type": { "type": "string", "default": "newEvent", - "enum": ["newEvent"], + "enum": [ + "newEvent" + ], "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnRescheduleTriggerDto": { "type": "object", @@ -23534,11 +25792,15 @@ "type": { "type": "string", "default": "rescheduleEvent", - "enum": ["rescheduleEvent"], + "enum": [ + "rescheduleEvent" + ], "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnNoShowUpdateTriggerDto": { "type": "object", @@ -23549,7 +25811,9 @@ "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnRejectedTriggerDto": { "type": "object", @@ -23560,7 +25824,9 @@ "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnRequestedTriggerDto": { "type": "object", @@ -23571,7 +25837,9 @@ "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnPaymentInitiatedTriggerDto": { "type": "object", @@ -23582,7 +25850,9 @@ "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnPaidTriggerDto": { "type": "object", @@ -23593,7 +25863,9 @@ "description": "Trigger type for the workflow" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnAfterCalVideoGuestsNoShowTriggerDto": { "type": "object", @@ -23609,12 +25881,17 @@ "type": { "type": "string", "default": "afterGuestsCalVideoNoShow", - "enum": ["afterGuestsCalVideoNoShow"], + "enum": [ + "afterGuestsCalVideoNoShow" + ], "description": "Trigger type for the workflow", "example": "afterGuestsCalVideoNoShow" } }, - "required": ["offset", "type"] + "required": [ + "offset", + "type" + ] }, "OnAfterCalVideoHostsNoShowTriggerDto": { "type": "object", @@ -23630,12 +25907,17 @@ "type": { "type": "string", "default": "afterHostsCalVideoNoShow", - "enum": ["afterHostsCalVideoNoShow"], + "enum": [ + "afterHostsCalVideoNoShow" + ], "description": "Trigger type for the workflow", "example": "afterHostsCalVideoNoShow" } }, - "required": ["offset", "type"] + "required": [ + "offset", + "type" + ] }, "HtmlWorkflowMessageDto": { "type": "object", @@ -23651,7 +25933,10 @@ "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"] + "required": [ + "subject", + "html" + ] }, "WorkflowEmailAddressStepDto": { "type": "object", @@ -23681,13 +25966,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -23755,13 +26052,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -23820,13 +26129,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -23871,7 +26192,10 @@ "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"] + "required": [ + "subject", + "text" + ] }, "WorkflowPhoneWhatsAppAttendeeStepDto": { "type": "object", @@ -23901,13 +26225,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -23928,7 +26264,14 @@ "example": true } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "message" + ] }, "WorkflowPhoneWhatsAppNumberStepDto": { "type": "object", @@ -23958,13 +26301,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -23987,7 +26342,15 @@ ] } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "verifiedPhoneId", + "message" + ] }, "WorkflowPhoneNumberStepDto": { "type": "object", @@ -24017,13 +26380,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24046,7 +26421,15 @@ ] } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "verifiedPhoneId", + "message" + ] }, "WorkflowPhoneAttendeeStepDto": { "type": "object", @@ -24076,13 +26459,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24107,7 +26502,14 @@ "example": true } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "message" + ] }, "EventTypeWorkflowTriggerDto": { "type": "object", @@ -24132,7 +26534,9 @@ "example": "beforeEvent" } }, - "required": ["type"] + "required": [ + "type" + ] }, "WorkflowActivationDto": { "type": "object", @@ -24146,14 +26550,18 @@ "activeOnEventTypeIds": { "default": [], "description": "List of event-types IDs the workflow applies to, required if isActiveOnAllEventTypes is false", - "example": [698191], + "example": [ + 698191 + ], "type": "array", "items": { "type": "number" } } }, - "required": ["isActiveOnAllEventTypes"] + "required": [ + "isActiveOnAllEventTypes" + ] }, "CreateEventTypeWorkflowDto": { "type": "object", @@ -24242,7 +26650,12 @@ } } }, - "required": ["name", "activation", "trigger", "steps"] + "required": [ + "name", + "activation", + "trigger", + "steps" + ] }, "OnFormSubmittedTriggerDto": { "type": "object", @@ -24250,12 +26663,16 @@ "type": { "type": "string", "default": "formSubmitted", - "enum": ["formSubmitted"], + "enum": [ + "formSubmitted" + ], "description": "Trigger type for the workflow", "example": "formSubmitted" } }, - "required": ["type"] + "required": [ + "type" + ] }, "OnFormSubmittedNoEventTriggerDto": { "type": "object", @@ -24271,24 +26688,34 @@ "type": { "type": "string", "default": "formSubmittedNoEvent", - "enum": ["formSubmittedNoEvent"], + "enum": [ + "formSubmittedNoEvent" + ], "description": "Trigger type for the workflow", "example": "formSubmittedNoEvent" } }, - "required": ["offset", "type"] + "required": [ + "offset", + "type" + ] }, "RoutingFormWorkflowTriggerDto": { "type": "object", "properties": { "type": { "type": "object", - "enum": ["formSubmitted", "formSubmittedNoEvent"], + "enum": [ + "formSubmitted", + "formSubmittedNoEvent" + ], "description": "Trigger type for the routing-form workflow", "example": "formSubmitted" } }, - "required": ["type"] + "required": [ + "type" + ] }, "WorkflowFormActivationDto": { "type": "object", @@ -24300,14 +26727,18 @@ }, "activeOnRoutingFormIds": { "description": "List of routing form IDs the workflow applies to", - "example": ["abd1-123edf-a213d-123dfwf"], + "example": [ + "abd1-123edf-a213d-123dfwf" + ], "type": "array", "items": { "type": "number" } } }, - "required": ["isActiveOnAllRoutingForms"] + "required": [ + "isActiveOnAllRoutingForms" + ] }, "CreateFormWorkflowDto": { "type": "object", @@ -24357,7 +26788,12 @@ } } }, - "required": ["name", "activation", "trigger", "steps"] + "required": [ + "name", + "activation", + "trigger", + "steps" + ] }, "UpdateEmailAddressWorkflowStepDto": { "type": "object", @@ -24387,13 +26823,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24466,13 +26914,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24536,13 +26996,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24606,13 +27078,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24642,7 +27126,14 @@ "example": 67244 } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "message" + ] }, "UpdatePhoneWhatsAppNumberWorkflowStepDto": { "type": "object", @@ -24672,13 +27163,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24706,7 +27209,15 @@ "example": 67244 } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "verifiedPhoneId", + "message" + ] }, "UpdateWhatsAppAttendeePhoneWorkflowStepDto": { "type": "object", @@ -24736,13 +27247,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24768,7 +27291,14 @@ "example": 67244 } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "message" + ] }, "UpdatePhoneNumberWorkflowStepDto": { "type": "object", @@ -24798,13 +27328,25 @@ "type": "string", "description": "Recipient type", "example": "attendee", - "enum": ["const", "attendee", "email", "phone_number"] + "enum": [ + "const", + "attendee", + "email", + "phone_number" + ] }, "template": { "type": "string", "description": "Template type for the step", "example": "reminder", - "enum": ["reminder", "custom", "rescheduled", "completed", "rating", "cancelled"] + "enum": [ + "reminder", + "custom", + "rescheduled", + "completed", + "rating", + "cancelled" + ] }, "sender": { "type": "string", @@ -24832,7 +27374,15 @@ "example": 67244 } }, - "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] + "required": [ + "action", + "stepNumber", + "recipient", + "template", + "sender", + "verifiedPhoneId", + "message" + ] }, "UpdateEventTypeWorkflowDto": { "type": "object", @@ -25015,7 +27565,13 @@ "example": "2025-12-31T23:59:59.000Z" } }, - "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "expiresAt"] + "required": [ + "linkId", + "eventTypeId", + "isExpired", + "bookingUrl", + "expiresAt" + ] }, "UsageBasedPrivateLinkOutput": { "type": "object", @@ -25052,7 +27608,14 @@ "example": 3 } }, - "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "maxUsageCount", "usageCount"] + "required": [ + "linkId", + "eventTypeId", + "isExpired", + "bookingUrl", + "maxUsageCount", + "usageCount" + ] }, "CreatePrivateLinkOutput": { "type": "object", @@ -25074,7 +27637,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetPrivateLinksOutput": { "type": "object", @@ -25099,7 +27665,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdatePrivateLinkOutput": { "type": "object", @@ -25121,7 +27690,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeletePrivateLinkOutput": { "type": "object", @@ -25146,7 +27718,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetDefaultScheduleOutput_2024_06_11": { "type": "object", @@ -25154,13 +27729,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateTeamInput": { "type": "object", @@ -25244,7 +27825,9 @@ "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"] + "required": [ + "name" + ] }, "TeamOutputDto": { "type": "object", @@ -25318,7 +27901,11 @@ "default": "Sunday" } }, - "required": ["id", "name", "isOrganization"] + "required": [ + "id", + "name", + "isOrganization" + ] }, "CreateTeamOutputData": { "type": "object", @@ -25333,7 +27920,11 @@ "$ref": "#/components/schemas/TeamOutputDto" } }, - "required": ["message", "paymentLink", "pendingTeam"] + "required": [ + "message", + "paymentLink", + "pendingTeam" + ] }, "CreateTeamOutput": { "type": "object", @@ -25341,7 +27932,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -25355,7 +27949,10 @@ "description": "Either an Output object or a TeamOutputDto." } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamOutput": { "type": "object", @@ -25363,13 +27960,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamsOutput": { "type": "object", @@ -25377,7 +27980,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -25386,7 +27992,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateTeamOutput": { "type": "object", @@ -25394,13 +28003,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ConferencingAppsOutputDto": { "type": "object", @@ -25425,20 +28040,30 @@ "description": "Whether if the connection is working or not." } }, - "required": ["id", "type", "userId"] + "required": [ + "id", + "type", + "userId" + ] }, "ConferencingAppOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ConferencingAppsOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetConferencingAppsOauthUrlResponseDto": { "type": "object", @@ -25446,17 +28071,25 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "ConferencingAppsOutputResponseDto": { "type": "object", "properties": { "status": { "type": "string", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -25465,7 +28098,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "SetDefaultConferencingAppOutputResponseDto": { "type": "object", @@ -25473,10 +28109,15 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "DefaultConferencingAppsOutputDto": { "type": "object", @@ -25495,13 +28136,18 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/DefaultConferencingAppsOutputDto" } }, - "required": ["status"] + "required": [ + "status" + ] }, "DisconnectConferencingAppOutputResponseDto": { "type": "object", @@ -25509,10 +28155,15 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "GoogleServiceAccountKeyInput": { "type": "object", @@ -25527,7 +28178,11 @@ "type": "string" } }, - "required": ["private_key", "client_email", "client_id"] + "required": [ + "private_key", + "client_email", + "client_id" + ] }, "MicrosoftServiceAccountKeyInput": { "type": "object", @@ -25542,7 +28197,11 @@ "type": "string" } }, - "required": ["private_key", "tenant_id", "client_id"] + "required": [ + "private_key", + "tenant_id", + "client_id" + ] }, "CreateDelegationCredentialInput": { "type": "object", @@ -25567,7 +28226,11 @@ } } }, - "required": ["workspacePlatformSlug", "domain", "serviceAccountKey"] + "required": [ + "workspacePlatformSlug", + "domain", + "serviceAccountKey" + ] }, "WorkspacePlatformDto": { "type": "object", @@ -25579,7 +28242,10 @@ "type": "string" } }, - "required": ["name", "slug"] + "required": [ + "name", + "slug" + ] }, "DelegationCredentialOutput": { "type": "object", @@ -25624,13 +28290,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateDelegationCredentialInput": { "type": "object", @@ -25659,20 +28331,29 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/DelegationCredentialOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateIcsFeedInputDto": { "type": "object", "properties": { "urls": { "type": "array", - "example": ["https://cal.com/ics/feed.ics", "http://cal.com/ics/feed.ics"], + "example": [ + "https://cal.com/ics/feed.ics", + "http://cal.com/ics/feed.ics" + ], "description": "An array of ICS URLs", "items": { "type": "string", @@ -25686,7 +28367,9 @@ "description": "Whether to allowing writing to the calendar or not" } }, - "required": ["urls"] + "required": [ + "urls" + ] }, "CreateIcsFeedOutput": { "type": "object", @@ -25726,7 +28409,14 @@ "description": "Whether the calendar credentials are valid or not" } }, - "required": ["id", "type", "userId", "teamId", "appId", "invalid"] + "required": [ + "id", + "type", + "userId", + "teamId", + "appId", + "invalid" + ] }, "CreateIcsFeedOutputResponseDto": { "type": "object", @@ -25734,13 +28424,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/CreateIcsFeedOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "BusyTimesOutput": { "type": "object", @@ -25758,7 +28454,10 @@ "nullable": true } }, - "required": ["start", "end"] + "required": [ + "start", + "end" + ] }, "GetBusyTimesOutput": { "type": "object", @@ -25766,7 +28465,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -25775,7 +28477,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "Integration": { "type": "object", @@ -25884,7 +28589,13 @@ "nullable": true } }, - "required": ["externalId", "primary", "readOnly", "isSelected", "credentialId"] + "required": [ + "externalId", + "primary", + "readOnly", + "isSelected", + "credentialId" + ] }, "Calendar": { "type": "object", @@ -25919,7 +28630,12 @@ "nullable": true } }, - "required": ["externalId", "readOnly", "isSelected", "credentialId"] + "required": [ + "externalId", + "readOnly", + "isSelected", + "credentialId" + ] }, "ConnectedCalendar": { "type": "object", @@ -25944,7 +28660,10 @@ } } }, - "required": ["integration", "credentialId"] + "required": [ + "integration", + "credentialId" + ] }, "DestinationCalendar": { "type": "object", @@ -26018,7 +28737,10 @@ "$ref": "#/components/schemas/DestinationCalendar" } }, - "required": ["connectedCalendars", "destinationCalendar"] + "required": [ + "connectedCalendars", + "destinationCalendar" + ] }, "ConnectedCalendarsOutput": { "type": "object", @@ -26026,13 +28748,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ConnectedCalendarsData" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateCalendarCredentialsInput": { "type": "object", @@ -26044,7 +28772,10 @@ "type": "string" } }, - "required": ["username", "password"] + "required": [ + "username", + "password" + ] }, "DeleteCalendarCredentialsInputBodyDto": { "type": "object", @@ -26055,7 +28786,9 @@ "description": "Credential ID of the calendar to delete, as returned by the /calendars endpoint" } }, - "required": ["id"] + "required": [ + "id" + ] }, "DeletedCalendarCredentialsOutputDto": { "type": "object", @@ -26083,7 +28816,14 @@ "nullable": true } }, - "required": ["id", "type", "userId", "teamId", "appId", "invalid"] + "required": [ + "id", + "type", + "userId", + "teamId", + "appId", + "invalid" + ] }, "DeletedCalendarCredentialsOutputResponseDto": { "type": "object", @@ -26091,13 +28831,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/DeletedCalendarCredentialsOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOrganizationInput": { "type": "object", @@ -26133,7 +28879,9 @@ } } }, - "required": ["name"] + "required": [ + "name" + ] }, "ManagedOrganizationWithApiKeyOutput": { "type": "object", @@ -26158,7 +28906,11 @@ "type": "string" } }, - "required": ["id", "name", "apiKey"] + "required": [ + "id", + "name", + "apiKey" + ] }, "CreateManagedOrganizationOutput": { "type": "object", @@ -26166,13 +28918,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationWithApiKeyOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ManagedOrganizationOutput": { "type": "object", @@ -26194,7 +28952,10 @@ } } }, - "required": ["id", "name"] + "required": [ + "id", + "name" + ] }, "GetManagedOrganizationOutput": { "type": "object", @@ -26202,13 +28963,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ManagedOrganizationOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "PaginationMetaDto": { "type": "object", @@ -26276,7 +29043,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -26288,7 +29058,11 @@ "$ref": "#/components/schemas/PaginationMetaDto" } }, - "required": ["status", "data", "pagination"] + "required": [ + "status", + "data", + "pagination" + ] }, "UpdateOrganizationInput": { "type": "object", @@ -26322,7 +29096,11 @@ "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", - "example": ["eventType.read", "eventType.create", "booking.read"], + "example": [ + "eventType.read", + "eventType.create", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -26359,6 +29137,7 @@ "booking.readOrgBookings", "booking.readRecordings", "booking.update", + "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26390,7 +29169,9 @@ "description": "Name of the role" } }, - "required": ["name"] + "required": [ + "name" + ] }, "OrgRoleOutput": { "type": "object", @@ -26421,12 +29202,18 @@ "type": { "type": "string", "description": "Type of role", - "enum": ["SYSTEM", "CUSTOM"] + "enum": [ + "SYSTEM", + "CUSTOM" + ] }, "permissions": { "type": "array", "description": "Permissions assigned to this role in 'resource.action' format.", - "example": ["booking.read", "eventType.create"], + "example": [ + "booking.read", + "eventType.create" + ], "items": { "type": "string", "enum": [ @@ -26463,6 +29250,7 @@ "booking.readOrgBookings", "booking.readRecordings", "booking.update", + "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26497,7 +29285,14 @@ "description": "When the role was last updated" } }, - "required": ["id", "name", "type", "permissions", "createdAt", "updatedAt"] + "required": [ + "id", + "name", + "type", + "permissions", + "createdAt", + "updatedAt" + ] }, "CreateOrgRoleOutput": { "type": "object", @@ -26505,13 +29300,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetOrgRoleOutput": { "type": "object", @@ -26519,13 +29320,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetAllOrgRolesOutput": { "type": "object", @@ -26533,7 +29340,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -26542,7 +29352,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateOrgRoleInput": { "type": "object", @@ -26558,7 +29371,11 @@ "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", - "example": ["eventType.read", "eventType.create", "booking.read"], + "example": [ + "eventType.read", + "eventType.create", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -26595,6 +29412,7 @@ "booking.readOrgBookings", "booking.readRecordings", "booking.update", + "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26633,13 +29451,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteOrgRoleOutput": { "type": "object", @@ -26647,13 +29471,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OrgRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateOrgRolePermissionsInput": { "type": "object", @@ -26661,7 +29491,10 @@ "permissions": { "type": "array", "description": "Permissions to add (format: resource.action)", - "example": ["eventType.read", "booking.read"], + "example": [ + "eventType.read", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -26698,6 +29531,7 @@ "booking.readOrgBookings", "booking.readRecordings", "booking.update", + "booking.readOrgAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26724,7 +29558,9 @@ } } }, - "required": ["permissions"] + "required": [ + "permissions" + ] }, "GetOrgRolePermissionsOutput": { "type": "object", @@ -26740,7 +29576,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateTeamRoleInput": { "type": "object", @@ -26756,7 +29595,11 @@ "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", - "example": ["eventType.read", "eventType.create", "booking.read"], + "example": [ + "eventType.read", + "eventType.create", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -26781,6 +29624,7 @@ "booking.readTeamBookings", "booking.readRecordings", "booking.update", + "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26803,7 +29647,9 @@ "description": "Name of the role" } }, - "required": ["name"] + "required": [ + "name" + ] }, "TeamRoleOutput": { "type": "object", @@ -26834,12 +29680,18 @@ "type": { "type": "string", "description": "Type of role", - "enum": ["SYSTEM", "CUSTOM"] + "enum": [ + "SYSTEM", + "CUSTOM" + ] }, "permissions": { "type": "array", "description": "Permissions assigned to this role in 'resource.action' format.", - "example": ["booking.read", "eventType.create"], + "example": [ + "booking.read", + "eventType.create" + ], "items": { "type": "string", "enum": [ @@ -26864,6 +29716,7 @@ "booking.readTeamBookings", "booking.readRecordings", "booking.update", + "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -26889,7 +29742,14 @@ "description": "When the role was last updated" } }, - "required": ["id", "name", "type", "permissions", "createdAt", "updatedAt"] + "required": [ + "id", + "name", + "type", + "permissions", + "createdAt", + "updatedAt" + ] }, "CreateTeamRoleOutput": { "type": "object", @@ -26897,13 +29757,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamRoleOutput": { "type": "object", @@ -26911,13 +29777,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetAllTeamRolesOutput": { "type": "object", @@ -26925,7 +29797,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -26934,7 +29809,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateTeamRoleInput": { "type": "object", @@ -26950,7 +29828,11 @@ "permissions": { "type": "array", "description": "Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.", - "example": ["eventType.read", "eventType.create", "booking.read"], + "example": [ + "eventType.read", + "eventType.create", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -26975,6 +29857,7 @@ "booking.readTeamBookings", "booking.readRecordings", "booking.update", + "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -27004,13 +29887,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteTeamRoleOutput": { "type": "object", @@ -27018,13 +29907,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamRoleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CreateTeamRolePermissionsInput": { "type": "object", @@ -27032,7 +29927,10 @@ "permissions": { "type": "array", "description": "Permissions to add (format: resource.action)", - "example": ["eventType.read", "booking.read"], + "example": [ + "eventType.read", + "booking.read" + ], "items": { "type": "string", "enum": [ @@ -27057,6 +29955,7 @@ "booking.readTeamBookings", "booking.readRecordings", "booking.update", + "booking.readTeamAuditLogs", "insights.read", "workflow.create", "workflow.read", @@ -27074,7 +29973,9 @@ } } }, - "required": ["permissions"] + "required": [ + "permissions" + ] }, "GetTeamRolePermissionsOutput": { "type": "object", @@ -27090,7 +29991,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "RoutingFormResponseOutput": { "type": "object", @@ -27121,7 +30025,14 @@ "type": "string" } }, - "required": ["id", "formId", "formFillerId", "routedToBookingUid", "response", "createdAt"] + "required": [ + "id", + "formId", + "formFillerId", + "routedToBookingUid", + "response", + "createdAt" + ] }, "GetRoutingFormResponsesOutput": { "type": "object", @@ -27129,13 +30040,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "SlotsOutput_2024_09_04": { "type": "object", @@ -27162,7 +30079,10 @@ }, "teamMemberIds": { "description": "Array of team member IDs that were routed to handle this booking.", - "example": [101, 102], + "example": [ + 101, + 102 + ], "type": "array", "items": { "type": "number" @@ -27189,7 +30109,9 @@ "example": "Account" } }, - "required": ["teamMemberIds"] + "required": [ + "teamMemberIds" + ] }, "CreateRoutingFormResponseOutputData": { "type": "object", @@ -27204,7 +30126,10 @@ "example": { "eventTypeId": 123, "routing": { - "teamMemberIds": [101, 102], + "teamMemberIds": [ + 101, + 102 + ], "teamMemberEmail": "john.doe@example.com", "skipContactOwner": true } @@ -27243,13 +30168,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/CreateRoutingFormResponseOutputData" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateRoutingFormResponseInput": { "type": "object", @@ -27266,13 +30197,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "RoutingFormOutput": { "type": "object", @@ -27348,7 +30285,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -27357,7 +30297,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ResponseSlotsOutputData": { "type": "object", @@ -27376,7 +30319,10 @@ ] } }, - "required": ["eventTypeId", "slots"] + "required": [ + "eventTypeId", + "slots" + ] }, "ResponseSlotsOutput": { "type": "object", @@ -27384,13 +30330,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ResponseSlotsOutputData" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ReserveSlotInput_2024_09_04": { "type": "object", @@ -27416,7 +30368,10 @@ "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"] + "required": [ + "eventTypeId", + "slotStart" + ] }, "ReserveSlotOutput_2024_09_04": { "type": "object", @@ -27473,13 +30428,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ReserveSlotOutput_2024_09_04" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetReservedSlotOutput_2024_09_04": { "type": "object", @@ -27487,7 +30448,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "nullable": true, @@ -27498,7 +30462,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdatePrivateLinkBody": { "type": "object", @@ -27527,7 +30494,10 @@ "type": "number" } }, - "required": ["isPlatform", "id"] + "required": [ + "isPlatform", + "id" + ] }, "MeOutput": { "type": "object", @@ -27594,13 +30564,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateMeOutput": { "type": "object", @@ -27608,13 +30584,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/MeOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "BookingInputAddressLocation_2024_08_13": { "type": "object", @@ -27625,7 +30607,9 @@ "description": "only allowed value for type is `address` - it refers to address defined by the organizer." } }, - "required": ["type"] + "required": [ + "type" + ] }, "BookingInputAttendeeAddressLocation_2024_08_13": { "type": "object", @@ -27640,7 +30624,10 @@ "example": "123 Example St, City, Country" } }, - "required": ["type", "address"] + "required": [ + "type", + "address" + ] }, "BookingInputAttendeeDefinedLocation_2024_08_13": { "type": "object", @@ -27655,7 +30642,10 @@ "example": "321 Example St, City, Country" } }, - "required": ["type", "location"] + "required": [ + "type", + "location" + ] }, "BookingInputAttendeePhoneLocation_2024_08_13": { "type": "object", @@ -27670,7 +30660,10 @@ "example": "+37120993151" } }, - "required": ["type", "phone"] + "required": [ + "type", + "phone" + ] }, "BookingInputIntegrationLocation_2024_08_13": { "type": "object", @@ -27716,7 +30709,10 @@ ] } }, - "required": ["type", "integration"] + "required": [ + "type", + "integration" + ] }, "BookingInputLinkLocation_2024_08_13": { "type": "object", @@ -27727,7 +30723,9 @@ "description": "only allowed value for type is `link` - it refers to link defined by the organizer." } }, - "required": ["type"] + "required": [ + "type" + ] }, "BookingInputPhoneLocation_2024_08_13": { "type": "object", @@ -27738,7 +30736,9 @@ "description": "only allowed value for type is `phone` - it refers to phone defined by the organizer." } }, - "required": ["type"] + "required": [ + "type" + ] }, "BookingInputOrganizersDefaultAppLocation_2024_08_13": { "type": "object", @@ -27749,7 +30749,9 @@ "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"] + "required": [ + "type" + ] }, "ValidateBookingLocation_2024_08_13": { "type": "object", @@ -27830,7 +30832,10 @@ "default": "en" } }, - "required": ["name", "timeZone"] + "required": [ + "name", + "timeZone" + ] }, "CreateBookingInput_2024_08_13": { "type": "object", @@ -27882,7 +30887,10 @@ }, "guests": { "description": "An optional list of guest emails attending the event.", - "example": ["guest1@example.com", "guest2@example.com"], + "example": [ + "guest1@example.com", + "guest2@example.com" + ], "type": "array", "items": { "type": "string" @@ -27939,7 +30947,10 @@ "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] + "teamMemberIds": [ + 101, + 102 + ] }, "allOf": [ { @@ -27953,7 +30964,10 @@ "example": "123456" } }, - "required": ["start", "attendee"] + "required": [ + "start", + "attendee" + ] }, "CreateInstantBookingInput_2024_08_13": { "type": "object", @@ -28005,7 +31019,10 @@ }, "guests": { "description": "An optional list of guest emails attending the event.", - "example": ["guest1@example.com", "guest2@example.com"], + "example": [ + "guest1@example.com", + "guest2@example.com" + ], "type": "array", "items": { "type": "string" @@ -28062,7 +31079,10 @@ "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] + "teamMemberIds": [ + 101, + 102 + ] }, "allOf": [ { @@ -28081,7 +31101,11 @@ "example": true } }, - "required": ["start", "attendee", "instant"] + "required": [ + "start", + "attendee", + "instant" + ] }, "CreateRecurringBookingInput_2024_08_13": { "type": "object", @@ -28133,7 +31157,10 @@ }, "guests": { "description": "An optional list of guest emails attending the event.", - "example": ["guest1@example.com", "guest2@example.com"], + "example": [ + "guest1@example.com", + "guest2@example.com" + ], "type": "array", "items": { "type": "string" @@ -28190,7 +31217,10 @@ "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] + "teamMemberIds": [ + 101, + 102 + ] }, "allOf": [ { @@ -28209,7 +31239,10 @@ "example": 5 } }, - "required": ["start", "attendee"] + "required": [ + "start", + "attendee" + ] }, "BookingHost": { "type": "object", @@ -28235,7 +31268,13 @@ "example": "America/Los_Angeles" } }, - "required": ["id", "name", "email", "username", "timeZone"] + "required": [ + "id", + "name", + "email", + "username", + "timeZone" + ] }, "EventType": { "type": "object", @@ -28249,7 +31288,10 @@ "example": "some-event" } }, - "required": ["id", "slug"] + "required": [ + "id", + "slug" + ] }, "BookingAttendee": { "type": "object", @@ -28324,7 +31366,12 @@ "example": "+1234567890" } }, - "required": ["name", "email", "timeZone", "absent"] + "required": [ + "name", + "email", + "timeZone", + "absent" + ] }, "BookingOutput_2024_08_13": { "type": "object", @@ -28353,7 +31400,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -28447,7 +31499,10 @@ } }, "guests": { - "example": ["guest1@example.com", "guest2@example.com"], + "example": [ + "guest1@example.com", + "guest2@example.com" + ], "type": "array", "items": { "type": "string" @@ -28508,7 +31563,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -28602,7 +31662,10 @@ } }, "guests": { - "example": ["guest1@example.com", "guest2@example.com"], + "example": [ + "guest1@example.com", + "guest2@example.com" + ], "type": "array", "items": { "type": "string" @@ -28731,7 +31794,14 @@ } } }, - "required": ["name", "email", "timeZone", "absent", "seatUid", "bookingFieldsResponses"] + "required": [ + "name", + "email", + "timeZone", + "absent", + "seatUid", + "bookingFieldsResponses" + ] }, "CreateSeatedBookingOutput_2024_08_13": { "type": "object", @@ -28760,7 +31830,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -28905,7 +31980,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -29034,7 +32114,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29060,7 +32143,10 @@ "description": "Booking data, which can be either a BookingOutput object or an array of RecurringBookingOutput objects" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetSeatedBookingOutput_2024_08_13": { "type": "object", @@ -29089,7 +32175,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -29229,7 +32320,12 @@ }, "status": { "type": "string", - "enum": ["cancelled", "accepted", "rejected", "pending"], + "enum": [ + "cancelled", + "accepted", + "rejected", + "pending" + ], "example": "accepted" }, "cancellationReason": { @@ -29353,7 +32449,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29388,7 +32487,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "RecordingItem": { "type": "object", @@ -29432,7 +32534,14 @@ "example": "Error message" } }, - "required": ["id", "roomName", "startTs", "status", "duration", "shareToken"] + "required": [ + "id", + "roomName", + "startTs", + "status", + "duration", + "shareToken" + ] }, "GetBookingRecordingsOutput": { "type": "object", @@ -29440,7 +32549,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "message": { "type": "string", @@ -29456,7 +32568,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetBookingTranscriptsOutput": { "type": "object", @@ -29464,10 +32579,16 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { - "example": ["https://transcript1.com", "https://transcript2.com"], + "example": [ + "https://transcript1.com", + "https://transcript2.com" + ], "type": "array", "items": { "type": "string" @@ -29481,7 +32602,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetBookingsOutput_2024_08_13": { "type": "object", @@ -29489,7 +32613,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -29518,7 +32645,11 @@ "type": "object" } }, - "required": ["status", "data", "pagination"] + "required": [ + "status", + "data", + "pagination" + ] }, "RescheduleBookingInput_2024_08_13": { "type": "object", @@ -29543,7 +32674,9 @@ "example": "123456" } }, - "required": ["start"] + "required": [ + "start" + ] }, "RescheduleSeatedBookingInput_2024_08_13": { "type": "object", @@ -29568,7 +32701,10 @@ "example": "123456" } }, - "required": ["start", "seatUid"] + "required": [ + "start", + "seatUid" + ] }, "RescheduleBookingOutput_2024_08_13": { "type": "object", @@ -29576,7 +32712,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29596,7 +32735,10 @@ "description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CancelBookingInput_2024_08_13": { "type": "object", @@ -29624,7 +32766,9 @@ "example": "User requested cancellation" } }, - "required": ["seatUid"] + "required": [ + "seatUid" + ] }, "CancelBookingOutput_2024_08_13": { "type": "object", @@ -29632,7 +32776,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29664,7 +32811,10 @@ "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "MarkAbsentAttendee": { "type": "object", @@ -29676,7 +32826,10 @@ "type": "boolean" } }, - "required": ["email", "absent"] + "required": [ + "email", + "absent" + ] }, "MarkAbsentBookingInput_2024_08_13": { "type": "object", @@ -29700,7 +32853,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29714,7 +32870,10 @@ "description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ReassignedToDto": { "type": "object", @@ -29732,7 +32891,11 @@ "example": "john.doe@example.com" } }, - "required": ["id", "name", "email"] + "required": [ + "id", + "name", + "email" + ] }, "ReassignBookingOutput_2024_08_13": { "type": "object", @@ -29740,7 +32903,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -29756,7 +32922,10 @@ ] } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "ReassignToUserBookingInput_2024_08_13": { "type": "object", @@ -29790,7 +32959,10 @@ "description": "The link to the calendar" } }, - "required": ["label", "link"] + "required": [ + "label", + "link" + ] }, "CalendarLinksOutput_2024_08_13": { "type": "object", @@ -29808,7 +32980,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "BookingReference": { "type": "object", @@ -29831,7 +33006,12 @@ "description": "The id of the booking reference" } }, - "required": ["type", "eventUid", "destinationCalendarId", "id"] + "required": [ + "type", + "eventUid", + "destinationCalendarId", + "id" + ] }, "BookingReferencesOutput_2024_08_13": { "type": "object", @@ -29849,7 +33029,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CalMeetingParticipant": { "type": "object", @@ -29873,7 +33056,12 @@ "example": 3600 } }, - "required": ["userId", "userName", "joinTime", "duration"] + "required": [ + "userId", + "userName", + "joinTime", + "duration" + ] }, "CalMeetingSession": { "type": "object", @@ -29909,7 +33097,15 @@ } } }, - "required": ["id", "room", "startTime", "duration", "ongoing", "maxParticipants", "participants"] + "required": [ + "id", + "room", + "startTime", + "duration", + "ongoing", + "maxParticipants", + "participants" + ] }, "GetBookingVideoSessionsOutput": { "type": "object", @@ -29917,7 +33113,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -29929,7 +33128,10 @@ "type": "object" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "Guest": { "type": "object", @@ -30006,7 +33208,9 @@ "default": "en" } }, - "required": ["email"] + "required": [ + "email" + ] }, "AddGuestsInput_2024_08_13": { "type": "object", @@ -30030,7 +33234,9 @@ } } }, - "required": ["guests"] + "required": [ + "guests" + ] }, "AddGuestsOutput_2024_08_13": { "type": "object", @@ -30038,7 +33244,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "oneOf": [ @@ -30070,7 +33279,84 @@ "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] + }, + "UpdateBookingLocationInput_2024_08_13": { + "type": "object", + "properties": { + "location": { + "description": "One of the event type locations. If instead of passing one of the location objects as required by schema you are still passing a string please use an object.", + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateInputAddressLocation_2024_08_13" + }, + { + "$ref": "#/components/schemas/UpdateBookingInputAttendeeAddressLocation_2024_08_13" + }, + { + "$ref": "#/components/schemas/UpdateBookingInputAttendeeDefinedLocation_2024_08_13" + }, + { + "$ref": "#/components/schemas/UpdateBookingInputAttendeePhoneLocation_2024_08_13" + }, + { + "$ref": "#/components/schemas/UpdateBookingInputLinkLocation_2024_08_13" + }, + { + "$ref": "#/components/schemas/UpdateBookingInputPhoneLocation_2024_08_13" + } + ] + } + } + }, + "UpdateBookingLocationOutput_2024_08_13": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "success", + "enum": [ + "success", + "error" + ] + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/BookingOutput_2024_08_13" + }, + { + "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecurringBookingOutput_2024_08_13" + } + }, + { + "$ref": "#/components/schemas/GetSeatedBookingOutput_2024_08_13" + }, + { + "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetRecurringSeatedBookingOutput_2024_08_13" + } + } + ], + "description": "Booking data, which can be either a BookingOutput object, a RecurringBookingOutput object, or an array of RecurringBookingOutput objects" + } + }, + "required": [ + "status", + "data" + ] }, "CreateTeamMembershipInput": { "type": "object", @@ -30085,14 +33371,20 @@ "role": { "type": "string", "default": "MEMBER", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean", "default": false } }, - "required": ["userId"] + "required": [ + "userId" + ] }, "CreateTeamMembershipOutput": { "type": "object", @@ -30100,13 +33392,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamMembershipOutput": { "type": "object", @@ -30114,13 +33412,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "GetTeamMembershipsOutput": { "type": "object", @@ -30128,13 +33432,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateTeamMembershipInput": { "type": "object", @@ -30144,7 +33454,11 @@ }, "role": { "type": "string", - "enum": ["MEMBER", "OWNER", "ADMIN"] + "enum": [ + "MEMBER", + "OWNER", + "ADMIN" + ] }, "disableImpersonation": { "type": "boolean" @@ -30157,13 +33471,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteTeamMembershipOutput": { "type": "object", @@ -30171,13 +33491,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UserWebhookOutputDto": { "type": "object", @@ -30209,7 +33535,14 @@ "type": "string" } }, - "required": ["payloadTemplate", "userId", "id", "triggers", "subscriberUrl", "active"] + "required": [ + "payloadTemplate", + "userId", + "id", + "triggers", + "subscriberUrl", + "active" + ] }, "UserWebhookOutputResponseDto": { "type": "object", @@ -30217,13 +33550,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/UserWebhookOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UserWebhooksOutputResponseDto": { "type": "object", @@ -30231,7 +33570,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -30240,7 +33582,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "EventTypeWebhookOutputDto": { "type": "object", @@ -30272,7 +33617,14 @@ "type": "string" } }, - "required": ["payloadTemplate", "eventTypeId", "id", "triggers", "subscriberUrl", "active"] + "required": [ + "payloadTemplate", + "eventTypeId", + "id", + "triggers", + "subscriberUrl", + "active" + ] }, "EventTypeWebhookOutputResponseDto": { "type": "object", @@ -30280,13 +33632,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/EventTypeWebhookOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "EventTypeWebhooksOutputResponseDto": { "type": "object", @@ -30294,7 +33652,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -30303,7 +33664,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DeleteManyWebhooksOutputResponseDto": { "type": "object", @@ -30311,13 +33675,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "string" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OAuthClientWebhookOutputDto": { "type": "object", @@ -30349,7 +33719,14 @@ "type": "string" } }, - "required": ["payloadTemplate", "oAuthClientId", "id", "triggers", "subscriberUrl", "active"] + "required": [ + "payloadTemplate", + "oAuthClientId", + "id", + "triggers", + "subscriberUrl", + "active" + ] }, "OAuthClientWebhookOutputResponseDto": { "type": "object", @@ -30357,13 +33734,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/OAuthClientWebhookOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "OAuthClientWebhooksOutputResponseDto": { "type": "object", @@ -30371,7 +33754,10 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "type": "array", @@ -30380,7 +33766,10 @@ } } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "DestinationCalendarsInputBodyDto": { "type": "object", @@ -30389,7 +33778,11 @@ "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"] + "enum": [ + "apple_calendar", + "google_calendar", + "office365_calendar" + ] }, "externalId": { "type": "string", @@ -30400,7 +33793,10 @@ "type": "string" } }, - "required": ["integration", "externalId"] + "required": [ + "integration", + "externalId" + ] }, "DestinationCalendarsOutputDto": { "type": "object", @@ -30419,7 +33815,12 @@ "nullable": true } }, - "required": ["userId", "integration", "externalId", "credentialId"] + "required": [ + "userId", + "integration", + "externalId", + "credentialId" + ] }, "DestinationCalendarsOutputResponseDto": { "type": "object", @@ -30427,13 +33828,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/DestinationCalendarsOutputDto" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "CalendarEventVideoLocation": { "type": "object", @@ -30441,7 +33848,9 @@ "type": { "type": "string", "default": "video", - "enum": ["video"], + "enum": [ + "video" + ], "description": "Indicates this is a video conference location" }, "url": { @@ -30469,7 +33878,10 @@ "description": "Access code required to join the conference" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ] }, "CalendarEventPhoneLocation": { "type": "object", @@ -30477,7 +33889,9 @@ "type": { "type": "string", "default": "phone", - "enum": ["phone"], + "enum": [ + "phone" + ], "description": "Indicates this is a phone conference location" }, "url": { @@ -30510,7 +33924,10 @@ "description": "Country/region code for the phone number" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ] }, "CalendarEventSipLocation": { "type": "object", @@ -30518,7 +33935,9 @@ "type": { "type": "string", "default": "sip", - "enum": ["sip"], + "enum": [ + "sip" + ], "description": "Indicates this is a SIP (Session Initiation Protocol) conference location" }, "url": { @@ -30541,7 +33960,10 @@ "description": "Password required for the SIP conference" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ] }, "CalendarEventMoreLocation": { "type": "object", @@ -30549,7 +33971,9 @@ "type": { "type": "string", "default": "more", - "enum": ["more"], + "enum": [ + "more" + ], "description": "Indicates this is an additional conference location type" }, "url": { @@ -30562,12 +33986,20 @@ "description": "Display name for this location" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ] }, "CalendarEventResponseStatus": { "type": "string", "description": "Response status of the attendee", - "enum": ["accepted", "pending", "declined", "needsAction"] + "enum": [ + "accepted", + "pending", + "declined", + "needsAction" + ] }, "CalendarEventAttendee": { "type": "object", @@ -30601,12 +34033,19 @@ "description": "Indicates if this attendee is the host" } }, - "required": ["email"] + "required": [ + "email" + ] }, "CalendarEventStatus": { "type": "string", "description": "Status of the event (accepted, pending, declined, cancelled)", - "enum": ["accepted", "pending", "declined", "cancelled"] + "enum": [ + "accepted", + "pending", + "declined", + "cancelled" + ] }, "CalendarEventHost": { "type": "object", @@ -30626,7 +34065,9 @@ "$ref": "#/components/schemas/CalendarEventResponseStatus" } }, - "required": ["email"] + "required": [ + "email" + ] }, "calendarEventOwner": { "type": "object", @@ -30641,12 +34082,18 @@ "description": "Display name of the event host" } }, - "required": ["email"] + "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"] + "enum": [ + "google", + "office365", + "apple" + ] }, "UnifiedCalendarEventOutput": { "type": "object", @@ -30749,7 +34196,13 @@ "$ref": "#/components/schemas/CalendarSource" } }, - "required": ["start", "end", "id", "title", "source"] + "required": [ + "start", + "end", + "id", + "title", + "source" + ] }, "GetUnifiedCalendarEventOutput": { "type": "object", @@ -30757,13 +34210,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/UnifiedCalendarEventOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UpdateCalendarEventAttendee": { "type": "object", @@ -30859,7 +34318,9 @@ "example": "acme@example.com" } }, - "required": ["email"] + "required": [ + "email" + ] }, "RequestEmailVerificationOutput": { "type": "object", @@ -30867,10 +34328,15 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "RequestPhoneVerificationInput": { "type": "object", @@ -30881,7 +34347,9 @@ "example": "+372 5555 6666" } }, - "required": ["phone"] + "required": [ + "phone" + ] }, "RequestPhoneVerificationOutput": { "type": "object", @@ -30889,10 +34357,15 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] } }, - "required": ["status"] + "required": [ + "status" + ] }, "VerifyEmailInput": { "type": "object", @@ -30908,7 +34381,10 @@ "example": "1ABG2C" } }, - "required": ["email", "code"] + "required": [ + "email", + "code" + ] }, "WorkingHours": { "type": "object", @@ -30930,7 +34406,11 @@ "nullable": true } }, - "required": ["days", "startTime", "endTime"] + "required": [ + "days", + "startTime", + "endTime" + ] }, "AvailabilityModel": { "type": "object", @@ -30970,7 +34450,12 @@ "nullable": true } }, - "required": ["id", "days", "startTime", "endTime"] + "required": [ + "id", + "days", + "startTime", + "endTime" + ] }, "ScheduleOutput": { "type": "object", @@ -31040,13 +34525,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "VerifyPhoneInput": { "type": "object", @@ -31062,7 +34553,10 @@ "example": "1ABG2C" } }, - "required": ["phone", "code"] + "required": [ + "phone", + "code" + ] }, "UserVerifiedPhoneOutput": { "type": "object", @@ -31070,13 +34564,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UserVerifiedEmailsOutput": { "type": "object", @@ -31084,13 +34584,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "UserVerifiedPhonesOutput": { "type": "object", @@ -31098,13 +34604,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamVerifiedEmailOutput": { "type": "object", @@ -31112,13 +34624,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamVerifiedPhoneOutput": { "type": "object", @@ -31126,13 +34644,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamVerifiedEmailsOutput": { "type": "object", @@ -31140,13 +34664,19 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] }, "TeamVerifiedPhonesOutput": { "type": "object", @@ -31154,14 +34684,20 @@ "status": { "type": "string", "example": "success", - "enum": ["success", "error"] + "enum": [ + "success", + "error" + ] }, "data": { "$ref": "#/components/schemas/ScheduleOutput" } }, - "required": ["status", "data"] + "required": [ + "status", + "data" + ] } } } -} +} \ No newline at end of file