From eee31d6e9ed3dfdf15c7d8fc33e4e1e2da041ecc Mon Sep 17 00:00:00 2001 From: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:39:55 +0200 Subject: [PATCH] chore: tag deprecated platform oauth endpoints in api v2 (#26873) * chore: tag deprecated platform oauth endpoints in api v2 * fixup! chore: tag deprecated platform oauth endpoints in api v2 * fixup! fixup! chore: tag deprecated platform oauth endpoints in api v2 * chore: fix docs.json mintlify * chore: fix docs.json mintlify --- .../v2/src/ee/provider/provider.controller.ts | 21 +- .../oauth-client-users.controller.ts | 45 +- .../oauth-client-webhooks.controller.ts | 19 +- .../oauth-clients/oauth-clients.controller.ts | 55 +- .../oauth-flow/oauth-flow.controller.ts | 33 +- docs/api-reference/v2/openapi.json | 1660 ++++++++--------- 6 files changed, 914 insertions(+), 919 deletions(-) diff --git a/apps/api/v2/src/ee/provider/provider.controller.ts b/apps/api/v2/src/ee/provider/provider.controller.ts index bb5fd3d30e..f10829eaa5 100644 --- a/apps/api/v2/src/ee/provider/provider.controller.ts +++ b/apps/api/v2/src/ee/provider/provider.controller.ts @@ -1,11 +1,4 @@ -import { ProviderVerifyAccessTokenOutput } from "@/ee/provider/outputs/verify-access-token.output"; -import { ProviderVerifyClientOutput } from "@/ee/provider/outputs/verify-client.output"; -import { API_VERSIONS_VALUES } from "@/lib/api-versions"; -import { ACCESS_TOKEN_HEADER } from "@/lib/docs/headers"; -import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; -import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; -import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; -import { UserWithProfile } from "@/modules/users/users.repository"; +import { SUCCESS_STATUS } from "@calcom/platform-constants"; import { BadRequestException, Controller, @@ -18,8 +11,14 @@ import { UseGuards, } from "@nestjs/common"; import { ApiExcludeController, ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; - -import { SUCCESS_STATUS } from "@calcom/platform-constants"; +import { ProviderVerifyAccessTokenOutput } from "@/ee/provider/outputs/verify-access-token.output"; +import { ProviderVerifyClientOutput } from "@/ee/provider/outputs/verify-client.output"; +import { API_VERSIONS_VALUES } from "@/lib/api-versions"; +import { ACCESS_TOKEN_HEADER } from "@/lib/docs/headers"; +import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; +import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; +import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; +import { UserWithProfile } from "@/modules/users/users.repository"; @Controller({ path: "/v2/provider", @@ -28,7 +27,7 @@ import { SUCCESS_STATUS } from "@calcom/platform-constants"; // note(Lauris): this controller is used by useOAuthClient and useOAuthFlow internal hooks and if customer // wants to know if access token is expired then the flow is to make request and then receive message it expired. @ApiExcludeController() -@DocsTags("Platform / Cal Provider") +@DocsTags("Deprecated: Platform / Cal Provider") export class CalProviderController { constructor(private readonly oauthClientRepository: OAuthClientRepository) {} 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 09fdc70d01..0a672c8deb 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 @@ -1,3 +1,23 @@ +import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; +import { MembershipRole } from "@calcom/platform-libraries"; +import type { User } from "@calcom/prisma/client"; +import { + Body, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + Logger, + NotFoundException, + Param, + ParseIntPipe, + Patch, + Post, + Query, + UseGuards, +} from "@nestjs/common"; +import { ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { GetOrgId } from "@/modules/auth/decorators/get-org-id/get-org-id.decorator"; import { MembershipRoles } from "@/modules/auth/decorators/roles/membership-roles.decorator"; @@ -11,40 +31,19 @@ import { TOKENS_DOCS } from "@/modules/oauth-clients/controllers/oauth-flow/oaut import { KeysResponseDto } from "@/modules/oauth-clients/controllers/oauth-flow/responses/KeysResponse.dto"; import { OAuthClientGuard } from "@/modules/oauth-clients/guards/oauth-client-guard"; import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; -import { OAuthClientUsersOutputService } from "@/modules/oauth-clients/services/oauth-clients-users-output.service"; import { OAuthClientUsersService } from "@/modules/oauth-clients/services/oauth-clients-users.service"; +import { OAuthClientUsersOutputService } from "@/modules/oauth-clients/services/oauth-clients-users-output.service"; import { TokensRepository } from "@/modules/tokens/tokens.repository"; import { CreateManagedUserInput } from "@/modules/users/inputs/create-managed-user.input"; import { UpdateManagedUserInput } from "@/modules/users/inputs/update-managed-user.input"; import { UsersRepository } from "@/modules/users/users.repository"; -import { - Body, - Controller, - Post, - Logger, - UseGuards, - Get, - HttpCode, - HttpStatus, - Param, - Patch, - Delete, - Query, - NotFoundException, - ParseIntPipe, -} from "@nestjs/common"; -import { ApiOperation, ApiTags as DocsTags, ApiHeader } from "@nestjs/swagger"; - -import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; -import { MembershipRole } from "@calcom/platform-libraries"; -import type { User } from "@calcom/prisma/client"; @Controller({ path: "/v2/oauth-clients/:clientId/users", version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, OAuthClientGuard, OrganizationRolesGuard) -@DocsTags("Platform / Managed Users") +@DocsTags("Deprecated: Platform / Managed Users") @ApiHeader({ name: X_CAL_SECRET_KEY, description: "OAuth client secret key", 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 a1c3c1c082..6e530caf44 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 @@ -1,3 +1,10 @@ +import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; +import { MembershipRole } from "@calcom/platform-libraries"; +import { SkipTakePagination } from "@calcom/platform-types"; +import type { Webhook } from "@calcom/prisma/client"; +import { Body, Controller, Delete, Get, Param, Patch, Post, Query, UseGuards } from "@nestjs/common"; +import { ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; +import { plainToClass } from "class-transformer"; import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { MembershipRoles } from "@/modules/auth/decorators/roles/membership-roles.decorator"; import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; @@ -6,8 +13,8 @@ import { GetWebhook } from "@/modules/webhooks/decorators/get-webhook-decorator" import { IsOAuthClientWebhookGuard } from "@/modules/webhooks/guards/is-oauth-client-webhook-guard"; import { CreateWebhookInputDto, UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; import { - OAuthClientWebhookOutputResponseDto, OAuthClientWebhookOutputDto, + OAuthClientWebhookOutputResponseDto, OAuthClientWebhooksOutputResponseDto, } from "@/modules/webhooks/outputs/oauth-client-webhook.output"; import { DeleteManyWebhooksOutputResponseDto } from "@/modules/webhooks/outputs/webhook.output"; @@ -15,14 +22,6 @@ import { PartialWebhookInputPipe, WebhookInputPipe } from "@/modules/webhooks/pi 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 { ApiHeader, ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; -import { plainToClass } from "class-transformer"; - -import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; -import { MembershipRole } from "@calcom/platform-libraries"; -import { SkipTakePagination } from "@calcom/platform-types"; -import type { Webhook } from "@calcom/prisma/client"; import { OAuthClientGuard } from "../../guards/oauth-client-guard"; @@ -31,7 +30,7 @@ import { OAuthClientGuard } from "../../guards/oauth-client-guard"; version: API_VERSIONS_VALUES, }) @UseGuards(ApiAuthGuard, OrganizationRolesGuard, OAuthClientGuard) -@DocsTags("Platform / Webhooks") +@DocsTags("Deprecated: Platform / Webhooks") @ApiHeader({ name: X_CAL_SECRET_KEY, description: "OAuth client secret key", diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-clients/oauth-clients.controller.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-clients/oauth-clients.controller.ts index cb7658b398..a379d89c9e 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-clients/oauth-clients.controller.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-clients/oauth-clients.controller.ts @@ -1,3 +1,28 @@ +import { SUCCESS_STATUS } from "@calcom/platform-constants"; +import { MembershipRole } from "@calcom/platform-libraries"; +import { CreateOAuthClientInput, Pagination, UpdateOAuthClientInput } from "@calcom/platform-types"; +import { + BadRequestException, + Body, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + Logger, + Param, + Patch, + Post, + Query, + UseGuards, +} from "@nestjs/common"; +import { + ApiExcludeEndpoint, + ApiHeader, + ApiOperation, + ApiTags, + ApiCreatedResponse as DocsCreatedResponse, +} from "@nestjs/swagger"; import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { API_KEY_HEADER } from "@/lib/docs/headers"; import { GetOrgId } from "@/modules/auth/decorators/get-org-id/get-org-id.decorator"; @@ -9,42 +34,16 @@ import { CreateOAuthClientResponseDto } from "@/modules/oauth-clients/controller import { GetOAuthClientResponseDto } from "@/modules/oauth-clients/controllers/oauth-clients/responses/GetOAuthClientResponse.dto"; import { GetOAuthClientsResponseDto } from "@/modules/oauth-clients/controllers/oauth-clients/responses/GetOAuthClientsResponse.dto"; import { OAuthClientGuard } from "@/modules/oauth-clients/guards/oauth-client-guard"; -import { OAuthClientUsersOutputService } from "@/modules/oauth-clients/services/oauth-clients-users-output.service"; import { OAuthClientsService } from "@/modules/oauth-clients/services/oauth-clients/oauth-clients.service"; +import { OAuthClientUsersOutputService } from "@/modules/oauth-clients/services/oauth-clients-users-output.service"; import { OrganizationsRepository } from "@/modules/organizations/index/organizations.repository"; import { UsersRepository } from "@/modules/users/users.repository"; -import { - Body, - Controller, - Query, - Get, - Post, - Patch, - Delete, - Param, - HttpCode, - HttpStatus, - Logger, - UseGuards, - BadRequestException, -} from "@nestjs/common"; -import { - ApiCreatedResponse as DocsCreatedResponse, - ApiTags, - ApiOperation, - ApiExcludeEndpoint, - ApiHeader, -} from "@nestjs/swagger"; - -import { SUCCESS_STATUS } from "@calcom/platform-constants"; -import { MembershipRole } from "@calcom/platform-libraries"; -import { CreateOAuthClientInput, UpdateOAuthClientInput, Pagination } from "@calcom/platform-types"; @Controller({ path: "/v2/oauth-clients", version: API_VERSIONS_VALUES, }) -@ApiTags("OAuth Clients") +@ApiTags("Deprecated: Platform OAuth Clients") @UseGuards(ApiAuthGuard, OrganizationRolesGuard) @ApiHeader(API_KEY_HEADER) export class OAuthClientsController { diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-flow/oauth-flow.controller.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-flow/oauth-flow.controller.ts index 2dc5a3947a..04e480f52b 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-flow/oauth-flow.controller.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-flow/oauth-flow.controller.ts @@ -1,15 +1,4 @@ -import { API_VERSIONS_VALUES } from "@/lib/api-versions"; -import { isOriginAllowed } from "@/lib/is-origin-allowed/is-origin-allowed"; -import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; -import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; -import { NextAuthGuard } from "@/modules/auth/guards/next-auth/next-auth.guard"; -import { KeysResponseDto } from "@/modules/oauth-clients/controllers/oauth-flow/responses/KeysResponse.dto"; -import { OAuthAuthorizeInput } from "@/modules/oauth-clients/inputs/authorize.input"; -import { ExchangeAuthorizationCodeInput } from "@/modules/oauth-clients/inputs/exchange-code.input"; -import { RefreshTokenInput } from "@/modules/oauth-clients/inputs/refresh-token.input"; -import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; -import { OAuthFlowService } from "@/modules/oauth-clients/services/oauth-flow.service"; -import { TokensRepository } from "@/modules/tokens/tokens.repository"; +import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; import { BadRequestException, Body, @@ -23,14 +12,24 @@ import { UseGuards, } from "@nestjs/common"; import { - ApiTags as DocsTags, + ApiOperation, ApiExcludeEndpoint as DocsExcludeEndpoint, ApiHeader as DocsHeader, - ApiOperation, + ApiTags as DocsTags, } from "@nestjs/swagger"; import { Response as ExpressResponse } from "express"; - -import { SUCCESS_STATUS, X_CAL_SECRET_KEY } from "@calcom/platform-constants"; +import { API_VERSIONS_VALUES } from "@/lib/api-versions"; +import { isOriginAllowed } from "@/lib/is-origin-allowed/is-origin-allowed"; +import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; +import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; +import { NextAuthGuard } from "@/modules/auth/guards/next-auth/next-auth.guard"; +import { KeysResponseDto } from "@/modules/oauth-clients/controllers/oauth-flow/responses/KeysResponse.dto"; +import { OAuthAuthorizeInput } from "@/modules/oauth-clients/inputs/authorize.input"; +import { ExchangeAuthorizationCodeInput } from "@/modules/oauth-clients/inputs/exchange-code.input"; +import { RefreshTokenInput } from "@/modules/oauth-clients/inputs/refresh-token.input"; +import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; +import { OAuthFlowService } from "@/modules/oauth-clients/services/oauth-flow.service"; +import { TokensRepository } from "@/modules/tokens/tokens.repository"; export const TOKENS_DOCS = `Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model \`calAccessToken\` and \`calRefreshToken\` fields. Response also contains \`accessTokenExpiresAt\` and \`refreshTokenExpiresAt\` fields, but if you decode the jwt token the payload will contain \`clientId\` (OAuth client ID), \`ownerId\` (user to whom token belongs ID), \`iat\` (issued at time) and \`expiresAt\` (when does the token expire) fields.`; @@ -109,7 +108,7 @@ export class OAuthFlowController { @Post("/refresh") @HttpCode(HttpStatus.OK) @UseGuards(ApiAuthGuard) - @DocsTags("Platform / Managed Users") + @DocsTags("Deprecated: Platform / Managed Users") @DocsHeader({ name: X_CAL_SECRET_KEY, description: "OAuth client secret key.", diff --git a/docs/api-reference/v2/openapi.json b/docs/api-reference/v2/openapi.json index e295c53b9c..7fd24361e6 100644 --- a/docs/api-reference/v2/openapi.json +++ b/docs/api-reference/v2/openapi.json @@ -1,638 +1,6 @@ { "openapi": "3.0.0", "paths": { - "/v2/oauth-clients/{clientId}/users": { - "get": { - "operationId": "OAuthClientUsersController_getManagedUsers", - "summary": "Get all managed users", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The number of items to return", - "example": 10, - "schema": { - "type": "number" - } - }, - { - "name": "offset", - "required": false, - "in": "query", - "description": "The number of items to skip", - "example": 0, - "schema": { - "type": "number" - } - }, - { - "name": "emails", - "required": false, - "in": "query", - "description": "Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.", - "example": "?emails=email1@example.com,email2@example.com", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUsersOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "post": { - "operationId": "OAuthClientUsersController_createUser", - "summary": "Create a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateManagedUserInput" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/users/{userId}": { - "get": { - "operationId": "OAuthClientUsersController_getUserById", - "summary": "Get a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "patch": { - "operationId": "OAuthClientUsersController_updateUser", - "summary": "Update a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateManagedUserInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - }, - "delete": { - "operationId": "OAuthClientUsersController_deleteUser", - "summary": "Delete a managed user", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetManagedUserOutput" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { - "post": { - "operationId": "OAuthClientUsersController_forceRefresh", - "summary": "Force refresh tokens", - "description": "If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KeysResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth/{clientId}/refresh": { - "post": { - "operationId": "OAuthFlowController_refreshTokens", - "summary": "Refresh managed user tokens", - "description": "If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use\n \"refresh token rotation\" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", - "parameters": [ - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "x-cal-secret-key", - "required": true, - "in": "header", - "description": "OAuth client secret key.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RefreshTokenInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KeysResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Managed Users" - ] - } - }, - "/v2/oauth-clients/{clientId}/webhooks": { - "post": { - "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", - "summary": "Create a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWebhookInputDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "get": { - "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", - "summary": "Get all webhooks", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "take", - "required": false, - "in": "query", - "description": "Maximum number of items to return", - "example": 25, - "schema": { - "minimum": 1, - "maximum": 250, - "default": 250, - "type": "number" - } - }, - { - "name": "skip", - "required": false, - "in": "query", - "description": "Number of items to skip", - "example": 0, - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "delete": { - "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", - "summary": "Delete all webhooks", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - } - }, - "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { - "patch": { - "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", - "summary": "Update a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "webhookId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWebhookInputDto" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "get": { - "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", - "summary": "Get a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - }, - "delete": { - "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", - "summary": "Delete a webhook", - "parameters": [ - { - "name": "x-cal-secret-key", - "in": "header", - "description": "OAuth client secret key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" - } - } - } - } - }, - "tags": [ - "Platform / Webhooks" - ] - } - }, "/v2/organizations/{orgId}/attributes": { "get": { "operationId": "OrganizationsAttributesController_getOrganizationAttributes", @@ -12110,6 +11478,836 @@ ] } }, + "/v2/oauth-clients/{clientId}/users": { + "get": { + "operationId": "OAuthClientUsersController_getManagedUsers", + "summary": "Get all managed users", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The number of items to return", + "example": 10, + "schema": { + "type": "number" + } + }, + { + "name": "offset", + "required": false, + "in": "query", + "description": "The number of items to skip", + "example": 0, + "schema": { + "type": "number" + } + }, + { + "name": "emails", + "required": false, + "in": "query", + "description": "Filter managed users by email. If you want to filter by multiple emails, separate them with a comma.", + "example": "?emails=email1@example.com,email2@example.com", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetManagedUsersOutput" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + }, + "post": { + "operationId": "OAuthClientUsersController_createUser", + "summary": "Create a managed user", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateManagedUserInput" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateManagedUserOutput" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + } + }, + "/v2/oauth-clients/{clientId}/users/{userId}": { + "get": { + "operationId": "OAuthClientUsersController_getUserById", + "summary": "Get a managed user", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetManagedUserOutput" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + }, + "patch": { + "operationId": "OAuthClientUsersController_updateUser", + "summary": "Update a managed user", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateManagedUserInput" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetManagedUserOutput" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + }, + "delete": { + "operationId": "OAuthClientUsersController_deleteUser", + "summary": "Delete a managed user", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetManagedUserOutput" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + } + }, + "/v2/oauth-clients/{clientId}/users/{userId}/force-refresh": { + "post": { + "operationId": "OAuthClientUsersController_forceRefresh", + "summary": "Force refresh tokens", + "description": "If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeysResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + } + }, + "/v2/oauth/{clientId}/refresh": { + "post": { + "operationId": "OAuthFlowController_refreshTokens", + "summary": "Refresh managed user tokens", + "description": "If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use\n \"refresh token rotation\" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields.\nResponse also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields.", + "parameters": [ + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "x-cal-secret-key", + "required": true, + "in": "header", + "description": "OAuth client secret key.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenInput" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeysResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Managed Users" + ] + } + }, + "/v2/oauth-clients/{clientId}/webhooks": { + "post": { + "operationId": "OAuthClientWebhooksController_createOAuthClientWebhook", + "summary": "Create a webhook", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWebhookInputDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + }, + "get": { + "operationId": "OAuthClientWebhooksController_getOAuthClientWebhooks", + "summary": "Get all webhooks", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "take", + "required": false, + "in": "query", + "description": "Maximum number of items to return", + "example": 25, + "schema": { + "minimum": 1, + "maximum": 250, + "default": 250, + "type": "number" + } + }, + { + "name": "skip", + "required": false, + "in": "query", + "description": "Number of items to skip", + "example": 0, + "schema": { + "minimum": 0, + "default": 0, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthClientWebhooksOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + }, + "delete": { + "operationId": "OAuthClientWebhooksController_deleteAllOAuthClientWebhooks", + "summary": "Delete all webhooks", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteManyWebhooksOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + } + }, + "/v2/oauth-clients/{clientId}/webhooks/{webhookId}": { + "patch": { + "operationId": "OAuthClientWebhooksController_updateOAuthClientWebhook", + "summary": "Update a webhook", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "webhookId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateWebhookInputDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + }, + "get": { + "operationId": "OAuthClientWebhooksController_getOAuthClientWebhook", + "summary": "Get a webhook", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + }, + "delete": { + "operationId": "OAuthClientWebhooksController_deleteOAuthClientWebhook", + "summary": "Delete a webhook", + "parameters": [ + { + "name": "x-cal-secret-key", + "in": "header", + "description": "OAuth client secret key", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthClientWebhookOutputResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform / Webhooks" + ] + } + }, + "/v2/oauth-clients": { + "post": { + "operationId": "OAuthClientsController_createOAuthClient", + "summary": "Create an OAuth client", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOAuthClientInput" + } + } + } + }, + "responses": { + "201": { + "description": "Create an OAuth client", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOAuthClientResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform OAuth Clients" + ] + }, + "get": { + "operationId": "OAuthClientsController_getOAuthClients", + "summary": "Get all OAuth clients", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetOAuthClientsResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform OAuth Clients" + ] + } + }, + "/v2/oauth-clients/{clientId}": { + "get": { + "operationId": "OAuthClientsController_getOAuthClientById", + "summary": "Get an OAuth client", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetOAuthClientResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform OAuth Clients" + ] + }, + "patch": { + "operationId": "OAuthClientsController_updateOAuthClient", + "summary": "Update an OAuth client", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOAuthClientInput" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetOAuthClientResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform OAuth Clients" + ] + }, + "delete": { + "operationId": "OAuthClientsController_deleteOAuthClient", + "summary": "Delete an OAuth client", + "parameters": [ + { + "name": "Authorization", + "in": "header", + "description": "value must be `Bearer ` where `` is api key prefixed with cal_", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clientId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetOAuthClientResponseDto" + } + } + } + } + }, + "tags": [ + "Deprecated: Platform OAuth Clients" + ] + } + }, "/v2/destination-calendars": { "put": { "operationId": "DestinationCalendarsController_updateDestinationCalendars", @@ -13334,204 +13532,6 @@ ] } }, - "/v2/oauth-clients": { - "post": { - "operationId": "OAuthClientsController_createOAuthClient", - "summary": "Create an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOAuthClientInput" - } - } - } - }, - "responses": { - "201": { - "description": "Create an OAuth client", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "get": { - "operationId": "OAuthClientsController_getOAuthClients", - "summary": "Get all OAuth clients", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientsResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - } - }, - "/v2/oauth-clients/{clientId}": { - "get": { - "operationId": "OAuthClientsController_getOAuthClientById", - "summary": "Get an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "patch": { - "operationId": "OAuthClientsController_updateOAuthClient", - "summary": "Update an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOAuthClientInput" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - }, - "delete": { - "operationId": "OAuthClientsController_deleteOAuthClient", - "summary": "Delete an OAuth client", - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "value must be `Bearer ` where `` is api key prefixed with cal_", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetOAuthClientResponseDto" - } - } - } - } - }, - "tags": [ - "OAuth Clients" - ] - } - }, "/v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request": { "post": { "operationId": "OrgTeamsVerifiedResourcesController_requestEmailVerificationCode",