openapi: 3.0.0 paths: /: get: operationId: getHello parameters: [] responses: "200": description: "" content: application/json: schema: type: string /users/register: post: operationId: register parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RegisterUserDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/UserCreatedResponseDto" "409": description: User already exists, please login. "500": description: Something went wrong. tags: - users /users/login: post: operationId: login parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/LoginUserDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/LoginResponseDto" "401": description: The provided credentials are invalid or the user does not have a password configured. "500": description: Something went wrong. tags: - users /users/oauth/handleCallback/{providerId}: post: operationId: handleOAuthCallback parameters: - name: providerId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/oauthUserAuthorizeDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/LoginResponseDto" "500": description: Something went wrong. tags: - users /users/whoami: post: operationId: whoami parameters: [] responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/WhoAmIResultDto" "404": description: User not found "500": description: Something went wrong. tags: - users security: - bearer: [] /members/p/{projectId}/listMembers: get: operationId: listMembers parameters: - name: projectId required: true in: path schema: type: string - name: page required: true in: query schema: minimum: 1 type: number - name: limit required: true in: query schema: minimum: 1 maximum: 1000 type: number responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ListMembersResponseDto" tags: - Members /members/p/{projectId}/signInAnonymously: post: operationId: signInAnonymously parameters: - name: projectId required: true in: path schema: type: string responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/LoginMemberResponseDto" tags: - Members /members/p/{projectId}/requestPasswordlessEmail: post: operationId: requestPasswordlessEmail parameters: - name: projectId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RequestPasswordlessEmailDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/RegisterResponseDto" tags: - Members /members/p/{projectId}/verifyPasswordlessEmail: post: operationId: verifyPasswordlessEmail parameters: - name: projectId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/VerifyPasswordlessEmailDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/LoginMemberResponseDto" tags: - Members /members/oauth/handleCallback/{providerId}: post: operationId: handleOAuthCallback parameters: - name: providerId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/oauthAuthorizeDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/LoginMemberResponseDto" tags: - Members /members/whoami: post: operationId: whoami parameters: [] responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/MemberWhoAmIResultDto" "404": description: Member not found tags: - Members security: - bearer: [] /authMethods/upsert: post: operationId: upsert parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpsertAuthMethodDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/UpsertedAuthMethodDto" tags: - authMethods security: - bearer: [] /authMethods/listForProject/{projectId}: get: operationId: listAuthMethods parameters: - name: projectId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ListAuthMethodResponseDto" tags: - authMethods security: - bearer: [] /sdk-secrets/create: post: operationId: create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateSdkSecretDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/CreatedSdkSecretDto" "401": description: You are not authorized to perform this action tags: - sdk-secrets security: - bearer: [] /sdk-secrets/listForProject/{projectId}: get: operationId: listForProject parameters: - name: projectId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ListSdkSecretDto" "401": description: You are not authorized to perform this action tags: - sdk-secrets security: - bearer: [] /sdk-secrets/revokeById/{secretId}: delete: operationId: revokedById parameters: - name: secretId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/RevokeSdkSecretDto" "401": description: You are not authorized to perform this action tags: - sdk-secrets security: - bearer: [] /projects/getRealtimeConnections/{projectId}: get: operationId: getRealtimeConnections parameters: - name: projectId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/GetRealtimeConnectionsResponseDto" tags: - projects security: - bearer: [] /projects/create: post: operationId: createProject parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateProjectDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/CreatedProjectDto" tags: - projects security: - bearer: [] /projects/listForOrganization/{organizationId}: get: operationId: listOrganizationProjects parameters: - name: organizationId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ListProjectsResultDto" tags: - projects security: - bearer: [] /projects/exists/{slug}: get: operationId: projectExists parameters: - name: slug required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ProjectExistsResponseDto" tags: - projects security: - bearer: [] /projects/getById/{projectId}: get: operationId: getById parameters: - name: projectId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/ProjectDto" tags: - projects security: - bearer: [] /projects/getPublicConfig: get: operationId: getPublicConfig parameters: - name: hostname required: true in: query schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/PublicProjectConfigDto" "422": description: Unprocessable hostname or unknown project tags: - projects security: - bearer: [] /agents/create: post: operationId: createAgent parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateAgentDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/CreatedAgentDto" tags: - agents security: - bearer: [] /agents/update/{agentId}: post: operationId: updateAgent parameters: - name: agentId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateAgentDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/UpdatedAgentDto" "401": description: You are not authorized to access this resource tags: - agents security: - bearer: [] /agents/delete/{agentId}: delete: operationId: deleteAgent parameters: - name: agentId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DeletedAgentResponseDto" "401": description: You are not authorized to access this resource tags: - agents security: - bearer: [] /agents/listForProject/{projectId}: post: operationId: listForProject parameters: - name: projectId required: true in: path schema: type: string responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/ListAgentsResponseDto" "401": description: You are not authorized to access this resource tags: - agents security: - bearer: [] /agents/getById/{agentId}: post: operationId: getById parameters: - name: agentId required: true in: path schema: type: string responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/GetAgentResponseDto" "401": description: You are not authorized to access this resource tags: - agents security: - bearer: [] /attachments/uploadSync: post: operationId: createAttachmentSync parameters: [] responses: "201": description: "" /attachments/viewById/{id}: get: operationId: serveById parameters: - name: id required: true in: path schema: type: string responses: "200": description: "" content: application/octet-stream: schema: type: string format: binary /attachments/downloadById/{id}: get: operationId: downloadById parameters: - name: id required: true in: path schema: type: string responses: "200": description: "" content: application/octet-stream: schema: type: string format: binary /conversations/getAllByProjectId: get: operationId: getAllConversations parameters: - name: projectId required: true in: query schema: type: string responses: "200": description: "" tags: - conversations /chat-messages/downloadAttachment/{attachmentId}: get: operationId: downloadAttachment parameters: - name: attachmentId required: true in: path schema: type: string responses: "200": description: "" content: application/octet-stream: schema: type: string format: binary tags: - chat-messages /chat-messages/listByConversationId/{conversationId}: get: operationId: listByConversationId parameters: - name: conversationId required: true in: path schema: type: string responses: "200": description: "" tags: - chat-messages info: title: AgentLabs API description: Build AI Agents in minutes, not months. version: 1.0.0 contact: {} tags: [] servers: [] components: securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http schemas: RegisterUserDto: type: object properties: email: type: string password: type: string minLength: 6 fullName: type: string minLength: 2 required: - email - password - fullName UserCreatedResponseDto: type: object properties: id: type: string email: type: string fullName: type: string profilePictureUrl: type: string nullable: true verifiedAt: format: date-time type: string nullable: true required: - id - email - fullName - profilePictureUrl - verifiedAt LoginUserDto: type: object properties: email: type: string password: type: string minLength: 6 required: - email - password SanitizedUserResponseDto: type: object properties: id: type: string email: type: string fullName: type: string profilePictureUrl: type: string nullable: true verifiedAt: format: date-time type: string nullable: true required: - id - email - fullName - profilePictureUrl - verifiedAt LoginResponseDto: type: object properties: accessToken: type: string user: $ref: "#/components/schemas/SanitizedUserResponseDto" required: - accessToken - user oauthUserAuthorizeDto: type: object properties: code: type: string state: type: string redirectUri: type: string required: - code - state - redirectUri WhoAmIResultDto: type: object properties: id: type: string email: type: string fullName: type: string verifiedAt: format: date-time type: string nullable: true organizationCount: type: number defaultProjectId: type: string nullable: true defaultOrganizationId: type: string nullable: true onboarding: type: object projectCount: type: number projectCreatedCount: type: number agentCreatedCount: type: number required: - id - email - fullName - verifiedAt - organizationCount - defaultProjectId - defaultOrganizationId - onboarding - projectCount - projectCreatedCount - agentCreatedCount MemberItem: type: object properties: id: type: string email: type: string nullable: true firstName: type: string nullable: true lastName: type: string nullable: true createdAt: format: date-time type: string updatedAt: format: date-time type: string verifiedAt: format: date-time type: string nullable: true required: - id - email - firstName - lastName - createdAt - updatedAt - verifiedAt ListMembersResponseDto: type: object properties: items: type: array items: $ref: "#/components/schemas/MemberItem" resultCount: type: number totalCount: type: number hasMore: type: boolean required: - items - resultCount - totalCount - hasMore SanitizedMemberDto: type: object properties: id: type: string email: type: string nullable: true fullName: type: string nullable: true firstName: type: string nullable: true lastName: type: string nullable: true profilePictureUrl: type: string nullable: true verifiedAt: format: date-time type: string nullable: true createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - email - fullName - firstName - lastName - profilePictureUrl - verifiedAt - createdAt - updatedAt LoginMemberResponseDto: type: object properties: accessToken: type: string member: $ref: "#/components/schemas/SanitizedMemberDto" required: - accessToken - member RequestPasswordlessEmailDto: type: object properties: email: type: string required: - email RegisterResponseDto: type: object properties: email: type: string nullable: true createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - email - createdAt - updatedAt VerifyPasswordlessEmailDto: type: object properties: email: type: string code: type: string required: - email - code oauthAuthorizeDto: type: object properties: code: type: string state: type: string redirectUri: type: string projectId: type: string required: - code - state - redirectUri - projectId MemberWhoAmIResultDto: type: object properties: id: type: string email: type: string nullable: true fullName: type: string nullable: true firstName: type: string nullable: true lastName: type: string nullable: true profilePictureUrl: type: string nullable: true verifiedAt: format: date-time type: string nullable: true createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - email - fullName - firstName - lastName - profilePictureUrl - verifiedAt - createdAt - updatedAt UpsertAuthMethodDto: type: object properties: provider: type: string enum: - PASSWORDLESS_EMAIL - EMAIL_AND_PASSWORD - SMS - ANONYMOUS - GOOGLE - GITHUB - GITLAB - MICROSOFT projectId: type: string isEnabled: type: boolean clientId: type: string clientSecret: type: string scopes: type: array items: type: string required: - provider - projectId - isEnabled - clientId - clientSecret - scopes UpsertedAuthMethodDto: type: object properties: type: type: string enum: - OAUTH2 - EMAIL - PHONE_NUMBER - ANONYMOUS provider: type: string enum: - PASSWORDLESS_EMAIL - EMAIL_AND_PASSWORD - SMS - ANONYMOUS - GOOGLE - GITHUB - GITLAB - MICROSOFT projectId: type: string isEnabled: type: boolean clientId: type: string nullable: true clientSecret: type: string nullable: true scopes: type: array items: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - type - provider - projectId - isEnabled - clientId - clientSecret - scopes - createdAt - updatedAt ListAuthMethodItem: type: object properties: type: type: string enum: - OAUTH2 - EMAIL - PHONE_NUMBER - ANONYMOUS provider: type: string enum: - PASSWORDLESS_EMAIL - EMAIL_AND_PASSWORD - SMS - ANONYMOUS - GOOGLE - GITHUB - GITLAB - MICROSOFT projectId: type: string isEnabled: type: boolean clientId: type: string nullable: true clientSecret: type: string nullable: true scopes: type: array items: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - type - provider - projectId - isEnabled - clientId - clientSecret - scopes - createdAt - updatedAt ListAuthMethodResponseDto: type: object properties: items: type: array items: $ref: "#/components/schemas/ListAuthMethodItem" total: type: number required: - items - total CreateSdkSecretDto: type: object properties: description: type: string projectId: type: string required: - projectId CreatedSdkSecretDto: type: object properties: clearValue: type: string id: type: string description: type: string nullable: true projectId: type: string preview: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - clearValue - id - description - projectId - preview - createdAt - updatedAt SanitizedSdkSecretDto: type: object properties: id: type: string description: type: string nullable: true projectId: type: string preview: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - description - projectId - preview - createdAt - updatedAt ListSdkSecretDto: type: object properties: items: type: array items: $ref: "#/components/schemas/SanitizedSdkSecretDto" resultCount: type: number hasMore: type: boolean totalCount: type: number required: - items - resultCount - hasMore - totalCount RevokeSdkSecretDto: type: object properties: isRevoked: type: boolean required: - isRevoked SerializedProjectBackendConnectionDto: type: object properties: id: type: string createdAt: type: string projectId: type: string ipAddress: type: string required: - id - createdAt - projectId - ipAddress GetRealtimeConnectionsResponseDto: type: object properties: items: type: array items: $ref: "#/components/schemas/SerializedProjectBackendConnectionDto" required: - items CreateProjectDto: type: object properties: name: type: string slug: type: string organizationId: type: string required: - name - slug - organizationId CreatedProjectDto: type: object properties: id: type: string name: type: string slug: type: string organizationId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - slug - organizationId - creatorId - createdAt - updatedAt ListProjectItemDto: type: object properties: id: type: string name: type: string slug: type: string organizationId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - slug - organizationId - creatorId - createdAt - updatedAt ListProjectsResultDto: type: object properties: items: type: array items: $ref: "#/components/schemas/ListProjectItemDto" total: type: number required: - items - total ProjectExistsResponseDto: type: object properties: exists: type: boolean required: - exists ProjectDto: type: object properties: id: type: string name: type: string slug: type: string organizationId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - slug - organizationId - creatorId - createdAt - updatedAt PublicAuthMethodDto: type: object properties: type: type: string enum: - OAUTH2 - EMAIL - PHONE_NUMBER - ANONYMOUS provider: type: string enum: - PASSWORDLESS_EMAIL - EMAIL_AND_PASSWORD - SMS - ANONYMOUS - GOOGLE - GITHUB - GITLAB - MICROSOFT clientId: type: string isUsingDemoConfig: type: boolean scopes: type: array items: type: string required: - type - provider - clientId - isUsingDemoConfig - scopes PublicProjectConfigDto: type: object properties: hostname: type: string id: type: string slug: type: string name: type: string organizationId: type: string authMethods: type: array items: $ref: "#/components/schemas/PublicAuthMethodDto" required: - hostname - id - slug - name - organizationId - authMethods CreateAgentDto: type: object properties: name: type: string projectId: type: string required: - name - projectId CreatedAgentDto: type: object properties: id: type: string name: type: string projectId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - projectId - creatorId - createdAt - updatedAt UpdateAgentDto: type: object properties: name: type: string required: - name UpdatedAgentDto: type: object properties: id: type: string name: type: string projectId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - projectId - creatorId - createdAt - updatedAt DeletedAgentResponseDto: type: object properties: success: type: boolean required: - success ListAgentItem: type: object properties: id: type: string name: type: string projectId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - projectId - creatorId - createdAt - updatedAt ListAgentsResponseDto: type: object properties: items: type: array items: $ref: "#/components/schemas/ListAgentItem" total: type: number required: - items - total GetAgentResponseDto: type: object properties: id: type: string name: type: string projectId: type: string creatorId: type: string createdAt: format: date-time type: string updatedAt: format: date-time type: string required: - id - name - projectId - creatorId - createdAt - updatedAt