Deno Projects API

Create, list, update, and delete Deploy projects

OpenAPI Specification

deno-projects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Deno Deploy REST Apps Projects API
  description: The Deno Deploy REST API (v1) provides programmatic access to manage projects and deployments on the Deno Deploy serverless edge platform. It exposes endpoints for creating and managing organizations, projects, deployments, domains, and KV databases, as well as retrieving analytics and usage metrics. Authentication uses HTTP Bearer tokens generated from the Deno Deploy dashboard. This v1 API is scheduled for sunset on July 20, 2026; users should migrate to the v2 API.
  version: '1.0'
  contact:
    name: Deno Deploy Support
    url: https://deno.com/deploy
  termsOfService: https://deno.com/deploy/terms
servers:
- url: https://api.deno.com/v1
  description: Deno Deploy Production API
security:
- bearerAuth: []
tags:
- name: Projects
  description: Create, list, update, and delete Deploy projects
paths:
  /organizations/{organizationId}/projects:
    get:
      operationId: listProjects
      summary: List projects
      description: Returns a paginated list of all projects belonging to the specified organization. Supports filtering by name and sorting by various fields.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: Projects listed successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Project'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createProject
      summary: Create project
      description: Creates a new project within the specified organization. Projects are containers for deployments on Deno Deploy, and each project can have multiple deployments across its lifecycle.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectRequest'
      responses:
        '200':
          description: Project created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /projects/{projectId}:
    get:
      operationId: getProject
      summary: Get project
      description: Retrieves the details of a specific project by its UUID, including its name, associated organization, and current configuration.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectId'
      responses:
        '200':
          description: Project retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateProject
      summary: Update project
      description: Updates mutable fields of an existing project such as its name. Only the fields present in the request body are modified.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectRequest'
      responses:
        '200':
          description: Project updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteProject
      summary: Delete project
      description: Permanently deletes a project and all of its deployments. This operation cannot be undone.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectId'
      responses:
        '200':
          description: Project deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /projects/{projectId}/analytics:
    get:
      operationId: getProjectAnalytics
      summary: Get project analytics
      description: Returns time-series analytics data for a specific project in 15-minute intervals. The time range is limited to a maximum of 24 hours and must be specified using RFC 3339 timestamps.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectId'
      - name: since
        in: query
        required: true
        description: Start of the analytics time range in RFC 3339 format
        schema:
          type: string
          format: date-time
      - name: until
        in: query
        required: true
        description: End of the analytics time range in RFC 3339 format
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Analytics data retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    UpdateProjectRequest:
      type: object
      description: Request body for updating an existing Deno Deploy project
      properties:
        name:
          type: string
          description: New name for the project
          minLength: 3
          maxLength: 26
          pattern: ^[a-z][a-z0-9-]*$
    Project:
      type: object
      description: A Deno Deploy project, which is a container for multiple deployments. Each project has a unique name within its organization and can have custom domains and KV databases associated with it.
      required:
      - id
      - name
      - organizationId
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the project
        name:
          type: string
          description: Human-readable name of the project, unique within the organization
          minLength: 3
          maxLength: 26
          pattern: ^[a-z][a-z0-9-]*$
        organizationId:
          type: string
          format: uuid
          description: UUID of the organization that owns this project
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the project was created
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the project was last modified
    CreateProjectRequest:
      type: object
      description: Request body for creating a new Deno Deploy project
      required:
      - name
      properties:
        name:
          type: string
          description: Unique name for the project within the organization. Must be 3-26 characters, lowercase alphanumeric and hyphens only, and must start with a letter.
          minLength: 3
          maxLength: 26
          pattern: ^[a-z][a-z0-9-]*$
    Analytics:
      type: object
      description: Time-series analytics data returned in 15-minute intervals for an organization or project. Covers request counts, bandwidth usage, and error rates over the specified time range.
      properties:
        fields:
          type: array
          description: Ordered list of field names present in each data row
          items:
            type: object
            properties:
              name:
                type: string
                description: Name of the analytics field
              type:
                type: string
                description: Data type of the field values
        values:
          type: array
          description: Array of data rows, each corresponding to a 15-minute interval
          items:
            type: array
            items: {}
    Error:
      type: object
      description: Standard error response returned by all API error conditions
      required:
      - error
      properties:
        error:
          type: string
          description: Human-readable error message describing what went wrong
  responses:
    BadRequest:
      description: Bad request - invalid parameters or request body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Not found - the requested resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized - missing or invalid Bearer token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    page:
      name: page
      in: query
      description: Page number for paginated results (1-based)
      schema:
        type: integer
        minimum: 1
        default: 1
    projectId:
      name: projectId
      in: path
      required: true
      description: UUID of the project
      schema:
        type: string
        format: uuid
    q:
      name: q
      in: query
      description: Search query to filter results by name or identifier
      schema:
        type: string
    order:
      name: order
      in: query
      description: Sort order direction
      schema:
        type: string
        enum:
        - asc
        - desc
        default: asc
    organizationId:
      name: organizationId
      in: path
      required: true
      description: UUID of the organization
      schema:
        type: string
        format: uuid
    limit:
      name: limit
      in: query
      description: Maximum number of items to return per page
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    sort:
      name: sort
      in: query
      description: Field name to sort results by
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Generate tokens from the Deno Deploy dashboard under Settings > Access Tokens.
externalDocs:
  description: Deno Deploy REST API Documentation
  url: https://docs.deno.com/deploy/api/rest/