diff --git a/apps/api/v2/src/ee/event-types-private-links/controllers/event-types-private-links.controller.ts b/apps/api/v2/src/ee/event-types-private-links/controllers/event-types-private-links.controller.ts index cd77067666..d0a384be66 100644 --- a/apps/api/v2/src/ee/event-types-private-links/controllers/event-types-private-links.controller.ts +++ b/apps/api/v2/src/ee/event-types-private-links/controllers/event-types-private-links.controller.ts @@ -67,10 +67,9 @@ export class EventTypesPrivateLinksController { @ApiHeader(API_KEY_OR_ACCESS_TOKEN_HEADER) @ApiOperation({ summary: "Get all private links for an event type" }) async getPrivateLinks( - @Param("eventTypeId", ParseIntPipe) eventTypeId: number, - @GetUser("id") userId: number + @Param("eventTypeId", ParseIntPipe) eventTypeId: number ): Promise { - const privateLinks = await this.privateLinksService.getPrivateLinks(eventTypeId, userId); + const privateLinks = await this.privateLinksService.getPrivateLinks(eventTypeId); return { status: SUCCESS_STATUS, diff --git a/apps/api/v2/src/ee/event-types-private-links/event-types-private-links.module.ts b/apps/api/v2/src/ee/event-types-private-links/event-types-private-links.module.ts index 4b9643fc76..6bd91072d7 100644 --- a/apps/api/v2/src/ee/event-types-private-links/event-types-private-links.module.ts +++ b/apps/api/v2/src/ee/event-types-private-links/event-types-private-links.module.ts @@ -1,15 +1,15 @@ -import { Module } from "@nestjs/common"; -import { TokensModule } from "@/modules/tokens/tokens.module"; -import { OAuthClientModule } from "@/modules/oauth-clients/oauth-client.module"; -import { PrismaModule } from "@/modules/prisma/prisma.module"; import { EventTypesModule_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/event-types.module"; import { EventTypeOwnershipGuard } from "@/modules/event-types/guards/event-type-ownership.guard"; +import { OAuthClientModule } from "@/modules/oauth-clients/oauth-client.module"; +import { PrismaModule } from "@/modules/prisma/prisma.module"; +import { TokensModule } from "@/modules/tokens/tokens.module"; +import { Module } from "@nestjs/common"; import { EventTypesPrivateLinksController } from "./controllers/event-types-private-links.controller"; +import { PrivateLinksRepository } from "./private-links.repository"; import { PrivateLinksInputService } from "./services/private-links-input.service"; import { PrivateLinksOutputService } from "./services/private-links-output.service"; import { PrivateLinksService } from "./services/private-links.service"; -import { PrivateLinksRepository } from "./private-links.repository"; @Module({ imports: [TokensModule, OAuthClientModule, PrismaModule, EventTypesModule_2024_06_14], @@ -23,5 +23,3 @@ import { PrivateLinksRepository } from "./private-links.repository"; ], }) export class EventTypesPrivateLinksModule {} - - diff --git a/apps/api/v2/src/ee/event-types-private-links/private-links.repository.ts b/apps/api/v2/src/ee/event-types-private-links/private-links.repository.ts index 4f6dde61b1..09cb2cdf9d 100644 --- a/apps/api/v2/src/ee/event-types-private-links/private-links.repository.ts +++ b/apps/api/v2/src/ee/event-types-private-links/private-links.repository.ts @@ -25,7 +25,10 @@ export class PrivateLinksRepository { }); } - async create(eventTypeId: number, link: { link: string; expiresAt: Date | null; maxUsageCount?: number | null }) { + async create( + eventTypeId: number, + link: { link: string; expiresAt: Date | null; maxUsageCount?: number | null } + ) { return this.dbWrite.prisma.hashedLink.create({ data: { eventTypeId, @@ -36,7 +39,10 @@ export class PrivateLinksRepository { }); } - async update(eventTypeId: number, link: { link: string; expiresAt: Date | null; maxUsageCount?: number | null }) { + async update( + eventTypeId: number, + link: { link: string; expiresAt: Date | null; maxUsageCount?: number | null } + ) { return this.dbWrite.prisma.hashedLink.updateMany({ where: { eventTypeId, link: link.link }, data: { @@ -50,5 +56,3 @@ export class PrivateLinksRepository { return this.dbWrite.prisma.hashedLink.deleteMany({ where: { eventTypeId, link: linkId } }); } } - - diff --git a/apps/api/v2/src/ee/event-types-private-links/services/private-links-output.service.ts b/apps/api/v2/src/ee/event-types-private-links/services/private-links-output.service.ts index 35ce974f53..508129e380 100644 --- a/apps/api/v2/src/ee/event-types-private-links/services/private-links-output.service.ts +++ b/apps/api/v2/src/ee/event-types-private-links/services/private-links-output.service.ts @@ -1,6 +1,12 @@ import { Injectable } from "@nestjs/common"; import { plainToClass } from "class-transformer"; +import { + PrivateLinkOutput, + TimeBasedPrivateLinkOutput, + UsageBasedPrivateLinkOutput, +} from "@calcom/platform-types"; + export type PrivateLinkData = { id: string; eventTypeId: number; @@ -10,7 +16,6 @@ export type PrivateLinkData = { maxUsageCount?: number | null; usageCount?: number; }; -import { PrivateLinkOutput, TimeBasedPrivateLinkOutput, UsageBasedPrivateLinkOutput } from "@calcom/platform-types"; @Injectable() export class PrivateLinksOutputService { @@ -39,5 +44,3 @@ export class PrivateLinksOutputService { return data.map((item) => this.transformToOutput(item)); } } - - diff --git a/apps/api/v2/src/ee/event-types-private-links/services/private-links.service.ts b/apps/api/v2/src/ee/event-types-private-links/services/private-links.service.ts index a9bd775828..73a2cf16f5 100644 --- a/apps/api/v2/src/ee/event-types-private-links/services/private-links.service.ts +++ b/apps/api/v2/src/ee/event-types-private-links/services/private-links.service.ts @@ -1,14 +1,13 @@ -import { Injectable, NotFoundException, BadRequestException } from "@nestjs/common"; - -import { generateHashedLink, isLinkExpired } from "@calcom/platform-libraries/private-links"; -import { CreatePrivateLinkInput, PrivateLinkOutput, UpdatePrivateLinkInput } from "@calcom/platform-types"; - +import { PrivateLinksRepository } from "@/ee/event-types-private-links/private-links.repository"; import { PrivateLinksInputService } from "@/ee/event-types-private-links/services/private-links-input.service"; import { PrivateLinksOutputService, type PrivateLinkData, } from "@/ee/event-types-private-links/services/private-links-output.service"; -import { PrivateLinksRepository } from "@/ee/event-types-private-links/private-links.repository"; +import { Injectable, NotFoundException, BadRequestException } from "@nestjs/common"; + +import { generateHashedLink, isLinkExpired } from "@calcom/platform-libraries/private-links"; +import { CreatePrivateLinkInput, PrivateLinkOutput, UpdatePrivateLinkInput } from "@calcom/platform-types"; @Injectable() export class PrivateLinksService { @@ -48,7 +47,7 @@ export class PrivateLinksService { } } - async getPrivateLinks(eventTypeId: number, userId: number): Promise { + async getPrivateLinks(eventTypeId: number): Promise { try { const links = await this.repo.listByEventTypeId(eventTypeId); const mapped: PrivateLinkData[] = links.map((l) => ({ @@ -124,5 +123,3 @@ export class PrivateLinksService { } } } - - diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.ts index 0a7eaf9f46..a9ac0d78ad 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.ts @@ -6,7 +6,6 @@ import { UpdateEventTypeOutput_2024_06_14 } from "@/ee/event-types/event-types_2 import { EventTypeResponseTransformPipe } from "@/ee/event-types/event-types_2024_06_14/pipes/event-type-response.transformer"; import { EventTypesService_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/services/event-types.service"; import { InputEventTypesService_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/services/input-event-types.service"; - import { VERSION_2024_06_14_VALUE } from "@/lib/api-versions"; import { API_KEY_OR_ACCESS_TOKEN_HEADER } from "@/lib/docs/headers"; import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; @@ -42,7 +41,6 @@ import { GetEventTypesQuery_2024_06_14, CreateEventTypeInput_2024_06_14, EventTypeOutput_2024_06_14, - } from "@calcom/platform-types"; @Controller({ diff --git a/apps/api/v2/src/ee/platform-endpoints-module.ts b/apps/api/v2/src/ee/platform-endpoints-module.ts index 2f47ce64a2..e10450f628 100644 --- a/apps/api/v2/src/ee/platform-endpoints-module.ts +++ b/apps/api/v2/src/ee/platform-endpoints-module.ts @@ -1,6 +1,7 @@ import { BookingsModule_2024_04_15 } from "@/ee/bookings/2024-04-15/bookings.module"; import { BookingsModule_2024_08_13 } from "@/ee/bookings/2024-08-13/bookings.module"; import { CalendarsModule } from "@/ee/calendars/calendars.module"; +import { EventTypesPrivateLinksModule } from "@/ee/event-types-private-links/event-types-private-links.module"; import { EventTypesModule_2024_04_15 } from "@/ee/event-types/event-types_2024_04_15/event-types.module"; import { EventTypesModule_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/event-types.module"; import { GcalModule } from "@/ee/gcal/gcal.module"; @@ -14,7 +15,6 @@ import { SlotsModule_2024_09_04 } from "@/modules/slots/slots-2024-09-04/slots.m import { TeamsEventTypesModule } from "@/modules/teams/event-types/teams-event-types.module"; import { TeamsMembershipsModule } from "@/modules/teams/memberships/teams-memberships.module"; import { TeamsModule } from "@/modules/teams/teams/teams.module"; -import { EventTypesPrivateLinksModule } from "@/ee/event-types-private-links/event-types-private-links.module"; import type { MiddlewareConsumer, NestModule } from "@nestjs/common"; import { Module } from "@nestjs/common"; diff --git a/apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts b/apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts index f4b35d0bb1..85b9a0a944 100644 --- a/apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts +++ b/apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts @@ -2,10 +2,21 @@ import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { API_KEY_OR_ACCESS_TOKEN_HEADER } from "@/lib/docs/headers"; import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; import { PermissionsGuard } from "@/modules/auth/guards/permissions/permissions.guard"; -import { GetUnifiedCalendarEventOutput } from "@/modules/cal-unified-calendars/outputs/get-unified-calendar-event"; +import { UpdateUnifiedCalendarEventInput } from "@/modules/cal-unified-calendars/inputs/update-unified-calendar-event.input"; +import { GetUnifiedCalendarEventOutput } from "@/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output"; import { GoogleCalendarEventOutputPipe } from "@/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe"; import { GoogleCalendarService } from "@/modules/cal-unified-calendars/services/google-calendar.service"; -import { Controller, Get, Param, UseGuards, HttpCode, HttpStatus, BadRequestException } from "@nestjs/common"; +import { + Controller, + Get, + Param, + UseGuards, + HttpCode, + HttpStatus, + BadRequestException, + Patch, + Body, +} from "@nestjs/common"; import { ApiTags as DocsTags, ApiParam, ApiHeader, ApiOperation } from "@nestjs/swagger"; import { GOOGLE_CALENDAR, SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -30,6 +41,7 @@ export class CalUnifiedCalendarsController { type: String, }) @Get("/:calendar/event/:eventUid") + @Get("/:calendar/events/:eventUid") @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard, PermissionsGuard) @ApiHeader(API_KEY_OR_ACCESS_TOKEN_HEADER) @@ -54,4 +66,42 @@ export class CalUnifiedCalendarsController { data: transformedEvent, }; } + + @ApiParam({ + name: "calendar", + enum: [GOOGLE_CALENDAR], + type: String, + }) + @ApiParam({ + name: "eventUid", + description: + "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", + type: String, + }) + @Patch("/:calendar/events/:eventUid") + @HttpCode(HttpStatus.OK) + @UseGuards(ApiAuthGuard, PermissionsGuard) + @ApiHeader(API_KEY_OR_ACCESS_TOKEN_HEADER) + @ApiOperation({ + summary: "Update meeting details in calendar", + description: "Updates event information in the specified calendar provider", + }) + async updateCalendarEvent( + @Param("calendar") calendar: string, + @Param("eventUid") eventUid: string, + @Body() updateData: UpdateUnifiedCalendarEventInput + ): Promise { + if (calendar !== GOOGLE_CALENDAR) { + throw new BadRequestException("Event updates are currently only available for Google Calendar"); + } + + const updatedEvent = await this.googleCalendarService.updateEventDetails(eventUid, updateData); + + const transformedEvent = new GoogleCalendarEventOutputPipe().transform(updatedEvent); + + return { + status: SUCCESS_STATUS, + data: transformedEvent, + }; + } } diff --git a/apps/api/v2/src/modules/cal-unified-calendars/inputs/update-unified-calendar-event.input.ts b/apps/api/v2/src/modules/cal-unified-calendars/inputs/update-unified-calendar-event.input.ts new file mode 100644 index 0000000000..dc09c1c15d --- /dev/null +++ b/apps/api/v2/src/modules/cal-unified-calendars/inputs/update-unified-calendar-event.input.ts @@ -0,0 +1,134 @@ +import { ApiPropertyOptional } from "@nestjs/swagger"; +import { Type } from "class-transformer"; +import { IsISO8601, IsOptional, IsString, ValidateNested, IsEnum, IsArray } from "class-validator"; + +import { CalendarEventStatus, CalendarEventResponseStatus } from "../outputs/get-unified-calendar-event.output"; + +export class UpdateCalendarEventAttendee { + @IsString() + @ApiPropertyOptional({ + type: String, + description: "Email address of the attendee", + }) + email!: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ + type: String, + description: "Display name of the attendee", + }) + name?: string; + + @IsEnum(CalendarEventResponseStatus) + @IsOptional() + @ApiPropertyOptional({ + enum: CalendarEventResponseStatus, + enumName: "CalendarEventResponseStatus", + nullable: true, + description: "Response status of the attendee", + }) + responseStatus?: CalendarEventResponseStatus | null; + + @IsOptional() + @ApiPropertyOptional({ + nullable: true, + description: "Indicates if this attendee is the current user", + }) + self?: boolean; + + @IsOptional() + @ApiPropertyOptional({ + nullable: true, + description: "Indicates if this attendee's attendance is optional", + }) + optional?: boolean; + + @IsOptional() + @ApiPropertyOptional({ + nullable: true, + description: "Indicates if this attendee is the host", + }) + host?: boolean; + +} + +export class UpdateDateTimeWithZone { + @IsISO8601() + @IsOptional() + @ApiPropertyOptional({ type: "string", format: "date-time" }) + time?: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional() + timeZone?: string; +} + +export class UpdateUnifiedCalendarEventInput { + @ValidateNested() + @Type(() => UpdateDateTimeWithZone) + @IsOptional() + @ApiPropertyOptional({ + type: "object", + properties: { + time: { type: "string", format: "date-time" }, + timeZone: { type: "string" }, + }, + description: "Start date and time of the calendar event with timezone information", + }) + start?: UpdateDateTimeWithZone; + + @ValidateNested() + @Type(() => UpdateDateTimeWithZone) + @IsOptional() + @ApiPropertyOptional({ + type: "object", + properties: { + time: { type: "string", format: "date-time" }, + timeZone: { type: "string" }, + }, + description: "End date and time of the calendar event with timezone information", + }) + end?: UpdateDateTimeWithZone; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ + type: String, + description: "Title of the calendar event", + }) + title?: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ + type: String, + nullable: true, + description: "Detailed description of the calendar event", + }) + description?: string | null; + + @IsOptional() + @IsArray() + @ValidateNested({ each: true }) + @Type(() => UpdateCalendarEventAttendee) + @ApiPropertyOptional({ + type: [UpdateCalendarEventAttendee], + nullable: true, + description: + "List of attendees. CAUTION: You must pass the entire array with all updated values. Any attendees not included in this array will be removed from the event.", + }) + attendees?: UpdateCalendarEventAttendee[]; + + @IsEnum(CalendarEventStatus) + @IsOptional() + @ApiPropertyOptional({ + enum: CalendarEventStatus, + enumName: "CalendarEventStatus", + nullable: true, + description: "Status of the event (accepted, pending, declined, cancelled)", + example: CalendarEventStatus.ACCEPTED, + }) + status?: CalendarEventStatus | null; +} diff --git a/apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.ts b/apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output.ts similarity index 91% rename from apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.ts rename to apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output.ts index 273cbcb76e..654936b4ca 100644 --- a/apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.ts +++ b/apps/api/v2/src/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output.ts @@ -225,6 +225,22 @@ export class CalendarEventHost { responseStatus!: CalendarEventResponseStatus | null; } +export class calendarEventOwner { + @IsString() + @ApiProperty({ + description: "Email address of the event host", + }) + email!: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ + nullable: true, + description: "Display name of the event host", + }) + name?: string; +} + export class CalendarEventAttendee { @IsString() @ApiProperty({ @@ -264,6 +280,14 @@ export class CalendarEventAttendee { description: "Indicates if this attendee's attendance is optional", }) optional?: boolean; + + + @IsOptional() + @ApiPropertyOptional({ + nullable: true, + description: "Indicates if this attendee is the host", + }) + host?: boolean; } export class DateTimeWithZone { @@ -384,6 +408,16 @@ export class UnifiedCalendarEventOutput { }) hosts?: CalendarEventHost[]; + @IsOptional() + @ValidateNested({ each: true }) + @Type(() => calendarEventOwner) + @ApiPropertyOptional({ + type: calendarEventOwner, + nullable: true, + description: "The calendar account that owns this event. This is the primary calendar where the event is stored and cannot be modified without appropriate permissions. Changing this would require moving the event to a different calendar", + }) + calendarEventOwner?: calendarEventOwner; + @IsEnum(CALENDARS) @ApiProperty({ enum: CALENDARS, diff --git a/apps/api/v2/src/modules/cal-unified-calendars/pipes/__fixtures__/google-calendar-event.fixture.ts b/apps/api/v2/src/modules/cal-unified-calendars/pipes/__fixtures__/google-calendar-event.fixture.ts new file mode 100644 index 0000000000..dc9881e59b --- /dev/null +++ b/apps/api/v2/src/modules/cal-unified-calendars/pipes/__fixtures__/google-calendar-event.fixture.ts @@ -0,0 +1,103 @@ +import { GoogleCalendarEventResponse } from "../get-calendar-event-details-output-pipe"; + +export const createGoogleCalendarEventFixture = ( + overrides: Partial = {} +): GoogleCalendarEventResponse => { + const baseEvent: GoogleCalendarEventResponse = { + kind: "calendar#event", + etag: "test-etag", + id: "test-event-id", + status: "confirmed", + htmlLink: "https://calendar.google.com/event", + created: "2024-01-01T00:00:00Z", + updated: "2024-01-01T00:00:00Z", + summary: "Test Meeting", + description: "Test description", + creator: { + email: "creator@example.com", + displayName: "Creator Name", + }, + organizer: { + email: "organizer@example.com", + displayName: "Organizer Name", + }, + start: { + dateTime: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }, + end: { + dateTime: "2024-01-15T11:00:00Z", + timeZone: "America/New_York", + }, + iCalUID: "test-ical-uid", + sequence: 0, + attendees: [ + { + email: "attendee@example.com", + displayName: "Attendee Name", + responseStatus: "accepted", + organizer: false, + }, + { + email: "organizer@example.com", + displayName: "Organizer Name", + responseStatus: "accepted", + organizer: true, + }, + ], + conferenceData: { + conferenceId: "abc-def-ghi", + entryPoints: [ + { + entryPointType: "video", + uri: "https://meet.google.com/abc-def-ghi", + label: "meet.google.com/abc-def-ghi", + }, + ], + conferenceSolution: { + key: { + type: "hangoutsMeet", + }, + name: "Google Meet", + iconUri: + "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png", + }, + }, + hangoutLink: "https://meet.google.com/abc-def-ghi", + }; + + return { ...baseEvent, ...overrides }; +}; + +export const googleEventWithConferenceData = createGoogleCalendarEventFixture({ + conferenceData: { + conferenceId: "test-conference-id", + entryPoints: [ + { + entryPointType: "video", + uri: "https://meet.google.com/abc-def-ghi", + label: "Google Meet", + pin: "123456", + regionCode: "US", + }, + { + entryPointType: "phone", + uri: "tel:+1-555-123-4567", + label: "Phone", + pin: "789012", + }, + ], + }, +}); + +export const googleEventWithLocationOnly = createGoogleCalendarEventFixture({ + location: "123 Main St, City, State", + conferenceData: undefined, + hangoutLink: undefined, +}); + +export const googleEventWithHangoutLink = createGoogleCalendarEventFixture({ + hangoutLink: "https://hangouts.google.com/call/abc123", + conferenceData: undefined, + location: undefined, +}); diff --git a/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.spec.ts b/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.spec.ts new file mode 100644 index 0000000000..540fe98f3a --- /dev/null +++ b/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.spec.ts @@ -0,0 +1,201 @@ +import { + CalendarEventStatus, + CalendarEventResponseStatus, +} from "@/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output"; + +import { + createGoogleCalendarEventFixture, + googleEventWithConferenceData, + googleEventWithLocationOnly, + googleEventWithHangoutLink, +} from "./__fixtures__/google-calendar-event.fixture"; +import { + GoogleCalendarEventOutputPipe, + GoogleCalendarEventResponse, +} from "./get-calendar-event-details-output-pipe"; + +describe("GoogleCalendarEventOutputPipe", () => { + let pipe: GoogleCalendarEventOutputPipe; + let sharedGoogleEvent: GoogleCalendarEventResponse; + + beforeAll(() => { + sharedGoogleEvent = createGoogleCalendarEventFixture(); + }); + + beforeEach(() => { + pipe = new GoogleCalendarEventOutputPipe(); + }); + + describe("transform", () => { + it("should transform Google Calendar event to unified format", () => { + const result = pipe.transform(sharedGoogleEvent); + + expect(result.id).toBe("test-event-id"); + expect(result.title).toBe("Test Meeting"); + expect(result.description).toBe("Test description"); + expect(result.source).toBe("google"); + expect(result.status).toBe(CalendarEventStatus.ACCEPTED); + expect(result.start.time).toBe("2024-01-15T10:00:00Z"); + expect(result.start.timeZone).toBe("America/New_York"); + expect(result.end.time).toBe("2024-01-15T11:00:00Z"); + expect(result.end.timeZone).toBe("America/New_York"); + expect(result.attendees).toHaveLength(2); + }); + }); + + describe("transformDateTimeWithZone", () => { + it("should transform Google date time to unified format", () => { + const googleDateTime = { + dateTime: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }; + + const result = pipe["transformDateTimeWithZone"](googleDateTime); + + expect(result.time).toBe("2024-01-15T10:00:00Z"); + expect(result.timeZone).toBe("America/New_York"); + }); + }); + + describe("transformAttendeeResponseStatus", () => { + it("should transform accepted status", () => { + const result = pipe["transformAttendeeResponseStatus"]("accepted"); + expect(result).toBe(CalendarEventResponseStatus.ACCEPTED); + }); + + it("should transform tentative status", () => { + const result = pipe["transformAttendeeResponseStatus"]("tentative"); + expect(result).toBe(CalendarEventResponseStatus.PENDING); + }); + + it("should transform declined status", () => { + const result = pipe["transformAttendeeResponseStatus"]("declined"); + expect(result).toBe(CalendarEventResponseStatus.DECLINED); + }); + + it("should transform needsaction status", () => { + const result = pipe["transformAttendeeResponseStatus"]("needsaction"); + expect(result).toBe(CalendarEventResponseStatus.NEEDS_ACTION); + }); + + it("should handle case insensitive status", () => { + const result = pipe["transformAttendeeResponseStatus"]("ACCEPTED"); + expect(result).toBe(CalendarEventResponseStatus.ACCEPTED); + }); + + it("should handle unknown status", () => { + const result = pipe["transformAttendeeResponseStatus"]("unknown"); + expect(result).toBeNull(); + }); + + it("should handle null status", () => { + const result = pipe["transformAttendeeResponseStatus"](undefined); + expect(result).toBeNull(); + }); + }); + + describe("transformEventStatus", () => { + it("should transform confirmed status", () => { + const result = pipe["transformEventStatus"]("confirmed"); + expect(result).toBe(CalendarEventStatus.ACCEPTED); + }); + + it("should transform tentative status", () => { + const result = pipe["transformEventStatus"]("tentative"); + expect(result).toBe(CalendarEventStatus.PENDING); + }); + + it("should transform cancelled status", () => { + const result = pipe["transformEventStatus"]("cancelled"); + expect(result).toBe(CalendarEventStatus.CANCELLED); + }); + + it("should handle case insensitive status", () => { + const result = pipe["transformEventStatus"]("CONFIRMED"); + expect(result).toBe(CalendarEventStatus.ACCEPTED); + }); + + it("should handle unknown status", () => { + const result = pipe["transformEventStatus"]("unknown"); + expect(result).toBeNull(); + }); + + it("should handle null status", () => { + const result = pipe["transformEventStatus"](undefined); + expect(result).toBeNull(); + }); + }); + + describe("transformOrganizer", () => { + it("should return calendarEventOwner organizer exist", () => { + const eventWithoutOrganizerAttendees = createGoogleCalendarEventFixture({ + organizer: { email: "organizer@example.com" }, + attendees: [ + { + email: "attendee@example.com", + displayName: "Regular Attendee", + responseStatus: "accepted", + organizer: false, + }, + ], + }); + + const result = pipe.transform(eventWithoutOrganizerAttendees); + + expect(result?.calendarEventOwner?.email).toBe("organizer@example.com"); + }); + }); + + describe("transformLocations", () => { + it("should transform conference data entry points", () => { + const result = pipe["transformLocations"](googleEventWithConferenceData); + + expect(result).toHaveLength(2); + expect(result[0]).toEqual({ + type: "video", + url: "https://meet.google.com/abc-def-ghi", + label: "Google Meet", + pin: "123456", + regionCode: "US", + }); + expect(result[1]).toEqual({ + type: "phone", + url: "tel:+1-555-123-4567", + label: "Phone", + pin: "789012", + regionCode: undefined, + }); + }); + + it("should fallback to location field", () => { + const result = pipe["transformLocations"](googleEventWithLocationOnly); + + expect(result).toHaveLength(1); + expect(result[0]).toEqual({ + type: "video", + url: "123 Main St, City, State", + }); + }); + + it("should fallback to hangout link", () => { + const result = pipe["transformLocations"](googleEventWithHangoutLink); + + expect(result).toHaveLength(1); + expect(result[0]).toEqual({ + type: "video", + url: "https://hangouts.google.com/call/abc123", + }); + }); + + it("should return empty array when no location data", () => { + const eventWithoutLocation = createGoogleCalendarEventFixture({ + location: undefined, + conferenceData: undefined, + hangoutLink: undefined, + }); + + const result = pipe["transformLocations"](eventWithoutLocation); + expect(result).toEqual([]); + }); + }); +}); diff --git a/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.ts b/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.ts index 906dcc8b3d..40a2843a16 100644 --- a/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.ts +++ b/apps/api/v2/src/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe.ts @@ -3,7 +3,7 @@ import { CalendarEventStatus, DateTimeWithZone, UnifiedCalendarEventOutput, -} from "@/modules/cal-unified-calendars/outputs/get-unified-calendar-event"; +} from "@/modules/cal-unified-calendars/outputs/get-unified-calendar-event.output"; import { PipeTransform, Injectable } from "@nestjs/common"; export interface GoogleCalendarEventResponse { @@ -94,14 +94,12 @@ export class GoogleCalendarEventOutputPipe calendarEvent.locations = this.transformLocations(googleEvent); if (googleEvent.attendees && googleEvent.attendees.length > 0) { - calendarEvent.attendees = googleEvent.attendees - .filter((attendee) => !attendee.organizer) - .map((attendee) => { + calendarEvent.attendees = googleEvent.attendees.map((attendee) => { return { email: attendee.email, name: attendee.displayName, responseStatus: this.transformAttendeeResponseStatus(attendee.responseStatus), - organizer: attendee.organizer, + host: attendee.organizer, self: attendee.self, optional: attendee.optional, }; @@ -110,7 +108,8 @@ export class GoogleCalendarEventOutputPipe calendarEvent.status = this.transformEventStatus(googleEvent.status); - calendarEvent.hosts = this.transformHosts(googleEvent); + calendarEvent.calendarEventOwner = googleEvent.organizer + calendarEvent.hosts = this.transformHosts(googleEvent) calendarEvent.source = "google"; @@ -196,6 +195,8 @@ export class GoogleCalendarEventOutputPipe regionCode: entryPoint.regionCode, }; }); + } else if (googleEvent.location) { + return [{ type: "video", url: googleEvent.location }]; } else if (googleEvent.hangoutLink) { return [{ type: "video", url: googleEvent.hangoutLink }]; } diff --git a/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input-pipe.ts b/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input-pipe.ts new file mode 100644 index 0000000000..4a92a2918f --- /dev/null +++ b/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input-pipe.ts @@ -0,0 +1,121 @@ +import { GoogleCalendarEventResponse } from "@/modules/cal-unified-calendars/pipes/get-calendar-event-details-output-pipe"; +import { Injectable } from "@nestjs/common"; + +import { + UpdateUnifiedCalendarEventInput, + UpdateDateTimeWithZone, +} from "../inputs/update-unified-calendar-event.input"; +import { CalendarEventResponseStatus, CalendarEventStatus } from "../outputs/get-unified-calendar-event.output"; + +// Common interfaces for Google Calendar types +interface GoogleCalendarDateTime { + dateTime: string; + timeZone: string; +} + +interface GoogleCalendarAttendee { + email: string; + displayName?: string; + responseStatus: string; + organizer?: boolean; +} + +interface GoogleCalendarEventInputTransform { + transform( + updateData: UpdateUnifiedCalendarEventInput, + fetchedEvent?: GoogleCalendarEventResponse | null + ): any; +} + +@Injectable() +export class GoogleCalendarEventInputPipe implements GoogleCalendarEventInputTransform { + transform( + updateData: UpdateUnifiedCalendarEventInput, + ): any { + const updatePayload: any = {}; + + if (updateData.title !== undefined) { + updatePayload.summary = updateData.title; + } + + if (updateData.description !== undefined) { + updatePayload.description = updateData.description; + } + + if (updateData.start) { + updatePayload.start = this.transformDateTimeWithZone(updateData.start); + } + + if (updateData.end) { + updatePayload.end = this.transformDateTimeWithZone(updateData.end); + } + + if (updateData.attendees !== undefined) { + updatePayload.attendees = this.transformAttendees( + updateData.attendees, + ); + } + + if (updateData.status !== undefined) { + updatePayload.status = this.transformEventStatus(updateData.status); + } + + return updatePayload; + } + + private transformDateTimeWithZone(dateTime: UpdateDateTimeWithZone): GoogleCalendarDateTime { + return { + dateTime: dateTime.time || "", + timeZone: dateTime.timeZone || "", + }; + } + + private transformAttendees( + inputAttendees: NonNullable, + ): GoogleCalendarAttendee[] { + return inputAttendees.map((attendee) => { + return { + email: attendee.email, + displayName: attendee.name, + responseStatus: this.transformResponseStatus(attendee.responseStatus), + organizer: attendee.host, + self: attendee.self, + optional: attendee.optional, + }; + }); + } + + private transformResponseStatus(responseStatus?: CalendarEventResponseStatus | null): string { + if (!responseStatus) return "needsAction"; + + switch (responseStatus) { + case CalendarEventResponseStatus.ACCEPTED: + return "accepted"; + case CalendarEventResponseStatus.PENDING: + return "tentative"; + case CalendarEventResponseStatus.DECLINED: + return "declined"; + case CalendarEventResponseStatus.NEEDS_ACTION: + return "needsAction"; + default: + return "needsAction"; + } + } + + private transformEventStatus(status?: CalendarEventStatus | null): string { + if (!status) return "confirmed"; + + switch (status) { + case CalendarEventStatus.ACCEPTED: + return "confirmed"; + case CalendarEventStatus.PENDING: + return "tentative"; + case CalendarEventStatus.CANCELLED: + return "cancelled"; + case CalendarEventStatus.DECLINED: + return "cancelled"; + default: + return "confirmed"; + } + } +} diff --git a/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input.pipe.spec.ts b/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input.pipe.spec.ts new file mode 100644 index 0000000000..4221e5a648 --- /dev/null +++ b/apps/api/v2/src/modules/cal-unified-calendars/pipes/google-calendar-event-input.pipe.spec.ts @@ -0,0 +1,222 @@ +import { + UpdateUnifiedCalendarEventInput, + UpdateDateTimeWithZone, +} from "../inputs/update-unified-calendar-event.input"; +import { CalendarEventResponseStatus, CalendarEventStatus } from "../outputs/get-unified-calendar-event.output"; +import { GoogleCalendarEventResponse } from "./get-calendar-event-details-output-pipe"; +import { GoogleCalendarEventInputPipe } from "./google-calendar-event-input-pipe"; + +describe("GoogleCalendarEventInputPipe", () => { + let pipe: GoogleCalendarEventInputPipe; + let sharedGoogleEvent: GoogleCalendarEventResponse; + + beforeAll(() => { + sharedGoogleEvent = { + kind: "calendar#event", + etag: "test-etag", + id: "test-event-id", + status: "confirmed", + htmlLink: "https://calendar.google.com/event", + created: "2024-01-01T00:00:00Z", + updated: "2024-01-01T00:00:00Z", + summary: "Test Meeting", + description: "Test description", + start: { + dateTime: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }, + end: { + dateTime: "2024-01-15T11:00:00Z", + timeZone: "America/New_York", + }, + iCalUID: "test-ical-uid", + sequence: 0, + attendees: [ + { + email: "attendee1@example.com", + displayName: "Attendee One", + responseStatus: "accepted", + organizer: false, + }, + { + email: "attendee2@example.com", + displayName: "Attendee Two", + responseStatus: "needsAction", + organizer: false, + }, + { + email: "organizer@example.com", + displayName: "Organizer", + responseStatus: "accepted", + organizer: true, + }, + ], + creator: { + email: "organizer@example.com", + displayName: "Organizer", + }, + organizer: { + email: "organizer@example.com", + displayName: "Organizer", + }, + }; + }); + + beforeEach(() => { + pipe = new GoogleCalendarEventInputPipe(); + }); + + describe("transform", () => { + it("should transform basic event fields", () => { + const input: UpdateUnifiedCalendarEventInput = { + title: "Updated Meeting", + description: "Updated description", + start: { + time: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }, + end: { + time: "2024-01-15T11:00:00Z", + timeZone: "America/New_York", + }, + status: CalendarEventStatus.ACCEPTED, + }; + + const expectedOutput = { + summary: "Updated Meeting", + description: "Updated description", + start: { + dateTime: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }, + end: { + dateTime: "2024-01-15T11:00:00Z", + timeZone: "America/New_York", + }, + status: "confirmed", + }; + + const result = pipe.transform(input); + expect(result).toEqual(expectedOutput); + }); + + it("should handle partial updates", () => { + const input: UpdateUnifiedCalendarEventInput = { + title: "Only Title Update", + }; + + const expectedOutput = { + summary: "Only Title Update", + }; + + const result = pipe.transform(input); + expect(result).toEqual(expectedOutput); + }); + + it("should handle null description", () => { + const input: UpdateUnifiedCalendarEventInput = { + description: null, + }; + + const expectedOutput = { + description: null, + }; + + const result = pipe.transform(input); + expect(result).toEqual(expectedOutput); + }); + }); + + describe("transformDateTimeWithZone", () => { + it("should transform date time with timezone", () => { + const input: UpdateDateTimeWithZone = { + time: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }; + + const expectedOutput = { + dateTime: "2024-01-15T10:00:00Z", + timeZone: "America/New_York", + }; + + const result = pipe["transformDateTimeWithZone"](input); + expect(result).toEqual(expectedOutput); + }); + + it("should handle empty time and timezone", () => { + const input: UpdateDateTimeWithZone = {}; + + const expectedOutput = { + dateTime: "", + timeZone: "", + }; + + const result = pipe["transformDateTimeWithZone"](input); + expect(result).toEqual(expectedOutput); + }); + }); + + describe("transformResponseStatus", () => { + it("should transform ACCEPTED status", () => { + const result = pipe["transformResponseStatus"](CalendarEventResponseStatus.ACCEPTED); + expect(result).toBe("accepted"); + }); + + it("should transform PENDING status", () => { + const result = pipe["transformResponseStatus"](CalendarEventResponseStatus.PENDING); + expect(result).toBe("tentative"); + }); + + it("should transform DECLINED status", () => { + const result = pipe["transformResponseStatus"](CalendarEventResponseStatus.DECLINED); + expect(result).toBe("declined"); + }); + + it("should transform NEEDS_ACTION status", () => { + const result = pipe["transformResponseStatus"](CalendarEventResponseStatus.NEEDS_ACTION); + expect(result).toBe("needsAction"); + }); + + it("should handle null status", () => { + const result = pipe["transformResponseStatus"](null); + expect(result).toBe("needsAction"); + }); + + it("should handle undefined status", () => { + const result = pipe["transformResponseStatus"](undefined); + expect(result).toBe("needsAction"); + }); + }); + + describe("transformEventStatus", () => { + it("should transform ACCEPTED status", () => { + const result = pipe["transformEventStatus"](CalendarEventStatus.ACCEPTED); + expect(result).toBe("confirmed"); + }); + + it("should transform PENDING status", () => { + const result = pipe["transformEventStatus"](CalendarEventStatus.PENDING); + expect(result).toBe("tentative"); + }); + + it("should transform CANCELLED status", () => { + const result = pipe["transformEventStatus"](CalendarEventStatus.CANCELLED); + expect(result).toBe("cancelled"); + }); + + it("should transform DECLINED status", () => { + const result = pipe["transformEventStatus"](CalendarEventStatus.DECLINED); + expect(result).toBe("cancelled"); + }); + + it("should handle null status", () => { + const result = pipe["transformEventStatus"](null); + expect(result).toBe("confirmed"); + }); + + it("should handle undefined status", () => { + const result = pipe["transformEventStatus"](undefined); + expect(result).toBe("confirmed"); + }); + }); +}); diff --git a/apps/api/v2/src/modules/cal-unified-calendars/services/google-calendar.service.ts b/apps/api/v2/src/modules/cal-unified-calendars/services/google-calendar.service.ts index 78ea3b2588..c01bd9ece6 100644 --- a/apps/api/v2/src/modules/cal-unified-calendars/services/google-calendar.service.ts +++ b/apps/api/v2/src/modules/cal-unified-calendars/services/google-calendar.service.ts @@ -10,7 +10,8 @@ import { JWT } from "googleapis-common"; import { DelegationCredentialRepository, OAuth2UniversalSchema } from "@calcom/platform-libraries/app-store"; -import { UnifiedCalendarEventOutput } from "../outputs/get-unified-calendar-event"; +import { UpdateUnifiedCalendarEventInput } from "../inputs/update-unified-calendar-event.input"; +import { GoogleCalendarEventInputPipe } from "../pipes/google-calendar-event-input-pipe"; @Injectable() export class GoogleCalendarService { @@ -53,6 +54,44 @@ export class GoogleCalendarService { } } + async updateEventDetails( + eventUid: string, + updateData: UpdateUnifiedCalendarEventInput + ): Promise { + const bookingReference = + await this.bookingReferencesRepository.getBookingReferencesIncludeSensitiveCredentials(eventUid); + + if (!bookingReference) { + throw new NotFoundException("Booking reference not found"); + } + + const ownerUserEmail = bookingReference?.booking?.user?.email; + + const calendar = await this.getAuthorizedCalendarInstance( + ownerUserEmail, + bookingReference.credential?.key, + bookingReference.delegationCredential + ); + + + const updatePayload = new GoogleCalendarEventInputPipe().transform(updateData); + + try { + const event = await calendar.events.patch({ + calendarId: bookingReference?.externalCalendarId ?? "primary", + eventId: bookingReference?.uid, + requestBody: updatePayload, + }); + + if (!event.data) { + throw new NotFoundException("Failed to update meeting"); + } + return event.data as GoogleCalendarEventResponse; + } catch (error) { + throw new NotFoundException("Failed to update meeting details"); + } + } + /** * Gets an authorized Google Calendar instance * Tries delegation credentials first, falls back to direct OAuth diff --git a/apps/api/v2/src/modules/event-types/guards/event-type-ownership.guard.ts b/apps/api/v2/src/modules/event-types/guards/event-type-ownership.guard.ts index ea6a01cc85..ea745df74a 100644 --- a/apps/api/v2/src/modules/event-types/guards/event-type-ownership.guard.ts +++ b/apps/api/v2/src/modules/event-types/guards/event-type-ownership.guard.ts @@ -40,5 +40,3 @@ export class EventTypeOwnershipGuard implements CanActivate { return true; } } - - diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index 2719e583f0..0d4a9ac399 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -8563,6 +8563,69 @@ ] } }, + "/v2/calendars/{calendar}/events/{eventUid}": { + "patch": { + "operationId": "CalUnifiedCalendarsController_updateCalendarEvent", + "summary": "Update meeting details in calendar", + "description": "Updates event information in the specified calendar provider", + "parameters": [ + { + "name": "calendar", + "required": true, + "in": "path", + "schema": { + "enum": [ + "google" + ], + "type": "string" + } + }, + { + "name": "eventUid", + "required": true, + "in": "path", + "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUnifiedCalendarEventInput" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" + } + } + } + } + }, + "tags": [ + "Cal Unified Calendars" + ] + } + }, "/v2/calendars/ics-feed/save": { "post": { "operationId": "CalendarsController_createIcsFeed", @@ -28782,7 +28845,7 @@ }, "CalendarEventResponseStatus": { "type": "string", - "description": "Host's response to the invitation", + "description": "Response status of the attendee", "enum": [ "accepted", "pending", @@ -28815,6 +28878,11 @@ "type": "boolean", "nullable": true, "description": "Indicates if this attendee's attendance is optional" + }, + "host": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the host" } }, "required": [ @@ -28853,6 +28921,23 @@ "email" ] }, + "calendarEventOwner": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address of the event host" + }, + "name": { + "type": "string", + "nullable": true, + "description": "Display name of the event host" + } + }, + "required": [ + "email" + ] + }, "CalendarSource": { "type": "string", "description": "Calendar integration source (e.g., Google Calendar, Office 365, Apple Calendar). Currently only Google Calendar is supported.", @@ -28949,6 +29034,15 @@ "$ref": "#/components/schemas/CalendarEventHost" } }, + "calendarEventOwner": { + "nullable": true, + "description": "The calendar account that owns this event. This is the primary calendar where the event is stored and cannot be modified without appropriate permissions. Changing this would require moving the event to a different calendar", + "allOf": [ + { + "$ref": "#/components/schemas/calendarEventOwner" + } + ] + }, "source": { "example": "google", "$ref": "#/components/schemas/CalendarSource" @@ -28982,6 +29076,91 @@ "data" ] }, + "UpdateCalendarEventAttendee": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address of the attendee" + }, + "name": { + "type": "string", + "description": "Display name of the attendee" + }, + "responseStatus": { + "nullable": true, + "$ref": "#/components/schemas/CalendarEventResponseStatus" + }, + "self": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the current user" + }, + "optional": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee's attendance is optional" + }, + "host": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the host" + } + } + }, + "UpdateUnifiedCalendarEventInput": { + "type": "object", + "properties": { + "start": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time" + }, + "timeZone": { + "type": "string" + } + }, + "description": "Start date and time of the calendar event with timezone information" + }, + "end": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time" + }, + "timeZone": { + "type": "string" + } + }, + "description": "End date and time of the calendar event with timezone information" + }, + "title": { + "type": "string", + "description": "Title of the calendar event" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Detailed description of the calendar event" + }, + "attendees": { + "nullable": true, + "description": "List of attendees. CAUTION: You must pass the entire array with all updated values. Any attendees not included in this array will be removed from the event.", + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateCalendarEventAttendee" + } + }, + "status": { + "nullable": true, + "example": "accepted", + "$ref": "#/components/schemas/CalendarEventStatus" + } + } + }, "RequestEmailVerificationInput": { "type": "object", "properties": { diff --git a/docs/api-reference/v2/openapi.json b/docs/api-reference/v2/openapi.json index 2719e583f0..718464697c 100644 --- a/docs/api-reference/v2/openapi.json +++ b/docs/api-reference/v2/openapi.json @@ -69,9 +69,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] }, "post": { "operationId": "OAuthClientUsersController_createUser", @@ -117,9 +115,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}": { @@ -165,9 +161,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] }, "patch": { "operationId": "OAuthClientUsersController_updateUser", @@ -221,9 +215,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] }, "delete": { "operationId": "OAuthClientUsersController_deleteUser", @@ -267,9 +259,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { @@ -316,9 +306,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] } }, "/v2/oauth/{clientId}/refresh": { @@ -367,9 +355,7 @@ } } }, - "tags": [ - "Platform / Managed Users" - ] + "tags": ["Platform / Managed Users"] } }, "/v2/oauth-clients/{clientId}/webhooks": { @@ -417,9 +403,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", @@ -480,9 +464,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", @@ -518,9 +500,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] } }, "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { @@ -568,9 +548,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", @@ -598,9 +576,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", @@ -628,9 +604,7 @@ } } }, - "tags": [ - "Platform / Webhooks" - ] + "tags": ["Platform / Webhooks"] } }, "/v2/organizations/{orgId}/attributes": { @@ -693,9 +667,7 @@ } } }, - "tags": [ - "Orgs / Attributes" - ] + "tags": ["Orgs / Attributes"] }, "post": { "operationId": "OrganizationsAttributesController_createOrganizationAttribute", @@ -741,9 +713,7 @@ } } }, - "tags": [ - "Orgs / Attributes" - ] + "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}": { @@ -789,9 +759,7 @@ } } }, - "tags": [ - "Orgs / Attributes" - ] + "tags": ["Orgs / Attributes"] }, "patch": { "operationId": "OrganizationsAttributesController_updateOrganizationAttribute", @@ -845,9 +813,7 @@ } } }, - "tags": [ - "Orgs / Attributes" - ] + "tags": ["Orgs / Attributes"] }, "delete": { "operationId": "OrganizationsAttributesController_deleteOrganizationAttribute", @@ -891,9 +857,7 @@ } } }, - "tags": [ - "Orgs / Attributes" - ] + "tags": ["Orgs / Attributes"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options": { @@ -949,9 +913,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptions", @@ -995,9 +957,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": { @@ -1051,9 +1011,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] }, "patch": { "operationId": "OrganizationsAttributesOptionsController_updateOrganizationAttributeOption", @@ -1115,9 +1073,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/assigned": { @@ -1207,9 +1163,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned": { @@ -1299,9 +1253,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { @@ -1357,9 +1309,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] }, "get": { "operationId": "OrganizationsAttributesOptionsController_getOrganizationAttributeOptionsForUser", @@ -1403,9 +1353,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { @@ -1459,9 +1407,7 @@ } } }, - "tags": [ - "Orgs / Attributes / Options" - ] + "tags": ["Orgs / Attributes / Options"] } }, "/v2/organizations/{orgId}/bookings": { @@ -1506,13 +1452,7 @@ "type": "array", "items": { "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] + "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] } } }, @@ -1653,10 +1593,7 @@ "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" } }, @@ -1667,10 +1604,7 @@ "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" } }, @@ -1681,10 +1615,7 @@ "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" } }, @@ -1695,10 +1626,7 @@ "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" } }, @@ -1755,9 +1683,7 @@ } } }, - "tags": [ - "Orgs / Bookings" - ] + "tags": ["Orgs / Bookings"] } }, "/v2/organizations/{orgId}/delegation-credentials": { @@ -1823,9 +1749,7 @@ } } }, - "tags": [ - "Orgs / Delegation Credentials" - ] + "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/delegation-credentials/{credentialId}": { @@ -1899,9 +1823,7 @@ } } }, - "tags": [ - "Orgs / Delegation Credentials" - ] + "tags": ["Orgs / Delegation Credentials"] } }, "/v2/organizations/{orgId}/memberships": { @@ -1982,9 +1904,7 @@ } } }, - "tags": [ - "Orgs / Memberships" - ] + "tags": ["Orgs / Memberships"] }, "post": { "operationId": "OrganizationsMembershipsController_createMembership", @@ -2048,9 +1968,7 @@ } } }, - "tags": [ - "Orgs / Memberships" - ] + "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/memberships/{membershipId}": { @@ -2114,9 +2032,7 @@ } } }, - "tags": [ - "Orgs / Memberships" - ] + "tags": ["Orgs / Memberships"] }, "delete": { "operationId": "OrganizationsMembershipsController_deleteMembership", @@ -2178,9 +2094,7 @@ } } }, - "tags": [ - "Orgs / Memberships" - ] + "tags": ["Orgs / Memberships"] }, "patch": { "operationId": "OrganizationsMembershipsController_updateMembership", @@ -2252,9 +2166,7 @@ } } }, - "tags": [ - "Orgs / Memberships" - ] + "tags": ["Orgs / Memberships"] } }, "/v2/organizations/{orgId}/routing-forms": { @@ -2303,10 +2215,7 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -2316,10 +2225,7 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -2398,9 +2304,7 @@ } } }, - "tags": [ - "Orgs / Routing forms" - ] + "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses": { @@ -2457,10 +2361,7 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -2470,10 +2371,7 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -2539,9 +2437,7 @@ } } }, - "tags": [ - "Orgs / Routing forms" - ] + "tags": ["Orgs / Routing forms"] }, "post": { "operationId": "OrganizationsRoutingFormsResponsesController_createRoutingFormResponse", @@ -2619,10 +2515,7 @@ "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" } }, @@ -2659,9 +2552,7 @@ } } }, - "tags": [ - "Orgs / Routing forms" - ] + "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/routing-forms/{routingFormId}/responses/{responseId}": { @@ -2725,9 +2616,7 @@ } } }, - "tags": [ - "Orgs / Routing forms" - ] + "tags": ["Orgs / Routing forms"] } }, "/v2/organizations/{orgId}/schedules": { @@ -2808,9 +2697,7 @@ } } }, - "tags": [ - "Orgs / Schedules" - ] + "tags": ["Orgs / Schedules"] } }, "/v2/organizations/{orgId}/teams": { @@ -2891,9 +2778,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", @@ -2957,9 +2842,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/me": { @@ -3040,9 +2923,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}": { @@ -3090,9 +2971,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", @@ -3154,9 +3033,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] }, "patch": { "operationId": "OrganizationsTeamsController_updateTeam", @@ -3228,9 +3105,7 @@ } } }, - "tags": [ - "Orgs / Teams" - ] + "tags": ["Orgs / Teams"] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings": { @@ -3275,13 +3150,7 @@ "type": "array", "items": { "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] + "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] } } }, @@ -3352,10 +3221,7 @@ "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" } }, @@ -3366,10 +3232,7 @@ "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" } }, @@ -3380,10 +3243,7 @@ "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" } }, @@ -3439,9 +3299,7 @@ } } }, - "tags": [ - "Orgs / Teams / Bookings" - ] + "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references": { @@ -3515,9 +3373,7 @@ } } }, - "tags": [ - "Orgs / Teams / Bookings" - ] + "tags": ["Orgs / Teams / Bookings"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect": { @@ -3547,9 +3403,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet" - ], + "enum": ["google-meet"], "type": "string" } } @@ -3566,9 +3420,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url": { @@ -3606,10 +3458,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "zoom", - "msteams" - ], + "enum": ["zoom", "msteams"], "type": "string" } }, @@ -3642,9 +3491,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing": { @@ -3673,9 +3520,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default": { @@ -3697,12 +3542,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams", - "daily-video" - ], + "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } } @@ -3719,9 +3559,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/default": { @@ -3743,12 +3581,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams", - "daily-video" - ], + "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } } @@ -3765,9 +3598,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect": { @@ -3789,11 +3620,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams" - ], + "enum": ["google-meet", "zoom", "msteams"], "type": "string" } } @@ -3810,9 +3637,7 @@ } } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback": { @@ -3866,9 +3691,7 @@ "description": "" } }, - "tags": [ - "Orgs / Teams / Conferencing" - ] + "tags": ["Orgs / Teams / Conferencing"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { @@ -3942,9 +3765,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", @@ -4016,9 +3837,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { @@ -4082,9 +3901,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", @@ -4156,9 +3973,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", @@ -4220,9 +4035,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { @@ -4296,9 +4109,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/event-types": { @@ -4379,9 +4190,7 @@ } } }, - "tags": [ - "Orgs / Teams / Event Types" - ] + "tags": ["Orgs / Teams / Event Types"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { @@ -4470,9 +4279,7 @@ } } }, - "tags": [ - "Orgs / Teams / Memberships" - ] + "tags": ["Orgs / Teams / Memberships"] }, "post": { "operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership", @@ -4544,9 +4351,7 @@ } } }, - "tags": [ - "Orgs / Teams / Memberships" - ] + "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": { @@ -4618,9 +4423,7 @@ } } }, - "tags": [ - "Orgs / Teams / Memberships" - ] + "tags": ["Orgs / Teams / Memberships"] }, "delete": { "operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership", @@ -4690,9 +4493,7 @@ } } }, - "tags": [ - "Orgs / Teams / Memberships" - ] + "tags": ["Orgs / Teams / Memberships"] }, "patch": { "operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership", @@ -4772,9 +4573,7 @@ } } }, - "tags": [ - "Orgs / Teams / Memberships" - ] + "tags": ["Orgs / Teams / Memberships"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms": { @@ -4831,10 +4630,7 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -4844,10 +4640,7 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -4913,9 +4706,7 @@ } } }, - "tags": [ - "Orgs / Teams / Routing forms" - ] + "tags": ["Orgs / Teams / Routing forms"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses": { @@ -4980,10 +4771,7 @@ "in": "query", "description": "Sort by creation time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -4993,10 +4781,7 @@ "in": "query", "description": "Sort by update time", "schema": { - "enum": [ - "asc", - "desc" - ], + "enum": ["asc", "desc"], "type": "string" } }, @@ -5062,9 +4847,7 @@ } } }, - "tags": [ - "Orgs / Teams / Routing forms / Responses" - ] + "tags": ["Orgs / Teams / Routing forms / Responses"] }, "post": { "operationId": "OrganizationsTeamsRoutingFormsResponsesController_createRoutingFormResponse", @@ -5150,10 +4933,7 @@ "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" } }, @@ -5190,9 +4970,7 @@ } } }, - "tags": [ - "Orgs / Teams / Routing forms / Responses" - ] + "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses/{responseId}": { @@ -5256,9 +5034,7 @@ } } }, - "tags": [ - "Orgs / Teams / Routing forms / Responses" - ] + "tags": ["Orgs / Teams / Routing forms / Responses"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/connect": { @@ -5319,9 +5095,7 @@ } } }, - "tags": [ - "Orgs / Teams / Stripe" - ] + "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/check": { @@ -5350,9 +5124,7 @@ } } }, - "tags": [ - "Orgs / Teams / Stripe" - ] + "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/stripe/save": { @@ -5397,9 +5169,7 @@ } } }, - "tags": [ - "Orgs / Teams / Stripe" - ] + "tags": ["Orgs / Teams / Stripe"] } }, "/v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules": { @@ -5455,9 +5225,7 @@ } } }, - "tags": [ - "Orgs / Teams / Users / Schedules" - ] + "tags": ["Orgs / Teams / Users / Schedules"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows": { @@ -5546,9 +5314,7 @@ } } }, - "tags": [ - "Orgs / Teams / Workflows" - ] + "tags": ["Orgs / Teams / Workflows"] }, "post": { "operationId": "OrganizationTeamWorkflowsController_createWorkflow", @@ -5612,9 +5378,7 @@ } } }, - "tags": [ - "Orgs / Teams / Workflows" - ] + "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId}": { @@ -5678,9 +5442,7 @@ } } }, - "tags": [ - "Orgs / Teams / Workflows" - ] + "tags": ["Orgs / Teams / Workflows"] }, "patch": { "operationId": "OrganizationTeamWorkflowsController_updateWorkflow", @@ -5752,9 +5514,7 @@ } } }, - "tags": [ - "Orgs / Teams / Workflows" - ] + "tags": ["Orgs / Teams / Workflows"] }, "delete": { "operationId": "OrganizationTeamWorkflowsController_deleteWorkflow", @@ -5809,9 +5569,7 @@ "description": "" } }, - "tags": [ - "Orgs / Teams / Workflows" - ] + "tags": ["Orgs / Teams / Workflows"] } }, "/v2/organizations/{orgId}/users": { @@ -5910,11 +5668,7 @@ "example": "NONE", "schema": { "default": "AND", - "enum": [ - "OR", - "AND", - "NONE" - ], + "enum": ["OR", "AND", "NONE"], "type": "string" } }, @@ -5944,9 +5698,7 @@ } } }, - "tags": [ - "Orgs / Users" - ] + "tags": ["Orgs / Users"] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", @@ -6002,9 +5754,7 @@ } } }, - "tags": [ - "Orgs / Users" - ] + "tags": ["Orgs / Users"] } }, "/v2/organizations/{orgId}/users/{userId}": { @@ -6078,9 +5828,7 @@ } } }, - "tags": [ - "Orgs / Users" - ] + "tags": ["Orgs / Users"] }, "delete": { "operationId": "OrganizationsUsersController_deleteOrganizationUser", @@ -6142,9 +5890,7 @@ } } }, - "tags": [ - "Orgs / Users" - ] + "tags": ["Orgs / Users"] } }, "/v2/organizations/{orgId}/users/{userId}/bookings": { @@ -6205,13 +5951,7 @@ "type": "array", "items": { "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] + "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] } } }, @@ -6352,10 +6092,7 @@ "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" } }, @@ -6366,10 +6103,7 @@ "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" } }, @@ -6380,10 +6114,7 @@ "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" } }, @@ -6394,10 +6125,7 @@ "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" } }, @@ -6429,9 +6157,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / Bookings" - ] + "tags": ["Orgs / Users / Bookings"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo": { @@ -6506,10 +6232,7 @@ "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" } }, @@ -6520,10 +6243,7 @@ "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" } } @@ -6533,9 +6253,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / OOO" - ] + "tags": ["Orgs / Users / OOO"] }, "post": { "operationId": "OrganizationsUsersOOOController_createOrganizationUserOOO", @@ -6592,9 +6310,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / OOO" - ] + "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/ooo/{oooId}": { @@ -6661,9 +6377,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / OOO" - ] + "tags": ["Orgs / Users / OOO"] }, "delete": { "operationId": "OrganizationsUsersOOOController_deleteOrganizationUserOOO", @@ -6710,9 +6424,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / OOO" - ] + "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/ooo": { @@ -6787,10 +6499,7 @@ "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" } }, @@ -6801,10 +6510,7 @@ "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" } }, @@ -6824,9 +6530,7 @@ "description": "" } }, - "tags": [ - "Orgs / Users / OOO" - ] + "tags": ["Orgs / Users / OOO"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { @@ -6892,9 +6596,7 @@ } } }, - "tags": [ - "Orgs / Users / Schedules" - ] + "tags": ["Orgs / Users / Schedules"] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", @@ -6948,9 +6650,7 @@ } } }, - "tags": [ - "Orgs / Users / Schedules" - ] + "tags": ["Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { @@ -7014,9 +6714,7 @@ } } }, - "tags": [ - "Orgs / Users / Schedules" - ] + "tags": ["Orgs / Users / Schedules"] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", @@ -7088,9 +6786,7 @@ } } }, - "tags": [ - "Orgs / Users / Schedules" - ] + "tags": ["Orgs / Users / Schedules"] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", @@ -7152,9 +6848,7 @@ } } }, - "tags": [ - "Orgs / Users / Schedules" - ] + "tags": ["Orgs / Users / Schedules"] } }, "/v2/organizations/{orgId}/webhooks": { @@ -7235,9 +6929,7 @@ } } }, - "tags": [ - "Orgs / Webhooks" - ] + "tags": ["Orgs / Webhooks"] }, "post": { "operationId": "OrganizationsWebhooksController_createOrganizationWebhook", @@ -7301,9 +6993,7 @@ } } }, - "tags": [ - "Orgs / Webhooks" - ] + "tags": ["Orgs / Webhooks"] } }, "/v2/organizations/{orgId}/webhooks/{webhookId}": { @@ -7359,9 +7049,7 @@ } } }, - "tags": [ - "Orgs / Webhooks" - ] + "tags": ["Orgs / Webhooks"] }, "delete": { "operationId": "OrganizationsWebhooksController_deleteWebhook", @@ -7415,9 +7103,7 @@ } } }, - "tags": [ - "Orgs / Webhooks" - ] + "tags": ["Orgs / Webhooks"] }, "patch": { "operationId": "OrganizationsWebhooksController_updateOrgWebhook", @@ -7481,9 +7167,7 @@ } } }, - "tags": [ - "Orgs / Webhooks" - ] + "tags": ["Orgs / Webhooks"] } }, "/v2/api-keys/refresh": { @@ -7524,9 +7208,7 @@ } } }, - "tags": [ - "Api Keys" - ] + "tags": ["Api Keys"] } }, "/v2/bookings": { @@ -7579,9 +7261,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] }, "get": { "operationId": "BookingsController_2024_08_13_getBookings", @@ -7607,13 +7287,7 @@ "type": "array", "items": { "type": "string", - "enum": [ - "upcoming", - "recurring", - "past", - "cancelled", - "unconfirmed" - ] + "enum": ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] } } }, @@ -7754,10 +7428,7 @@ "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" } }, @@ -7768,10 +7439,7 @@ "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" } }, @@ -7782,10 +7450,7 @@ "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" } }, @@ -7796,10 +7461,7 @@ "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" } }, @@ -7847,9 +7509,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}": { @@ -7889,9 +7549,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/recordings": { @@ -7931,9 +7589,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/transcripts": { @@ -7973,9 +7629,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reschedule": { @@ -8033,9 +7687,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/cancel": { @@ -8093,9 +7745,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/mark-absent": { @@ -8154,9 +7804,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign": { @@ -8205,9 +7853,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/reassign/{userId}": { @@ -8274,9 +7920,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/confirm": { @@ -8325,9 +7969,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/decline": { @@ -8386,9 +8028,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/calendar-links": { @@ -8437,9 +8077,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/bookings/{bookingUid}/references": { @@ -8505,9 +8143,7 @@ } } }, - "tags": [ - "Bookings" - ] + "tags": ["Bookings"] } }, "/v2/calendars/{calendar}/event/{eventUid}": { @@ -8521,9 +8157,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "google" - ], + "enum": ["google"], "type": "string" } }, @@ -8558,9 +8192,66 @@ } } }, - "tags": [ - "Cal Unified Calendars" - ] + "tags": ["Cal Unified Calendars"] + } + }, + "/v2/calendars/{calendar}/events/{eventUid}": { + "patch": { + "operationId": "CalUnifiedCalendarsController_updateCalendarEvent", + "summary": "Update meeting details in calendar", + "description": "Updates event information in the specified calendar provider", + "parameters": [ + { + "name": "calendar", + "required": true, + "in": "path", + "schema": { + "enum": ["google"], + "type": "string" + } + }, + { + "name": "eventUid", + "required": true, + "in": "path", + "description": "The Google Calendar event ID. You can retrieve this by getting booking references from the following endpoints:\n\n- For team events: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references-for-a-booking\n\n- For user events: https://cal.com/docs/api-reference/v2/bookings/get-booking-references-for-a-booking", + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_ or managed user access token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUnifiedCalendarEventInput" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetUnifiedCalendarEventOutput" + } + } + } + } + }, + "tags": ["Cal Unified Calendars"] } }, "/v2/calendars/ics-feed/save": { @@ -8600,9 +8291,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/ics-feed/check": { @@ -8632,9 +8321,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/busy-times": { @@ -8711,9 +8398,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars": { @@ -8743,9 +8428,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/connect": { @@ -8767,10 +8450,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "office365", - "google" - ], + "enum": ["office365", "google"], "type": "string" } }, @@ -8804,9 +8484,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/save": { @@ -8835,10 +8513,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "office365", - "google" - ], + "enum": ["office365", "google"], "type": "string" } } @@ -8848,9 +8523,7 @@ "description": "" } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/credentials": { @@ -8863,9 +8536,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "apple" - ], + "enum": ["apple"], "type": "string" } }, @@ -8894,9 +8565,7 @@ "description": "" } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/check": { @@ -8909,11 +8578,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "apple", - "google", - "office365" - ], + "enum": ["apple", "google", "office365"], "type": "string" } }, @@ -8939,9 +8604,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/calendars/{calendar}/disconnect": { @@ -8954,11 +8617,7 @@ "required": true, "in": "path", "schema": { - "enum": [ - "apple", - "google", - "office365" - ], + "enum": ["apple", "google", "office365"], "type": "string" } }, @@ -8994,9 +8653,7 @@ } } }, - "tags": [ - "Calendars" - ] + "tags": ["Calendars"] } }, "/v2/conferencing/{app}/connect": { @@ -9010,9 +8667,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet" - ], + "enum": ["google-meet"], "type": "string" } }, @@ -9038,9 +8693,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/auth-url": { @@ -9063,10 +8716,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "zoom", - "msteams" - ], + "enum": ["zoom", "msteams"], "type": "string" } }, @@ -9099,9 +8749,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/oauth/callback": { @@ -9123,10 +8771,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "zoom", - "msteams" - ], + "enum": ["zoom", "msteams"], "type": "string" } }, @@ -9144,9 +8789,7 @@ "description": "" } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing": { @@ -9176,9 +8819,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/default": { @@ -9192,12 +8833,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams", - "daily-video" - ], + "enum": ["google-meet", "zoom", "msteams", "daily-video"], "type": "string" } }, @@ -9223,9 +8859,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing/default": { @@ -9255,9 +8889,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/conferencing/{app}/disconnect": { @@ -9271,11 +8903,7 @@ "in": "path", "description": "Conferencing application type", "schema": { - "enum": [ - "google-meet", - "zoom", - "msteams" - ], + "enum": ["google-meet", "zoom", "msteams"], "type": "string" } }, @@ -9301,9 +8929,7 @@ } } }, - "tags": [ - "Conferencing" - ] + "tags": ["Conferencing"] } }, "/v2/destination-calendars": { @@ -9343,9 +8969,7 @@ } } }, - "tags": [ - "Destination Calendars" - ] + "tags": ["Destination Calendars"] } }, "/v2/event-types": { @@ -9395,9 +9019,7 @@ } } }, - "tags": [ - "Event Types" - ] + "tags": ["Event Types"] }, "get": { "operationId": "EventTypesController_2024_06_14_getEventTypes", @@ -9471,9 +9093,7 @@ } } }, - "tags": [ - "Event Types" - ] + "tags": ["Event Types"] } }, "/v2/event-types/{eventTypeId}": { @@ -9521,9 +9141,7 @@ } } }, - "tags": [ - "Event Types" - ] + "tags": ["Event Types"] }, "patch": { "operationId": "EventTypesController_2024_06_14_updateEventType", @@ -9579,9 +9197,7 @@ } } }, - "tags": [ - "Event Types" - ] + "tags": ["Event Types"] }, "delete": { "operationId": "EventTypesController_2024_06_14_deleteEventType", @@ -9627,9 +9243,7 @@ } } }, - "tags": [ - "Event Types" - ] + "tags": ["Event Types"] } }, "/v2/event-types/{eventTypeId}/webhooks": { @@ -9677,9 +9291,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", @@ -9740,9 +9352,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks", @@ -9778,9 +9388,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] } }, "/v2/event-types/{eventTypeId}/webhooks/{webhookId}": { @@ -9828,9 +9436,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhook", @@ -9858,9 +9464,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", @@ -9888,9 +9492,7 @@ } } }, - "tags": [ - "Event Types / Webhooks" - ] + "tags": ["Event Types / Webhooks"] } }, "/v2/event-types/{eventTypeId}/private-links": { @@ -9938,9 +9540,7 @@ } } }, - "tags": [ - "Event Types Private Links" - ] + "tags": ["Event Types Private Links"] }, "get": { "operationId": "EventTypesPrivateLinksController_getPrivateLinks", @@ -9976,9 +9576,7 @@ } } }, - "tags": [ - "Event Types Private Links" - ] + "tags": ["Event Types Private Links"] } }, "/v2/event-types/{eventTypeId}/private-links/{linkId}": { @@ -10034,9 +9632,7 @@ } } }, - "tags": [ - "Event Types Private Links" - ] + "tags": ["Event Types Private Links"] }, "delete": { "operationId": "EventTypesPrivateLinksController_deletePrivateLink", @@ -10080,9 +9676,7 @@ } } }, - "tags": [ - "Event Types Private Links" - ] + "tags": ["Event Types Private Links"] } }, "/v2/organizations/{orgId}/organizations": { @@ -10140,9 +9734,7 @@ } } }, - "tags": [ - "Managed Orgs" - ] + "tags": ["Managed Orgs"] }, "get": { "operationId": "OrganizationsOrganizationsController_getOrganizations", @@ -10243,9 +9835,7 @@ } } }, - "tags": [ - "Managed Orgs" - ] + "tags": ["Managed Orgs"] } }, "/v2/organizations/{orgId}/organizations/{managedOrganizationId}": { @@ -10293,9 +9883,7 @@ } } }, - "tags": [ - "Managed Orgs" - ] + "tags": ["Managed Orgs"] }, "patch": { "operationId": "OrganizationsOrganizationsController_updateOrganization", @@ -10359,9 +9947,7 @@ } } }, - "tags": [ - "Managed Orgs" - ] + "tags": ["Managed Orgs"] }, "delete": { "operationId": "OrganizationsOrganizationsController_deleteOrganization", @@ -10407,9 +9993,7 @@ } } }, - "tags": [ - "Managed Orgs" - ] + "tags": ["Managed Orgs"] } }, "/v2/me": { @@ -10439,9 +10023,7 @@ } } }, - "tags": [ - "Me" - ] + "tags": ["Me"] }, "patch": { "operationId": "MeController_updateMe", @@ -10479,9 +10061,7 @@ } } }, - "tags": [ - "Me" - ] + "tags": ["Me"] } }, "/v2/oauth-clients": { @@ -10521,9 +10101,7 @@ } } }, - "tags": [ - "OAuth Clients" - ] + "tags": ["OAuth Clients"] }, "get": { "operationId": "OAuthClientsController_getOAuthClients", @@ -10551,9 +10129,7 @@ } } }, - "tags": [ - "OAuth Clients" - ] + "tags": ["OAuth Clients"] } }, "/v2/oauth-clients/{clientId}": { @@ -10591,9 +10167,7 @@ } } }, - "tags": [ - "OAuth Clients" - ] + "tags": ["OAuth Clients"] }, "patch": { "operationId": "OAuthClientsController_updateOAuthClient", @@ -10639,9 +10213,7 @@ } } }, - "tags": [ - "OAuth Clients" - ] + "tags": ["OAuth Clients"] }, "delete": { "operationId": "OAuthClientsController_deleteOAuthClient", @@ -10677,9 +10249,7 @@ } } }, - "tags": [ - "OAuth Clients" - ] + "tags": ["OAuth Clients"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { @@ -10720,9 +10290,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request": { @@ -10763,9 +10331,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify": { @@ -10814,9 +10380,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify": { @@ -10865,9 +10429,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails": { @@ -10930,9 +10492,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones": { @@ -10995,9 +10555,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id}": { @@ -11043,9 +10601,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id}": { @@ -11091,9 +10647,7 @@ } } }, - "tags": [ - "Organization Team Verified Resources" - ] + "tags": ["Organization Team Verified Resources"] } }, "/v2/routing-forms/{routingFormId}/calculate-slots": { @@ -11158,10 +10712,7 @@ "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" } }, @@ -11196,9 +10747,7 @@ } } }, - "tags": [ - "Routing forms" - ] + "tags": ["Routing forms"] } }, "/v2/schedules": { @@ -11249,9 +10798,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] }, "get": { "operationId": "SchedulesController_2024_06_11_getSchedules", @@ -11290,9 +10837,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] } }, "/v2/schedules/default": { @@ -11333,9 +10878,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] } }, "/v2/schedules/{scheduleId}": { @@ -11383,9 +10926,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] }, "patch": { "operationId": "SchedulesController_2024_06_11_updateSchedule", @@ -11441,9 +10982,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] }, "delete": { "operationId": "SchedulesController_2024_06_11_deleteSchedule", @@ -11489,9 +11028,7 @@ } } }, - "tags": [ - "Schedules" - ] + "tags": ["Schedules"] } }, "/v2/selected-calendars": { @@ -11531,9 +11068,7 @@ } } }, - "tags": [ - "Selected Calendars" - ] + "tags": ["Selected Calendars"] }, "delete": { "operationId": "SelectedCalendarsController_deleteSelectedCalendar", @@ -11593,9 +11128,7 @@ } } }, - "tags": [ - "Selected Calendars" - ] + "tags": ["Selected Calendars"] } }, "/v2/slots": { @@ -11798,9 +11331,7 @@ } } }, - "tags": [ - "Slots" - ] + "tags": ["Slots"] } }, "/v2/slots/reservations": { @@ -11860,9 +11391,7 @@ } } }, - "tags": [ - "Slots" - ] + "tags": ["Slots"] } }, "/v2/slots/reservations/{uid}": { @@ -11901,9 +11430,7 @@ } } }, - "tags": [ - "Slots" - ] + "tags": ["Slots"] }, "patch": { "operationId": "SlotsController_2024_09_04_updateReservedSlot", @@ -11950,9 +11477,7 @@ } } }, - "tags": [ - "Slots" - ] + "tags": ["Slots"] }, "delete": { "operationId": "SlotsController_2024_09_04_deleteReservedSlot", @@ -11992,9 +11517,7 @@ } } }, - "tags": [ - "Slots" - ] + "tags": ["Slots"] } }, "/v2/stripe/connect": { @@ -12024,9 +11547,7 @@ } } }, - "tags": [ - "Stripe" - ] + "tags": ["Stripe"] } }, "/v2/stripe/save": { @@ -12063,9 +11584,7 @@ } } }, - "tags": [ - "Stripe" - ] + "tags": ["Stripe"] } }, "/v2/stripe/check": { @@ -12095,9 +11614,7 @@ } } }, - "tags": [ - "Stripe" - ] + "tags": ["Stripe"] } }, "/v2/teams": { @@ -12137,9 +11654,7 @@ } } }, - "tags": [ - "Teams" - ] + "tags": ["Teams"] }, "get": { "operationId": "TeamsController_getTeams", @@ -12167,9 +11682,7 @@ } } }, - "tags": [ - "Teams" - ] + "tags": ["Teams"] } }, "/v2/teams/{teamId}": { @@ -12207,9 +11720,7 @@ } } }, - "tags": [ - "Teams" - ] + "tags": ["Teams"] }, "patch": { "operationId": "TeamsController_updateTeam", @@ -12255,9 +11766,7 @@ } } }, - "tags": [ - "Teams" - ] + "tags": ["Teams"] }, "delete": { "operationId": "TeamsController_deleteTeam", @@ -12293,9 +11802,7 @@ } } }, - "tags": [ - "Teams" - ] + "tags": ["Teams"] } }, "/v2/teams/{teamId}/event-types": { @@ -12343,9 +11850,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] }, "get": { "operationId": "TeamsEventTypesController_getTeamEventTypes", @@ -12390,9 +11895,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}": { @@ -12438,9 +11941,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] }, "patch": { "operationId": "TeamsEventTypesController_updateTeamEventType", @@ -12494,9 +11995,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] }, "delete": { "operationId": "TeamsEventTypesController_deleteTeamEventType", @@ -12540,9 +12039,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { @@ -12598,9 +12095,7 @@ } } }, - "tags": [ - "Teams / Event Types" - ] + "tags": ["Teams / Event Types"] } }, "/v2/teams/{teamId}/memberships": { @@ -12648,9 +12143,7 @@ } } }, - "tags": [ - "Teams / Memberships" - ] + "tags": ["Teams / Memberships"] }, "get": { "operationId": "TeamsMembershipsController_getTeamMemberships", @@ -12711,9 +12204,7 @@ } } }, - "tags": [ - "Teams / Memberships" - ] + "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/memberships/{membershipId}": { @@ -12759,9 +12250,7 @@ } } }, - "tags": [ - "Teams / Memberships" - ] + "tags": ["Teams / Memberships"] }, "patch": { "operationId": "TeamsMembershipsController_updateTeamMembership", @@ -12815,9 +12304,7 @@ } } }, - "tags": [ - "Teams / Memberships" - ] + "tags": ["Teams / Memberships"] }, "delete": { "operationId": "TeamsMembershipsController_deleteTeamMembership", @@ -12861,9 +12348,7 @@ } } }, - "tags": [ - "Teams / Memberships" - ] + "tags": ["Teams / Memberships"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/request": { @@ -12904,9 +12389,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/request": { @@ -12947,9 +12430,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/verification-code/verify": { @@ -12998,9 +12479,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/verification-code/verify": { @@ -13049,9 +12528,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails": { @@ -13114,9 +12591,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones": { @@ -13179,9 +12654,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/emails/{id}": { @@ -13227,9 +12700,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/teams/{teamId}/verified-resources/phones/{id}": { @@ -13275,9 +12746,7 @@ } } }, - "tags": [ - "Teams Verified Resources" - ] + "tags": ["Teams Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/request": { @@ -13318,9 +12787,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/request": { @@ -13361,9 +12828,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/verification-code/verify": { @@ -13404,9 +12869,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/verification-code/verify": { @@ -13447,9 +12910,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails": { @@ -13504,9 +12965,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones": { @@ -13561,9 +13020,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/emails/{id}": { @@ -13601,9 +13058,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/verified-resources/phones/{id}": { @@ -13641,9 +13096,7 @@ } } }, - "tags": [ - "Verified Resources" - ] + "tags": ["Verified Resources"] } }, "/v2/webhooks": { @@ -13683,9 +13136,7 @@ } } }, - "tags": [ - "Webhooks" - ] + "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhooks", @@ -13739,9 +13190,7 @@ } } }, - "tags": [ - "Webhooks" - ] + "tags": ["Webhooks"] } }, "/v2/webhooks/{webhookId}": { @@ -13789,9 +13238,7 @@ } } }, - "tags": [ - "Webhooks" - ] + "tags": ["Webhooks"] }, "get": { "operationId": "WebhooksController_getWebhook", @@ -13819,9 +13266,7 @@ } } }, - "tags": [ - "Webhooks" - ] + "tags": ["Webhooks"] }, "delete": { "operationId": "WebhooksController_deleteWebhook", @@ -13857,9 +13302,7 @@ } } }, - "tags": [ - "Webhooks" - ] + "tags": ["Webhooks"] } } }, @@ -14002,10 +13445,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -14014,10 +13454,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateManagedUserInput": { "type": "object", @@ -14033,25 +13470,14 @@ }, "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", @@ -14125,10 +13551,7 @@ } } }, - "required": [ - "email", - "name" - ] + "required": ["email", "name"] }, "CreateManagedUserData": { "type": "object", @@ -14151,13 +13574,7 @@ "type": "number" } }, - "required": [ - "accessToken", - "refreshToken", - "user", - "accessTokenExpiresAt", - "refreshTokenExpiresAt" - ] + "required": ["accessToken", "refreshToken", "user", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "CreateManagedUserOutput": { "type": "object", @@ -14165,10 +13582,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/CreateManagedUserData" @@ -14177,10 +13591,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetManagedUserOutput": { "type": "object", @@ -14188,19 +13599,13 @@ "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", @@ -14213,10 +13618,7 @@ }, "timeFormat": { "type": "number", - "enum": [ - 12, - 24 - ], + "enum": [12, 24], "example": 12, "description": "Must be 12 or 24" }, @@ -14225,15 +13627,7 @@ }, "weekStart": { "type": "string", - "enum": [ - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - "Sunday" - ], + "enum": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "example": "Monday" }, "timeZone": { @@ -14325,12 +13719,7 @@ "type": "number" } }, - "required": [ - "accessToken", - "refreshToken", - "accessTokenExpiresAt", - "refreshTokenExpiresAt" - ] + "required": ["accessToken", "refreshToken", "accessTokenExpiresAt", "refreshTokenExpiresAt"] }, "KeysResponseDto": { "type": "object", @@ -14338,19 +13727,13 @@ "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", @@ -14410,11 +13793,7 @@ "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", @@ -14428,20 +13807,14 @@ "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": { @@ -14456,10 +13829,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "PlatformOAuthClientDto": { "type": "object", @@ -14494,19 +13864,14 @@ "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" @@ -14567,10 +13932,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -14579,10 +13941,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetOAuthClientResponseDto": { "type": "object", @@ -14590,19 +13949,13 @@ "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", @@ -14649,9 +14002,7 @@ "description": "Managed user's refresh token." } }, - "required": [ - "refreshToken" - ] + "required": ["refreshToken"] }, "RefreshApiKeyInput": { "type": "object", @@ -14677,9 +14028,7 @@ "type": "string" } }, - "required": [ - "apiKey" - ] + "required": ["apiKey"] }, "RefreshApiKeyOutput": { "type": "object", @@ -14687,48 +14036,31 @@ "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", @@ -14744,10 +14076,7 @@ "example": "#fafafa" } }, - "required": [ - "lightThemeHex", - "darkThemeHex" - ] + "required": ["lightThemeHex", "darkThemeHex"] }, "DestinationCalendar_2024_06_14": { "type": "object", @@ -14761,10 +14090,7 @@ "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", @@ -14782,11 +14108,7 @@ "type": "boolean" } }, - "required": [ - "type", - "address", - "public" - ] + "required": ["type", "address", "public"] }, "InputLinkLocation_2024_06_14": { "type": "object", @@ -14804,11 +14126,7 @@ "type": "boolean" } }, - "required": [ - "type", - "link", - "public" - ] + "required": ["type", "link", "public"] }, "InputIntegrationLocation_2024_06_14": { "type": "object", @@ -14821,18 +14139,10 @@ "integration": { "type": "string", "example": "cal-video", - "enum": [ - "cal-video", - "google-meet", - "office365-video", - "zoom" - ] + "enum": ["cal-video", "google-meet", "office365-video", "zoom"] } }, - "required": [ - "type", - "integration" - ] + "required": ["type", "integration"] }, "InputPhoneLocation_2024_06_14": { "type": "object", @@ -14850,11 +14160,7 @@ "type": "boolean" } }, - "required": [ - "type", - "phone", - "public" - ] + "required": ["type", "phone", "public"] }, "PhoneFieldInput_2024_06_14": { "type": "object", @@ -14887,14 +14193,7 @@ "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", @@ -14929,14 +14228,7 @@ "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", @@ -14971,14 +14263,7 @@ "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", @@ -15013,14 +14298,7 @@ "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", @@ -15055,14 +14333,7 @@ "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", @@ -15089,10 +14360,7 @@ "example": "Select..." }, "options": { - "example": [ - "Option 1", - "Option 2" - ], + "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" @@ -15107,15 +14375,7 @@ "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", @@ -15138,10 +14398,7 @@ "type": "boolean" }, "options": { - "example": [ - "Option 1", - "Option 2" - ], + "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" @@ -15156,14 +14413,7 @@ "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", @@ -15198,14 +14448,7 @@ "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", @@ -15228,10 +14471,7 @@ "type": "boolean" }, "options": { - "example": [ - "Checkbox 1", - "Checkbox 2" - ], + "example": ["Checkbox 1", "Checkbox 2"], "type": "array", "items": { "type": "string" @@ -15246,14 +14486,7 @@ "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", @@ -15276,10 +14509,7 @@ "type": "boolean" }, "options": { - "example": [ - "Radio 1", - "Radio 2" - ], + "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" @@ -15294,14 +14524,7 @@ "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", @@ -15332,13 +14555,7 @@ "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", @@ -15373,25 +14590,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"] }, "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": { @@ -15405,21 +14611,14 @@ "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": { @@ -15433,28 +14632,18 @@ "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": { @@ -15462,10 +14651,7 @@ } } }, - "required": [ - "type", - "value" - ] + "required": ["type", "value"] }, "BaseBookingLimitsCount_2024_06_14": { "type": "object", @@ -15506,9 +14692,7 @@ "default": false } }, - "required": [ - "disabled" - ] + "required": ["disabled"] }, "BaseBookingLimitsDuration_2024_06_14": { "type": "object", @@ -15550,18 +14734,10 @@ }, "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", @@ -15577,10 +14753,7 @@ "example": 30 } }, - "required": [ - "unit", - "count" - ] + "required": ["unit", "count"] }, "BaseConfirmationPolicy_2024_06_14": { "type": "object", @@ -15588,10 +14761,7 @@ "type": { "type": "string", "description": "The policy that determines when confirmation is required", - "enum": [ - "always", - "time" - ], + "enum": ["always", "time"], "example": "always" }, "noticeThreshold": { @@ -15607,10 +14777,7 @@ "description": "Unconfirmed bookings still block calendar slots." } }, - "required": [ - "type", - "blockUnconfirmedBookingsInBooker" - ] + "required": ["type", "blockUnconfirmedBookingsInBooker"] }, "Seats_2024_06_14": { "type": "object", @@ -15631,11 +14798,7 @@ "example": true } }, - "required": [ - "seatsPerTimeSlot", - "showAttendeeInfo", - "showAvailabilityCount" - ] + "required": ["seatsPerTimeSlot", "showAttendeeInfo", "showAvailabilityCount"] }, "InputAttendeeAddressLocation_2024_06_14": { "type": "object", @@ -15646,9 +14809,7 @@ "description": "only allowed value for type is `attendeeAddress`" } }, - "required": [ - "type" - ] + "required": ["type"] }, "InputAttendeePhoneLocation_2024_06_14": { "type": "object", @@ -15659,9 +14820,7 @@ "description": "only allowed value for type is `attendeePhone`" } }, - "required": [ - "type" - ] + "required": ["type"] }, "InputAttendeeDefinedLocation_2024_06_14": { "type": "object", @@ -15672,9 +14831,7 @@ "description": "only allowed value for type is `attendeeDefined`" } }, - "required": [ - "type" - ] + "required": ["type"] }, "NameDefaultFieldInput_2024_06_14": { "type": "object", @@ -15695,11 +14852,7 @@ "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", @@ -15728,11 +14881,7 @@ "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", @@ -15760,9 +14909,7 @@ "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", @@ -15776,9 +14923,7 @@ "type": "string" } }, - "required": [ - "slug" - ] + "required": ["slug"] }, "NotesDefaultFieldInput_2024_06_14": { "type": "object", @@ -15806,9 +14951,7 @@ "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", @@ -15836,9 +14979,7 @@ "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", @@ -15866,9 +15007,7 @@ "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", @@ -15879,9 +15018,7 @@ "description": "only allowed value for type is `organizersDefaultApp`" } }, - "required": [ - "type" - ] + "required": ["type"] }, "CalVideoSettings": { "type": "object", @@ -15912,11 +15049,7 @@ "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": { @@ -16185,11 +15318,7 @@ } } }, - "required": [ - "lengthInMinutes", - "title", - "slug" - ] + "required": ["lengthInMinutes", "title", "slug"] }, "OutputAddressLocation_2024_06_14": { "type": "object", @@ -16218,11 +15347,7 @@ "type": "boolean" } }, - "required": [ - "type", - "address", - "public" - ] + "required": ["type", "address", "public"] }, "OutputLinkLocation_2024_06_14": { "type": "object", @@ -16250,11 +15375,7 @@ "type": "boolean" } }, - "required": [ - "type", - "link", - "public" - ] + "required": ["type", "link", "public"] }, "OutputIntegrationLocation_2024_06_14": { "type": "object", @@ -16320,10 +15441,7 @@ "description": "Credential ID associated with the integration" } }, - "required": [ - "type", - "integration" - ] + "required": ["type", "integration"] }, "OutputPhoneLocation_2024_06_14": { "type": "object", @@ -16351,11 +15469,7 @@ "type": "boolean" } }, - "required": [ - "type", - "phone", - "public" - ] + "required": ["type", "phone", "public"] }, "OutputOrganizersDefaultAppLocation_2024_06_14": { "type": "object", @@ -16378,9 +15492,7 @@ "description": "only allowed value for type is `organizersDefaultApp`" } }, - "required": [ - "type" - ] + "required": ["type"] }, "OutputUnknownLocation_2024_06_14": { "type": "object", @@ -16406,10 +15518,7 @@ "type": "string" } }, - "required": [ - "type", - "location" - ] + "required": ["type", "location"] }, "EmailDefaultFieldOutput_2024_06_14": { "type": "object", @@ -16466,11 +15575,7 @@ "default": "email" } }, - "required": [ - "type", - "isDefault", - "slug" - ] + "required": ["type", "isDefault", "slug"] }, "NameDefaultFieldOutput_2024_06_14": { "type": "object", @@ -16521,12 +15626,7 @@ "type": "boolean" } }, - "required": [ - "type", - "isDefault", - "slug", - "required" - ] + "required": ["type", "isDefault", "slug", "required"] }, "LocationDefaultFieldOutput_2024_06_14": { "type": "object", @@ -16557,26 +15657,14 @@ "type": "string" } }, - "required": [ - "isDefault", - "slug", - "type", - "required", - "hidden" - ] + "required": ["isDefault", "slug", "type", "required", "hidden"] }, "RescheduleReasonDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", - "enum": [ - "title", - "location", - "notes", - "guests", - "rescheduleReason" - ], + "enum": ["title", "location", "notes", "guests", "rescheduleReason"], "example": "rescheduleReason", "description": "only allowed value for type is `rescheduleReason`", "default": "rescheduleReason" @@ -16609,24 +15697,14 @@ "default": "textarea" } }, - "required": [ - "slug", - "isDefault", - "type" - ] + "required": ["slug", "isDefault", "type"] }, "TitleDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", - "enum": [ - "title", - "location", - "notes", - "guests", - "rescheduleReason" - ], + "enum": ["title", "location", "notes", "guests", "rescheduleReason"], "example": "title", "description": "only allowed value for type is `title`", "default": "title" @@ -16659,24 +15737,14 @@ "default": "text" } }, - "required": [ - "slug", - "isDefault", - "type" - ] + "required": ["slug", "isDefault", "type"] }, "NotesDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", - "enum": [ - "title", - "location", - "notes", - "guests", - "rescheduleReason" - ], + "enum": ["title", "location", "notes", "guests", "rescheduleReason"], "example": "notes", "description": "only allowed value for type is `notes`", "default": "notes" @@ -16709,24 +15777,14 @@ "default": "textarea" } }, - "required": [ - "slug", - "isDefault", - "type" - ] + "required": ["slug", "isDefault", "type"] }, "GuestsDefaultFieldOutput_2024_06_14": { "type": "object", "properties": { "slug": { "type": "string", - "enum": [ - "title", - "location", - "notes", - "guests", - "rescheduleReason" - ], + "enum": ["title", "location", "notes", "guests", "rescheduleReason"], "example": "guests", "description": "only allowed value for type is `guests`", "default": "guests" @@ -16759,11 +15817,7 @@ "default": "multiemail" } }, - "required": [ - "slug", - "isDefault", - "type" - ] + "required": ["slug", "isDefault", "type"] }, "AddressFieldOutput_2024_06_14": { "type": "object", @@ -16820,14 +15874,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "BooleanFieldOutput_2024_06_14": { "type": "object", @@ -16880,14 +15927,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "CheckboxGroupFieldOutput_2024_06_14": { "type": "object", @@ -16926,10 +15966,7 @@ "type": "boolean" }, "options": { - "example": [ - "Checkbox 1", - "Checkbox 2" - ], + "example": ["Checkbox 1", "Checkbox 2"], "type": "array", "items": { "type": "string" @@ -16950,15 +15987,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "options", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "MultiEmailFieldOutput_2024_06_14": { "type": "object", @@ -17015,14 +16044,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "MultiSelectFieldOutput_2024_06_14": { "type": "object", @@ -17061,10 +16083,7 @@ "type": "boolean" }, "options": { - "example": [ - "Option 1", - "Option 2" - ], + "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" @@ -17085,15 +16104,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "options", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "UrlFieldOutput_2024_06_14": { "type": "object", @@ -17150,14 +16161,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "NumberFieldOutput_2024_06_14": { "type": "object", @@ -17214,14 +16218,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "PhoneFieldOutput_2024_06_14": { "type": "object", @@ -17276,14 +16273,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "RadioGroupFieldOutput_2024_06_14": { "type": "object", @@ -17322,10 +16312,7 @@ "type": "boolean" }, "options": { - "example": [ - "Radio 1", - "Radio 2" - ], + "example": ["Radio 1", "Radio 2"], "type": "array", "items": { "type": "string" @@ -17346,15 +16333,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "options", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "SelectFieldOutput_2024_06_14": { "type": "object", @@ -17397,10 +16376,7 @@ "example": "Select..." }, "options": { - "example": [ - "Option 1", - "Option 2" - ], + "example": ["Option 1", "Option 2"], "type": "array", "items": { "type": "string" @@ -17421,15 +16397,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "options", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "options", "hidden", "isDefault"] }, "TextAreaFieldOutput_2024_06_14": { "type": "object", @@ -17486,14 +16454,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "TextFieldOutput_2024_06_14": { "type": "object", @@ -17550,14 +16511,7 @@ "example": false } }, - "required": [ - "type", - "slug", - "label", - "required", - "hidden", - "isDefault" - ] + "required": ["type", "slug", "label", "required", "hidden", "isDefault"] }, "EventTypeOutput_2024_06_14": { "type": "object", @@ -17571,11 +16525,7 @@ "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": { @@ -17855,30 +16805,21 @@ "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"] }, "GetEventTypeOutput_2024_06_14": { "type": "object", "properties": { "status": { "type": "string", - "enum": [ - "success", - "error" - ], + "enum": ["success", "error"], "example": "success" }, "data": { @@ -17890,20 +16831,14 @@ ] } }, - "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": { @@ -17913,10 +16848,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UpdateEventTypeInput_2024_06_14": { "type": "object", @@ -17926,11 +16858,7 @@ "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": { @@ -18202,20 +17130,14 @@ "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", @@ -18236,32 +17158,21 @@ "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", @@ -18279,11 +17190,7 @@ "type": "string" } }, - "required": [ - "integration", - "externalId", - "credentialId" - ] + "required": ["integration", "externalId", "credentialId"] }, "SelectedCalendarOutputDto": { "type": "object", @@ -18302,12 +17209,7 @@ "nullable": true } }, - "required": [ - "userId", - "integration", - "externalId", - "credentialId" - ] + "required": ["userId", "integration", "externalId", "credentialId"] }, "SelectedCalendarOutputResponseDto": { "type": "object", @@ -18315,19 +17217,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/SelectedCalendarOutputDto" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "OrgTeamOutputDto": { "type": "object", @@ -18403,11 +17299,7 @@ "default": "Sunday" } }, - "required": [ - "id", - "name", - "isOrganization" - ] + "required": ["id", "name", "isOrganization"] }, "OrgTeamsOutputResponseDto": { "type": "object", @@ -18415,10 +17307,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -18427,10 +17316,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "OrgMeTeamsOutputResponseDto": { "type": "object", @@ -18438,10 +17324,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -18450,10 +17333,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "OrgTeamOutputResponseDto": { "type": "object", @@ -18461,19 +17341,13 @@ "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", @@ -18638,40 +17512,19 @@ "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": { @@ -18687,11 +17540,7 @@ "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", @@ -18713,11 +17562,7 @@ "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", @@ -18741,18 +17586,12 @@ "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" } @@ -18780,15 +17619,7 @@ } } }, - "required": [ - "id", - "ownerId", - "name", - "timeZone", - "availability", - "isDefault", - "overrides" - ] + "required": ["id", "ownerId", "name", "timeZone", "availability", "isDefault", "overrides"] }, "GetSchedulesOutput_2024_06_11": { "type": "object", @@ -18796,10 +17627,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -18811,10 +17639,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateScheduleInput_2024_06_11": { "type": "object", @@ -18832,18 +17657,12 @@ "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" } @@ -18873,11 +17692,7 @@ } } }, - "required": [ - "name", - "timeZone", - "isDefault" - ] + "required": ["name", "timeZone", "isDefault"] }, "CreateScheduleOutput_2024_06_11": { "type": "object", @@ -18885,19 +17700,13 @@ "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", @@ -18905,10 +17714,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "nullable": true, @@ -18922,10 +17728,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UpdateScheduleInput_2024_06_11": { "type": "object", @@ -18941,10 +17744,7 @@ "availability": { "example": [ { - "days": [ - "Monday", - "Tuesday" - ], + "days": ["Monday", "Tuesday"], "startTime": "09:00", "endTime": "10:00" } @@ -18979,10 +17779,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/ScheduleOutput_2024_06_11" @@ -18991,10 +17788,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "DeleteScheduleOutput_2024_06_11": { "type": "object", @@ -19002,15 +17796,10 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] } }, - "required": [ - "status" - ] + "required": ["status"] }, "ProfileOutput": { "type": "object", @@ -19037,11 +17826,7 @@ "example": "john_doe" } }, - "required": [ - "id", - "organizationId", - "userId" - ] + "required": ["id", "organizationId", "userId"] }, "GetOrgUsersWithProfileOutput": { "type": "object", @@ -19183,15 +17968,7 @@ ] } }, - "required": [ - "id", - "email", - "timeZone", - "weekStart", - "hideBranding", - "createdDate", - "profile" - ] + "required": ["id", "email", "timeZone", "weekStart", "hideBranding", "createdDate", "profile"] }, "GetOrganizationUsersResponseDTO": { "type": "object", @@ -19199,10 +17976,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -19211,10 +17985,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateOrganizationUserInput": { "type": "object", @@ -19304,20 +18075,14 @@ "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", @@ -19325,19 +18090,13 @@ "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", @@ -19353,10 +18112,7 @@ "type": "string" } }, - "required": [ - "id", - "name" - ] + "required": ["id", "name"] }, "TextAttribute": { "type": "object", @@ -19377,13 +18133,7 @@ "type": "string" } }, - "required": [ - "id", - "name", - "type", - "option", - "optionId" - ] + "required": ["id", "name", "type", "option", "optionId"] }, "NumberAttribute": { "type": "object", @@ -19404,13 +18154,7 @@ "type": "string" } }, - "required": [ - "id", - "name", - "type", - "option", - "optionId" - ] + "required": ["id", "name", "type", "option", "optionId"] }, "SingleSelectAttribute": { "type": "object", @@ -19431,13 +18175,7 @@ "type": "string" } }, - "required": [ - "id", - "name", - "type", - "option", - "optionId" - ] + "required": ["id", "name", "type", "option", "optionId"] }, "MultiSelectAttributeOption": { "type": "object", @@ -19449,10 +18187,7 @@ "type": "string" } }, - "required": [ - "optionId", - "option" - ] + "required": ["optionId", "option"] }, "MultiSelectAttribute": { "type": "object", @@ -19473,12 +18208,7 @@ } } }, - "required": [ - "id", - "name", - "type", - "options" - ] + "required": ["id", "name", "type", "options"] }, "MembershipUserOutputDto": { "type": "object", @@ -19505,9 +18235,7 @@ } } }, - "required": [ - "email" - ] + "required": ["email"] }, "OrganizationMembershipOutput": { "type": "object", @@ -19526,11 +18254,7 @@ }, "role": { "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" @@ -19558,15 +18282,7 @@ } } }, - "required": [ - "id", - "userId", - "teamId", - "accepted", - "role", - "user", - "attributes" - ] + "required": ["id", "userId", "teamId", "accepted", "role", "user", "attributes"] }, "GetAllOrgMemberships": { "type": "object", @@ -19574,19 +18290,13 @@ "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", @@ -19601,11 +18311,7 @@ "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": { @@ -19613,10 +18319,7 @@ "default": false } }, - "required": [ - "userId", - "role" - ] + "required": ["userId", "role"] }, "CreateOrgMembershipOutput": { "type": "object", @@ -19624,19 +18327,13 @@ "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", @@ -19644,19 +18341,13 @@ "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", @@ -19664,19 +18355,13 @@ "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", @@ -19686,11 +18371,7 @@ }, "role": { "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" @@ -19703,19 +18384,13 @@ "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", @@ -19730,18 +18405,10 @@ }, "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", @@ -19751,11 +18418,7 @@ "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": { @@ -19996,11 +18659,7 @@ }, "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." }, @@ -20048,12 +18707,7 @@ } } }, - "required": [ - "lengthInMinutes", - "title", - "slug", - "schedulingType" - ] + "required": ["lengthInMinutes", "title", "slug", "schedulingType"] }, "CreateTeamEventTypeOutput": { "type": "object", @@ -20061,10 +18715,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -20080,10 +18731,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "TeamEventTypeResponseHost": { "type": "object", @@ -20100,13 +18748,7 @@ "priority": { "type": "string", "default": "medium", - "enum": [ - "lowest", - "low", - "medium", - "high", - "highest" - ] + "enum": ["lowest", "low", "medium", "high", "highest"] }, "name": { "type": "string", @@ -20122,11 +18764,7 @@ "example": "https://cal.com/api/avatar/d95949bc-ccb1-400f-acf6-045c51a16856.png" } }, - "required": [ - "userId", - "name", - "username" - ] + "required": ["userId", "name", "username"] }, "EventTypeTeam": { "type": "object", @@ -20159,9 +18797,7 @@ "type": "string" } }, - "required": [ - "id" - ] + "required": ["id"] }, "TeamEventTypeOutput_2024_06_14": { "type": "object", @@ -20176,11 +18812,7 @@ "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": { @@ -20451,11 +19083,7 @@ }, "schedulingType": { "type": "string", - "enum": [ - "roundRobin", - "collective", - "managed" - ] + "enum": ["roundRobin", "collective", "managed"] }, "team": { "$ref": "#/components/schemas/EventTypeTeam" @@ -20491,19 +19119,13 @@ "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", @@ -20529,10 +19151,7 @@ }, "templateType": { "default": "CUSTOM_TEMPLATE", - "enum": [ - "CHECK_IN_APPOINTMENT", - "CUSTOM_TEMPLATE" - ], + "enum": ["CHECK_IN_APPOINTMENT", "CUSTOM_TEMPLATE"], "type": "string", "description": "Template type" }, @@ -20561,13 +19180,7 @@ "description": "General prompt" } }, - "required": [ - "yourPhoneNumber", - "numberToCall", - "calApiKey", - "enabled", - "templateType" - ] + "required": ["yourPhoneNumber", "numberToCall", "calApiKey", "enabled", "templateType"] }, "Data": { "type": "object", @@ -20579,9 +19192,7 @@ "type": "string" } }, - "required": [ - "callId" - ] + "required": ["callId"] }, "CreatePhoneCallOutput": { "type": "object", @@ -20589,19 +19200,13 @@ "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", @@ -20609,10 +19214,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -20621,10 +19223,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UpdateTeamEventTypeInput_2024_06_14": { "type": "object", @@ -20634,11 +19233,7 @@ "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": { @@ -20924,10 +19519,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -20943,10 +19535,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "DeleteTeamEventTypeOutput": { "type": "object", @@ -20954,19 +19543,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "TeamMembershipOutput": { "type": "object", @@ -20985,11 +19568,7 @@ }, "role": { "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" @@ -20998,14 +19577,7 @@ "$ref": "#/components/schemas/MembershipUserOutputDto" } }, - "required": [ - "id", - "userId", - "teamId", - "accepted", - "role", - "user" - ] + "required": ["id", "userId", "teamId", "accepted", "role", "user"] }, "OrgTeamMembershipsOutputResponseDto": { "type": "object", @@ -21013,10 +19585,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21025,10 +19594,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "OrgTeamMembershipOutputResponseDto": { "type": "object", @@ -21036,19 +19602,13 @@ "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", @@ -21058,11 +19618,7 @@ }, "role": { "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" @@ -21082,21 +19638,14 @@ "role": { "type": "string", "default": "MEMBER", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean", "default": false } }, - "required": [ - "userId", - "role" - ] + "required": ["userId", "role"] }, "Attribute": { "type": "object", @@ -21114,12 +19663,7 @@ "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", @@ -21142,14 +19686,7 @@ "example": true } }, - "required": [ - "id", - "teamId", - "type", - "name", - "slug", - "enabled" - ] + "required": ["id", "teamId", "type", "name", "slug", "enabled"] }, "GetOrganizationAttributesOutput": { "type": "object", @@ -21157,10 +19694,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21169,10 +19703,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetSingleAttributeOutput": { "type": "object", @@ -21180,10 +19711,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "nullable": true, @@ -21194,10 +19722,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateOrganizationAttributeOptionInput": { "type": "object", @@ -21209,10 +19734,7 @@ "type": "string" } }, - "required": [ - "value", - "slug" - ] + "required": ["value", "slug"] }, "CreateOrganizationAttributeInput": { "type": "object", @@ -21225,12 +19747,7 @@ }, "type": { "type": "string", - "enum": [ - "TEXT", - "NUMBER", - "SINGLE_SELECT", - "MULTI_SELECT" - ] + "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "options": { "type": "array", @@ -21242,12 +19759,7 @@ "type": "boolean" } }, - "required": [ - "name", - "slug", - "type", - "options" - ] + "required": ["name", "slug", "type", "options"] }, "CreateOrganizationAttributesOutput": { "type": "object", @@ -21255,19 +19767,13 @@ "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", @@ -21280,12 +19786,7 @@ }, "type": { "type": "string", - "enum": [ - "TEXT", - "NUMBER", - "SINGLE_SELECT", - "MULTI_SELECT" - ] + "enum": ["TEXT", "NUMBER", "SINGLE_SELECT", "MULTI_SELECT"] }, "enabled": { "type": "boolean" @@ -21298,19 +19799,13 @@ "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", @@ -21318,19 +19813,13 @@ "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", @@ -21356,12 +19845,7 @@ "example": "option-slug" } }, - "required": [ - "id", - "attributeId", - "value", - "slug" - ] + "required": ["id", "attributeId", "value", "slug"] }, "CreateAttributeOptionOutput": { "type": "object", @@ -21369,19 +19853,13 @@ "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", @@ -21389,19 +19867,13 @@ "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", @@ -21420,19 +19892,13 @@ "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", @@ -21440,10 +19906,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21452,10 +19915,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "AssignedOptionOutput": { "type": "object", @@ -21482,23 +19942,14 @@ }, "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", @@ -21506,10 +19957,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21518,10 +19966,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "AssignOrganizationAttributeOptionToUserInput": { "type": "object", @@ -21536,9 +19981,7 @@ "type": "string" } }, - "required": [ - "attributeId" - ] + "required": ["attributeId"] }, "AssignOptionUserOutputData": { "type": "object", @@ -21556,11 +19999,7 @@ "description": "The value of the option" } }, - "required": [ - "id", - "memberId", - "attributeOptionId" - ] + "required": ["id", "memberId", "attributeOptionId"] }, "AssignOptionUserOutput": { "type": "object", @@ -21568,19 +20007,13 @@ "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", @@ -21588,19 +20021,13 @@ "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", @@ -21622,12 +20049,7 @@ "description": "The slug of the option" } }, - "required": [ - "id", - "attributeId", - "value", - "slug" - ] + "required": ["id", "attributeId", "value", "slug"] }, "GetOptionUserOutput": { "type": "object", @@ -21635,10 +20057,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21647,10 +20066,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "TeamWebhookOutputDto": { "type": "object", @@ -21682,14 +20098,7 @@ "type": "string" } }, - "required": [ - "payloadTemplate", - "teamId", - "id", - "triggers", - "subscriberUrl", - "active" - ] + "required": ["payloadTemplate", "teamId", "id", "triggers", "subscriberUrl", "active"] }, "TeamWebhooksOutputResponseDto": { "type": "object", @@ -21697,10 +20106,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -21709,10 +20115,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateWebhookInputDto": { "type": "object", @@ -21765,11 +20168,7 @@ "type": "string" } }, - "required": [ - "active", - "subscriberUrl", - "triggers" - ] + "required": ["active", "subscriberUrl", "triggers"] }, "TeamWebhookOutputResponseDto": { "type": "object", @@ -21777,19 +20176,13 @@ "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", @@ -21872,19 +20265,10 @@ "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", @@ -21915,13 +20299,7 @@ "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"] } } }, @@ -21936,10 +20314,7 @@ }, "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" @@ -21959,17 +20334,10 @@ "type": "string", "description": "Unit for the offset time", "example": "hour", - "enum": [ - "hour", - "minute", - "day" - ] + "enum": ["hour", "minute", "day"] } }, - "required": [ - "value", - "unit" - ] + "required": ["value", "unit"] }, "WorkflowTriggerOutputDto": { "type": "object", @@ -21997,9 +20365,7 @@ ] } }, - "required": [ - "type" - ] + "required": ["type"] }, "WorkflowMessageOutputDto": { "type": "object", @@ -22020,9 +20386,7 @@ "example": "Reminder for {EVENT_NAME}." } }, - "required": [ - "subject" - ] + "required": ["subject"] }, "WorkflowStepOutputDto": { "type": "object", @@ -22056,12 +20420,7 @@ "type": "string", "description": "Intended recipient type", "example": "const", - "enum": [ - "const", - "attendee", - "email", - "phone_number" - ] + "enum": ["const", "attendee", "email", "phone_number"] }, "email": { "type": "string", @@ -22076,14 +20435,7 @@ "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", @@ -22105,15 +20457,7 @@ ] } }, - "required": [ - "id", - "stepNumber", - "action", - "recipient", - "template", - "sender", - "message" - ] + "required": ["id", "stepNumber", "action", "recipient", "template", "sender", "message"] }, "WorkflowOutput": { "type": "object", @@ -22172,13 +20516,7 @@ "example": "2024-05-12T11:30:00.000Z" } }, - "required": [ - "id", - "name", - "activation", - "trigger", - "steps" - ] + "required": ["id", "name", "activation", "trigger", "steps"] }, "GetWorkflowsOutput": { "type": "object", @@ -22187,10 +20525,7 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "description": "List of workflows", @@ -22200,10 +20535,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetWorkflowOutput": { "type": "object", @@ -22212,10 +20544,7 @@ "type": "string", "description": "Indicates the status of the response", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "description": "workflow", @@ -22225,10 +20554,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "WorkflowTriggerOffsetDto": { "type": "object", @@ -22244,10 +20570,7 @@ "example": "hour" } }, - "required": [ - "value", - "unit" - ] + "required": ["value", "unit"] }, "OnBeforeEventTriggerDto": { "type": "object", @@ -22267,10 +20590,7 @@ "example": "beforeEvent" } }, - "required": [ - "offset", - "type" - ] + "required": ["offset", "type"] }, "OnAfterEventTriggerDto": { "type": "object", @@ -22290,10 +20610,7 @@ "example": "afterEvent" } }, - "required": [ - "offset", - "type" - ] + "required": ["offset", "type"] }, "OnCancelTriggerDto": { "type": "object", @@ -22304,9 +20621,7 @@ "description": "Trigger type for the workflow" } }, - "required": [ - "type" - ] + "required": ["type"] }, "OnCreationTriggerDto": { "type": "object", @@ -22317,9 +20632,7 @@ "description": "Trigger type for the workflow" } }, - "required": [ - "type" - ] + "required": ["type"] }, "OnRescheduleTriggerDto": { "type": "object", @@ -22330,9 +20643,7 @@ "description": "Trigger type for the workflow" } }, - "required": [ - "type" - ] + "required": ["type"] }, "OnAfterCalVideoGuestsNoShowTriggerDto": { "type": "object", @@ -22352,10 +20663,7 @@ "example": "afterGuestsCalVideoNoShow" } }, - "required": [ - "offset", - "type" - ] + "required": ["offset", "type"] }, "OnAfterCalVideoHostsNoShowTriggerDto": { "type": "object", @@ -22375,10 +20683,7 @@ "example": "afterHostsCalVideoNoShow" } }, - "required": [ - "offset", - "type" - ] + "required": ["offset", "type"] }, "HtmlWorkflowMessageDto": { "type": "object", @@ -22394,10 +20699,7 @@ "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", @@ -22427,25 +20729,13 @@ "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", @@ -22513,25 +20803,13 @@ "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", @@ -22590,25 +20868,13 @@ "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", @@ -22653,10 +20919,7 @@ "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", @@ -22686,25 +20949,13 @@ "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", @@ -22719,14 +20970,7 @@ ] } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "WorkflowPhoneWhatsAppNumberStepDto": { "type": "object", @@ -22756,25 +21000,13 @@ "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", @@ -22797,15 +21029,7 @@ ] } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "verifiedPhoneId", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "WorkflowPhoneNumberStepDto": { "type": "object", @@ -22835,25 +21059,13 @@ "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", @@ -22876,15 +21088,7 @@ ] } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "verifiedPhoneId", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "WorkflowPhoneAttendeeStepDto": { "type": "object", @@ -22914,25 +21118,13 @@ "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", @@ -22951,14 +21143,7 @@ ] } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "BaseWorkflowTriggerDto": { "type": "object", @@ -22968,9 +21153,7 @@ "description": "Trigger type for the workflow" } }, - "required": [ - "type" - ] + "required": ["type"] }, "WorkflowActivationDto": { "type": "object", @@ -22984,18 +21167,14 @@ "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"] }, "CreateWorkflowDto": { "type": "object", @@ -23069,12 +21248,7 @@ } } }, - "required": [ - "name", - "activation", - "trigger", - "steps" - ] + "required": ["name", "activation", "trigger", "steps"] }, "UpdateEmailAddressWorkflowStepDto": { "type": "object", @@ -23104,25 +21278,13 @@ "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", @@ -23195,25 +21357,13 @@ "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", @@ -23277,25 +21427,13 @@ "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", @@ -23359,25 +21497,13 @@ "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", @@ -23401,14 +21527,7 @@ "example": 67244 } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "UpdatePhoneWhatsAppNumberWorkflowStepDto": { "type": "object", @@ -23438,25 +21557,13 @@ "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", @@ -23484,15 +21591,7 @@ "example": 67244 } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "verifiedPhoneId", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "UpdateWhatsAppAttendeePhoneWorkflowStepDto": { "type": "object", @@ -23522,25 +21621,13 @@ "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", @@ -23560,14 +21647,7 @@ "example": 67244 } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "message"] }, "UpdatePhoneNumberWorkflowStepDto": { "type": "object", @@ -23597,25 +21677,13 @@ "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", @@ -23643,15 +21711,7 @@ "example": 67244 } }, - "required": [ - "action", - "stepNumber", - "recipient", - "template", - "sender", - "verifiedPhoneId", - "message" - ] + "required": ["action", "stepNumber", "recipient", "template", "sender", "verifiedPhoneId", "message"] }, "UpdateWorkflowDto": { "type": "object", @@ -23733,9 +21793,7 @@ "type": "string" } }, - "required": [ - "authUrl" - ] + "required": ["authUrl"] }, "StripConnectOutputResponseDto": { "type": "object", @@ -23743,19 +21801,13 @@ "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", @@ -23764,9 +21816,7 @@ "type": "string" } }, - "required": [ - "url" - ] + "required": ["url"] }, "StripCredentialsCheckOutputResponseDto": { "type": "object", @@ -23776,9 +21826,7 @@ "example": "success" } }, - "required": [ - "status" - ] + "required": ["status"] }, "GetDefaultScheduleOutput_2024_06_11": { "type": "object", @@ -23786,19 +21834,13 @@ "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", @@ -23882,9 +21924,7 @@ "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"] }, "CreateTeamOutput": { "type": "object", @@ -23892,10 +21932,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -23909,10 +21946,7 @@ "description": "Either an Output object or a TeamOutputDto." } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "TeamOutputDto": { "type": "object", @@ -23988,11 +22022,7 @@ "default": "Sunday" } }, - "required": [ - "id", - "name", - "isOrganization" - ] + "required": ["id", "name", "isOrganization"] }, "GetTeamOutput": { "type": "object", @@ -24000,19 +22030,13 @@ "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", @@ -24020,10 +22044,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -24032,10 +22053,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UpdateTeamOutput": { "type": "object", @@ -24043,19 +22061,13 @@ "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", @@ -24080,30 +22092,20 @@ "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", @@ -24111,25 +22113,17 @@ "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", @@ -24138,10 +22132,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "SetDefaultConferencingAppOutputResponseDto": { "type": "object", @@ -24149,15 +22140,10 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] } }, - "required": [ - "status" - ] + "required": ["status"] }, "DefaultConferencingAppsOutputDto": { "type": "object", @@ -24176,18 +22162,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DefaultConferencingAppsOutputDto" } }, - "required": [ - "status" - ] + "required": ["status"] }, "DisconnectConferencingAppOutputResponseDto": { "type": "object", @@ -24195,15 +22176,10 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] } }, - "required": [ - "status" - ] + "required": ["status"] }, "GoogleServiceAccountKeyInput": { "type": "object", @@ -24218,11 +22194,7 @@ "type": "string" } }, - "required": [ - "private_key", - "client_email", - "client_id" - ] + "required": ["private_key", "client_email", "client_id"] }, "CreateDelegationCredentialInput": { "type": "object", @@ -24247,11 +22219,7 @@ } } }, - "required": [ - "workspacePlatformSlug", - "domain", - "serviceAccountKey" - ] + "required": ["workspacePlatformSlug", "domain", "serviceAccountKey"] }, "WorkspacePlatformDto": { "type": "object", @@ -24263,10 +22231,7 @@ "type": "string" } }, - "required": [ - "name", - "slug" - ] + "required": ["name", "slug"] }, "DelegationCredentialOutput": { "type": "object", @@ -24311,19 +22276,13 @@ "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", @@ -24352,29 +22311,20 @@ "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", @@ -24388,9 +22338,7 @@ "description": "Whether to allowing writing to the calendar or not" } }, - "required": [ - "urls" - ] + "required": ["urls"] }, "CreateIcsFeedOutput": { "type": "object", @@ -24430,14 +22378,7 @@ "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", @@ -24445,19 +22386,13 @@ "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", @@ -24475,10 +22410,7 @@ "nullable": true } }, - "required": [ - "start", - "end" - ] + "required": ["start", "end"] }, "GetBusyTimesOutput": { "type": "object", @@ -24486,10 +22418,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -24498,10 +22427,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "Integration": { "type": "object", @@ -24610,13 +22536,7 @@ "nullable": true } }, - "required": [ - "externalId", - "primary", - "readOnly", - "isSelected", - "credentialId" - ] + "required": ["externalId", "primary", "readOnly", "isSelected", "credentialId"] }, "Calendar": { "type": "object", @@ -24651,12 +22571,7 @@ "nullable": true } }, - "required": [ - "externalId", - "readOnly", - "isSelected", - "credentialId" - ] + "required": ["externalId", "readOnly", "isSelected", "credentialId"] }, "ConnectedCalendar": { "type": "object", @@ -24681,10 +22596,7 @@ } } }, - "required": [ - "integration", - "credentialId" - ] + "required": ["integration", "credentialId"] }, "DestinationCalendar": { "type": "object", @@ -24758,10 +22670,7 @@ "$ref": "#/components/schemas/DestinationCalendar" } }, - "required": [ - "connectedCalendars", - "destinationCalendar" - ] + "required": ["connectedCalendars", "destinationCalendar"] }, "ConnectedCalendarsOutput": { "type": "object", @@ -24769,19 +22678,13 @@ "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", @@ -24793,10 +22696,7 @@ "type": "string" } }, - "required": [ - "username", - "password" - ] + "required": ["username", "password"] }, "DeleteCalendarCredentialsInputBodyDto": { "type": "object", @@ -24807,9 +22707,7 @@ "description": "Credential ID of the calendar to delete, as returned by the /calendars endpoint" } }, - "required": [ - "id" - ] + "required": ["id"] }, "DeletedCalendarCredentialsOutputDto": { "type": "object", @@ -24837,14 +22735,7 @@ "nullable": true } }, - "required": [ - "id", - "type", - "userId", - "teamId", - "appId", - "invalid" - ] + "required": ["id", "type", "userId", "teamId", "appId", "invalid"] }, "DeletedCalendarCredentialsOutputResponseDto": { "type": "object", @@ -24852,19 +22743,13 @@ "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", @@ -24900,9 +22785,7 @@ } } }, - "required": [ - "name" - ] + "required": ["name"] }, "ManagedOrganizationWithApiKeyOutput": { "type": "object", @@ -24927,11 +22810,7 @@ "type": "string" } }, - "required": [ - "id", - "name", - "apiKey" - ] + "required": ["id", "name", "apiKey"] }, "CreateManagedOrganizationOutput": { "type": "object", @@ -24939,19 +22818,13 @@ "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", @@ -24973,10 +22846,7 @@ } } }, - "required": [ - "id", - "name" - ] + "required": ["id", "name"] }, "GetManagedOrganizationOutput": { "type": "object", @@ -24984,19 +22854,13 @@ "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", @@ -25064,10 +22928,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -25079,11 +22940,7 @@ "$ref": "#/components/schemas/PaginationMetaDto" } }, - "required": [ - "status", - "data", - "pagination" - ] + "required": ["status", "data", "pagination"] }, "UpdateOrganizationInput": { "type": "object", @@ -25132,14 +22989,7 @@ "type": "string" } }, - "required": [ - "id", - "formId", - "formFillerId", - "routedToBookingUid", - "response", - "createdAt" - ] + "required": ["id", "formId", "formFillerId", "routedToBookingUid", "response", "createdAt"] }, "GetRoutingFormResponsesOutput": { "type": "object", @@ -25147,19 +22997,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/RoutingFormResponseOutput" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "Routing": { "type": "object", @@ -25178,10 +23022,7 @@ }, "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" @@ -25208,9 +23049,7 @@ "example": "Account" } }, - "required": [ - "teamMemberIds" - ] + "required": ["teamMemberIds"] }, "CreateRoutingFormResponseOutputData": { "type": "object", @@ -25225,10 +23064,7 @@ "example": { "eventTypeId": 123, "routing": { - "teamMemberIds": [ - 101, - 102 - ], + "teamMemberIds": [101, 102], "teamMemberEmail": "john.doe@example.com", "skipContactOwner": true } @@ -25267,19 +23103,13 @@ "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", @@ -25296,19 +23126,13 @@ "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", @@ -25384,10 +23208,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -25396,10 +23217,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "SlotsOutput_2024_09_04": { "type": "object", @@ -25426,10 +23244,7 @@ ] } }, - "required": [ - "eventTypeId", - "slots" - ] + "required": ["eventTypeId", "slots"] }, "ResponseSlotsOutput": { "type": "object", @@ -25437,19 +23252,13 @@ "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", @@ -25475,10 +23284,7 @@ "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", @@ -25535,19 +23341,13 @@ "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", @@ -25555,10 +23355,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "nullable": true, @@ -25569,10 +23366,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "MeOrgOutput": { "type": "object", @@ -25584,10 +23378,7 @@ "type": "number" } }, - "required": [ - "isPlatform", - "id" - ] + "required": ["isPlatform", "id"] }, "MeOutput": { "type": "object", @@ -25639,19 +23430,13 @@ "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", @@ -25659,19 +23444,13 @@ "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", @@ -25682,9 +23461,7 @@ "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", @@ -25699,10 +23476,7 @@ "example": "123 Example St, City, Country" } }, - "required": [ - "type", - "address" - ] + "required": ["type", "address"] }, "BookingInputAttendeeDefinedLocation_2024_08_13": { "type": "object", @@ -25717,10 +23491,7 @@ "example": "321 Example St, City, Country" } }, - "required": [ - "type", - "location" - ] + "required": ["type", "location"] }, "BookingInputAttendeePhoneLocation_2024_08_13": { "type": "object", @@ -25735,10 +23506,7 @@ "example": "+37120993151" } }, - "required": [ - "type", - "phone" - ] + "required": ["type", "phone"] }, "BookingInputIntegrationLocation_2024_08_13": { "type": "object", @@ -25784,10 +23552,7 @@ ] } }, - "required": [ - "type", - "integration" - ] + "required": ["type", "integration"] }, "BookingInputLinkLocation_2024_08_13": { "type": "object", @@ -25798,9 +23563,7 @@ "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", @@ -25811,9 +23574,7 @@ "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", @@ -25824,9 +23585,7 @@ "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", @@ -25907,10 +23666,7 @@ "default": "en" } }, - "required": [ - "name", - "timeZone" - ] + "required": ["name", "timeZone"] }, "CreateBookingInput_2024_08_13": { "type": "object", @@ -25962,10 +23718,7 @@ }, "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" @@ -26022,10 +23775,7 @@ "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": [ { @@ -26034,10 +23784,7 @@ ] } }, - "required": [ - "start", - "attendee" - ] + "required": ["start", "attendee"] }, "CreateInstantBookingInput_2024_08_13": { "type": "object", @@ -26089,10 +23836,7 @@ }, "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" @@ -26149,10 +23893,7 @@ "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": [ { @@ -26166,11 +23907,7 @@ "example": true } }, - "required": [ - "start", - "attendee", - "instant" - ] + "required": ["start", "attendee", "instant"] }, "CreateRecurringBookingInput_2024_08_13": { "type": "object", @@ -26222,10 +23959,7 @@ }, "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" @@ -26282,10 +24016,7 @@ "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": [ { @@ -26299,10 +24030,7 @@ "example": 5 } }, - "required": [ - "start", - "attendee" - ] + "required": ["start", "attendee"] }, "BookingHost": { "type": "object", @@ -26328,13 +24056,7 @@ "example": "America/Los_Angeles" } }, - "required": [ - "id", - "name", - "email", - "username", - "timeZone" - ] + "required": ["id", "name", "email", "username", "timeZone"] }, "EventType": { "type": "object", @@ -26348,10 +24070,7 @@ "example": "some-event" } }, - "required": [ - "id", - "slug" - ] + "required": ["id", "slug"] }, "BookingAttendee": { "type": "object", @@ -26426,12 +24145,7 @@ "example": "+1234567890" } }, - "required": [ - "name", - "email", - "timeZone", - "absent" - ] + "required": ["name", "email", "timeZone", "absent"] }, "BookingOutput_2024_08_13": { "type": "object", @@ -26460,12 +24174,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -26559,10 +24268,7 @@ } }, "guests": { - "example": [ - "guest1@example.com", - "guest2@example.com" - ], + "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" @@ -26623,12 +24329,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -26722,10 +24423,7 @@ } }, "guests": { - "example": [ - "guest1@example.com", - "guest2@example.com" - ], + "example": ["guest1@example.com", "guest2@example.com"], "type": "array", "items": { "type": "string" @@ -26854,14 +24552,7 @@ } } }, - "required": [ - "name", - "email", - "timeZone", - "absent", - "seatUid", - "bookingFieldsResponses" - ] + "required": ["name", "email", "timeZone", "absent", "seatUid", "bookingFieldsResponses"] }, "CreateSeatedBookingOutput_2024_08_13": { "type": "object", @@ -26890,12 +24581,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -27040,12 +24726,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -27174,10 +24855,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27203,10 +24881,7 @@ "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", @@ -27235,12 +24910,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -27380,12 +25050,7 @@ }, "status": { "type": "string", - "enum": [ - "cancelled", - "accepted", - "rejected", - "pending" - ], + "enum": ["cancelled", "accepted", "rejected", "pending"], "example": "accepted" }, "cancellationReason": { @@ -27509,10 +25174,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27547,10 +25209,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "RecordingItem": { "type": "object", @@ -27594,14 +25253,7 @@ "example": "Error message" } }, - "required": [ - "id", - "roomName", - "startTs", - "status", - "duration", - "shareToken" - ] + "required": ["id", "roomName", "startTs", "status", "duration", "shareToken"] }, "GetBookingRecordingsOutput": { "type": "object", @@ -27609,10 +25261,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "error": { "type": "object" @@ -27624,10 +25273,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetBookingTranscriptsOutput": { "type": "object", @@ -27635,16 +25281,10 @@ "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" @@ -27654,10 +25294,7 @@ "type": "object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetBookingsOutput_2024_08_13": { "type": "object", @@ -27665,10 +25302,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -27697,11 +25331,7 @@ "type": "object" } }, - "required": [ - "status", - "data", - "pagination" - ] + "required": ["status", "data", "pagination"] }, "RescheduleBookingInput_2024_08_13": { "type": "object", @@ -27721,9 +25351,7 @@ "description": "Reason for rescheduling the booking" } }, - "required": [ - "start" - ] + "required": ["start"] }, "RescheduleSeatedBookingInput_2024_08_13": { "type": "object", @@ -27743,10 +25371,7 @@ "description": "Uid of the specific seat within booking." } }, - "required": [ - "start", - "seatUid" - ] + "required": ["start", "seatUid"] }, "RescheduleBookingOutput_2024_08_13": { "type": "object", @@ -27754,10 +25379,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27777,10 +25399,7 @@ "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", @@ -27804,9 +25423,7 @@ "description": "Uid of the specific seat within booking." } }, - "required": [ - "seatUid" - ] + "required": ["seatUid"] }, "CancelBookingOutput_2024_08_13": { "type": "object", @@ -27814,10 +25431,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27849,10 +25463,7 @@ "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", @@ -27864,10 +25475,7 @@ "type": "boolean" } }, - "required": [ - "email", - "absent" - ] + "required": ["email", "absent"] }, "MarkAbsentBookingInput_2024_08_13": { "type": "object", @@ -27891,10 +25499,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27908,10 +25513,7 @@ "description": "Booking data, which can be either a BookingOutput object or a RecurringBookingOutput object" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "ReassignedToDto": { "type": "object", @@ -27929,11 +25531,7 @@ "example": "john.doe@example.com" } }, - "required": [ - "id", - "name", - "email" - ] + "required": ["id", "name", "email"] }, "ReassignBookingOutput_2024_08_13": { "type": "object", @@ -27941,10 +25539,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "oneOf": [ @@ -27960,10 +25555,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "ReassignToUserBookingInput_2024_08_13": { "type": "object", @@ -27997,10 +25589,7 @@ "description": "The link to the calendar" } }, - "required": [ - "label", - "link" - ] + "required": ["label", "link"] }, "CalendarLinksOutput_2024_08_13": { "type": "object", @@ -28018,10 +25607,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "BookingReference": { "type": "object", @@ -28044,12 +25630,7 @@ "description": "The id of the booking reference" } }, - "required": [ - "type", - "eventUid", - "destinationCalendarId", - "id" - ] + "required": ["type", "eventUid", "destinationCalendarId", "id"] }, "BookingReferencesOutput_2024_08_13": { "type": "object", @@ -28067,10 +25648,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreateTeamMembershipInput": { "type": "object", @@ -28085,20 +25663,14 @@ "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", @@ -28106,19 +25678,13 @@ "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", @@ -28126,19 +25692,13 @@ "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", @@ -28146,19 +25706,13 @@ "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", @@ -28168,11 +25722,7 @@ }, "role": { "type": "string", - "enum": [ - "MEMBER", - "OWNER", - "ADMIN" - ] + "enum": ["MEMBER", "OWNER", "ADMIN"] }, "disableImpersonation": { "type": "boolean" @@ -28185,19 +25735,13 @@ "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", @@ -28205,19 +25749,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/TeamMembershipOutput" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CreatePrivateLinkInput": { "type": "object", @@ -28268,13 +25806,7 @@ "example": "2025-12-31T23:59:59.000Z" } }, - "required": [ - "linkId", - "eventTypeId", - "isExpired", - "bookingUrl", - "expiresAt" - ] + "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "expiresAt"] }, "UsageBasedPrivateLinkOutput": { "type": "object", @@ -28311,14 +25843,7 @@ "example": 3 } }, - "required": [ - "linkId", - "eventTypeId", - "isExpired", - "bookingUrl", - "maxUsageCount", - "usageCount" - ] + "required": ["linkId", "eventTypeId", "isExpired", "bookingUrl", "maxUsageCount", "usageCount"] }, "CreatePrivateLinkOutput": { "type": "object", @@ -28340,10 +25865,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "GetPrivateLinksOutput": { "type": "object", @@ -28368,10 +25890,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UpdatePrivateLinkBody": { "type": "object", @@ -28410,10 +25929,7 @@ ] } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "DeletePrivateLinkOutput": { "type": "object", @@ -28438,10 +25954,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "UserWebhookOutputDto": { "type": "object", @@ -28473,14 +25986,7 @@ "type": "string" } }, - "required": [ - "payloadTemplate", - "userId", - "id", - "triggers", - "subscriberUrl", - "active" - ] + "required": ["payloadTemplate", "userId", "id", "triggers", "subscriberUrl", "active"] }, "UserWebhookOutputResponseDto": { "type": "object", @@ -28488,19 +25994,13 @@ "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", @@ -28508,10 +26008,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -28520,10 +26017,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "EventTypeWebhookOutputDto": { "type": "object", @@ -28555,14 +26049,7 @@ "type": "string" } }, - "required": [ - "payloadTemplate", - "eventTypeId", - "id", - "triggers", - "subscriberUrl", - "active" - ] + "required": ["payloadTemplate", "eventTypeId", "id", "triggers", "subscriberUrl", "active"] }, "EventTypeWebhookOutputResponseDto": { "type": "object", @@ -28570,19 +26057,13 @@ "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", @@ -28590,10 +26071,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -28602,10 +26080,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "DeleteManyWebhooksOutputResponseDto": { "type": "object", @@ -28613,19 +26088,13 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "string" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "OAuthClientWebhookOutputDto": { "type": "object", @@ -28657,14 +26126,7 @@ "type": "string" } }, - "required": [ - "payloadTemplate", - "oAuthClientId", - "id", - "triggers", - "subscriberUrl", - "active" - ] + "required": ["payloadTemplate", "oAuthClientId", "id", "triggers", "subscriberUrl", "active"] }, "OAuthClientWebhookOutputResponseDto": { "type": "object", @@ -28672,19 +26134,13 @@ "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", @@ -28692,10 +26148,7 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "type": "array", @@ -28704,10 +26157,7 @@ } } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "DestinationCalendarsInputBodyDto": { "type": "object", @@ -28716,11 +26166,7 @@ "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", @@ -28731,10 +26177,7 @@ "type": "string" } }, - "required": [ - "integration", - "externalId" - ] + "required": ["integration", "externalId"] }, "DestinationCalendarsOutputDto": { "type": "object", @@ -28753,12 +26196,7 @@ "nullable": true } }, - "required": [ - "userId", - "integration", - "externalId", - "credentialId" - ] + "required": ["userId", "integration", "externalId", "credentialId"] }, "DestinationCalendarsOutputResponseDto": { "type": "object", @@ -28766,29 +26204,18 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] }, "data": { "$ref": "#/components/schemas/DestinationCalendarsOutputDto" } }, - "required": [ - "status", - "data" - ] + "required": ["status", "data"] }, "CalendarEventResponseStatus": { "type": "string", - "description": "Host's response to the invitation", - "enum": [ - "accepted", - "pending", - "declined", - "needsAction" - ] + "description": "Response status of the attendee", + "enum": ["accepted", "pending", "declined", "needsAction"] }, "CalendarEventAttendee": { "type": "object", @@ -28815,21 +26242,19 @@ "type": "boolean", "nullable": true, "description": "Indicates if this attendee's attendance is optional" + }, + "host": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the host" } }, - "required": [ - "email" - ] + "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", @@ -28849,18 +26274,27 @@ "$ref": "#/components/schemas/CalendarEventResponseStatus" } }, - "required": [ - "email" - ] + "required": ["email"] + }, + "calendarEventOwner": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address of the event host" + }, + "name": { + "type": "string", + "nullable": true, + "description": "Display name of the event host" + } + }, + "required": ["email"] }, "CalendarSource": { "type": "string", "description": "Calendar integration source (e.g., Google Calendar, Office 365, Apple Calendar). Currently only Google Calendar is supported.", - "enum": [ - "google", - "office365", - "apple" - ] + "enum": ["google", "office365", "apple"] }, "UnifiedCalendarEventOutput": { "type": "object", @@ -28949,18 +26383,21 @@ "$ref": "#/components/schemas/CalendarEventHost" } }, + "calendarEventOwner": { + "nullable": true, + "description": "The calendar account that owns this event. This is the primary calendar where the event is stored and cannot be modified without appropriate permissions. Changing this would require moving the event to a different calendar", + "allOf": [ + { + "$ref": "#/components/schemas/calendarEventOwner" + } + ] + }, "source": { "example": "google", "$ref": "#/components/schemas/CalendarSource" } }, - "required": [ - "start", - "end", - "id", - "title", - "source" - ] + "required": ["start", "end", "id", "title", "source"] }, "GetUnifiedCalendarEventOutput": { "type": "object", @@ -28968,19 +26405,98 @@ "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", + "properties": { + "email": { + "type": "string", + "description": "Email address of the attendee" + }, + "name": { + "type": "string", + "description": "Display name of the attendee" + }, + "responseStatus": { + "nullable": true, + "$ref": "#/components/schemas/CalendarEventResponseStatus" + }, + "self": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the current user" + }, + "optional": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee's attendance is optional" + }, + "host": { + "type": "boolean", + "nullable": true, + "description": "Indicates if this attendee is the host" + } + } + }, + "UpdateUnifiedCalendarEventInput": { + "type": "object", + "properties": { + "start": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time" + }, + "timeZone": { + "type": "string" + } + }, + "description": "Start date and time of the calendar event with timezone information" + }, + "end": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time" + }, + "timeZone": { + "type": "string" + } + }, + "description": "End date and time of the calendar event with timezone information" + }, + "title": { + "type": "string", + "description": "Title of the calendar event" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Detailed description of the calendar event" + }, + "attendees": { + "nullable": true, + "description": "List of attendees. CAUTION: You must pass the entire array with all updated values. Any attendees not included in this array will be removed from the event.", + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateCalendarEventAttendee" + } + }, + "status": { + "nullable": true, + "example": "accepted", + "$ref": "#/components/schemas/CalendarEventStatus" + } + } }, "RequestEmailVerificationInput": { "type": "object", @@ -28991,9 +26507,7 @@ "example": "acme@example.com" } }, - "required": [ - "email" - ] + "required": ["email"] }, "RequestEmailVerificationOutput": { "type": "object", @@ -29001,15 +26515,10 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] } }, - "required": [ - "status" - ] + "required": ["status"] }, "RequestPhoneVerificationInput": { "type": "object", @@ -29020,9 +26529,7 @@ "example": "+372 5555 6666" } }, - "required": [ - "phone" - ] + "required": ["phone"] }, "RequestPhoneVerificationOutput": { "type": "object", @@ -29030,15 +26537,10 @@ "status": { "type": "string", "example": "success", - "enum": [ - "success", - "error" - ] + "enum": ["success", "error"] } }, - "required": [ - "status" - ] + "required": ["status"] }, "VerifyEmailInput": { "type": "object", @@ -29054,10 +26556,7 @@ "example": "1ABG2C" } }, - "required": [ - "email", - "code" - ] + "required": ["email", "code"] }, "WorkingHours": { "type": "object", @@ -29079,11 +26578,7 @@ "nullable": true } }, - "required": [ - "days", - "startTime", - "endTime" - ] + "required": ["days", "startTime", "endTime"] }, "AvailabilityModel": { "type": "object", @@ -29123,12 +26618,7 @@ "nullable": true } }, - "required": [ - "id", - "days", - "startTime", - "endTime" - ] + "required": ["id", "days", "startTime", "endTime"] }, "ScheduleOutput": { "type": "object", @@ -29198,19 +26688,13 @@ "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", @@ -29226,10 +26710,7 @@ "example": "1ABG2C" } }, - "required": [ - "phone", - "code" - ] + "required": ["phone", "code"] }, "UserVerifiedPhoneOutput": { "type": "object", @@ -29237,19 +26718,13 @@ "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", @@ -29257,19 +26732,13 @@ "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", @@ -29277,19 +26746,13 @@ "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", @@ -29297,19 +26760,13 @@ "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", @@ -29317,19 +26774,13 @@ "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", @@ -29337,19 +26788,13 @@ "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", @@ -29357,20 +26802,14 @@ "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 +} diff --git a/packages/features/bookings/lib/getCalEventResponses.ts b/packages/features/bookings/lib/getCalEventResponses.ts index a87b6fb8de..21a0318e4e 100644 --- a/packages/features/bookings/lib/getCalEventResponses.ts +++ b/packages/features/bookings/lib/getCalEventResponses.ts @@ -5,9 +5,9 @@ import { SystemField } from "@calcom/features/bookings/lib/SystemField"; import type { bookingResponsesDbSchema } from "@calcom/features/bookings/lib/getBookingResponsesSchema"; import { contructEmailFromPhoneNumber } from "@calcom/lib/contructEmailFromPhoneNumber"; import { getBookingWithResponses } from "@calcom/lib/getBooking"; +import { HttpError } from "@calcom/lib/http-error"; import { eventTypeBookingFields } from "@calcom/prisma/zod-utils"; import type { CalendarEvent } from "@calcom/types/Calendar"; -import { HttpError } from "@calcom/lib/http-error"; export const getCalEventResponses = ({ bookingFields, diff --git a/packages/lib/EventManager.ts b/packages/lib/EventManager.ts index 8ef382295d..1faf98f3c8 100644 --- a/packages/lib/EventManager.ts +++ b/packages/lib/EventManager.ts @@ -327,7 +327,9 @@ export default class EventManager { } const isDedicated = evt.location ? isDedicatedIntegration(evt.location) : null; - const isMSTeamsWithOutlookCalendar = evt.location === MSTeamsLocationType && mainHostDestinationCalendar?.integration === "office365_calendar"; + const isMSTeamsWithOutlookCalendar = + evt.location === MSTeamsLocationType && + mainHostDestinationCalendar?.integration === "office365_calendar"; const results: Array>> = []; diff --git a/packages/platform/examples/base/playwright.config.ts b/packages/platform/examples/base/playwright.config.ts index 02dcec57fc..65c28ab65a 100644 --- a/packages/platform/examples/base/playwright.config.ts +++ b/packages/platform/examples/base/playwright.config.ts @@ -1,4 +1,4 @@ -import { defineConfig, devices } from '@playwright/test'; +import { defineConfig, devices } from "@playwright/test"; const DEFAULT_EXPECT_TIMEOUT = process.env.CI ? 30000 : 120000; const DEFAULT_TEST_TIMEOUT = process.env.CI ? 60000 : 240000; @@ -12,35 +12,35 @@ export default defineConfig({ timeout: DEFAULT_TEST_TIMEOUT, fullyParallel: true, reporter: [ - ['list'], - ['html', { outputFolder: './test-results/reports/playwright-html-report', open: 'never' }], + ["list"], + ["html", { outputFolder: "./test-results/reports/playwright-html-report", open: "never" }], ], - outputDir: './test-results/results', + outputDir: "./test-results/results", use: { - baseURL: 'http://localhost:4322', - locale: 'en-US', - trace: 'retain-on-failure', + baseURL: "http://localhost:4322", + locale: "en-US", + trace: "retain-on-failure", headless, }, projects: [ { - name: '@calcom/base', - testDir: './tests', + name: "@calcom/base", + testDir: "./tests", testMatch: /.*\.e2e\.tsx?/, expect: { timeout: DEFAULT_EXPECT_TIMEOUT, }, use: { - ...devices['Desktop Chrome'], - locale: 'en-US', + ...devices["Desktop Chrome"], + locale: "en-US", }, }, ], webServer: { - command: process.env.CI + command: process.env.CI ? `yarn workspace @calcom/atoms dev-on && yarn workspace @calcom/atoms build && rm -f prisma/dev.db && yarn prisma db push && NEXT_PUBLIC_IS_E2E=1 NODE_ENV=test NEXT_PUBLIC_X_CAL_ID="${process.env.ATOMS_E2E_OAUTH_CLIENT_ID}" X_CAL_SECRET_KEY="${process.env.ATOMS_E2E_OAUTH_CLIENT_SECRET}" NEXT_PUBLIC_CALCOM_API_URL="${process.env.ATOMS_E2E_API_URL}" VITE_BOOKER_EMBED_OAUTH_CLIENT_ID="${process.env.ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED}" VITE_BOOKER_EMBED_API_URL="${process.env.ATOMS_E2E_API_URL}" ORGANIZATION_ID=${process.env.ATOMS_E2E_ORG_ID} yarn dev:e2e` : `rm -f prisma/dev.db && yarn prisma db push && yarn dev:e2e`, - url: 'http://localhost:4322', + url: "http://localhost:4322", timeout: 600_000, reuseExistingServer: !process.env.CI, }, diff --git a/packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts b/packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts index 54af2fe69f..05ec70f96f 100644 --- a/packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts +++ b/packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts @@ -1,19 +1,19 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from "@playwright/test"; -test('create event type using CreateEventTypeAtom', async ({ page }) => { - await page.goto('/'); +test("create event type using CreateEventTypeAtom", async ({ page }) => { + await page.goto("/"); - await page.goto('/event-types'); + await page.goto("/event-types"); - await expect(page).toHaveURL('/event-types'); - - await expect(page.locator('body')).toBeVisible(); + await expect(page).toHaveURL("/event-types"); - await page.fill('[data-testid="event-type-quick-chat"]', 'e2e event'); + await expect(page.locator("body")).toBeVisible(); - await page.fill('textarea[placeholder="A quick video meeting."]', 'This is an e2e test event description'); + await page.fill('[data-testid="event-type-quick-chat"]', "e2e event"); - await page.waitForSelector('button[type="submit"]:has-text("Continue")', { state: 'visible' }); + await page.fill('textarea[placeholder="A quick video meeting."]', "This is an e2e test event description"); + + await page.waitForSelector('button[type="submit"]:has-text("Continue")', { state: "visible" }); await page.click('button[type="submit"]:has-text("Continue")'); await expect(page.locator('h1:has-text("E2e Event")')).toBeVisible(); diff --git a/packages/platform/types/event-types/outputs/private-link.output.ts b/packages/platform/types/event-types/outputs/private-link.output.ts index 984add1df5..f1c25aeba9 100644 --- a/packages/platform/types/event-types/outputs/private-link.output.ts +++ b/packages/platform/types/event-types/outputs/private-link.output.ts @@ -128,5 +128,3 @@ export class DeletePrivateLinkOutput { message: string; }; } - -