Incus projects API

The projects API from Incus — 5 operation(s) for projects.

Operations 10

GET /1.0/projects Get the projects #
POST /1.0/projects Add a project #
DELETE /1.0/projects/{name} Delete the project #
GET /1.0/projects/{name} Get the project #
PATCH /1.0/projects/{name} Partially update the project #
POST /1.0/projects/{name} Rename the project #
PUT /1.0/projects/{name} Update the project #
GET /1.0/projects/{name}/access Get who has access to a project #
GET /1.0/projects/{name}/state Get the project state #
GET /1.0/projects?recursion=1 Get the projects #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/incus-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

incus-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: lxc-devel@lists.linuxcontainers.org
    name: Incus upstream
    url: https://github.com/lxc/incus
  description: 'This is the REST API used by all Incus clients.

    Internal endpoints aren''t included in this documentation.


    The Incus API is available over both a local unix+http and remote https API.

    Authentication for local users relies on group membership and access to the unix socket.

    For remote users, the default authentication method is TLS client

    certificates.'
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  title: Incus external REST certificates Projects API
  version: '1.0'
tags:
- name: projects
paths:
  /1.0/projects:
    get:
      description: Returns a list of projects (URLs).
      operationId: projects_get
      parameters:
      - description: Collection filter
        example: default
        in: query
        name: filter
        schema:
          type: string
      responses:
        '200':
          description: API endpoints
          content:
            application/json:
              schema:
                description: Sync response
                properties:
                  metadata:
                    description: List of endpoints
                    example: "[\n  \"/1.0/projects/default\",\n  \"/1.0/projects/foo\"\n]"
                    items:
                      type: string
                    type: array
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get the projects
      tags:
      - projects
    post:
      description: Creates a new project.
      operationId: projects_post
      responses:
        '200':
          $ref: '#/components/responses/EmptySyncResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Add a project
      tags:
      - projects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectsPost'
        description: Project
        required: true
  /1.0/projects/{name}:
    delete:
      description: Removes the project.
      operationId: project_delete
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      - description: Delete project and related artifacts
        in: query
        name: force
        schema:
          type: boolean
      responses:
        '200':
          $ref: '#/components/responses/EmptySyncResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Delete the project
      tags:
      - projects
    get:
      description: Gets a specific project.
      operationId: project_get
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Project
          content:
            application/json:
              schema:
                description: Sync response
                properties:
                  metadata:
                    $ref: '#/components/schemas/Project'
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get the project
      tags:
      - projects
    patch:
      description: Updates a subset of the project configuration.
      operationId: project_patch
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/EmptySyncResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '412':
          $ref: '#/components/responses/PreconditionFailed'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Partially update the project
      tags:
      - projects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectPut'
        description: Project configuration
        required: true
    post:
      description: Renames an existing project.
      operationId: project_post
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '202':
          $ref: '#/components/responses/Operation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Rename the project
      tags:
      - projects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectPost'
        description: Project rename request
        required: true
    put:
      description: Updates the entire project configuration.
      operationId: project_put
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/EmptySyncResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '412':
          $ref: '#/components/responses/PreconditionFailed'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Update the project
      tags:
      - projects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectPut'
        description: Project configuration
        required: true
  /1.0/projects/{name}/access:
    get:
      description: Gets the access information for the project.
      operationId: project_access
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Access
          content:
            application/json:
              schema:
                description: Sync response
                properties:
                  metadata:
                    $ref: '#/components/schemas/Access'
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get who has access to a project
      tags:
      - projects
  /1.0/projects/{name}/state:
    get:
      description: Gets a specific project resource consumption information.
      operationId: project_state_get
      parameters:
      - description: Project name
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Project state
          content:
            application/json:
              schema:
                description: Sync response
                properties:
                  metadata:
                    $ref: '#/components/schemas/ProjectState'
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get the project state
      tags:
      - projects
  /1.0/projects?recursion=1:
    get:
      description: Returns a list of projects (structs).
      operationId: projects_get_recursion1
      parameters:
      - description: Collection filter
        example: default
        in: query
        name: filter
        schema:
          type: string
      responses:
        '200':
          description: API endpoints
          content:
            application/json:
              schema:
                description: Sync response
                properties:
                  metadata:
                    description: List of projects
                    items:
                      $ref: '#/components/schemas/Project'
                    type: array
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get the projects
      tags:
      - projects
components:
  schemas:
    Operation:
      description: Operation represents a background operation
      properties:
        class:
          description: Type of operation (task, token or websocket)
          example: websocket
          type: string
          x-go-name: Class
        created_at:
          description: Operation creation time
          example: '2021-03-23T17:38:37.753398689-04:00'
          format: date-time
          type: string
          x-go-name: CreatedAt
        description:
          description: Description of the operation
          example: Executing command
          type: string
          x-go-name: Description
        err:
          description: Operation error message
          example: Some error message
          type: string
          x-go-name: Err
        id:
          description: UUID of the operation
          example: 6916c8a6-9b7d-4abd-90b3-aedfec7ec7da
          type: string
          x-go-name: ID
        location:
          description: What cluster member this record was found on
          example: server01
          type: string
          x-go-name: Location
        may_cancel:
          description: Whether the operation can be canceled
          example: false
          type: boolean
          x-go-name: MayCancel
        metadata:
          additionalProperties: {}
          description: Operation specific metadata
          example:
            command:
            - bash
            environment:
              HOME: /root
              LANG: C.UTF-8
              PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
              TERM: xterm
              USER: root
            fds:
              '0': da3046cf02c0116febf4ef3fe4eaecdf308e720c05e5a9c730ce1a6f15417f66
              '1': 05896879d8692607bd6e4a09475667da3b5f6714418ab0ee0e5720b4c57f754b
            interactive: true
          type: object
          x-go-name: Metadata
        resources:
          additionalProperties:
            items:
              type: string
            type: array
          description: Affected resources
          example:
            instances:
            - /1.0/instances/foo
          type: object
          x-go-name: Resources
        status:
          description: Status name
          example: Running
          type: string
          x-go-name: Status
        status_code:
          $ref: '#/components/schemas/StatusCode'
        updated_at:
          description: Operation last change
          example: '2021-03-23T17:38:37.753398689-04:00'
          format: date-time
          type: string
          x-go-name: UpdatedAt
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    ProjectPost:
      description: ProjectPost represents the fields required to rename a project
      properties:
        name:
          description: The new name for the project
          example: bar
          type: string
          x-go-name: Name
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    StatusCode:
      format: int64
      title: StatusCode represents a valid operation and container status.
      type: integer
      x-go-package: github.com/lxc/incus/v7/shared/api
    AccessEntry:
      properties:
        identifier:
          description: Certificate fingerprint
          example: 636b69519d27ae3b0e398cb7928043846ce1e3842f0ca7a589993dd913ab8cc9
          type: string
          x-go-name: Identifier
        provider:
          description: Which authorization method the certificate uses
          example: tls, openfga
          type: string
          x-go-name: Provider
        role:
          description: The role associated with the certificate
          example: admin, view, operator
          type: string
          x-go-name: Role
      title: AccessEntry represents an entity having access to the resource.
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    Project:
      description: Project represents a project
      properties:
        config:
          description: Project configuration map (refer to doc/projects.md)
          example:
            features.networks: 'false'
            features.profiles: 'true'
          type: object
          x-go-name: Config
        description:
          description: Description of the project
          example: My new project
          type: string
          x-go-name: Description
        name:
          description: The project name
          example: foo
          readOnly: true
          type: string
          x-go-name: Name
        used_by:
          description: List of URLs of objects using this project
          example:
          - /1.0/images/0e60015346f06627f10580d56ac7fffd9ea775f6d4f25987217d5eed94910a20
          - /1.0/instances/c1
          - /1.0/networks/mybr0
          - /1.0/profiles/default
          - /1.0/storage-pools/default/volumes/custom/blah
          items:
            type: string
          readOnly: true
          type: array
          x-go-name: UsedBy
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    ProjectsPost:
      description: ProjectsPost represents the fields of a new project
      properties:
        config:
          description: Project configuration map (refer to doc/projects.md)
          example:
            features.networks: 'false'
            features.profiles: 'true'
          type: object
          x-go-name: Config
        description:
          description: Description of the project
          example: My new project
          type: string
          x-go-name: Description
        name:
          description: The name of the new project
          example: foo
          type: string
          x-go-name: Name
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    ProjectPut:
      description: ProjectPut represents the modifiable fields of a project
      properties:
        config:
          description: Project configuration map (refer to doc/projects.md)
          example:
            features.networks: 'false'
            features.profiles: 'true'
          type: object
          x-go-name: Config
        description:
          description: Description of the project
          example: My new project
          type: string
          x-go-name: Description
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    Access:
      items:
        $ref: '#/components/schemas/AccessEntry'
      title: Access represents everyone that may access a particular resource.
      type: array
      x-go-package: github.com/lxc/incus/v7/shared/api
    ProjectState:
      description: ProjectState represents the current running state of a project
      properties:
        resources:
          additionalProperties:
            $ref: '#/components/schemas/ProjectStateResource'
          description: Allocated and used resources
          example:
            containers:
              limit: 10
              usage: 4
            cpu:
              limit: 20
              usage: 16
          readOnly: true
          type: object
          x-go-name: Resources
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
    ProjectStateResource:
      description: ProjectStateResource represents the state of a particular resource in a project
      properties:
        Limit:
          description: Limit for the resource (-1 if none)
          example: 10
          format: int64
          type: integer
        Usage:
          description: Current usage for the resource
          example: 4
          format: int64
          type: integer
      type: object
      x-go-package: github.com/lxc/incus/v7/shared/api
  responses:
    PreconditionFailed:
      description: Precondition Failed
      content:
        application/json:
          schema:
            properties:
              error:
                example: precondition failed
                type: string
                x-go-name: Error
              error_code:
                example: 412
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            properties:
              error:
                example: internal server error
                type: string
                x-go-name: Error
              error_code:
                example: 500
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            properties:
              error:
                example: not authorized
                type: string
                x-go-name: Error
              error_code:
                example: 403
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            properties:
              error:
                example: bad request
                type: string
                x-go-name: Error
              error_code:
                example: 400
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object
    Operation:
      description: Operation
      content:
        application/json:
          schema:
            properties:
              metadata:
                $ref: '#/components/schemas/Operation'
              operation:
                example: /1.0/operations/66e83638-9dd7-4a26-aef2-5462814869a1
                type: string
                x-go-name: Operation
              status:
                example: Operation created
                type: string
                x-go-name: Status
              status_code:
                example: 100
                format: int64
                type: integer
                x-go-name: StatusCode
              type:
                example: async
                type: string
                x-go-name: Type
            type: object
    EmptySyncResponse:
      description: Empty sync response
      content:
        application/json:
          schema:
            properties:
              status:
                example: Success
                type: string
                x-go-name: Status
              status_code:
                example: 200
                format: int64
                type: integer
                x-go-name: StatusCode
              type:
                example: sync
                type: string
                x-go-name: Type
            type: object