Depot ProjectService API

Manage Depot projects and project tokens (depot.core.v1.ProjectService).

OpenAPI Specification

depot-dev-projectservice-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Depot BuildKitService ProjectService API
  description: HTTP/JSON view of the Depot API. Depot's API is built on Connect, which offers multiprotocol support for gRPC, gRPC-Web, and HTTP/JSON over the same services. Each remote procedure call (RPC) is invoked as an HTTP POST to a path of the form /{package}.{Service}/{Method}, with a JSON request body and a JSON response body. This document models the documented services for managing projects, project tokens, builds, and BuildKit connections. All requests are authenticated with a Bearer token (an organization API token, user token, or project token) in the Authorization header.
  termsOfService: https://depot.dev/terms
  contact:
    name: Depot Support
    url: https://depot.dev/docs
    email: help@depot.dev
  version: '1.0'
servers:
- url: https://api.depot.dev
security:
- bearerAuth: []
tags:
- name: ProjectService
  description: Manage Depot projects and project tokens (depot.core.v1.ProjectService).
paths:
  /depot.core.v1.ProjectService/ListProjects:
    post:
      operationId: listProjects
      tags:
      - ProjectService
      summary: List projects in the organization.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListProjectsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectsResponse'
  /depot.core.v1.ProjectService/CreateProject:
    post:
      operationId: createProject
      tags:
      - ProjectService
      summary: Create a new project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
  /depot.core.v1.ProjectService/GetProject:
    post:
      operationId: getProject
      tags:
      - ProjectService
      summary: Get a single project by ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectIdRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
  /depot.core.v1.ProjectService/UpdateProject:
    post:
      operationId: updateProject
      tags:
      - ProjectService
      summary: Update an existing project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
  /depot.core.v1.ProjectService/DeleteProject:
    post:
      operationId: deleteProject
      tags:
      - ProjectService
      summary: Delete a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectIdRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
  /depot.core.v1.ProjectService/ResetProjectCache:
    post:
      operationId: resetProjectCache
      tags:
      - ProjectService
      summary: Reset (clear) the build cache for a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectIdRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
  /depot.core.v1.ProjectService/ListProjectTokens:
    post:
      operationId: listProjectTokens
      tags:
      - ProjectService
      summary: List project-scoped tokens for a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectIdRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectTokensResponse'
  /depot.core.v1.ProjectService/CreateProjectToken:
    post:
      operationId: createProjectToken
      tags:
      - ProjectService
      summary: Create a project-scoped token.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProjectTokenResponse'
  /depot.core.v1.ProjectService/DeleteProjectToken:
    post:
      operationId: deleteProjectToken
      tags:
      - ProjectService
      summary: Delete a project-scoped token.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteProjectTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
components:
  schemas:
    DeleteProjectTokenRequest:
      type: object
      required:
      - projectId
      - tokenId
      properties:
        projectId:
          type: string
        tokenId:
          type: string
    ProjectIdRequest:
      type: object
      required:
      - projectId
      properties:
        projectId:
          type: string
          example: 1234567890
    CachePolicy:
      type: object
      description: Retention policy for the project's build cache.
      properties:
        keepBytes:
          type: string
          format: int64
          description: Maximum cache size to retain, in bytes.
        keepDays:
          type: integer
          format: int32
          description: Number of days to retain cache entries.
    UpdateProjectRequest:
      type: object
      required:
      - projectId
      properties:
        projectId:
          type: string
        name:
          type: string
        regionId:
          type: string
        cachePolicy:
          $ref: '#/components/schemas/CachePolicy'
    CreateProjectTokenRequest:
      type: object
      required:
      - projectId
      properties:
        projectId:
          type: string
        description:
          type: string
    CreateProjectRequest:
      type: object
      required:
      - name
      - regionId
      properties:
        name:
          type: string
          example: my-app
        regionId:
          type: string
          example: us-east-1
        cachePolicy:
          $ref: '#/components/schemas/CachePolicy'
    ProjectResponse:
      type: object
      properties:
        project:
          $ref: '#/components/schemas/Project'
    ListProjectsResponse:
      type: object
      properties:
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
    ListProjectsRequest:
      type: object
      properties:
        pageSize:
          type: integer
          format: int32
        pageToken:
          type: string
    CreateProjectTokenResponse:
      type: object
      properties:
        tokenId:
          type: string
        secret:
          type: string
          description: The token secret, returned only once at creation time.
    ProjectToken:
      type: object
      properties:
        tokenId:
          type: string
        description:
          type: string
    Project:
      type: object
      properties:
        projectId:
          type: string
        organizationId:
          type: string
        name:
          type: string
        regionId:
          type: string
        createdAt:
          type: string
          format: date-time
        cachePolicy:
          $ref: '#/components/schemas/CachePolicy'
    EmptyResponse:
      type: object
    ListProjectTokensResponse:
      type: object
      properties:
        tokens:
          type: array
          items:
            $ref: '#/components/schemas/ProjectToken'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A Depot token in the Authorization header as "Bearer {token}". Use an organization API token or user token for project/build management, and a one-time build token (from CreateBuild) for BuildKit endpoint calls.