openapi: 3.1.0 info: title: Porter Bundle Bundles 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: Bundles description: Operations for searching, inspecting, and managing CNAB bundles published to OCI registries. paths: /v1/bundles: get: operationId: listBundles summary: Porter List bundles description: Returns a list of bundles that have been published to or pulled from OCI registries and are known to Porter. Results can be filtered by namespace and name. tags: - Bundles parameters: - $ref: '#/components/parameters/namespace' - $ref: '#/components/parameters/name' - $ref: '#/components/parameters/skip' - $ref: '#/components/parameters/limit' responses: '200': description: List of bundles content: application/json: schema: $ref: '#/components/schemas/BundleListResponse' '401': description: Unauthorized '500': description: Internal server error /v1/bundles/{namespace}/{name}: get: operationId: getBundle summary: Porter Get a bundle description: Returns metadata and the full bundle definition for a specific bundle version, including its actions, parameters, credentials, outputs, and dependencies. tags: - Bundles parameters: - $ref: '#/components/parameters/namespace_path' - $ref: '#/components/parameters/name_path' - name: version in: query required: false description: Specific version of the bundle to retrieve. Defaults to latest. schema: type: string responses: '200': description: Bundle details content: application/json: schema: $ref: '#/components/schemas/Bundle' '401': description: Unauthorized '404': description: Bundle not found components: parameters: name_path: name: name in: path required: true description: Name of the resource. 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 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 schemas: BundleParameter: type: object description: A parameter that can be passed to the bundle at execution time. properties: type: type: string description: JSON Schema type of the parameter. description: type: string description: Description of the parameter's purpose. required: type: boolean description: Whether the parameter is required. default: description: Default value for the parameter. sensitive: type: boolean description: If true, the parameter value contains sensitive data. enum: type: array description: Allowed values for the parameter. items: {} Bundle: type: object description: A Cloud Native Application Bundle (CNAB) known to Porter, including its metadata, actions, parameters, credentials, outputs, and dependencies. properties: name: type: string description: Name of the bundle. version: type: string description: Semantic version of the bundle. description: type: string description: Human-readable description of what the bundle installs. registry: type: string description: OCI registry where the bundle is published. reference: type: string description: Full OCI reference to the bundle image, including registry, name, and tag. example: ghcr.io/getporter/examples/porter-hello:v0.2.0 actions: type: object description: Custom actions defined by the bundle in addition to the standard CNAB actions. additionalProperties: $ref: '#/components/schemas/BundleAction' parameters: type: object description: Parameter definitions for configuring the bundle at execution time. additionalProperties: $ref: '#/components/schemas/BundleParameter' credentials: type: object description: Credential definitions required by the bundle. additionalProperties: $ref: '#/components/schemas/BundleCredential' outputs: type: object description: Output definitions for values produced by the bundle. additionalProperties: $ref: '#/components/schemas/BundleOutput' dependencies: type: object description: Dependencies on other bundles required by this bundle. additionalProperties: $ref: '#/components/schemas/BundleDependency' labels: type: object additionalProperties: type: string description: Arbitrary labels for the bundle. BundleDependency: type: object description: A dependency on another bundle that must be installed first. properties: bundle: type: string description: OCI reference to the dependent bundle. version: type: string description: Version constraint for the dependency. BundleOutput: type: object description: An output value produced by the bundle during an action. properties: type: type: string description: JSON Schema type of the output value. description: type: string description: Description of the output's purpose. sensitive: type: boolean description: If true, the output contains sensitive data. path: type: string description: File path inside the bundle container where the output is written. BundleAction: type: object description: A custom action defined by the bundle. properties: description: type: string description: Description of what this action does. modifies: type: boolean description: If true, the action modifies the installation state. stateless: type: boolean description: If true, the action does not require an existing installation. BundleListResponse: type: object description: Paginated list of bundles. properties: items: type: array items: $ref: '#/components/schemas/Bundle' total: type: integer description: Total number of matching bundles. BundleCredential: type: object description: A credential required by the bundle for accessing external resources. properties: description: type: string description: Description of what this credential is used for. required: type: boolean description: Whether the credential is required. path: type: string description: File path where the credential is written inside the bundle container. env: type: string description: Environment variable name where the credential is injected. 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/