diff --git a/apps/api/v1/pages/api/bookings/[id]/transcripts/[recordingId]/_get.ts b/apps/api/v1/pages/api/bookings/[id]/transcripts/[recordingId]/_get.ts index 67cac58bdd..068e430b12 100644 --- a/apps/api/v1/pages/api/bookings/[id]/transcripts/[recordingId]/_get.ts +++ b/apps/api/v1/pages/api/bookings/[id]/transcripts/[recordingId]/_get.ts @@ -41,8 +41,6 @@ import { getTranscriptFromRecordingId } from "~/lib/validations/shared/queryIdTr * responses: * 200: * description: OK - * content: - * application/json: * 401: * description: Authorization information is missing or invalid. * 404: diff --git a/apps/api/v1/pages/api/bookings/[id]/transcripts/_get.ts b/apps/api/v1/pages/api/bookings/[id]/transcripts/_get.ts index 2200f06466..36bd3638b6 100644 --- a/apps/api/v1/pages/api/bookings/[id]/transcripts/_get.ts +++ b/apps/api/v1/pages/api/bookings/[id]/transcripts/_get.ts @@ -32,8 +32,6 @@ import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransform * responses: * 200: * description: OK - * content: - * application/json: * 401: * description: Authorization information is missing or invalid. * 404: diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/bookings.controller.ts b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/bookings.controller.ts index d7f84c4a01..6dae1f40c5 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/bookings.controller.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/bookings.controller.ts @@ -66,7 +66,7 @@ export class BookingsController_2024_08_13 { @Post("/") @ApiOperation({ - summary: "Create booking", + summary: "Create a booking", description: ` POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except: If eventTypeId in the request body is id of a regular event, then regular booking is created. @@ -76,7 +76,7 @@ export class BookingsController_2024_08_13 { Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible. For team event types it is possible to create instant meeting. To do that just pass \`"instant": true\` to the request body. - + The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone. `, }) @@ -118,13 +118,13 @@ export class BookingsController_2024_08_13 { @Get("/:bookingUid") @UseGuards(BookingUidGuard) @ApiOperation({ - summary: "Get booking", + summary: "Get a booking", description: `\`:bookingUid\` can be - + 1. uid of a normal booking - + 2. uid of one of the recurring booking recurrences - + 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).`, }) async getBooking(@Param("bookingUid") bookingUid: string): Promise { @@ -145,6 +145,7 @@ export class BookingsController_2024_08_13 { required: true, }) @Permissions([BOOKING_READ]) + @ApiOperation({ summary: "Get all bookings" }) async getBookings( @Query() queryParams: GetBookingsInput_2024_08_13, @GetUser() user: User @@ -160,7 +161,7 @@ export class BookingsController_2024_08_13 { @Post("/:bookingUid/reschedule") @UseGuards(BookingUidGuard) @ApiOperation({ - summary: "Reschedule booking", + summary: "Reschedule a booking", description: "Reschedule a booking by passing `:bookingUid` of the booking that should be rescheduled and pass request body with a new start time to create a new booking.", }) @@ -181,6 +182,7 @@ export class BookingsController_2024_08_13 { @Post("/:bookingUid/cancel") @UseGuards(BookingUidGuard) @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Cancel a booking" }) async cancelBooking( @Req() request: Request, @Param("bookingUid") bookingUid: string, @@ -204,6 +206,7 @@ export class BookingsController_2024_08_13 { "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", required: true, }) + @ApiOperation({ summary: "Mark a booking absence" }) async markNoShow( @Param("bookingUid") bookingUid: string, @Body() body: MarkAbsentBookingInput_2024_08_13, diff --git a/apps/api/v2/src/ee/calendars/controllers/calendars.controller.ts b/apps/api/v2/src/ee/calendars/controllers/calendars.controller.ts index 0401fc54a9..c9a805a63a 100644 --- a/apps/api/v2/src/ee/calendars/controllers/calendars.controller.ts +++ b/apps/api/v2/src/ee/calendars/controllers/calendars.controller.ts @@ -31,7 +31,7 @@ import { Post, Body, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { User } from "@prisma/client"; import { plainToClass } from "class-transformer"; import { Request } from "express"; @@ -63,6 +63,7 @@ export class CalendarsController { @UseGuards(ApiAuthGuard) @Get("/busy-times") + @ApiOperation({ summary: "Get busy times" }) async getBusyTimes( @Query() queryParams: CalendarBusyTimesInput, @GetUser() user: UserWithProfile @@ -91,6 +92,7 @@ export class CalendarsController { @Get("/") @UseGuards(ApiAuthGuard) + @ApiOperation({ summary: "Get all calendars" }) async getCalendars(@GetUser("id") userId: number): Promise { const calendars = await this.calendarsService.getCalendars(userId); @@ -103,6 +105,7 @@ export class CalendarsController { @UseGuards(ApiAuthGuard) @Get("/:calendar/connect") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get connect URL" }) async redirect( @Req() req: Request, @Headers("Authorization") authorization: string, @@ -125,6 +128,7 @@ export class CalendarsController { @Get("/:calendar/save") @HttpCode(HttpStatus.OK) @Redirect(undefined, 301) + @ApiOperation({ summary: "Save a calendar" }) async save( @Query("state") state: string, @Query("code") code: string, @@ -154,6 +158,7 @@ export class CalendarsController { @UseGuards(ApiAuthGuard) @Post("/:calendar/credentials") + @ApiOperation({ summary: "Sync credentials" }) async syncCredentials( @GetUser() user: User, @Param("calendar") calendar: string, @@ -176,6 +181,7 @@ export class CalendarsController { @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard, PermissionsGuard) @Permissions([APPS_READ]) + @ApiOperation({ summary: "Check a calendar connection" }) async check(@GetUser("id") userId: number, @Param("calendar") calendar: string): Promise { switch (calendar) { case OFFICE_365_CALENDAR: @@ -195,6 +201,7 @@ export class CalendarsController { @UseGuards(ApiAuthGuard) @Post("/:calendar/disconnect") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Disconnect a calendar" }) async deleteCalendarCredentials( @Param("calendar") calendar: string, @Body() body: DeleteCalendarCredentialsInputBodyDto, 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 01a366d0af..ed523fca10 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 @@ -27,7 +27,7 @@ import { Query, ParseIntPipe, } from "@nestjs/common"; -import { ApiHeader, ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { EVENT_TYPE_READ, EVENT_TYPE_WRITE, SUCCESS_STATUS } from "@calcom/platform-constants"; import { @@ -41,7 +41,7 @@ import { version: VERSION_2024_06_14_VALUE, }) @UseGuards(PermissionsGuard) -@DocsTags("Event types") +@DocsTags("Event Types") @ApiHeader({ name: "cal-api-version", description: `Must be set to \`2024-06-14\``, @@ -63,6 +63,7 @@ export class EventTypesController_2024_06_14 { "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", required: true, }) + @ApiOperation({ summary: "Create an event type" }) async createEventType( @Body() body: CreateEventTypeInput_2024_06_14, @GetUser() user: UserWithProfile @@ -89,6 +90,7 @@ export class EventTypesController_2024_06_14 { "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", required: true, }) + @ApiOperation({ summary: "Get an event type" }) async getEventTypeById( @Param("eventTypeId") eventTypeId: string, @GetUser() user: UserWithProfile @@ -106,6 +108,7 @@ export class EventTypesController_2024_06_14 { } @Get("/") + @ApiOperation({ summary: "Get all event types" }) async getEventTypes( @Query() queryParams: GetEventTypesQuery_2024_06_14 ): Promise { @@ -127,6 +130,7 @@ export class EventTypesController_2024_06_14 { required: true, }) @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Update an event type" }) async updateEventType( @Param("eventTypeId", ParseIntPipe) eventTypeId: number, @Body() body: UpdateEventTypeInput_2024_06_14, @@ -155,6 +159,7 @@ export class EventTypesController_2024_06_14 { "value must be `Bearer ` where `` either managed user access token or api key prefixed with cal_", required: true, }) + @ApiOperation({ summary: "Delete an event type" }) async deleteEventType( @Param("eventTypeId") eventTypeId: number, @GetUser("id") userId: number diff --git a/apps/api/v2/src/ee/gcal/gcal.controller.ts b/apps/api/v2/src/ee/gcal/gcal.controller.ts index c9614446c0..39398eace4 100644 --- a/apps/api/v2/src/ee/gcal/gcal.controller.ts +++ b/apps/api/v2/src/ee/gcal/gcal.controller.ts @@ -26,7 +26,7 @@ import { Headers, } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { Prisma } from "@prisma/client"; import { Request } from "express"; import { google } from "googleapis"; @@ -44,7 +44,7 @@ const CALENDAR_SCOPES = [ path: "/v2/gcal", version: API_VERSIONS_VALUES, }) -@DocsTags("Google Calendar") +@DocsTags("Platform / Google Calendar") export class GcalController { private readonly logger = new Logger("Platform Gcal Provider"); @@ -62,6 +62,7 @@ export class GcalController { @Get("/oauth/auth-url") @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard) + @ApiOperation({ summary: "Get auth URL" }) async redirect( @Headers("Authorization") authorization: string, @Req() req: Request @@ -81,6 +82,7 @@ export class GcalController { @Get("/oauth/save") @Redirect(undefined, 301) @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Connect a calendar" }) async save(@Query("state") state: string, @Query("code") code: string): Promise { const url = new URL(this.config.get("api.url") + "/calendars/google/save"); url.searchParams.append("code", code); @@ -92,6 +94,7 @@ export class GcalController { @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard, PermissionsGuard) @Permissions([APPS_READ]) + @ApiOperation({ summary: "Check a calendar connection status" }) async check(@GetUser("id") userId: number): Promise { const gcalCredentials = await this.credentialRepository.getByTypeAndUserId("google_calendar", userId); diff --git a/apps/api/v2/src/ee/me/me.controller.ts b/apps/api/v2/src/ee/me/me.controller.ts index 2bcea0378b..682743750d 100644 --- a/apps/api/v2/src/ee/me/me.controller.ts +++ b/apps/api/v2/src/ee/me/me.controller.ts @@ -10,7 +10,7 @@ import { UpdateManagedUserInput } from "@/modules/users/inputs/update-managed-us import { UsersService } from "@/modules/users/services/users.service"; import { UserWithProfile, UsersRepository } from "@/modules/users/users.repository"; import { Controller, UseGuards, Get, Patch, Body } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { PROFILE_READ, PROFILE_WRITE, SUCCESS_STATUS } from "@calcom/platform-constants"; import { userSchemaResponse } from "@calcom/platform-types"; @@ -30,6 +30,7 @@ export class MeController { @Get("/") @Permissions([PROFILE_READ]) + @ApiOperation({ summary: "Get my profile" }) async getMe(@GetUser() user: UserWithProfile): Promise { const organization = this.usersService.getUserMainProfile(user)?.organization; const me = userSchemaResponse.parse( @@ -52,6 +53,7 @@ export class MeController { @Patch("/") @Permissions([PROFILE_WRITE]) + @ApiOperation({ summary: "Update my profile" }) async updateMe( @GetUser() user: UserWithProfile, @Body() bodySchedule: UpdateManagedUserInput diff --git a/apps/api/v2/src/ee/provider/provider.controller.ts b/apps/api/v2/src/ee/provider/provider.controller.ts index 9ba0bfb4a5..25ee201895 100644 --- a/apps/api/v2/src/ee/provider/provider.controller.ts +++ b/apps/api/v2/src/ee/provider/provider.controller.ts @@ -16,7 +16,7 @@ import { UnauthorizedException, UseGuards, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -24,12 +24,13 @@ import { SUCCESS_STATUS } from "@calcom/platform-constants"; path: "/v2/provider", version: API_VERSIONS_VALUES, }) -@DocsTags("Cal provider") +@DocsTags("Platform / Cal Provider") export class CalProviderController { constructor(private readonly oauthClientRepository: OAuthClientRepository) {} @Get("/:clientId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get a provider" }) async verifyClientId(@Param("clientId") clientId: string): Promise { if (!clientId) { throw new NotFoundException(); @@ -51,6 +52,7 @@ export class CalProviderController { @Get("/:clientId/access-token") @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard) + @ApiOperation({ summary: "Verify an access token" }) async verifyAccessToken( @Param("clientId") clientId: string, @GetUser() user: UserWithProfile diff --git a/apps/api/v2/src/ee/schedules/schedules_2024_06_11/controllers/schedules.controller.ts b/apps/api/v2/src/ee/schedules/schedules_2024_06_11/controllers/schedules.controller.ts index 1c11d0fe82..2b22b66d5c 100644 --- a/apps/api/v2/src/ee/schedules/schedules_2024_06_11/controllers/schedules.controller.ts +++ b/apps/api/v2/src/ee/schedules/schedules_2024_06_11/controllers/schedules.controller.ts @@ -89,6 +89,7 @@ export class SchedulesController_2024_06_11 { description: "Returns the default schedule of the authenticated user", type: GetDefaultScheduleOutput_2024_06_11, }) + @ApiOperation({ summary: "Get default schedule (of the authenticated user)" }) async getDefaultSchedule(@GetUser() user: UserWithProfile): Promise { const schedule = await this.schedulesService.getUserScheduleDefault(user.id); @@ -101,6 +102,7 @@ export class SchedulesController_2024_06_11 { @Get("/:scheduleId") @Permissions([SCHEDULE_READ]) @Throttle({ default: { limit: 10, ttl: 60000 } }) // allow 10 requests per minute (for :scheduleId) + @ApiOperation({ summary: "Get a schedule" }) async getSchedule( @GetUser() user: UserWithProfile, @Param("scheduleId") scheduleId: number @@ -115,9 +117,7 @@ export class SchedulesController_2024_06_11 { @Get("/") @Permissions([SCHEDULE_READ]) - @ApiOperation({ - description: "Returns all schedules of the authenticated user", - }) + @ApiOperation({ summary: "Get all schedules (of the authenticated user)" }) async getSchedules(@GetUser() user: UserWithProfile): Promise { const schedules = await this.schedulesService.getUserSchedules(user.id); @@ -129,6 +129,7 @@ export class SchedulesController_2024_06_11 { @Patch("/:scheduleId") @Permissions([SCHEDULE_WRITE]) + @ApiOperation({ summary: "Update a schedule" }) async updateSchedule( @GetUser() user: UserWithProfile, @Body() bodySchedule: UpdateScheduleInput_2024_06_11, @@ -149,6 +150,7 @@ export class SchedulesController_2024_06_11 { @Delete("/:scheduleId") @HttpCode(HttpStatus.OK) @Permissions([SCHEDULE_WRITE]) + @ApiOperation({ summary: "Delete a schedule" }) async deleteSchedule( @GetUser("id") userId: number, @Param("scheduleId") scheduleId: number diff --git a/apps/api/v2/src/main.ts b/apps/api/v2/src/main.ts index a1aace4919..1ec453ca09 100644 --- a/apps/api/v2/src/main.ts +++ b/apps/api/v2/src/main.ts @@ -39,10 +39,8 @@ async function generateSwagger(app: NestExpressApplication) { const logger = new Logger("App"); logger.log(`Generating Swagger documentation...\n`); - const config = new DocumentBuilder().setTitle("Cal.com v2 API").build(); - + const config = new DocumentBuilder().setTitle("Cal.com API v2").build(); const document = SwaggerModule.createDocument(app, config); - const outputFile = "./swagger/documentation.json"; if (fs.existsSync(outputFile)) { diff --git a/apps/api/v2/src/modules/destination-calendars/controllers/destination-calendars.controller.ts b/apps/api/v2/src/modules/destination-calendars/controllers/destination-calendars.controller.ts index 75ada4217b..bac55c9d4c 100644 --- a/apps/api/v2/src/modules/destination-calendars/controllers/destination-calendars.controller.ts +++ b/apps/api/v2/src/modules/destination-calendars/controllers/destination-calendars.controller.ts @@ -9,7 +9,7 @@ import { import { DestinationCalendarsService } from "@/modules/destination-calendars/services/destination-calendars.service"; import { UserWithProfile } from "@/modules/users/users.repository"; import { Body, Controller, Put, UseGuards } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -18,13 +18,13 @@ import { SUCCESS_STATUS } from "@calcom/platform-constants"; path: "/v2/destination-calendars", version: API_VERSIONS_VALUES, }) -@DocsTags("Destination-Calendars") +@DocsTags("Destination Calendars") export class DestinationCalendarsController { constructor(private readonly destinationCalendarsService: DestinationCalendarsService) {} @Put("/") @UseGuards(ApiAuthGuard) - @DocsTags("Select a third party destination calendar where events will be created") + @ApiOperation({ summary: "Update destination calendars" }) async updateDestinationCalendars( @Body() input: DestinationCalendarsInputBodyDto, @GetUser() user: UserWithProfile diff --git a/apps/api/v2/src/modules/event-types/controllers/event-types-webhooks.controller.ts b/apps/api/v2/src/modules/event-types/controllers/event-types-webhooks.controller.ts index 6859e3319e..25ac6b8e0c 100644 --- a/apps/api/v2/src/modules/event-types/controllers/event-types-webhooks.controller.ts +++ b/apps/api/v2/src/modules/event-types/controllers/event-types-webhooks.controller.ts @@ -25,7 +25,7 @@ import { Patch, ParseIntPipe, } from "@nestjs/common"; -import { ApiOperation, ApiTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { Webhook } from "@prisma/client"; import { plainToClass } from "class-transformer"; @@ -37,7 +37,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsUserEventTypeWebhookGuard) -@ApiTags("Users' EventTypes Webhooks") +@DocsTags("Event Types / Webhooks") export class EventTypeWebhooksController { constructor( private readonly webhooksService: WebhooksService, @@ -45,7 +45,7 @@ export class EventTypeWebhooksController { ) {} @Post("/") - @ApiOperation({ summary: "Create a webhook for an event-type" }) + @ApiOperation({ summary: "Create a webhook" }) async createEventTypeWebhook( @Body() body: CreateWebhookInputDto, @Param("eventTypeId", ParseIntPipe) eventTypeId: number @@ -63,7 +63,7 @@ export class EventTypeWebhooksController { } @Patch("/:webhookId") - @ApiOperation({ summary: "Update a webhook of an event-type" }) + @ApiOperation({ summary: "Update a webhook" }) async updateEventTypeWebhook( @Body() body: UpdateWebhookInputDto, @Param("webhookId") webhookId: string @@ -81,7 +81,7 @@ export class EventTypeWebhooksController { } @Get("/:webhookId") - @ApiOperation({ summary: "Get a webhook of an event-type" }) + @ApiOperation({ summary: "Get a webhook" }) async getEventTypeWebhook(@GetWebhook() webhook: Webhook): Promise { return { status: SUCCESS_STATUS, @@ -92,7 +92,7 @@ export class EventTypeWebhooksController { } @Get("/") - @ApiOperation({ summary: "Get all webhooks of an event-type" }) + @ApiOperation({ summary: "Get all webhooks" }) async getEventTypeWebhooks( @Param("eventTypeId", ParseIntPipe) eventTypeId: number, @Query() pagination: SkipTakePagination @@ -113,7 +113,7 @@ export class EventTypeWebhooksController { } @Delete("/:webhookId") - @ApiOperation({ summary: "Delete a webhook of an event-type" }) + @ApiOperation({ summary: "Delete a webhook" }) async deleteEventTypeWebhook(@GetWebhook() webhook: Webhook): Promise { await this.webhooksService.deleteWebhook(webhook.id); return { @@ -125,7 +125,7 @@ export class EventTypeWebhooksController { } @Delete("/") - @ApiOperation({ summary: "Delete all webhooks of an event-type" }) + @ApiOperation({ summary: "Delete all webhooks" }) async deleteAllEventTypeWebhooks( @Param("eventTypeId", ParseIntPipe) eventTypeId: number ): Promise { diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts index 58206f1fc4..6f4b89f5af 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts @@ -28,7 +28,7 @@ import { Query, NotFoundException, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { User } from "@prisma/client"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -39,7 +39,7 @@ import { Pagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, OAuthClientGuard) -@DocsTags("Managed users") +@DocsTags("Platform / Managed Users") export class OAuthClientUsersController { private readonly logger = new Logger("UserController"); @@ -51,6 +51,7 @@ export class OAuthClientUsersController { ) {} @Get("/") + @ApiOperation({ summary: "Get all managed users" }) async getManagedUsers( @Param("clientId") oAuthClientId: string, @Query() queryParams: Pagination @@ -71,6 +72,7 @@ export class OAuthClientUsersController { } @Post("/") + @ApiOperation({ summary: "Create a managed user" }) async createUser( @Param("clientId") oAuthClientId: string, @Body() body: CreateManagedUserInput @@ -101,6 +103,7 @@ export class OAuthClientUsersController { @Get("/:userId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get a managed user" }) async getUserById( @Param("clientId") clientId: string, @Param("userId") userId: number @@ -115,6 +118,7 @@ export class OAuthClientUsersController { @Patch("/:userId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Update a managed user" }) async updateUser( @Param("clientId") clientId: string, @Param("userId") userId: number, @@ -133,6 +137,7 @@ export class OAuthClientUsersController { @Delete("/:userId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Delete a managed user" }) async deleteUser( @Param("clientId") clientId: string, @Param("userId") userId: number @@ -150,6 +155,7 @@ export class OAuthClientUsersController { @Post("/:userId/force-refresh") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Force refresh tokens" }) async forceRefresh( @Param("userId") userId: number, @Param("clientId") oAuthClientId: string diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-webhooks/oauth-client-webhooks.controller.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-webhooks/oauth-client-webhooks.controller.ts index 87ae92d542..55b78e3fbe 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-webhooks/oauth-client-webhooks.controller.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-webhooks/oauth-client-webhooks.controller.ts @@ -16,7 +16,7 @@ import { WebhookOutputPipe } from "@/modules/webhooks/pipes/WebhookOutputPipe"; import { OAuthClientWebhooksService } from "@/modules/webhooks/services/oauth-clients-webhooks.service"; import { WebhooksService } from "@/modules/webhooks/services/webhooks.service"; import { Controller, Post, Body, UseGuards, Get, Param, Query, Delete, Patch } from "@nestjs/common"; -import { ApiOperation, ApiTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { Webhook, MembershipRole } from "@prisma/client"; import { plainToClass } from "class-transformer"; @@ -30,7 +30,7 @@ import { OAuthClientGuard } from "../../guards/oauth-client-guard"; version: API_VERSIONS_VALUES, }) @UseGuards(NextAuthGuard, OrganizationRolesGuard, OAuthClientGuard) -@ApiTags("OAuthClients Webhooks") +@DocsTags("Platform / Webhooks") export class OAuthClientWebhooksController { constructor( private readonly webhooksService: WebhooksService, @@ -39,7 +39,7 @@ export class OAuthClientWebhooksController { @Post("/") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER]) - @ApiOperation({ summary: "Create a webhook for an oAuthClient" }) + @ApiOperation({ summary: "Create a webhook" }) async createOAuthClientWebhook( @Body() body: CreateWebhookInputDto, @Param("clientId") oAuthClientId: string @@ -59,7 +59,7 @@ export class OAuthClientWebhooksController { @Patch("/:webhookId") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER]) - @ApiOperation({ summary: "Update a webhook of an oAuthClient" }) + @ApiOperation({ summary: "Update a webhook" }) @UseGuards(IsOAuthClientWebhookGuard) async updateOAuthClientWebhook( @Body() body: UpdateWebhookInputDto, @@ -79,7 +79,7 @@ export class OAuthClientWebhooksController { @Get("/:webhookId") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER, MembershipRole.MEMBER]) - @ApiOperation({ summary: "Get a webhook of an oAuthClient" }) + @ApiOperation({ summary: "Get a webhook" }) @UseGuards(IsOAuthClientWebhookGuard) async getOAuthClientWebhook(@GetWebhook() webhook: Webhook): Promise { return { @@ -92,7 +92,7 @@ export class OAuthClientWebhooksController { @Get("/") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER, MembershipRole.MEMBER]) - @ApiOperation({ summary: "Get all webhooks of an oAuthClient" }) + @ApiOperation({ summary: "Get all webhooks" }) async getOAuthClientWebhooks( @Param("clientId") oAuthClientId: string, @Query() pagination: SkipTakePagination @@ -114,7 +114,7 @@ export class OAuthClientWebhooksController { @Delete("/:webhookId") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER]) - @ApiOperation({ summary: "Delete a webhook of an oAuthClient" }) + @ApiOperation({ summary: "Delete a webhook" }) @UseGuards(IsOAuthClientWebhookGuard) async deleteOAuthClientWebhook( @GetWebhook() webhook: Webhook @@ -130,7 +130,7 @@ export class OAuthClientWebhooksController { @Delete("/") @MembershipRoles([MembershipRole.ADMIN, MembershipRole.OWNER]) - @ApiOperation({ summary: "Delete all webhooks of an oAuthClient" }) + @ApiOperation({ summary: "Delete all webhooks" }) async deleteAllOAuthClientWebhooks( @Param("clientId") oAuthClientId: string ): Promise { diff --git a/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes-options.controller.ts b/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes-options.controller.ts index 44c0378223..14fce71f99 100644 --- a/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes-options.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes-options.controller.ts @@ -20,6 +20,7 @@ import { GetAllAttributeOptionOutput } from "@/modules/organizations/outputs/att import { UpdateAttributeOptionOutput } from "@/modules/organizations/outputs/attributes/options/update-option.output"; import { OrganizationAttributeOptionService } from "@/modules/organizations/services/attributes/organization-attributes-option.service"; import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UseGuards } from "@nestjs/common"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -28,13 +29,14 @@ import { SUCCESS_STATUS } from "@calcom/platform-constants"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) +@DocsTags("Orgs / Attributes / Options") export class OrganizationsOptionsAttributesController { constructor(private readonly organizationsAttributesOptionsService: OrganizationAttributeOptionService) {} - // Creates an attribute option for an attribute @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Post("/attributes/:attributeId/options") + @ApiOperation({ summary: "Create an attribute option" }) async createOrganizationAttributeOption( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string, @@ -52,10 +54,10 @@ export class OrganizationsOptionsAttributesController { }; } - // Deletes an attribute option for an attribute @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Delete("/attributes/:attributeId/options/:optionId") + @ApiOperation({ summary: "Delete an attribute option" }) async deleteOrganizationAttributeOption( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string, @@ -73,10 +75,10 @@ export class OrganizationsOptionsAttributesController { }; } - // Updates an attribute option for an attribute @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Patch("/attributes/:attributeId/options/:optionId") + @ApiOperation({ summary: "Update an attribute option" }) async updateOrganizationAttributeOption( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string, @@ -96,10 +98,10 @@ export class OrganizationsOptionsAttributesController { }; } - // Gets all attribute options for an attribute @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") @Get("/attributes/:attributeId/options") + @ApiOperation({ summary: "Get all attribute options" }) async getOrganizationAttributeOptions( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string @@ -114,10 +116,10 @@ export class OrganizationsOptionsAttributesController { }; } - // Assign attribute option to user @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Post("/attributes/options/:userId") + @ApiOperation({ summary: "Assign an attribute to a user" }) async assignOrganizationAttributeOptionToUser( @Param("orgId", ParseIntPipe) orgId: number, @Param("userId", ParseIntPipe) userId: number, @@ -135,10 +137,10 @@ export class OrganizationsOptionsAttributesController { }; } - // Unassign attribute option from user @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") @Delete("/attributes/options/:userId/:attributeOptionId") + @ApiOperation({ summary: "Unassign an attribute from a user" }) async unassignOrganizationAttributeOptionFromUser( @Param("orgId", ParseIntPipe) orgId: number, @Param("userId", ParseIntPipe) userId: number, @@ -159,6 +161,7 @@ export class OrganizationsOptionsAttributesController { @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") @Get("/attributes/options/:userId") + @ApiOperation({ summary: "Get all attribute options for a user" }) async getOrganizationAttributeOptionsForUser( @Param("orgId", ParseIntPipe) orgId: number, @Param("userId", ParseIntPipe) userId: number diff --git a/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes.controller.ts b/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes.controller.ts index 0464c6443b..7cb6270f8e 100644 --- a/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/attributes/organizations-attributes.controller.ts @@ -28,6 +28,7 @@ import { Query, UseGuards, } from "@nestjs/common"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; import { SkipTakePagination } from "@calcom/platform-types"; @@ -37,12 +38,14 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) +@DocsTags("Orgs / Attributes") export class OrganizationsAttributesController { constructor(private readonly organizationsAttributesService: OrganizationAttributesService) {} // Gets all attributes for an organization @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") @Get("/attributes") + @ApiOperation({ summary: "Get all attributes" }) async getOrganizationAttributes( @Param("orgId", ParseIntPipe) orgId: number, @Query() queryParams: SkipTakePagination @@ -60,6 +63,7 @@ export class OrganizationsAttributesController { @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") @Get("/attributes/:attributeId") + @ApiOperation({ summary: "Get an attribute" }) async getOrganizationAttribute( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string @@ -75,6 +79,7 @@ export class OrganizationsAttributesController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Post("/attributes") + @ApiOperation({ summary: "Create an attribute" }) async createOrganizationAttribute( @Param("orgId", ParseIntPipe) orgId: number, @Body() bodyAttribute: CreateOrganizationAttributeInput @@ -93,6 +98,7 @@ export class OrganizationsAttributesController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Patch("/attributes/:attributeId") + @ApiOperation({ summary: "Update an attribute" }) async updateOrganizationAttribute( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string, @@ -113,6 +119,7 @@ export class OrganizationsAttributesController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Delete("/attributes/:attributeId") + @ApiOperation({ summary: "Delete an attribute" }) async deleteOrganizationAttribute( @Param("orgId", ParseIntPipe) orgId: number, @Param("attributeId") attributeId: string diff --git a/apps/api/v2/src/modules/organizations/controllers/event-types/organizations-event-types.controller.ts b/apps/api/v2/src/modules/organizations/controllers/event-types/organizations-event-types.controller.ts index 3a328692d4..72e68ea5c5 100644 --- a/apps/api/v2/src/modules/organizations/controllers/event-types/organizations-event-types.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/event-types/organizations-event-types.controller.ts @@ -36,7 +36,7 @@ import { NotFoundException, Query, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { ERROR_STATUS, SUCCESS_STATUS } from "@calcom/platform-constants"; import { handleCreatePhoneCall } from "@calcom/platform-libraries"; @@ -57,7 +57,7 @@ export type EventTypeHandlerResponse = { path: "/v2/organizations/:orgId", version: API_VERSIONS_VALUES, }) -@DocsTags("Organizations Event Types") +@DocsTags("Orgs / Event Types") export class OrganizationsEventTypesController { constructor( private readonly organizationsEventTypesService: OrganizationsEventTypesService, @@ -70,6 +70,7 @@ export class OrganizationsEventTypesController { @PlatformPlan("ESSENTIALS") @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, IsTeamInOrg, PlatformPlanGuard, IsAdminAPIEnabledGuard) @Post("/teams/:teamId/event-types") + @ApiOperation({ summary: "Create an event type" }) async createTeamEventType( @GetUser() user: UserWithProfile, @Param("teamId", ParseIntPipe) teamId: number, @@ -99,6 +100,7 @@ export class OrganizationsEventTypesController { @PlatformPlan("ESSENTIALS") @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, IsTeamInOrg, PlatformPlanGuard, IsAdminAPIEnabledGuard) @Get("/teams/:teamId/event-types/:eventTypeId") + @ApiOperation({ summary: "Get an event type" }) async getTeamEventType( @Param("teamId", ParseIntPipe) teamId: number, @Param("eventTypeId") eventTypeId: number @@ -120,6 +122,7 @@ export class OrganizationsEventTypesController { @Roles("TEAM_ADMIN") @Post("/teams/:teamId/event-types/:eventTypeId/create-phone-call") @UseGuards(ApiAuthGuard, IsOrgGuard, IsTeamInOrg, RolesGuard) + @ApiOperation({ summary: "Create a phone call" }) async createPhoneCall( @Param("eventTypeId") eventTypeId: number, @Param("orgId", ParseIntPipe) orgId: number, @@ -143,6 +146,7 @@ export class OrganizationsEventTypesController { @UseGuards(IsOrgGuard, IsTeamInOrg, IsAdminAPIEnabledGuard) @Get("/teams/:teamId/event-types") + @ApiOperation({ summary: "Get a team event type" }) async getTeamEventTypes( @Param("teamId", ParseIntPipe) teamId: number, @Query() queryParams: GetTeamEventTypesQuery_2024_06_14 @@ -170,6 +174,7 @@ export class OrganizationsEventTypesController { @PlatformPlan("ESSENTIALS") @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) @Get("/teams/event-types") + @ApiOperation({ summary: "Get all team event types" }) async getTeamsEventTypes( @Param("orgId", ParseIntPipe) orgId: number, @Query() queryParams: SkipTakePagination @@ -187,6 +192,7 @@ export class OrganizationsEventTypesController { @PlatformPlan("ESSENTIALS") @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, IsTeamInOrg, PlatformPlanGuard, IsAdminAPIEnabledGuard) @Patch("/teams/:teamId/event-types/:eventTypeId") + @ApiOperation({ summary: "Update a team event type" }) async updateTeamEventType( @Param("teamId", ParseIntPipe) teamId: number, @Param("eventTypeId", ParseIntPipe) eventTypeId: number, @@ -218,6 +224,7 @@ export class OrganizationsEventTypesController { @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, IsTeamInOrg, PlatformPlanGuard, IsAdminAPIEnabledGuard) @Delete("/teams/:teamId/event-types/:eventTypeId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Delete a team event type" }) async deleteTeamEventType( @Param("teamId", ParseIntPipe) teamId: number, @Param("eventTypeId", ParseIntPipe) eventTypeId: number diff --git a/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts b/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts index 65868bc732..058a02a0a9 100644 --- a/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts @@ -30,7 +30,7 @@ import { HttpCode, HttpStatus, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -41,7 +41,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) -@DocsTags("Organizations Memberships") +@DocsTags("Orgs / Memberships") export class OrganizationsMembershipsController { constructor(private organizationsMembershipService: OrganizationsMembershipService) {} @@ -49,6 +49,7 @@ export class OrganizationsMembershipsController { @PlatformPlan("ESSENTIALS") @Get("/") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get all memberships" }) async getAllMemberships( @Param("orgId", ParseIntPipe) orgId: number, @Query() queryParams: SkipTakePagination @@ -71,6 +72,7 @@ export class OrganizationsMembershipsController { @PlatformPlan("ESSENTIALS") @Post("/") @HttpCode(HttpStatus.CREATED) + @ApiOperation({ summary: "Create a membership" }) async createMembership( @Param("orgId", ParseIntPipe) orgId: number, @Body() body: CreateOrgMembershipDto @@ -87,6 +89,7 @@ export class OrganizationsMembershipsController { @UseGuards(IsMembershipInOrg) @Get("/:membershipId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get a membership" }) async getOrgMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("membershipId", ParseIntPipe) membershipId: number @@ -103,6 +106,7 @@ export class OrganizationsMembershipsController { @UseGuards(IsMembershipInOrg) @Delete("/:membershipId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Delete a membership" }) async deleteMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("membershipId", ParseIntPipe) membershipId: number @@ -119,6 +123,7 @@ export class OrganizationsMembershipsController { @PlatformPlan("ESSENTIALS") @Patch("/:membershipId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Update a membership" }) async updateMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("membershipId", ParseIntPipe) membershipId: number, diff --git a/apps/api/v2/src/modules/organizations/controllers/schedules/organizations-schedules.controller.ts b/apps/api/v2/src/modules/organizations/controllers/schedules/organizations-schedules.controller.ts index 54ffcdcad1..e032000849 100644 --- a/apps/api/v2/src/modules/organizations/controllers/schedules/organizations-schedules.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/schedules/organizations-schedules.controller.ts @@ -23,7 +23,7 @@ import { HttpStatus, Query, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; import { @@ -42,7 +42,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) -@DocsTags("Organizations Schedules") +@DocsTags("Orgs / Schedules") export class OrganizationsSchedulesController { constructor( private schedulesService: SchedulesService_2024_06_11, @@ -52,6 +52,7 @@ export class OrganizationsSchedulesController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Get("/schedules") + @ApiOperation({ summary: "Get all schedules" }) async getOrganizationSchedules( @Param("orgId", ParseIntPipe) orgId: number, @Query() queryParams: SkipTakePagination @@ -70,6 +71,8 @@ export class OrganizationsSchedulesController { @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) @Post("/users/:userId/schedules") + @DocsTags("Orgs / Users / Schedules") + @ApiOperation({ summary: "Create a schedule" }) async createUserSchedule( @Param("userId", ParseIntPipe) userId: number, @Body() bodySchedule: CreateScheduleInput_2024_06_11 @@ -86,6 +89,8 @@ export class OrganizationsSchedulesController { @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) @Get("/users/:userId/schedules/:scheduleId") + @DocsTags("Orgs / Users / Schedules") + @ApiOperation({ summary: "Get a schedule" }) async getUserSchedule( @Param("userId", ParseIntPipe) userId: number, @Param("scheduleId") scheduleId: number @@ -102,6 +107,8 @@ export class OrganizationsSchedulesController { @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) @Get("/users/:userId/schedules") + @DocsTags("Orgs / Users / Schedules") + @ApiOperation({ summary: "Get all schedules" }) async getUserSchedules( @Param("userId", ParseIntPipe) userId: number ): Promise { @@ -117,6 +124,8 @@ export class OrganizationsSchedulesController { @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) @Patch("/users/:userId/schedules/:scheduleId") + @DocsTags("Orgs / Users / Schedules") + @ApiOperation({ summary: "Update a schedule" }) async updateUserSchedule( @Param("userId", ParseIntPipe) userId: number, @Param("scheduleId", ParseIntPipe) scheduleId: number, @@ -135,6 +144,8 @@ export class OrganizationsSchedulesController { @UseGuards(IsUserInOrg) @Delete("/users/:userId/schedules/:scheduleId") @HttpCode(HttpStatus.OK) + @DocsTags("Orgs / Users / Schedules") + @ApiOperation({ summary: "Delete a schedule" }) async deleteUserSchedule( @Param("userId", ParseIntPipe) userId: number, @Param("scheduleId", ParseIntPipe) scheduleId: number diff --git a/apps/api/v2/src/modules/organizations/controllers/teams/memberships/organizations-teams-memberships.controller.ts b/apps/api/v2/src/modules/organizations/controllers/teams/memberships/organizations-teams-memberships.controller.ts index 8c6b1d04cb..7b01590bd0 100644 --- a/apps/api/v2/src/modules/organizations/controllers/teams/memberships/organizations-teams-memberships.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/teams/memberships/organizations-teams-memberships.controller.ts @@ -42,7 +42,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, IsTeamInOrg, PlatformPlanGuard, IsAdminAPIEnabledGuard) -@DocsTags("Organizations Teams") +@DocsTags("Orgs / Teams / Memberships") export class OrganizationsTeamsMembershipsController { constructor( private organizationsTeamsMembershipsService: OrganizationsTeamsMembershipsService, @@ -50,7 +50,7 @@ export class OrganizationsTeamsMembershipsController { ) {} @Get("/") - @ApiOperation({ summary: "Get all the memberships of a team of an organization." }) + @ApiOperation({ summary: "Get all memberships" }) @UseGuards() @Roles("TEAM_ADMIN") @PlatformPlan("ESSENTIALS") @@ -76,7 +76,7 @@ export class OrganizationsTeamsMembershipsController { } @Get("/:membershipId") - @ApiOperation({ summary: "Get the membership of an organization's team by ID" }) + @ApiOperation({ summary: "Get a membership" }) @UseGuards() @Roles("TEAM_ADMIN") @PlatformPlan("ESSENTIALS") @@ -101,7 +101,7 @@ export class OrganizationsTeamsMembershipsController { @PlatformPlan("ESSENTIALS") @Delete("/:membershipId") @HttpCode(HttpStatus.OK) - @ApiOperation({ summary: "Delete the membership of an organization's team by ID" }) + @ApiOperation({ summary: "Delete a membership" }) async deleteOrgTeamMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("teamId", ParseIntPipe) teamId: number, @@ -122,7 +122,7 @@ export class OrganizationsTeamsMembershipsController { @PlatformPlan("ESSENTIALS") @Patch("/:membershipId") @HttpCode(HttpStatus.OK) - @ApiOperation({ summary: "Update the membership of an organization's team by ID" }) + @ApiOperation({ summary: "Update a membership" }) async updateOrgTeamMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("teamId", ParseIntPipe) teamId: number, @@ -145,7 +145,7 @@ export class OrganizationsTeamsMembershipsController { @PlatformPlan("ESSENTIALS") @Post("/") @HttpCode(HttpStatus.CREATED) - @ApiOperation({ summary: "Create a membership of an organization's team" }) + @ApiOperation({ summary: "Create a membership" }) async createOrgTeamMembership( @Param("orgId", ParseIntPipe) orgId: number, @Param("teamId", ParseIntPipe) teamId: number, diff --git a/apps/api/v2/src/modules/organizations/controllers/teams/organizations-teams.controller.ts b/apps/api/v2/src/modules/organizations/controllers/teams/organizations-teams.controller.ts index beca0de535..a79482202b 100644 --- a/apps/api/v2/src/modules/organizations/controllers/teams/organizations-teams.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/teams/organizations-teams.controller.ts @@ -45,12 +45,13 @@ import { Team } from "@calcom/prisma/client"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) -@DocsTags("Organizations Teams") +@DocsTags("Orgs / Teams") export class OrganizationsTeamsController { constructor(private organizationsTeamsService: OrganizationsTeamsService) {} @Get() - @ApiOperation({ summary: "Get all the teams of an organization." }) + @DocsTags("Teams") + @ApiOperation({ summary: "Get all teams" }) @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") async getAllTeams( @@ -66,7 +67,7 @@ export class OrganizationsTeamsController { } @Get("/me") - @ApiOperation({ summary: "Get the organization's teams user is a member of" }) + @ApiOperation({ summary: "Get team membership for user" }) @Roles("ORG_MEMBER") @PlatformPlan("ESSENTIALS") async getMyTeams( @@ -97,7 +98,7 @@ export class OrganizationsTeamsController { @Roles("TEAM_ADMIN") @PlatformPlan("ESSENTIALS") @Get("/:teamId") - @ApiOperation({ summary: "Get a team of the organization by ID." }) + @ApiOperation({ summary: "Get a team" }) async getTeam(@GetTeam() team: Team): Promise { return { status: SUCCESS_STATUS, @@ -109,7 +110,7 @@ export class OrganizationsTeamsController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Delete("/:teamId") - @ApiOperation({ summary: "Delete a team of the organization by ID." }) + @ApiOperation({ summary: "Delete a team" }) async deleteTeam( @Param("orgId", ParseIntPipe) orgId: number, @Param("teamId", ParseIntPipe) teamId: number @@ -125,7 +126,7 @@ export class OrganizationsTeamsController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @Patch("/:teamId") - @ApiOperation({ summary: "Update a team of the organization by ID." }) + @ApiOperation({ summary: "Update a team" }) async updateTeam( @Param("orgId", ParseIntPipe) orgId: number, @Param("teamId", ParseIntPipe) teamId: number, @@ -141,7 +142,7 @@ export class OrganizationsTeamsController { @Post() @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") - @ApiOperation({ summary: "Create a team for an organization." }) + @ApiOperation({ summary: "Create a team" }) async createTeam( @Param("orgId", ParseIntPipe) orgId: number, @Body() body: CreateOrgTeamDto, diff --git a/apps/api/v2/src/modules/organizations/controllers/users/organizations-users.controller.ts b/apps/api/v2/src/modules/organizations/controllers/users/organizations-users.controller.ts index 6e726275f2..bf855418d9 100644 --- a/apps/api/v2/src/modules/organizations/controllers/users/organizations-users.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/users/organizations-users.controller.ts @@ -31,7 +31,7 @@ import { Query, } from "@nestjs/common"; import { ClassSerializerInterceptor } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToInstance } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -44,13 +44,14 @@ import { Team } from "@calcom/prisma/client"; @UseInterceptors(ClassSerializerInterceptor) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) @UseGuards(IsOrgGuard) -@DocsTags("Organizations Users") +@DocsTags("Orgs / Users") export class OrganizationsUsersController { constructor(private readonly organizationsUsersService: OrganizationsUsersService) {} @Get() @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") + @ApiOperation({ summary: "Get all users" }) async getOrganizationsUsers( @Param("orgId", ParseIntPipe) orgId: number, @Query() query: GetOrganizationsUsersInput @@ -71,6 +72,7 @@ export class OrganizationsUsersController { @Post() @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") + @ApiOperation({ summary: "Create a user" }) async createOrganizationUser( @Param("orgId", ParseIntPipe) orgId: number, @GetOrg() org: Team, @@ -92,6 +94,7 @@ export class OrganizationsUsersController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) + @ApiOperation({ summary: "Update a user" }) async updateOrganizationUser( @Param("orgId", ParseIntPipe) orgId: number, @Param("userId", ParseIntPipe) userId: number, @@ -109,6 +112,7 @@ export class OrganizationsUsersController { @Roles("ORG_ADMIN") @PlatformPlan("ESSENTIALS") @UseGuards(IsUserInOrg) + @ApiOperation({ summary: "Delete a user" }) async deleteOrganizationUser( @Param("orgId", ParseIntPipe) orgId: number, @Param("userId", ParseIntPipe) userId: number diff --git a/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts index 7f26d7546e..2875379d54 100644 --- a/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts @@ -32,7 +32,7 @@ import { HttpCode, HttpStatus, } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -43,7 +43,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) -@DocsTags("Organizations Webhooks") +@DocsTags("Orgs / Webhooks") export class OrganizationsWebhooksController { constructor( private organizationsWebhooksService: OrganizationsWebhooksService, @@ -54,6 +54,7 @@ export class OrganizationsWebhooksController { @PlatformPlan("ESSENTIALS") @Get("/") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get all webhooks" }) async getAllOrganizationWebhooks( @Param("orgId", ParseIntPipe) orgId: number, @Query() queryParams: SkipTakePagination @@ -78,6 +79,7 @@ export class OrganizationsWebhooksController { @PlatformPlan("ESSENTIALS") @Post("/") @HttpCode(HttpStatus.CREATED) + @ApiOperation({ summary: "Create a webhook" }) async createOrganizationWebhook( @Param("orgId", ParseIntPipe) orgId: number, @Body() body: CreateWebhookInputDto @@ -99,6 +101,7 @@ export class OrganizationsWebhooksController { @UseGuards(IsWebhookInOrg) @Get("/:webhookId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Get a webhook" }) async getOrganizationWebhook(@Param("webhookId") webhookId: string): Promise { const webhook = await this.organizationsWebhooksService.getWebhook(webhookId); return { @@ -114,6 +117,7 @@ export class OrganizationsWebhooksController { @UseGuards(IsWebhookInOrg) @Delete("/:webhookId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Delete a webhook" }) async deleteWebhook(@Param("webhookId") webhookId: string): Promise { const webhook = await this.webhooksService.deleteWebhook(webhookId); return { @@ -129,6 +133,7 @@ export class OrganizationsWebhooksController { @UseGuards(IsWebhookInOrg) @Patch("/:webhookId") @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: "Update a webhook" }) async updateOrgWebhook( @Param("webhookId") webhookId: string, @Body() body: UpdateWebhookInputDto diff --git a/apps/api/v2/src/modules/selected-calendars/controllers/selected-calendars.controller.ts b/apps/api/v2/src/modules/selected-calendars/controllers/selected-calendars.controller.ts index 73561888b4..373cda9bff 100644 --- a/apps/api/v2/src/modules/selected-calendars/controllers/selected-calendars.controller.ts +++ b/apps/api/v2/src/modules/selected-calendars/controllers/selected-calendars.controller.ts @@ -14,7 +14,7 @@ import { import { SelectedCalendarsRepository } from "@/modules/selected-calendars/selected-calendars.repository"; import { UserWithProfile } from "@/modules/users/users.repository"; import { Body, Controller, Post, UseGuards, Delete, Query } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -23,7 +23,7 @@ import { SUCCESS_STATUS } from "@calcom/platform-constants"; path: "/v2/selected-calendars", version: API_VERSIONS_VALUES, }) -@DocsTags("Selected-Calendars") +@DocsTags("Selected Calendars") export class SelectedCalendarsController { constructor( private readonly calendarsRepository: CalendarsRepository, @@ -33,6 +33,7 @@ export class SelectedCalendarsController { @Post("/") @UseGuards(ApiAuthGuard) + @ApiOperation({ summary: "Add a selected calendar" }) async addSelectedCalendar( @Body() input: SelectedCalendarsInputDto, @GetUser() user: UserWithProfile @@ -55,6 +56,7 @@ export class SelectedCalendarsController { @Delete("/") @UseGuards(ApiAuthGuard) + @ApiOperation({ summary: "Delete a selected calendar" }) async removeSelectedCalendar( @Query() queryParams: SelectedCalendarsQueryParamsInputDto, @GetUser() user: UserWithProfile diff --git a/apps/api/v2/src/modules/slots/controllers/slots.controller.ts b/apps/api/v2/src/modules/slots/controllers/slots.controller.ts index 57383e265f..fa0cca5341 100644 --- a/apps/api/v2/src/modules/slots/controllers/slots.controller.ts +++ b/apps/api/v2/src/modules/slots/controllers/slots.controller.ts @@ -1,7 +1,7 @@ import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { SlotsService } from "@/modules/slots/services/slots.service"; import { Query, Body, Controller, Get, Delete, Post, Req, Res } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { Response as ExpressResponse, Request as ExpressRequest } from "express"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; @@ -19,6 +19,7 @@ export class SlotsController { constructor(private readonly slotsService: SlotsService) {} @Post("/reserve") + @ApiOperation({ summary: "Reserve a slot" }) async reserveSlot( @Body() body: ReserveSlotInput, @Res({ passthrough: true }) res: ExpressResponse, @@ -34,6 +35,7 @@ export class SlotsController { } @Delete("/selected-slot") + @ApiOperation({ summary: "Delete a selected slot" }) async deleteSelectedSlot( @Query() params: RemoveSelectedSlotInput, @Req() req: ExpressRequest @@ -48,6 +50,7 @@ export class SlotsController { } @Get("/available") + @ApiOperation({ summary: "Get available slots" }) async getAvailableSlots( @Query() query: GetAvailableSlotsInput, @Req() req: ExpressRequest diff --git a/apps/api/v2/src/modules/timezones/controllers/timezones.controller.ts b/apps/api/v2/src/modules/timezones/controllers/timezones.controller.ts index ba2bd85d80..281c87b15f 100644 --- a/apps/api/v2/src/modules/timezones/controllers/timezones.controller.ts +++ b/apps/api/v2/src/modules/timezones/controllers/timezones.controller.ts @@ -1,7 +1,7 @@ import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { TimezonesService } from "@/modules/timezones/services/timezones.service"; import { Controller, Get } from "@nestjs/common"; -import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; import type { CityTimezones } from "@calcom/platform-libraries"; @@ -16,6 +16,7 @@ export class TimezonesController { constructor(private readonly timezonesService: TimezonesService) {} @Get("/") + @ApiOperation({ summary: "Get all timezones" }) async getTimeZones(): Promise> { const timeZones = await this.timezonesService.getCityTimeZones(); diff --git a/apps/api/v2/src/modules/webhooks/controllers/webhooks.controller.ts b/apps/api/v2/src/modules/webhooks/controllers/webhooks.controller.ts index 0239e40ca2..01daf79673 100644 --- a/apps/api/v2/src/modules/webhooks/controllers/webhooks.controller.ts +++ b/apps/api/v2/src/modules/webhooks/controllers/webhooks.controller.ts @@ -15,7 +15,7 @@ import { WebhookOutputPipe } from "@/modules/webhooks/pipes/WebhookOutputPipe"; import { UserWebhooksService } from "@/modules/webhooks/services/user-webhooks.service"; import { WebhooksService } from "@/modules/webhooks/services/webhooks.service"; import { Controller, Post, Body, UseGuards, Get, Param, Query, Delete, Patch } from "@nestjs/common"; -import { ApiOperation, ApiTags } from "@nestjs/swagger"; +import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { Webhook } from "@prisma/client"; import { plainToClass } from "class-transformer"; @@ -27,7 +27,7 @@ import { SkipTakePagination } from "@calcom/platform-types"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard) -@ApiTags("Users' Webhooks") +@DocsTags("Webhooks") export class WebhooksController { constructor( private readonly webhooksService: WebhooksService, @@ -82,7 +82,7 @@ export class WebhooksController { } @Get("/") - @ApiOperation({ summary: "Get all user webhooks paginated" }) + @ApiOperation({ summary: "Get all webooks (paginated)" }) async getWebhooks( @GetUser() user: UserWithProfile, @Query() query: SkipTakePagination diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index 03ea86a45a..86d6c79fce 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -25,6 +25,7 @@ "/v2/oauth-clients/{clientId}/users": { "get": { "operationId": "OAuthClientUsersController_getManagedUsers", + "summary": "Get all managed users", "parameters": [ { "name": "clientId", @@ -58,11 +59,12 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] }, "post": { "operationId": "OAuthClientUsersController_createUser", + "summary": "Create a managed user", "parameters": [ { "name": "clientId", @@ -96,13 +98,14 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] } }, "/v2/oauth-clients/{clientId}/users/{userId}": { "get": { "operationId": "OAuthClientUsersController_getUserById", + "summary": "Get a managed user", "parameters": [ { "name": "clientId", @@ -134,11 +137,12 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] }, "patch": { "operationId": "OAuthClientUsersController_updateUser", + "summary": "Update a managed user", "parameters": [ { "name": "clientId", @@ -180,11 +184,12 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] }, "delete": { "operationId": "OAuthClientUsersController_deleteUser", + "summary": "Delete a managed user", "parameters": [ { "name": "clientId", @@ -216,13 +221,14 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] } }, "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { "post": { "operationId": "OAuthClientUsersController_forceRefresh", + "summary": "Force refresh tokens", "parameters": [ { "name": "userId", @@ -254,7 +260,7 @@ } }, "tags": [ - "Managed users" + "Platform / Managed Users" ] } }, @@ -598,6 +604,7 @@ "/v2/event-types": { "post": { "operationId": "EventTypesController_2024_06_14_createEventType", + "summary": "Create an event type", "parameters": [ { "name": "cal-api-version", @@ -641,11 +648,12 @@ } }, "tags": [ - "Event types" + "Event Types" ] }, "get": { "operationId": "EventTypesController_2024_06_14_getEventTypes", + "summary": "Get all event types", "parameters": [ { "name": "cal-api-version", @@ -697,13 +705,14 @@ } }, "tags": [ - "Event types" + "Event Types" ] } }, "/v2/event-types/{eventTypeId}": { "get": { "operationId": "EventTypesController_2024_06_14_getEventTypeById", + "summary": "Get an event type", "parameters": [ { "name": "cal-api-version", @@ -745,11 +754,12 @@ } }, "tags": [ - "Event types" + "Event Types" ] }, "patch": { "operationId": "EventTypesController_2024_06_14_updateEventType", + "summary": "Update an event type", "parameters": [ { "name": "cal-api-version", @@ -801,11 +811,12 @@ } }, "tags": [ - "Event types" + "Event Types" ] }, "delete": { "operationId": "EventTypesController_2024_06_14_deleteEventType", + "summary": "Delete an event type", "parameters": [ { "name": "cal-api-version", @@ -847,13 +858,14 @@ } }, "tags": [ - "Event types" + "Event Types" ] } }, "/v2/selected-calendars": { "post": { "operationId": "SelectedCalendarsController_addSelectedCalendar", + "summary": "Add a selected calendar", "parameters": [], "requestBody": { "required": true, @@ -878,11 +890,12 @@ } }, "tags": [ - "Selected-Calendars" + "Selected Calendars" ] }, "delete": { "operationId": "SelectedCalendarsController_removeSelectedCalendar", + "summary": "Delete a selected calendar", "parameters": [ { "name": "integration", @@ -922,14 +935,14 @@ } }, "tags": [ - "Selected-Calendars" + "Selected Calendars" ] } }, "/v2/organizations/{orgId}/teams": { "get": { "operationId": "OrganizationsTeamsController_getAllTeams", - "summary": "Get all the teams of an organization.", + "summary": "Get all teams", "parameters": [ { "name": "orgId", @@ -973,12 +986,13 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams", + "Teams" ] }, "post": { "operationId": "OrganizationsTeamsController_createTeam", - "summary": "Create a team for an organization.", + "summary": "Create a team", "parameters": [ { "name": "orgId", @@ -1020,14 +1034,14 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams" ] } }, "/v2/organizations/{orgId}/teams/me": { "get": { "operationId": "OrganizationsTeamsController_getMyTeams", - "summary": "Get the organization's teams user is a member of", + "summary": "Get team membership for user", "parameters": [ { "name": "orgId", @@ -1071,14 +1085,14 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams" ] } }, "/v2/organizations/{orgId}/teams/{teamId}": { "get": { "operationId": "OrganizationsTeamsController_getTeam", - "summary": "Get a team of the organization by ID.", + "summary": "Get a team", "parameters": [], "responses": { "200": { @@ -1093,12 +1107,12 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams" ] }, "delete": { "operationId": "OrganizationsTeamsController_deleteTeam", - "summary": "Delete a team of the organization by ID.", + "summary": "Delete a team", "parameters": [ { "name": "orgId", @@ -1130,12 +1144,12 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams" ] }, "patch": { "operationId": "OrganizationsTeamsController_updateTeam", - "summary": "Update a team of the organization by ID.", + "summary": "Update a team", "parameters": [ { "name": "orgId", @@ -1177,13 +1191,14 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams" ] } }, "/v2/organizations/{orgId}/schedules": { "get": { "operationId": "OrganizationsSchedulesController_getOrganizationSchedules", + "summary": "Get all schedules", "parameters": [ { "name": "orgId", @@ -1227,13 +1242,14 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules" ] } }, "/v2/organizations/{orgId}/users/{userId}/schedules": { "post": { "operationId": "OrganizationsSchedulesController_createUserSchedule", + "summary": "Create a schedule", "parameters": [ { "name": "userId", @@ -1267,11 +1283,13 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules", + "Orgs / Users / Schedules" ] }, "get": { "operationId": "OrganizationsSchedulesController_getUserSchedules", + "summary": "Get all schedules", "parameters": [ { "name": "userId", @@ -1295,13 +1313,15 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules", + "Orgs / Users / Schedules" ] } }, "/v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId}": { "get": { "operationId": "OrganizationsSchedulesController_getUserSchedule", + "summary": "Get a schedule", "parameters": [ { "name": "userId", @@ -1333,11 +1353,13 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules", + "Orgs / Users / Schedules" ] }, "patch": { "operationId": "OrganizationsSchedulesController_updateUserSchedule", + "summary": "Update a schedule", "parameters": [ { "name": "userId", @@ -1379,11 +1401,13 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules", + "Orgs / Users / Schedules" ] }, "delete": { "operationId": "OrganizationsSchedulesController_deleteUserSchedule", + "summary": "Delete a schedule", "parameters": [ { "name": "userId", @@ -1415,13 +1439,15 @@ } }, "tags": [ - "Organizations Schedules" + "Orgs / Schedules", + "Orgs / Users / Schedules" ] } }, "/v2/organizations/{orgId}/users": { "get": { "operationId": "OrganizationsUsersController_getOrganizationsUsers", + "summary": "Get all users", "parameters": [ { "name": "orgId", @@ -1477,11 +1503,12 @@ } }, "tags": [ - "Organizations Users" + "Orgs / Users" ] }, "post": { "operationId": "OrganizationsUsersController_createOrganizationUser", + "summary": "Create a user", "parameters": [ { "name": "orgId", @@ -1515,13 +1542,14 @@ } }, "tags": [ - "Organizations Users" + "Orgs / Users" ] } }, "/v2/organizations/{orgId}/users/{userId}": { "patch": { "operationId": "OrganizationsUsersController_updateOrganizationUser", + "summary": "Update a user", "parameters": [ { "name": "orgId", @@ -1563,11 +1591,12 @@ } }, "tags": [ - "Organizations Users" + "Orgs / Users" ] }, "delete": { "operationId": "OrganizationsUsersController_deleteOrganizationUser", + "summary": "Delete a user", "parameters": [ { "name": "orgId", @@ -1599,13 +1628,14 @@ } }, "tags": [ - "Organizations Users" + "Orgs / Users" ] } }, "/v2/organizations/{orgId}/memberships": { "get": { "operationId": "OrganizationsMembershipsController_getAllMemberships", + "summary": "Get all memberships", "parameters": [ { "name": "orgId", @@ -1649,11 +1679,12 @@ } }, "tags": [ - "Organizations Memberships" + "Orgs / Memberships" ] }, "post": { "operationId": "OrganizationsMembershipsController_createMembership", + "summary": "Create a membership", "parameters": [ { "name": "orgId", @@ -1687,13 +1718,14 @@ } }, "tags": [ - "Organizations Memberships" + "Orgs / Memberships" ] } }, "/v2/organizations/{orgId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsMembershipsController_getOrgMembership", + "summary": "Get a membership", "parameters": [ { "name": "orgId", @@ -1725,11 +1757,12 @@ } }, "tags": [ - "Organizations Memberships" + "Orgs / Memberships" ] }, "delete": { "operationId": "OrganizationsMembershipsController_deleteMembership", + "summary": "Delete a membership", "parameters": [ { "name": "orgId", @@ -1761,11 +1794,12 @@ } }, "tags": [ - "Organizations Memberships" + "Orgs / Memberships" ] }, "patch": { "operationId": "OrganizationsMembershipsController_updateMembership", + "summary": "Update a membership", "parameters": [ { "name": "orgId", @@ -1807,13 +1841,14 @@ } }, "tags": [ - "Organizations Memberships" + "Orgs / Memberships" ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types": { "post": { "operationId": "OrganizationsEventTypesController_createTeamEventType", + "summary": "Create an event type", "parameters": [ { "name": "teamId", @@ -1855,11 +1890,12 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] }, "get": { "operationId": "OrganizationsEventTypesController_getTeamEventTypes", + "summary": "Get a team event type", "parameters": [ { "name": "teamId", @@ -1892,13 +1928,14 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}": { "get": { "operationId": "OrganizationsEventTypesController_getTeamEventType", + "summary": "Get an event type", "parameters": [ { "name": "teamId", @@ -1930,11 +1967,12 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] }, "patch": { "operationId": "OrganizationsEventTypesController_updateTeamEventType", + "summary": "Update a team event type", "parameters": [ { "name": "teamId", @@ -1976,11 +2014,12 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] }, "delete": { "operationId": "OrganizationsEventTypesController_deleteTeamEventType", + "summary": "Delete a team event type", "parameters": [ { "name": "teamId", @@ -2012,13 +2051,14 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] } }, "/v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call": { "post": { "operationId": "OrganizationsEventTypesController_createPhoneCall", + "summary": "Create a phone call", "parameters": [ { "name": "eventTypeId", @@ -2060,13 +2100,14 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] } }, "/v2/organizations/{orgId}/teams/event-types": { "get": { "operationId": "OrganizationsEventTypesController_getTeamsEventTypes", + "summary": "Get all team event types", "parameters": [ { "name": "orgId", @@ -2110,14 +2151,14 @@ } }, "tags": [ - "Organizations Event Types" + "Orgs / Event Types" ] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getAllOrgTeamMemberships", - "summary": "Get all the memberships of a team of an organization.", + "summary": "Get all memberships", "parameters": [ { "name": "orgId", @@ -2169,12 +2210,12 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams / Memberships" ] }, "post": { "operationId": "OrganizationsTeamsMembershipsController_createOrgTeamMembership", - "summary": "Create a membership of an organization's team", + "summary": "Create a membership", "parameters": [ { "name": "orgId", @@ -2216,14 +2257,14 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams / Memberships" ] } }, "/v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId}": { "get": { "operationId": "OrganizationsTeamsMembershipsController_getOrgTeamMembership", - "summary": "Get the membership of an organization's team by ID", + "summary": "Get a membership", "parameters": [ { "name": "orgId", @@ -2263,12 +2304,12 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams / Memberships" ] }, "delete": { "operationId": "OrganizationsTeamsMembershipsController_deleteOrgTeamMembership", - "summary": "Delete the membership of an organization's team by ID", + "summary": "Delete a membership", "parameters": [ { "name": "orgId", @@ -2308,12 +2349,12 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams / Memberships" ] }, "patch": { "operationId": "OrganizationsTeamsMembershipsController_updateOrgTeamMembership", - "summary": "Update the membership of an organization's team by ID", + "summary": "Update a membership", "parameters": [ { "name": "orgId", @@ -2363,13 +2404,14 @@ } }, "tags": [ - "Organizations Teams" + "Orgs / Teams / Memberships" ] } }, "/v2/organizations/{orgId}/attributes": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttributes", + "summary": "Get all attributes", "parameters": [ { "name": "orgId", @@ -2411,10 +2453,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes" + ] }, "post": { "operationId": "OrganizationsAttributesController_createOrganizationAttribute", + "summary": "Create an attribute", "parameters": [ { "name": "orgId", @@ -2446,12 +2492,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttribute", + "summary": "Get an attribute", "parameters": [ { "name": "orgId", @@ -2481,10 +2531,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes" + ] }, "patch": { "operationId": "OrganizationsAttributesController_updateOrganizationAttribute", + "summary": "Update an attribute", "parameters": [ { "name": "orgId", @@ -2524,10 +2578,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes" + ] }, "delete": { "operationId": "OrganizationsAttributesController_deleteOrganizationAttribute", + "summary": "Delete an attribute", "parameters": [ { "name": "orgId", @@ -2557,12 +2615,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options": { "post": { "operationId": "OrganizationsOptionsAttributesController_createOrganizationAttributeOption", + "summary": "Create an attribute option", "parameters": [ { "name": "orgId", @@ -2602,10 +2664,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] }, "get": { "operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptions", + "summary": "Get all attribute options", "parameters": [ { "name": "orgId", @@ -2635,12 +2701,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId}": { "delete": { "operationId": "OrganizationsOptionsAttributesController_deleteOrganizationAttributeOption", + "summary": "Delete an attribute option", "parameters": [ { "name": "orgId", @@ -2678,10 +2748,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] }, "patch": { "operationId": "OrganizationsOptionsAttributesController_updateOrganizationAttributeOption", + "summary": "Update an attribute option", "parameters": [ { "name": "orgId", @@ -2729,12 +2803,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/options/{userId}": { "post": { "operationId": "OrganizationsOptionsAttributesController_assignOrganizationAttributeOptionToUser", + "summary": "Assign an attribute to a user", "parameters": [ { "name": "orgId", @@ -2774,10 +2852,14 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] }, "get": { "operationId": "OrganizationsOptionsAttributesController_getOrganizationAttributeOptionsForUser", + "summary": "Get all attribute options for a user", "parameters": [ { "name": "orgId", @@ -2807,12 +2889,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId}": { "delete": { "operationId": "OrganizationsOptionsAttributesController_unassignOrganizationAttributeOptionFromUser", + "summary": "Unassign an attribute from a user", "parameters": [ { "name": "orgId", @@ -2850,12 +2936,16 @@ } } } - } + }, + "tags": [ + "Orgs / Attributes / Options" + ] } }, "/v2/organizations/{orgId}/webhooks": { "get": { "operationId": "OrganizationsWebhooksController_getAllOrganizationWebhooks", + "summary": "Get all webhooks", "parameters": [ { "name": "orgId", @@ -2899,11 +2989,12 @@ } }, "tags": [ - "Organizations Webhooks" + "Orgs / Webhooks" ] }, "post": { "operationId": "OrganizationsWebhooksController_createOrganizationWebhook", + "summary": "Create a webhook", "parameters": [ { "name": "orgId", @@ -2937,13 +3028,14 @@ } }, "tags": [ - "Organizations Webhooks" + "Orgs / Webhooks" ] } }, "/v2/organizations/{orgId}/webhooks/{webhookId}": { "get": { "operationId": "OrganizationsWebhooksController_getOrganizationWebhook", + "summary": "Get a webhook", "parameters": [ { "name": "webhookId", @@ -2967,11 +3059,12 @@ } }, "tags": [ - "Organizations Webhooks" + "Orgs / Webhooks" ] }, "delete": { "operationId": "OrganizationsWebhooksController_deleteWebhook", + "summary": "Delete a webhook", "parameters": [ { "name": "webhookId", @@ -2995,11 +3088,12 @@ } }, "tags": [ - "Organizations Webhooks" + "Orgs / Webhooks" ] }, "patch": { "operationId": "OrganizationsWebhooksController_updateOrgWebhook", + "summary": "Update a webhook", "parameters": [ { "name": "webhookId", @@ -3033,7 +3127,7 @@ } }, "tags": [ - "Organizations Webhooks" + "Orgs / Webhooks" ] } }, @@ -3090,8 +3184,7 @@ }, "get": { "operationId": "SchedulesController_2024_06_11_getSchedules", - "summary": "", - "description": "Returns all schedules of the authenticated user", + "summary": "Get all schedules (of the authenticated user)", "parameters": [ { "name": "Authorization", @@ -3132,6 +3225,7 @@ "/v2/schedules/default": { "get": { "operationId": "SchedulesController_2024_06_11_getDefaultSchedule", + "summary": "Get default schedule (of the authenticated user)", "parameters": [ { "name": "Authorization", @@ -3172,6 +3266,7 @@ "/v2/schedules/{scheduleId}": { "get": { "operationId": "SchedulesController_2024_06_11_getSchedule", + "summary": "Get a schedule", "parameters": [ { "name": "Authorization", @@ -3218,6 +3313,7 @@ }, "patch": { "operationId": "SchedulesController_2024_06_11_updateSchedule", + "summary": "Update a schedule", "parameters": [ { "name": "Authorization", @@ -3274,6 +3370,7 @@ }, "delete": { "operationId": "SchedulesController_2024_06_11_deleteSchedule", + "summary": "Delete a schedule", "parameters": [ { "name": "Authorization", @@ -3322,6 +3419,7 @@ "/v2/gcal/oauth/auth-url": { "get": { "operationId": "GcalController_redirect", + "summary": "Get auth URL", "parameters": [ { "name": "Authorization", @@ -3345,13 +3443,14 @@ } }, "tags": [ - "Google Calendar" + "Platform / Google Calendar" ] } }, "/v2/gcal/oauth/save": { "get": { "operationId": "GcalController_save", + "summary": "Connect a calendar", "parameters": [ { "name": "state", @@ -3383,13 +3482,14 @@ } }, "tags": [ - "Google Calendar" + "Platform / Google Calendar" ] } }, "/v2/gcal/check": { "get": { "operationId": "GcalController_check", + "summary": "Check a calendar connection status", "parameters": [], "responses": { "200": { @@ -3404,13 +3504,14 @@ } }, "tags": [ - "Google Calendar" + "Platform / Google Calendar" ] } }, "/v2/provider/{clientId}": { "get": { "operationId": "CalProviderController_verifyClientId", + "summary": "Get a provider", "parameters": [ { "name": "clientId", @@ -3434,13 +3535,14 @@ } }, "tags": [ - "Cal provider" + "Platform / Cal Provider" ] } }, "/v2/provider/{clientId}/access-token": { "get": { "operationId": "CalProviderController_verifyAccessToken", + "summary": "Verify an access token", "parameters": [ { "name": "clientId", @@ -3464,13 +3566,14 @@ } }, "tags": [ - "Cal provider" + "Platform / Cal Provider" ] } }, "/v2/me": { "get": { "operationId": "MeController_getMe", + "summary": "Get my profile", "parameters": [], "responses": { "200": { @@ -3490,6 +3593,7 @@ }, "patch": { "operationId": "MeController_updateMe", + "summary": "Update my profile", "parameters": [], "requestBody": { "required": true, @@ -3521,6 +3625,7 @@ "/v2/calendars/busy-times": { "get": { "operationId": "CalendarsController_getBusyTimes", + "summary": "Get busy times", "parameters": [ { "name": "loggedInUsersTz", @@ -3566,6 +3671,7 @@ "/v2/calendars": { "get": { "operationId": "CalendarsController_getCalendars", + "summary": "Get all calendars", "parameters": [], "responses": { "200": { @@ -3587,6 +3693,7 @@ "/v2/calendars/{calendar}/connect": { "get": { "operationId": "CalendarsController_redirect", + "summary": "Get connect URL", "parameters": [ { "name": "Authorization", @@ -3625,6 +3732,7 @@ "/v2/calendars/{calendar}/save": { "get": { "operationId": "CalendarsController_save", + "summary": "Save a calendar", "parameters": [ { "name": "state", @@ -3664,6 +3772,7 @@ "/v2/calendars/{calendar}/credentials": { "post": { "operationId": "CalendarsController_syncCredentials", + "summary": "Sync credentials", "parameters": [ { "name": "calendar", @@ -3687,6 +3796,7 @@ "/v2/calendars/{calendar}/check": { "get": { "operationId": "CalendarsController_check", + "summary": "Check a calendar connection", "parameters": [ { "name": "calendar", @@ -3717,6 +3827,7 @@ "/v2/calendars/{calendar}/disconnect": { "post": { "operationId": "CalendarsController_deleteCalendarCredentials", + "summary": "Disconnect a calendar", "parameters": [ { "name": "calendar", @@ -3757,8 +3868,8 @@ "/v2/bookings": { "post": { "operationId": "BookingsController_2024_08_13_createBooking", - "summary": "Create booking", - "description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n \n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n ", + "summary": "Create a booking", + "description": "\n POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except:\n If eventTypeId in the request body is id of a regular event, then regular booking is created.\n\n If it is an id of a recurring event type, then recurring booking is created.\n\n Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible.\n\n For team event types it is possible to create instant meeting. To do that just pass `\"instant\": true` to the request body.\n\n The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone.\n ", "parameters": [ { "name": "cal-api-version", @@ -3809,6 +3920,7 @@ }, "get": { "operationId": "BookingsController_2024_08_13_getBookings", + "summary": "Get all bookings", "parameters": [ { "name": "cal-api-version", @@ -4011,8 +4123,8 @@ "/v2/bookings/{bookingUid}": { "get": { "operationId": "BookingsController_2024_08_13_getBooking", - "summary": "Get booking", - "description": "`:bookingUid` can be\n \n 1. uid of a normal booking\n \n 2. uid of one of the recurring booking recurrences\n \n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).", + "summary": "Get a booking", + "description": "`:bookingUid` can be\n\n 1. uid of a normal booking\n\n 2. uid of one of the recurring booking recurrences\n\n 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences).", "parameters": [ { "name": "cal-api-version", @@ -4052,7 +4164,7 @@ "/v2/bookings/{bookingUid}/reschedule": { "post": { "operationId": "BookingsController_2024_08_13_rescheduleBooking", - "summary": "Reschedule booking", + "summary": "Reschedule a booking", "description": "Reschedule a booking by passing `:bookingUid` of the booking that should be rescheduled and pass request body with a new start time to create a new booking.", "parameters": [ { @@ -4103,6 +4215,7 @@ "/v2/bookings/{bookingUid}/cancel": { "post": { "operationId": "BookingsController_2024_08_13_cancelBooking", + "summary": "Cancel a booking", "parameters": [ { "name": "cal-api-version", @@ -4152,6 +4265,7 @@ "/v2/bookings/{bookingUid}/mark-absent": { "post": { "operationId": "BookingsController_2024_08_13_markNoShow", + "summary": "Mark a booking absence", "parameters": [ { "name": "cal-api-version", @@ -4210,6 +4324,7 @@ "/v2/slots/reserve": { "post": { "operationId": "SlotsController_reserveSlot", + "summary": "Reserve a slot", "parameters": [], "requestBody": { "required": true, @@ -4241,6 +4356,7 @@ "/v2/slots/selected-slot": { "delete": { "operationId": "SlotsController_deleteSelectedSlot", + "summary": "Delete a selected slot", "parameters": [], "responses": { "200": { @@ -4262,6 +4378,7 @@ "/v2/slots/available": { "get": { "operationId": "SlotsController_getAvailableSlots", + "summary": "Get available slots", "parameters": [], "responses": { "200": { @@ -4283,6 +4400,7 @@ "/v2/timezones": { "get": { "operationId": "TimezonesController_getTimeZones", + "summary": "Get all timezones", "parameters": [], "responses": { "200": { @@ -4329,12 +4447,12 @@ } }, "tags": [ - "Users' Webhooks" + "Webhooks" ] }, "get": { "operationId": "WebhooksController_getWebhooks", - "summary": "Get all user webhooks paginated", + "summary": "Get all webooks (paginated)", "parameters": [ { "name": "take", @@ -4370,7 +4488,7 @@ } }, "tags": [ - "Users' Webhooks" + "Webhooks" ] } }, @@ -4411,7 +4529,7 @@ } }, "tags": [ - "Users' Webhooks" + "Webhooks" ] }, "get": { @@ -4431,7 +4549,7 @@ } }, "tags": [ - "Users' Webhooks" + "Webhooks" ] }, "delete": { @@ -4460,14 +4578,14 @@ } }, "tags": [ - "Users' Webhooks" + "Webhooks" ] } }, "/v2/event-types/{eventTypeId}/webhooks": { "post": { "operationId": "EventTypeWebhooksController_createEventTypeWebhook", - "summary": "Create a webhook for an event-type", + "summary": "Create a webhook", "parameters": [ { "name": "eventTypeId", @@ -4501,12 +4619,12 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhooks", - "summary": "Get all webhooks of an event-type", + "summary": "Get all webhooks", "parameters": [ { "name": "eventTypeId", @@ -4550,12 +4668,12 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] }, "delete": { "operationId": "EventTypeWebhooksController_deleteAllEventTypeWebhooks", - "summary": "Delete all webhooks of an event-type", + "summary": "Delete all webhooks", "parameters": [ { "name": "eventTypeId", @@ -4579,14 +4697,14 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] } }, "/v2/event-types/{eventTypeId}/webhooks/{webhookId}": { "patch": { "operationId": "EventTypeWebhooksController_updateEventTypeWebhook", - "summary": "Update a webhook of an event-type", + "summary": "Update a webhook", "parameters": [ { "name": "webhookId", @@ -4620,12 +4738,12 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] }, "get": { "operationId": "EventTypeWebhooksController_getEventTypeWebhook", - "summary": "Get a webhook of an event-type", + "summary": "Get a webhook", "parameters": [], "responses": { "200": { @@ -4640,12 +4758,12 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] }, "delete": { "operationId": "EventTypeWebhooksController_deleteEventTypeWebhook", - "summary": "Delete a webhook of an event-type", + "summary": "Delete a webhook", "parameters": [], "responses": { "200": { @@ -4660,14 +4778,14 @@ } }, "tags": [ - "Users' EventTypes Webhooks" + "Event Types / Webhooks" ] } }, "/v2/oauth-clients/{clientId}/webhooks": { "post": { "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", - "summary": "Create a webhook for an oAuthClient", + "summary": "Create a webhook", "parameters": [ { "name": "clientId", @@ -4701,12 +4819,12 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", - "summary": "Get all webhooks of an oAuthClient", + "summary": "Get all webhooks", "parameters": [ { "name": "clientId", @@ -4750,12 +4868,12 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", - "summary": "Delete all webhooks of an oAuthClient", + "summary": "Delete all webhooks", "parameters": [ { "name": "clientId", @@ -4779,14 +4897,14 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] } }, "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { "patch": { "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", - "summary": "Update a webhook of an oAuthClient", + "summary": "Update a webhook", "parameters": [ { "name": "webhookId", @@ -4820,12 +4938,12 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] }, "get": { "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", - "summary": "Get a webhook of an oAuthClient", + "summary": "Get a webhook", "parameters": [], "responses": { "200": { @@ -4840,12 +4958,12 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] }, "delete": { "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", - "summary": "Delete a webhook of an oAuthClient", + "summary": "Delete a webhook", "parameters": [], "responses": { "200": { @@ -4860,13 +4978,14 @@ } }, "tags": [ - "OAuthClients Webhooks" + "Platform / Webhooks" ] } }, "/v2/destination-calendars": { "put": { "operationId": "DestinationCalendarsController_updateDestinationCalendars", + "summary": "Update destination calendars", "parameters": [], "requestBody": { "required": true, @@ -4891,19 +5010,115 @@ } }, "tags": [ - "Destination-Calendars", - "Select a third party destination calendar where events will be created" + "Destination Calendars" ] } } }, "info": { - "title": "Cal.com v2 API", + "title": "Cal.com API v2", "description": "", "version": "1.0.0", "contact": {} }, - "tags": [], + "tags": [ + { + "name": "Bookings", + "description": "" + }, + { + "name": "Calendars", + "description": "" + }, + { + "name": "Destination Calendars", + "description": "" + }, + { + "name": "Event Types", + "description": "" + }, + { + "name": "Event Types / Webhooks", + "description": "" + }, + { + "name": "Me", + "description": "" + }, + { + "name": "Orgs / Attributes", + "description": "" + }, + { + "name": "Orgs / Attributes / Options", + "description": "" + }, + { + "name": "Orgs / Event Types", + "description": "" + }, + { + "name": "Orgs / Memberships", + "description": "" + }, + { + "name": "Orgs / Teams", + "description": "" + }, + { + "name": "Orgs / Teams / Memberships", + "description": "" + }, + { + "name": "Orgs / Schedules", + "description": "" + }, + { + "name": "Orgs / Users", + "description": "" + }, + { + "name": "Orgs / Webhooks", + "description": "" + }, + { + "name": "Platform / Cal Provider", + "description": "" + }, + { + "name": "Platform / Google Calendar", + "description": "" + }, + { + "name": "Platform / Managed Users", + "description": "" + }, + { + "name": "Platform / Webhooks", + "description": "" + }, + { + "name": "Selected Calendars", + "description": "" + }, + { + "name": "Schedules", + "description": "" + }, + { + "name": "Slots", + "description": "" + }, + { + "name": "Timezones", + "description": "" + }, + { + "name": "Webhooks", + "description": "" + } + ], "servers": [], "components": { "schemas": {