* refactor: extract getEventTypeByViewer for private user dashboard event types * refactor: extract getEventTypesPublic for public event types to book * refactor: group event-types lib functions in single folder * refactor: rename getEventTypeByViewer to getEventTypesByViewer * feat: add event type helpers from lib to platform libraries * feat: v2 endpoint for private event types * driveby:fix: fixed date in docs instead of being re-generated * feature: endpoint to fetch public endpoints * fix: getting private event types * tests: fetch private event types * tests: fetch private event types * feat: hooks for public and private events * fix: yarn test * tests: IMO better mocking * refactor: track dynamic prop in react query * fix: distinct query key for public events * fix: username in query key and example app demo * fix: swagger for endpoint get public event input --------- Co-authored-by: Morgan Vernay <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
1535 lines
38 KiB
JSON
1535 lines
38 KiB
JSON
{
|
|
"openapi": "3.0.0",
|
|
"paths": {
|
|
"/health": {
|
|
"get": {
|
|
"operationId": "AppController_getHealth",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/events/public": {
|
|
"get": {
|
|
"operationId": "EventsController_getPublicEvent",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/oauth-clients/{clientId}/users": {
|
|
"post": {
|
|
"operationId": "OAuthClientUsersController_createUser",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateUserInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/oauth-clients/{clientId}/users/{userId}": {
|
|
"get": {
|
|
"operationId": "OAuthClientUsersController_getUserById",
|
|
"parameters": [
|
|
{
|
|
"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": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"operationId": "OAuthClientUsersController_updateUser",
|
|
"parameters": [
|
|
{
|
|
"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/UpdateUserInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"operationId": "OAuthClientUsersController_deleteUser",
|
|
"parameters": [
|
|
{
|
|
"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": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/oauth-clients": {
|
|
"post": {
|
|
"operationId": "OAuthClientsController_createOAuthClient",
|
|
"summary": "",
|
|
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
|
|
"parameters": [],
|
|
"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": [
|
|
"Development only"
|
|
]
|
|
},
|
|
"get": {
|
|
"operationId": "OAuthClientsController_getOAuthClients",
|
|
"summary": "",
|
|
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetOAuthClientsResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"Development only"
|
|
]
|
|
}
|
|
},
|
|
"/api/v2/oauth-clients/{clientId}": {
|
|
"get": {
|
|
"operationId": "OAuthClientsController_getOAuthClientById",
|
|
"summary": "",
|
|
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetOAuthClientResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"Development only"
|
|
]
|
|
},
|
|
"patch": {
|
|
"operationId": "OAuthClientsController_updateOAuthClient",
|
|
"summary": "",
|
|
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
|
|
"parameters": [
|
|
{
|
|
"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": [
|
|
"Development only"
|
|
]
|
|
},
|
|
"delete": {
|
|
"operationId": "OAuthClientsController_deleteOAuthClient",
|
|
"summary": "",
|
|
"description": "⚠️ First, this endpoint requires `Cookie: next-auth.session-token=eyJhbGciOiJ` header. Log into Cal web app using owner of organization that was created after visiting `/settings/organizations/new`, refresh swagger docs, and the cookie will be added to requests automatically to pass the NextAuthGuard.\nSecond, make sure that the logged in user has organizationId set to pass the OrganizationRolesGuard guard.",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetOAuthClientResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"Development only"
|
|
]
|
|
}
|
|
},
|
|
"/api/v2/oauth/{clientId}/authorize": {
|
|
"post": {
|
|
"operationId": "OAuthFlowController_authorize",
|
|
"summary": "Authorize an OAuth client",
|
|
"description": "Redirects the user to the specified 'redirect_uri' with an authorization code in query parameter if the client is authorized successfully. The code is then exchanged for access and refresh tokens via the `/exchange` endpoint.",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OAuthAuthorizeInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "The user is redirected to the 'redirect_uri' with an authorization code in query parameter e.g. `redirectUri?code=secretcode.`"
|
|
},
|
|
"400": {
|
|
"description": "Bad request if the OAuth client is not found, if the redirect URI is invalid, or if the user has already authorized the client."
|
|
}
|
|
},
|
|
"tags": [
|
|
"Development only"
|
|
]
|
|
}
|
|
},
|
|
"/api/v2/oauth/{clientId}/exchange": {
|
|
"post": {
|
|
"operationId": "OAuthFlowController_exchange",
|
|
"summary": "Exchange authorization code for access tokens",
|
|
"description": "Exchanges the authorization code received from the `/authorize` endpoint for access and refresh tokens. The authorization code should be provided in the 'Authorization' header prefixed with 'Bearer '.",
|
|
"parameters": [
|
|
{
|
|
"name": "Authorization",
|
|
"required": true,
|
|
"in": "header",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExchangeAuthorizationCodeInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully exchanged authorization code for access and refresh tokens.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/KeysResponseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request if the authorization code is missing, invalid, or if the client ID and secret do not match."
|
|
}
|
|
},
|
|
"tags": [
|
|
"Development only"
|
|
]
|
|
}
|
|
},
|
|
"/api/v2/oauth/{clientId}/refresh": {
|
|
"post": {
|
|
"operationId": "OAuthFlowController_refreshAccessToken",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "x-cal-secret-key",
|
|
"required": true,
|
|
"in": "header",
|
|
"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": [
|
|
"Development only"
|
|
]
|
|
}
|
|
},
|
|
"/api/v2/event-types": {
|
|
"post": {
|
|
"operationId": "EventTypesController_createEventType",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateEventTypeInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"operationId": "EventTypesController_getEventTypes",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/event-types/{eventTypeId}": {
|
|
"get": {
|
|
"operationId": "EventTypesController_getEventType",
|
|
"parameters": [
|
|
{
|
|
"name": "eventTypeId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/event-types/{username}/public": {
|
|
"get": {
|
|
"operationId": "EventTypesController_getPublicEventTypes",
|
|
"parameters": [
|
|
{
|
|
"name": "username",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/platform/gcal/oauth/auth-url": {
|
|
"get": {
|
|
"operationId": "GcalController_redirect",
|
|
"parameters": [
|
|
{
|
|
"name": "Authorization",
|
|
"required": true,
|
|
"in": "header",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/platform/gcal/oauth/save": {
|
|
"get": {
|
|
"operationId": "GcalController_save",
|
|
"parameters": [
|
|
{
|
|
"name": "state",
|
|
"required": true,
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "code",
|
|
"required": true,
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/platform/gcal/check": {
|
|
"get": {
|
|
"operationId": "GcalController_check",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/platform/provider/{clientId}": {
|
|
"get": {
|
|
"operationId": "CalProviderController_verifyClientId",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/platform/provider/{clientId}/access-token": {
|
|
"get": {
|
|
"operationId": "CalProviderController_verifyAccessToken",
|
|
"parameters": [
|
|
{
|
|
"name": "clientId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/schedules": {
|
|
"post": {
|
|
"operationId": "SchedulesController_createSchedule",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"operationId": "SchedulesController_getSchedules",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/schedules/default": {
|
|
"get": {
|
|
"operationId": "SchedulesController_getDefaultSchedule",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/schedules/time-zones": {
|
|
"get": {
|
|
"operationId": "SchedulesController_getTimeZones",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/schedules/{scheduleId}": {
|
|
"get": {
|
|
"operationId": "SchedulesController_getSchedule",
|
|
"parameters": [
|
|
{
|
|
"name": "scheduleId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"operationId": "SchedulesController_updateSchedule",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"operationId": "SchedulesController_deleteSchedule",
|
|
"parameters": [
|
|
{
|
|
"name": "scheduleId",
|
|
"required": true,
|
|
"in": "path",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/me": {
|
|
"get": {
|
|
"operationId": "MeController_getMe",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"operationId": "MeController_updateMe",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUserInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ee/calendars/busy-times": {
|
|
"get": {
|
|
"operationId": "CalendarsController_getBusyTimes",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ee/calendars": {
|
|
"get": {
|
|
"operationId": "CalendarsController_getCalendars",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ee/bookings": {
|
|
"post": {
|
|
"operationId": "BookingsController_createBooking",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBookingInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ee/bookings/reccuring": {
|
|
"post": {
|
|
"operationId": "BookingsController_createReccuringBooking",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ee/bookings/instant": {
|
|
"post": {
|
|
"operationId": "BookingsController_createInstantBooking",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBookingInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/slots/reserve": {
|
|
"post": {
|
|
"operationId": "SlotsController_reserveSlot",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReserveSlotInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/slots/selected-slot": {
|
|
"delete": {
|
|
"operationId": "SlotsController_deleteSelectedSlot",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/slots/available": {
|
|
"get": {
|
|
"operationId": "SlotsController_getAvailableSlots",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"info": {
|
|
"title": "Cal.com v2 API",
|
|
"description": "",
|
|
"version": "1.0.0",
|
|
"contact": {}
|
|
},
|
|
"tags": [],
|
|
"servers": [],
|
|
"components": {
|
|
"schemas": {
|
|
"CreateUserInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"timeFormat": {
|
|
"type": "number"
|
|
},
|
|
"defaultScheduleId": {
|
|
"type": "number"
|
|
},
|
|
"weekStart": {
|
|
"type": "string"
|
|
},
|
|
"timeZone": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"email"
|
|
]
|
|
},
|
|
"UpdateUserInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"timeFormat": {
|
|
"type": "number"
|
|
},
|
|
"defaultScheduleId": {
|
|
"type": "number"
|
|
},
|
|
"weekStart": {
|
|
"type": "string"
|
|
},
|
|
"timeZone": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CreateOAuthClientInput": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"DataDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clientId": {
|
|
"type": "string",
|
|
"example": "clsx38nbl0001vkhlwin9fmt0"
|
|
},
|
|
"clientSecret": {
|
|
"type": "string",
|
|
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi"
|
|
}
|
|
},
|
|
"required": [
|
|
"clientId",
|
|
"clientSecret"
|
|
]
|
|
},
|
|
"CreateOAuthClientResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"example": "success",
|
|
"enum": [
|
|
"success",
|
|
"error"
|
|
]
|
|
},
|
|
"data": {
|
|
"example": {
|
|
"clientId": "clsx38nbl0001vkhlwin9fmt0",
|
|
"clientSecret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoib2F1dGgtY2xpZW50Iiwi"
|
|
},
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/DataDto"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"data"
|
|
]
|
|
},
|
|
"PlatformOAuthClientDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"example": "clsx38nbl0001vkhlwin9fmt0"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "MyClient"
|
|
},
|
|
"secret": {
|
|
"type": "string",
|
|
"example": "secretValue"
|
|
},
|
|
"permissions": {
|
|
"type": "number",
|
|
"example": 3
|
|
},
|
|
"logo": {
|
|
"type": "object",
|
|
"example": "https://example.com/logo.png"
|
|
},
|
|
"redirectUris": {
|
|
"example": [
|
|
"https://example.com/callback"
|
|
],
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"organizationId": {
|
|
"type": "number",
|
|
"example": 1
|
|
},
|
|
"createdAt": {
|
|
"format": "date-time",
|
|
"type": "string",
|
|
"example": "2024-03-23T08:33:21.851Z"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"secret",
|
|
"permissions",
|
|
"redirectUris",
|
|
"organizationId",
|
|
"createdAt"
|
|
]
|
|
},
|
|
"GetOAuthClientsResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"example": "success",
|
|
"enum": [
|
|
"success",
|
|
"error"
|
|
]
|
|
},
|
|
"data": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlatformOAuthClientDto"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"data"
|
|
]
|
|
},
|
|
"GetOAuthClientResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"example": "success",
|
|
"enum": [
|
|
"success",
|
|
"error"
|
|
]
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/PlatformOAuthClientDto"
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"data"
|
|
]
|
|
},
|
|
"UpdateOAuthClientInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"logo": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"redirectUris": {
|
|
"default": [],
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"OAuthAuthorizeInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"redirectUri": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"redirectUri"
|
|
]
|
|
},
|
|
"ExchangeAuthorizationCodeInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clientSecret": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"clientSecret"
|
|
]
|
|
},
|
|
"KeysDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"accessToken": {
|
|
"type": "string",
|
|
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
|
|
},
|
|
"refreshToken": {
|
|
"type": "string",
|
|
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
|
|
}
|
|
},
|
|
"required": [
|
|
"accessToken",
|
|
"refreshToken"
|
|
]
|
|
},
|
|
"KeysResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"example": "success",
|
|
"enum": [
|
|
"success",
|
|
"error"
|
|
]
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/KeysDto"
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"data"
|
|
]
|
|
},
|
|
"RefreshTokenInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"refreshToken": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"refreshToken"
|
|
]
|
|
},
|
|
"CreateEventTypeInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"length": {
|
|
"type": "number",
|
|
"minimum": 1
|
|
},
|
|
"slug": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"length",
|
|
"slug",
|
|
"title"
|
|
]
|
|
},
|
|
"CreateAvailabilityInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"days": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"startTime": {
|
|
"format": "date-time",
|
|
"type": "string"
|
|
},
|
|
"endTime": {
|
|
"format": "date-time",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"days",
|
|
"startTime",
|
|
"endTime"
|
|
]
|
|
},
|
|
"CreateScheduleInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"timeZone": {
|
|
"type": "string"
|
|
},
|
|
"availabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CreateAvailabilityInput"
|
|
}
|
|
},
|
|
"isDefault": {
|
|
"type": "object",
|
|
"default": true
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"timeZone",
|
|
"isDefault"
|
|
]
|
|
},
|
|
"UpdateScheduleInput": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"CreateBookingInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"end": {
|
|
"type": "string"
|
|
},
|
|
"start": {
|
|
"type": "string"
|
|
},
|
|
"eventTypeId": {
|
|
"type": "number"
|
|
},
|
|
"eventTypeSlug": {
|
|
"type": "string"
|
|
},
|
|
"rescheduleUid": {
|
|
"type": "string"
|
|
},
|
|
"recurringEventId": {
|
|
"type": "string"
|
|
},
|
|
"timeZone": {
|
|
"type": "string"
|
|
},
|
|
"user": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"bookingUid": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object"
|
|
},
|
|
"hasHashedBookingLink": {
|
|
"type": "boolean"
|
|
},
|
|
"hashedLink": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"seatReferenceUid": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"start",
|
|
"eventTypeId",
|
|
"timeZone",
|
|
"language",
|
|
"metadata",
|
|
"hashedLink"
|
|
]
|
|
},
|
|
"ReserveSlotInput": {
|
|
"type": "object",
|
|
"properties": {}
|
|
}
|
|
}
|
|
}
|
|
} |