Porter Installations API

Operations for managing bundle installations, including install, upgrade, invoke, and uninstall lifecycle actions.

OpenAPI Specification

porter-installations-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Porter Bundle Bundles Installations API
  description: The Porter Bundle API provides programmatic access to managing Cloud Native Application Bundles (CNAB) using Porter. It supports listing and inspecting bundles, managing installations, handling credential sets and parameter sets, and querying installation runs and outputs. Porter implements the CNAB spec for packaging applications with their dependencies into distributable installers.
  version: 1.0.0
  contact:
    name: Porter Community
    url: https://porter.sh/community/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:3000
  description: Porter local server (porter server)
security:
- bearerAuth: []
tags:
- name: Installations
  description: Operations for managing bundle installations, including install, upgrade, invoke, and uninstall lifecycle actions.
paths:
  /v1/installations:
    get:
      operationId: listInstallations
      summary: Porter List installations
      description: Returns all bundle installations managed by Porter. An installation represents a named instance of a bundle that has been installed and tracks the full lifecycle history of that instance.
      tags:
      - Installations
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: List of installations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstallationListResponse'
        '401':
          description: Unauthorized
    post:
      operationId: createInstallation
      summary: Porter Create an installation
      description: Creates a new installation record for a bundle. After creating the installation record, trigger an install action using the run endpoint.
      tags:
      - Installations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInstallationRequest'
      responses:
        '201':
          description: Installation created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Installation'
        '400':
          description: Invalid installation specification
        '401':
          description: Unauthorized
        '409':
          description: Installation already exists
  /v1/installations/{namespace}/{name}:
    get:
      operationId: getInstallation
      summary: Porter Get an installation
      description: Returns the current state and metadata of a specific installation, including its bundle reference, last action status, outputs, and run history summary.
      tags:
      - Installations
      parameters:
      - $ref: '#/components/parameters/namespace_path'
      - $ref: '#/components/parameters/name_path'
      responses:
        '200':
          description: Installation details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Installation'
        '401':
          description: Unauthorized
        '404':
          description: Installation not found
    patch:
      operationId: patchInstallation
      summary: Porter Update an installation
      description: Partially updates the installation's configuration such as bundle reference, parameters, credentials, or labels.
      tags:
      - Installations
      parameters:
      - $ref: '#/components/parameters/namespace_path'
      - $ref: '#/components/parameters/name_path'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchInstallationRequest'
      responses:
        '200':
          description: Installation updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Installation'
        '400':
          description: Invalid request
        '401':
          description: Unauthorized
        '404':
          description: Installation not found
    delete:
      operationId: deleteInstallation
      summary: Porter Delete an installation
      description: Deletes the installation record and all associated run history. This does not execute an uninstall action on the underlying resources.
      tags:
      - Installations
      parameters:
      - $ref: '#/components/parameters/namespace_path'
      - $ref: '#/components/parameters/name_path'
      responses:
        '204':
          description: Installation deleted
        '401':
          description: Unauthorized
        '404':
          description: Installation not found
components:
  schemas:
    CreateInstallationRequest:
      type: object
      description: Request body for creating a new installation.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the installation.
        namespace:
          type: string
          description: Porter namespace for the installation.
        bundle:
          type: object
          description: Bundle reference for the installation.
          properties:
            repository:
              type: string
            version:
              type: string
        parameters:
          type: object
          additionalProperties: {}
          description: Parameter values for the installation.
        credentialSets:
          type: array
          items:
            type: string
        parameterSets:
          type: array
          items:
            type: string
        labels:
          type: object
          additionalProperties:
            type: string
    InstallationStatus:
      type: object
      description: Current state of an installation.
      properties:
        runID:
          type: string
          description: ID of the most recent run.
        action:
          type: string
          description: Most recently executed action.
          enum:
          - install
          - upgrade
          - invoke
          - uninstall
        result:
          type: string
          description: Result of the most recent action.
          enum:
          - succeeded
          - failed
          - running
          - pending
          - cancelled
        bundleReference:
          type: string
          description: OCI reference to the bundle used in the most recent run.
        created:
          type: string
          format: date-time
          description: When the installation was first created.
        modified:
          type: string
          format: date-time
          description: When the installation status was last updated.
    Installation:
      type: object
      description: A named instance of a bundle that has been installed and is tracked by Porter. Captures the full lifecycle state of a bundle deployment.
      properties:
        id:
          type: string
          description: Unique identifier for this installation.
        name:
          type: string
          description: Name of the installation, unique within its namespace.
        namespace:
          type: string
          description: Porter namespace this installation belongs to.
        bundle:
          type: object
          description: Reference to the bundle that was installed.
          properties:
            repository:
              type: string
              description: OCI repository of the bundle.
            version:
              type: string
              description: Version of the bundle installed.
            digest:
              type: string
              description: OCI digest of the bundle image.
        status:
          $ref: '#/components/schemas/InstallationStatus'
        parameters:
          type: object
          description: Parameter values provided to the installation.
          additionalProperties: {}
        credentialSets:
          type: array
          description: Names of credential sets used by this installation.
          items:
            type: string
        parameterSets:
          type: array
          description: Names of parameter sets used by this installation.
          items:
            type: string
        labels:
          type: object
          additionalProperties:
            type: string
          description: Labels for categorizing or filtering this installation.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Annotations for storing arbitrary metadata.
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the installation was created.
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the installation was last updated.
    PatchInstallationRequest:
      type: object
      description: Request body for partially updating an installation.
      properties:
        bundle:
          type: object
          properties:
            repository:
              type: string
            version:
              type: string
        parameters:
          type: object
          additionalProperties: {}
        credentialSets:
          type: array
          items:
            type: string
        parameterSets:
          type: array
          items:
            type: string
        labels:
          type: object
          additionalProperties:
            type: string
    InstallationListResponse:
      type: object
      description: Paginated list of installations.
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Installation'
        total:
          type: integer
          description: Total number of matching installations.
  parameters:
    name_path:
      name: name
      in: path
      required: true
      description: Name of the resource.
      schema:
        type: string
    namespace:
      name: namespace
      in: query
      required: false
      description: Porter namespace to scope the query to. Defaults to the current namespace configured in Porter's context.
      schema:
        type: string
    namespace_path:
      name: namespace
      in: path
      required: true
      description: Porter namespace of the resource.
      schema:
        type: string
    skip:
      name: skip
      in: query
      required: false
      description: Number of records to skip for pagination.
      schema:
        type: integer
        minimum: 0
        default: 0
    name:
      name: name
      in: query
      required: false
      description: Filter results by resource name.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of records to return per page.
      schema:
        type: integer
        minimum: 1
        maximum: 500
        default: 100
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token for authenticating to the Porter server API.
externalDocs:
  description: Porter Documentation
  url: https://porter.sh/docs/