openapi: 3.0.0 paths: /api/v1/health: get: operationId: AppController_getHealth parameters: [] responses: '200': description: Health check successful content: application/json: schema: type: object properties: status: type: string example: ok tags: - App /api/v1/auth/register: post: operationId: AuthController_register parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserDto' responses: '201': description: User registered successfully content: application/json: schema: $ref: '#/components/schemas/UserResponse' '400': description: Bad request tags: - Auth /api/v1/api-keys: post: operationId: ApiKeyController_createApiKey parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateApiKeyDto' responses: '201': description: API key created successfully content: application/json: schema: $ref: '#/components/schemas/ApiKeyResponse' '400': description: Bad request tags: - ApiKey /api/v1/api-keys/list: post: operationId: ApiKeyController_listApiKeys parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListApiKeysDto' responses: '200': description: List of API keys content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiKeyListItem' '400': description: Bad request tags: - ApiKey /api/v1/api-keys/{id}: delete: operationId: ApiKeyController_revokeApiKey parameters: - name: id required: true in: path schema: type: string format: uuid responses: '200': description: API key revoked successfully content: application/json: schema: type: object properties: success: type: boolean example: true '404': description: API key not found tags: - ApiKey /api/v1/bot: post: operationId: BotController_createBot security: - apiKey: [] parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateBotDto' responses: '201': description: Bot created successfully content: application/json: schema: $ref: '#/components/schemas/BotResponse' '400': description: Bad request '401': description: Unauthorized tags: - Bot get: operationId: BotController_getBotList security: - apiKey: [] parameters: - name: page in: query required: false schema: type: integer default: 1 - name: limit in: query required: false schema: type: integer default: 10 responses: '200': description: List of bots content: application/json: schema: type: object properties: items: type: array items: $ref: '#/components/schemas/BotResponse' total: type: integer page: type: integer limit: type: integer '401': description: Unauthorized tags: - Bot /api/v1/bot/{id}/leave: post: operationId: BotController_leaveCall security: - apiKey: [] parameters: - name: id required: true in: path schema: type: string format: uuid responses: '200': description: Bot left the call successfully content: application/json: schema: $ref: '#/components/schemas/BotResponse' '401': description: Unauthorized '404': description: Bot not found tags: - Bot /api/v1/bot/{id}/transcript: get: operationId: BotController_getTranscript security: - apiKey: [] parameters: - name: id required: true in: path schema: type: string format: uuid - name: page in: query required: false schema: type: integer default: 1 - name: limit in: query required: false schema: type: integer default: 10 responses: '200': description: Meeting transcript content: application/json: schema: $ref: '#/components/schemas/TranscriptResponse' '401': description: Unauthorized '404': description: Bot not found or transcript not available tags: - Bot /api/v1/bot/{id}: get: operationId: BotController_getBot security: - apiKey: [] parameters: - name: id required: true in: path schema: type: string format: uuid responses: '200': description: Bot details content: application/json: schema: $ref: '#/components/schemas/BotResponse' '401': description: Unauthorized '404': description: Bot not found tags: - Bot info: title: Cuecard API description: API for managing bots for meeting recordings version: '1.0' contact: {} tags: - name: App description: Application endpoints - name: Auth description: User authentication and registration - name: ApiKey description: API key management - name: Bot description: Bot creation and management servers: - url: '{protocol}://{serverUrl}' description: Custom server URL variables: protocol: enum: - http - https default: https description: The protocol to use serverUrl: default: api.example.com description: Enter your server URL or IP address (without protocol) components: securitySchemes: apiKey: type: apiKey in: header name: x-api-key schemas: CreateUserDto: type: object properties: email: type: string format: email description: User's email address example: user@example.com name: type: string description: User's full name example: John Doe required: - email - name UserResponse: type: object properties: id: type: string format: uuid description: Unique user identifier email: type: string format: email description: User's email address name: type: string description: User's full name createdAt: type: string format: date-time description: User creation timestamp updatedAt: type: string format: date-time description: User last update timestamp CreateApiKeyDto: type: object properties: userId: type: string format: uuid description: ID of the user the API key belongs to name: type: string description: Descriptive name for the API key maxLength: 100 example: My Application expiresAt: type: string format: date-time description: Expiration date for the API key (optional) permissions: type: object additionalProperties: type: array items: type: string description: Object containing permission settings required: - userId - name ApiKeyResponse: type: object properties: id: type: string format: uuid description: Unique API key identifier name: type: string description: Descriptive name for the API key createdAt: type: string format: date-time description: API key creation timestamp expiresAt: type: string format: date-time description: API key expiration timestamp apiKey: type: string description: The actual API key value (only returned upon creation) ApiKeyListItem: type: object properties: id: type: string format: uuid description: Unique API key identifier name: type: string description: Descriptive name for the API key createdAt: type: string format: date-time description: API key creation timestamp expiresAt: type: string format: date-time description: API key expiration timestamp isActive: type: boolean description: Whether the API key is active lastUsedAt: type: string format: date-time description: When the API key was last used ListApiKeysDto: type: object properties: userId: type: string format: uuid description: ID of the user whose API keys to list required: - userId CreateBotDto: type: object properties: name: type: string description: Name of the bot example: Meeting Bot meetingUrl: type: string description: URL of the meeting to join example: https://meet.google.com/abc-defg-hij title: type: string description: Optional title for the meeting recordingMode: type: string enum: - SPEAKER_VIEW - GALLERY_VIEW - AUDIO_ONLY description: Recording mode for the bot default: AUDIO_ONLY joinAt: type: string format: date-time description: When the bot should join the meeting (optional) leaveAt: type: string format: date-time description: When the bot should leave the meeting (optional) metaData: type: object description: Additional metadata for the bot (optional) required: - name - meetingUrl BotResponse: type: object properties: id: type: string format: uuid description: Unique bot identifier name: type: string description: Name of the bot title: type: string description: Title for the meeting meetingUrl: type: string description: URL of the meeting recordingMode: type: string enum: - SPEAKER_VIEW - GALLERY_VIEW - AUDIO_ONLY description: Recording mode for the bot platform: type: string enum: - GOOGLE_MEET - ZOOM - TEAMS description: Meeting platform type apiKeyId: type: string format: uuid description: ID of the API key that created this bot joinAt: type: string format: date-time description: When the bot should join the meeting leaveAt: type: string format: date-time description: When the bot should leave the meeting status: type: string enum: - PENDING - STARTED - COMPLETED - FAILED - STOPPED description: Current status of the bot execution taskId: type: string description: ID of the associated task retryCount: type: integer description: Number of retry attempts metaData: type: object description: Additional metadata for the bot createdAt: type: string format: date-time description: Bot creation timestamp updatedAt: type: string format: date-time description: Bot last update timestamp PaginationDto: type: object properties: page: type: integer description: Page number for pagination default: 1 limit: type: integer description: Number of items per page default: 10 TranscriptResponse: type: object properties: id: type: string format: uuid description: Unique file identifier raw_file_key: type: string description: Key for the raw recording file audio_file_key: type: string description: Key for the processed audio file meeting_title: type: string description: Title of the meeting meeting_meeting_start_time: type: string format: date-time description: Meeting start time meeting_meeting_end_time: type: string format: date-time description: Meeting end time execution_id: type: string description: ID of the execution process bot_used: type: integer description: ID of the bot used for recording status: type: integer description: Status of the transcript created_by_user_id: type: string format: uuid description: ID of the user who created the recording transcript: type: array items: $ref: '#/components/schemas/TranscriptItem' total: type: integer description: Total number of transcript items hasMore: type: boolean description: Whether there are more transcript items available TranscriptItem: type: object properties: id: type: string format: uuid description: Unique transcript segment identifier speaker: type: string description: Name or identifier of the speaker transcription_start_time_milliseconds: type: string description: Start time of the transcription segment in milliseconds transcription_end_time_milliseconds: type: string description: End time of the transcription segment in milliseconds transcription_Data: type: string description: The transcribed text content