Porter Installations API
Operations for managing bundle installations, including install, upgrade, invoke, and uninstall lifecycle actions.
Operations for managing bundle installations, including install, upgrade, invoke, and uninstall lifecycle actions.
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/