openapi: 3.1.1 info: title: Alpic analytics projects API version: 1.0.0 servers: - url: https://api.alpic.ai security: - bearerAuth: [] tags: - name: projects paths: /v1/projects/{projectId}: patch: operationId: projects.update.v1 summary: Update a project description: Update project settings tags: - projects parameters: - name: projectId in: path required: true schema: type: string description: The ID of the project requestBody: required: false content: application/json: schema: type: object properties: name: type: string minLength: 1 maxLength: 100 description: The new name for the project sourceRepository: anyOf: - type: string - type: 'null' description: The source repository to connect to the project responses: '200': description: The project has been updated successfully content: application/json: schema: type: object properties: id: type: string name: type: string teamId: type: string sourceRepository: anyOf: - type: string - type: 'null' runtime: enum: - python3.13 - python3.14 - node22 - node24 type: string transport: anyOf: - enum: - stdio - sse - streamablehttp type: string - type: 'null' rootDirectory: anyOf: - type: string - type: 'null' buildCommand: anyOf: - type: string - type: 'null' buildOutputDir: anyOf: - type: string - type: 'null' installCommand: anyOf: - type: string - type: 'null' startCommand: anyOf: - type: string - type: 'null' createdAt: type: string format: date-time x-native-type: date productionEnvironment: anyOf: - type: object properties: id: type: string name: type: string mcpServerUrl: type: string domains: type: array items: type: object properties: domain: type: string status: enum: - ongoing - deployed - failed type: string createdAt: type: string format: date-time x-native-type: date required: - domain - status - createdAt latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - mcpServerUrl - domains - latestDeployment - type: 'null' environments: type: array items: type: object properties: id: type: string name: type: string sourceBranch: anyOf: - type: string - type: 'null' mcpServerUrl: type: string createdAt: type: string format: date-time x-native-type: date projectId: type: string latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - sourceBranch - mcpServerUrl - createdAt - projectId - latestDeployment required: - id - name - teamId - sourceRepository - runtime - transport - rootDirectory - buildCommand - buildOutputDir - installCommand - startCommand - createdAt - productionEnvironment - environments '400': description: '400' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: BAD_REQUEST status: const: 400 message: type: string default: Bad Request data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message '403': description: '403' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: FORBIDDEN status: const: 403 message: type: string default: Forbidden data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message '404': description: '404' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: NOT_FOUND status: const: 404 message: type: string default: Not Found data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message get: operationId: projects.get.v1 summary: Get a project description: Get a project by ID tags: - projects parameters: - name: projectId in: path required: true schema: type: string description: The ID of the project responses: '200': description: The project details content: application/json: schema: type: object properties: id: type: string name: type: string teamId: type: string sourceRepository: anyOf: - type: string - type: 'null' runtime: enum: - python3.13 - python3.14 - node22 - node24 type: string transport: anyOf: - enum: - stdio - sse - streamablehttp type: string - type: 'null' rootDirectory: anyOf: - type: string - type: 'null' buildCommand: anyOf: - type: string - type: 'null' buildOutputDir: anyOf: - type: string - type: 'null' installCommand: anyOf: - type: string - type: 'null' startCommand: anyOf: - type: string - type: 'null' createdAt: type: string format: date-time x-native-type: date productionEnvironment: anyOf: - type: object properties: id: type: string name: type: string mcpServerUrl: type: string domains: type: array items: type: object properties: domain: type: string status: enum: - ongoing - deployed - failed type: string createdAt: type: string format: date-time x-native-type: date required: - domain - status - createdAt latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - mcpServerUrl - domains - latestDeployment - type: 'null' environments: type: array items: type: object properties: id: type: string name: type: string sourceBranch: anyOf: - type: string - type: 'null' mcpServerUrl: type: string createdAt: type: string format: date-time x-native-type: date projectId: type: string latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - sourceBranch - mcpServerUrl - createdAt - projectId - latestDeployment required: - id - name - teamId - sourceRepository - runtime - transport - rootDirectory - buildCommand - buildOutputDir - installCommand - startCommand - createdAt - productionEnvironment - environments '404': description: '404' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: NOT_FOUND status: const: 404 message: type: string default: Not Found data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message delete: operationId: projects.delete.v1 summary: Delete a project description: Delete a project and all its environments tags: - projects parameters: - name: projectId in: path required: true schema: type: string description: The ID of the project responses: '200': description: The project has been deleted successfully content: application/json: schema: type: object properties: success: const: true required: - success '404': description: '404' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: NOT_FOUND status: const: 404 message: type: string default: Not Found data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message /v1/projects: get: operationId: projects.list.v1 summary: List projects description: List all projects for a team tags: - projects parameters: - name: teamId in: query schema: type: string allowEmptyValue: true allowReserved: true responses: '200': description: The list of projects content: application/json: schema: type: array items: type: object properties: id: type: string name: type: string teamId: type: string sourceRepository: anyOf: - type: string - type: 'null' runtime: enum: - python3.13 - python3.14 - node22 - node24 type: string transport: anyOf: - enum: - stdio - sse - streamablehttp type: string - type: 'null' rootDirectory: anyOf: - type: string - type: 'null' buildCommand: anyOf: - type: string - type: 'null' buildOutputDir: anyOf: - type: string - type: 'null' installCommand: anyOf: - type: string - type: 'null' startCommand: anyOf: - type: string - type: 'null' createdAt: type: string format: date-time x-native-type: date productionEnvironment: anyOf: - type: object properties: id: type: string name: type: string mcpServerUrl: type: string domains: type: array items: type: object properties: domain: type: string status: enum: - ongoing - deployed - failed type: string createdAt: type: string format: date-time x-native-type: date required: - domain - status - createdAt latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - mcpServerUrl - domains - latestDeployment - type: 'null' environments: type: array items: type: object properties: id: type: string name: type: string sourceBranch: anyOf: - type: string - type: 'null' mcpServerUrl: type: string createdAt: type: string format: date-time x-native-type: date projectId: type: string latestDeployment: anyOf: - type: object properties: id: type: string status: enum: - ongoing - deployed - failed - canceled type: string sourceCommitId: anyOf: - type: string - type: 'null' sourceCommitMessage: anyOf: - type: string - type: 'null' completedAt: anyOf: - type: string format: date-time x-native-type: date - type: 'null' required: - id - status - sourceCommitId - sourceCommitMessage - completedAt - type: 'null' required: - id - name - sourceBranch - mcpServerUrl - createdAt - projectId - latestDeployment required: - id - name - teamId - sourceRepository - runtime - transport - rootDirectory - buildCommand - buildOutputDir - installCommand - startCommand - createdAt - productionEnvironment - environments '400': description: '400' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: BAD_REQUEST status: const: 400 message: type: string default: Bad Request data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message '404': description: '404' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: NOT_FOUND status: const: 404 message: type: string default: Not Found data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message post: operationId: projects.create.v1 summary: Create a project description: Create a project for a team tags: - projects requestBody: required: true content: application/json: schema: type: object properties: teamId: type: string name: type: string minLength: 1 maxLength: 100 sourceRepository: type: string branchName: type: string minLength: 1 runtime: enum: - python3.13 - python3.14 - node22 - node24 type: string transport: enum: - stdio - sse - streamablehttp type: string rootDirectory: type: string settings: type: object properties: installCommand: type: string buildCommand: type: string buildOutputDir: type: string startCommand: type: string default: {} environmentVariables: type: array items: type: object properties: key: type: string minLength: 2 pattern: ^[a-zA-Z]([a-zA-Z0-9_])+$ value: type: string minLength: 1 isSecret: type: boolean default: false required: - key - value default: [] required: - name - runtime responses: '200': description: The project has been created successfully content: application/json: schema: type: object properties: id: type: string name: type: string teamId: type: string environments: type: array items: type: object properties: id: type: string name: type: string required: - id - name productionEnvironment: anyOf: - type: object properties: id: type: string name: type: string required: - id - name - type: 'null' sourceRepository: anyOf: - type: string - type: 'null' runtime: enum: - python3.13 - python3.14 - node22 - node24 type: string transport: anyOf: - enum: - stdio - sse - streamablehttp type: string - type: 'null' rootDirectory: anyOf: - type: string - type: 'null' buildCommand: anyOf: - type: string - type: 'null' buildOutputDir: anyOf: - type: string - type: 'null' installCommand: anyOf: - type: string - type: 'null' startCommand: anyOf: - type: string - type: 'null' createdAt: type: string format: date-time x-native-type: date required: - id - name - teamId - environments - productionEnvironment - sourceRepository - runtime - transport - rootDirectory - buildCommand - buildOutputDir - installCommand - startCommand - createdAt '400': description: '400' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: BAD_REQUEST status: const: 400 message: type: string default: Bad Request data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message '403': description: '403' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: FORBIDDEN status: const: 403 message: type: string default: Forbidden data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message '404': description: '404' content: application/json: schema: oneOf: - type: object properties: defined: const: true code: const: NOT_FOUND status: const: 404 message: type: string default: Not Found data: {} required: - defined - code - status - message - type: object properties: defined: const: false code: type: string status: type: number message: type: string data: {} required: - defined - code - status - message components: securitySchemes: bearerAuth: type: http description: Bearer token for authentication. Use an API key from the API Keys page in team settings, or an OAuth access token. scheme: bearer