launchdarkly Projects API

Manage projects that organize feature flags and other resources.

OpenAPI Specification

launchdarkly-projects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: LaunchDarkly Relay Proxy Access Tokens Projects API
  description: The LaunchDarkly Relay Proxy is a small Go application that connects to the LaunchDarkly streaming API and proxies that connection to SDK clients within an organization's network. It exposes endpoints for status monitoring, flag evaluation, and SDK streaming that mirror the LaunchDarkly service endpoints. Instead of each server making outbound connections to LaunchDarkly's streaming service, multiple servers connect to the local Relay Proxy which maintains a single upstream connection.
  version: '8.0'
  contact:
    name: LaunchDarkly Support
    url: https://support.launchdarkly.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:8030
  description: Default Relay Proxy instance
tags:
- name: Projects
  description: Manage projects that organize feature flags and other resources.
paths:
  /projects:
    get:
      operationId: listProjects
      summary: List projects
      description: Returns a list of all projects in the LaunchDarkly account.
      tags:
      - Projects
      parameters:
      - name: limit
        in: query
        description: Maximum number of projects to return.
        schema:
          type: integer
      - name: offset
        in: query
        description: Number of projects to skip for pagination.
        schema:
          type: integer
      - name: filter
        in: query
        description: A filter expression to apply to the project list.
        schema:
          type: string
      responses:
        '200':
          description: Successful response containing a list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Projects'
        '401':
          description: Unauthorized. Invalid or missing access token.
    post:
      operationId: createProject
      summary: Create a project
      description: Creates a new project with the specified key, name, and default environments.
      tags:
      - Projects
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectBody'
      responses:
        '201':
          description: Project created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Invalid request body.
        '401':
          description: Unauthorized. Invalid or missing access token.
        '409':
          description: A project with the given key already exists.
  /projects/{projectKey}:
    get:
      operationId: getProject
      summary: Get a project
      description: Returns a single project by its key, including its environments and configuration.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/ProjectKey'
      responses:
        '200':
          description: Successful response containing the project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '401':
          description: Unauthorized. Invalid or missing access token.
        '404':
          description: Project not found.
    patch:
      operationId: patchProject
      summary: Update a project
      description: Updates a project using a JSON Patch representation.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/ProjectKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchOperation'
      responses:
        '200':
          description: Project updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Invalid patch request.
        '401':
          description: Unauthorized. Invalid or missing access token.
        '404':
          description: Project not found.
    delete:
      operationId: deleteProject
      summary: Delete a project
      description: Permanently deletes a project and all of its associated feature flags, environments, and other resources.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/ProjectKey'
      responses:
        '204':
          description: Project deleted successfully.
        '401':
          description: Unauthorized. Invalid or missing access token.
        '404':
          description: Project not found.
components:
  schemas:
    Environment:
      type: object
      description: An environment within a project, such as production or staging.
      properties:
        _id:
          type: string
          description: The unique identifier of this environment.
        key:
          type: string
          description: The environment key.
        name:
          type: string
          description: The human-readable name of the environment.
        color:
          type: string
          description: The color swatch for the environment in the dashboard.
          pattern: ^[0-9a-fA-F]{6}$
        apiKey:
          type: string
          description: The SDK key for server-side SDKs.
        mobileKey:
          type: string
          description: The mobile key for mobile SDKs.
        defaultTtl:
          type: integer
          description: The default time-to-live in minutes for flag values.
        secureMode:
          type: boolean
          description: Whether secure mode is enabled for this environment.
        tags:
          type: array
          description: Tags applied to this environment.
          items:
            type: string
        _links:
          $ref: '#/components/schemas/Links'
    Projects:
      type: object
      description: A paginated collection of projects.
      properties:
        items:
          type: array
          description: The list of projects.
          items:
            $ref: '#/components/schemas/Project'
        totalCount:
          type: integer
          description: The total number of projects.
        _links:
          $ref: '#/components/schemas/Links'
    ProjectBody:
      type: object
      description: The request body for creating a new project.
      required:
      - name
      - key
      properties:
        name:
          type: string
          description: The human-readable name of the project.
        key:
          type: string
          description: The project key.
          pattern: ^[a-z0-9]([a-z0-9-])*$
        tags:
          type: array
          description: Tags to apply to the project.
          items:
            type: string
        environments:
          type: array
          description: Initial environments to create with the project.
          items:
            $ref: '#/components/schemas/EnvironmentBody'
    Project:
      type: object
      description: A LaunchDarkly project containing feature flags and environments.
      properties:
        _id:
          type: string
          description: The unique identifier of this project.
        key:
          type: string
          description: The project key.
        name:
          type: string
          description: The human-readable name of the project.
        tags:
          type: array
          description: Tags applied to this project.
          items:
            type: string
        environments:
          $ref: '#/components/schemas/Environments'
        _links:
          $ref: '#/components/schemas/Links'
    PatchOperation:
      type: object
      description: A JSON Patch or semantic patch request.
      properties:
        patch:
          type: array
          description: An array of JSON Patch operations.
          items:
            type: object
            required:
            - op
            - path
            properties:
              op:
                type: string
                description: The patch operation type.
                enum:
                - add
                - remove
                - replace
                - move
                - copy
                - test
              path:
                type: string
                description: The JSON Pointer path to the target field.
              value:
                description: The value to apply for add or replace operations.
        comment:
          type: string
          description: An optional comment describing the change.
    EnvironmentBody:
      type: object
      description: The request body for creating a new environment.
      required:
      - name
      - key
      - color
      properties:
        name:
          type: string
          description: The human-readable name of the environment.
        key:
          type: string
          description: The environment key.
          pattern: ^[a-z0-9]([a-z0-9-])*$
        color:
          type: string
          description: The color swatch for the environment in the dashboard.
          pattern: ^[0-9a-fA-F]{6}$
        defaultTtl:
          type: integer
          description: The default time-to-live in minutes.
        secureMode:
          type: boolean
          description: Whether to enable secure mode.
        tags:
          type: array
          description: Tags to apply to the environment.
          items:
            type: string
    Environments:
      type: object
      description: A collection of environments.
      properties:
        items:
          type: array
          description: The list of environments.
          items:
            $ref: '#/components/schemas/Environment'
        totalCount:
          type: integer
          description: The total number of environments.
        _links:
          $ref: '#/components/schemas/Links'
    Links:
      type: object
      description: HATEOAS links for navigating related resources.
      properties:
        self:
          type: object
          description: A link to this resource.
          properties:
            href:
              type: string
              description: The URL of this resource.
            type:
              type: string
              description: The media type.
      additionalProperties:
        type: object
        properties:
          href:
            type: string
            description: The URL of the linked resource.
          type:
            type: string
            description: The media type.
  parameters:
    ProjectKey:
      name: projectKey
      in: path
      required: true
      description: The project key identifying a LaunchDarkly project.
      schema:
        type: string
        pattern: ^[a-z0-9]([a-z0-9-])*$
  securitySchemes:
    sdkKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Server-side SDK key for authenticating with the Relay Proxy.
    mobileKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Mobile SDK key for authenticating with the Relay Proxy.
externalDocs:
  description: Relay Proxy Documentation
  url: https://launchdarkly.com/docs/sdk/relay-proxy