Replicated releases API
The releases API from Replicated — 13 operation(s) for releases.
The releases API from Replicated — 13 operation(s) for releases.
swagger: '2.0'
info:
description: Manage enterprise portal users, install options, branding, documentation, email templates, and access control.
title: Vendor API V3 apps releases API
contact:
name: Replicated, Inc.
url: http://www.replicated.com/
email: info@replicated.com
version: 3.0.0
host: api.replicated.com
basePath: /vendor/v3
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: releases
paths:
/app/{app_id}/channel/{channel_id}/release/{sequence}/demote:
post:
security:
- api_key: []
description: 'Demote a specific release from a channel, making it unavailable for new installations or upgrades via that channel.
Demoted releases can be un-demoted if needed.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/release/[:releasesequence]/demote'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Demote a channel release.
operationId: demoteChannelRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: string
x-go-name: ChannelID
description: Channel identifier
name: channel_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: Demote channel release parameters.
name: Body
in: body
schema:
type: object
responses:
'200':
$ref: '#/responses/demoteChannelRelease'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/channel/{channel_id}/release/{sequence}/undemote:
post:
security:
- api_key: []
description: 'Restore a previously demoted release to a channel, making it available again for installations and upgrades via that channel.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/release/[:releasesequence]/undemote'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Un-demote a channel release.
operationId: unDemoteChannelRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: string
x-go-name: ChannelID
description: Channel identifier
name: channel_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: UnDemote channel release parameters.
name: Body
in: body
schema:
type: object
responses:
'200':
$ref: '#/responses/unDemoteChannelRelease'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release:
post:
security:
- api_key: []
description: 'Create a new release for the specified app using the provided release specification.
The release can be configured with a raw or gzipped spec and will be available for promotion to channels.
Required RBAC Policy: kots/app/[:appid]/release/create'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Create a new release.
operationId: createRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- description: Create release parameters.
name: Body
in: body
schema:
type: object
properties:
spec:
description: The spec to use in the new release
type: string
x-go-name: Spec
spec_gzip:
description: The spec to use in the new release, but gzipped
type: array
items:
type: integer
format: uint8
x-go-name: SpecGzip
responses:
'201':
$ref: '#/responses/createRelease'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/draft:
post:
security:
- api_key: []
description: 'Create a draft release for the specified app, which can be further edited and eventually promoted.
Supports both KOTS and Builders draft types depending on team entitlements.
Required RBAC Policy: kots/app/[:appid]/release/create'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Draft a release for an app.
operationId: draftRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- description: Create draft release parameters.
name: Body
in: body
schema:
type: object
properties:
isBuildersRelease:
description: When true, the draft will be a Builders draft. Otherwise it will be a KOTS draft.
type: boolean
x-go-name: IsBuildersRelease
responses:
'200':
$ref: '#/responses/draftReleaseResponse'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/{sequence}:
get:
security:
- api_key: []
description: 'Retrieve the details of a specific release for an app, identified by its sequence number.
The response includes the release specification, metadata, and status information.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/read'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Get a release by sequence.
operationId: getRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
responses:
'200':
$ref: '#/responses/getRelease'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
put:
security:
- api_key: []
description: 'Update the specification and metadata for an existing release, identified by its sequence number.
Only non-promoted releases can be updated. Supports raw and gzipped specs.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/update'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Update a release.
operationId: updateRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: Update release parameters.
name: Body
in: body
schema:
type: object
properties:
spec:
description: The spec to use in the release
type: string
x-go-name: Spec
spec_gzip:
description: The spec to use in the release, in gzip format
type: array
items:
type: integer
format: uint8
x-go-name: SpecGzip
responses:
'200':
$ref: '#/responses/updateRelease'
'400':
$ref: '#/responses/updateReleaseError'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/{sequence}/compatibility:
post:
security:
- api_key: []
description: 'Report the compatibility test results for a specific release, including Kubernetes distribution, version, and success or failure details.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/update'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Report a compatibility result.
operationId: reportCompatibilityResult
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: Report Compatibility result parameters.
name: Body
in: body
schema:
type: object
properties:
distribution:
type: string
x-go-name: Distribution
failureAt:
type: string
format: date-time
x-go-name: FailureAt
failureNotes:
type: string
x-go-name: FailureNotes
successAt:
type: string
format: date-time
x-go-name: SuccessAt
successNotes:
type: string
x-go-name: SuccessNotes
version:
type: string
x-go-name: Version
responses:
'201':
$ref: '#/responses/compatibilityResponse'
'400':
$ref: '#/responses/compatibilityErrorResponse'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/{sequence}/exposure:
get:
security:
- api_key: []
description: 'Retrieve the number of active instances running a specific release and the
number of customers with access to it via the channels where it is the
current promoted version, with a per-channel breakdown.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/read'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Get exposure counts for a release.
operationId: getReleaseExposure
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
responses:
'200':
$ref: '#/responses/getReleaseExposure'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/{sequence}/promote:
post:
security:
- api_key: []
description: 'Promote a specific release to one or more channels, making it available for deployment.
Supports setting release notes, version labels, and marking releases as required.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/promote'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Promote a release.
operationId: promoteRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: Promote release parameters.
name: Body
in: body
schema:
type: object
properties:
channelIds:
type: array
items:
type: string
x-go-name: ChannelIDs
ignoreWarnings:
type: boolean
x-go-name: IgnoreWarnings
isRequired:
type: boolean
x-go-name: IsRequired
notifyUsers:
description: Sends email notifications to all Enterprise Portal users on the target channel
type: boolean
x-go-name: NotifyUsers
omitDetailsInResponse:
description: Omits channels, charts, and compatibilityResults details in the response body
type: boolean
x-go-name: OmitDetailsInResponse
releaseNotes:
type: string
x-go-name: ReleaseNotes
releaseNotesGzip:
type: array
items:
type: integer
format: uint8
x-go-name: ReleaseNotesGzip
versionLabel:
type: string
x-go-name: VersionLabel
responses:
'200':
$ref: '#/responses/promoteReleaseResponse'
'400':
$ref: '#/responses/promoteReleaseErrorResponse'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/release/{sequence}/test:
post:
security:
- api_key: []
description: 'Trigger automated tests for a specific release, validating its configuration and compatibility.
Results are reported asynchronously and may include errors or warnings.
Required RBAC Policy: kots/app/[:appid]/releases/test'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Test a release.
operationId: testRelease
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
- description: Promote release parameters.
name: Body
in: body
schema:
type: object
responses:
'200':
$ref: '#/responses/testReleaseResponse'
'400':
$ref: '#/responses/testReleaseErrorResponse'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/testReleaseErrorResponse'
'412':
$ref: '#/responses/testReleaseErrorResponse'
/app/{app_id}/releases:
get:
security:
- api_key: []
description: 'Return a paginated list of all releases for the specified app, including their metadata, status, and sequence numbers.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/read'
produces:
- application/json
schemes:
- https
tags:
- releases
summary: List releases for an app.
operationId: listReleases
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
default: 20
x-go-name: PageSize
description: Page size
name: pageSize
in: query
- type: integer
format: int64
x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
- type: boolean
x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
responses:
'200':
$ref: '#/responses/listReleasesResponse'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/releases/active:
get:
security:
- api_key: []
description: 'Return a list of all active (currently promoted) releases for the specified app.
Active releases are those that will be used by default when installing a particular channel.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/read'
produces:
- application/json
schemes:
- https
tags:
- releases
summary: List active releases for an app.
operationId: listActiveReleases
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
default: 20
x-go-name: PageSize
description: Page size
name: pageSize
in: query
- type: integer
format: int64
x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
- type: boolean
x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
responses:
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/releases/archive:
post:
security:
- api_key: []
description: 'Archive one or more releases for the specified app, making them unavailable for deployment or download.
Active releases cannot be archived.
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/archive'
consumes:
- application/json
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Archive releases.
operationId: archiveReleases
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- description: Archive releases parameters.
name: Body
in: body
schema:
type: object
properties:
sequences:
description: The release sequences to archive
type: array
items:
type: integer
format: int64
x-go-name: Sequences
responses:
'200':
$ref: '#/responses/atchiveReleasesResponse'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
/app/{app_id}/releases/search:
get:
security:
- api_key: []
description: 'Return releases that include the requested image reference in bundle metadata,
split into active releases (latest promoted to each channel) and
all matching releases (paginated).
Required RBAC Policy: kots/app/[:appid]/release/[:releasesequence]/read'
produces:
- application/json
schemes:
- https
tags:
- releases
summary: Find releases containing a container image reference.
operationId: getImageReleaseSearch
parameters:
- type: string
x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
- type: integer
format: int64
default: 20
x-go-name: PageSize
description: Page size
name: pageSize
in: query
- type: integer
format: int64
x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
- type: string
x-go-name: Image
description: Image reference to find across releases.
name: image
in: query
required: true
- type: string
x-go-name: Digest
description: Optional scan digest from Security Center (sha256:...).
name: digest
in: query
responses:
'200':
$ref: '#/responses/getImageReleaseSearch'
'400':
$ref: '#/responses/responseErrBadRequest'
'401':
$ref: '#/responses/responseErrUnauthorized'
'403':
$ref: '#/responses/responseErrForbidden'
'404':
$ref: '#/responses/responseErrNotFound'
definitions:
InstallationTypeKurl:
type: object
properties:
installerVersion:
type: string
x-go-name: InstallerVersion
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
ReleaseExposure:
description: 'ReleaseExposure describes how widely a release is deployed and who has access
to it: the number of active instances running it, and the number of customers
with access to it via the channels where it is the current promoted version.'
type: object
properties:
active_instance_count:
type: integer
format: int64
x-go-name: ActiveInstanceCount
channels:
type: array
items:
$ref: '#/definitions/ReleaseChannelExposure'
x-go-name: Channels
customers_with_access:
type: integer
format: int64
x-go-name: CustomersWithAccess
release_sequence:
type: integer
format: int64
x-go-name: ReleaseSequence
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/exposure
CustomerAdoption:
type: object
properties:
channelId:
type: string
x-go-name: ChannelID
count:
type: integer
format: int64
x-go-name: Count
percent:
type: number
format: double
x-go-name: Percent
releaseSequence:
type: integer
format: int64
x-go-name: ReleaseSequence
semver:
type: string
x-go-name: Semver
totalOnChannel:
type: integer
format: int64
x-go-name: TotalOnChannel
versionsFromLatest:
type: integer
format: int64
x-go-name: VersionsFromLatest
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/customer/sharedtypes
InstallerTypeEmbeddedCluster:
type: object
properties:
proxyRegistryDomain:
type: string
x-go-name: ProxyRegistryDomain
replicatedAppDomain:
type: string
x-go-name: ReplicatedAppDomain
replicatedRegistryDomain:
type: string
x-go-name: ReplicatedRegistryDomain
version:
type: string
x-go-name: InstallerVersion
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
ChartStatus:
type: string
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
SupportedDistributionAndVersions:
type: object
properties:
instance_types:
type: array
items:
type: string
x-go-name: InstanceTypes
nodes_max:
type: integer
format: int64
x-go-name: NodesMax
short_name:
type: string
x-go-name: ShortName
status:
$ref: '#/definitions/ClusterDistributionStatus'
version_details:
type: array
items:
$ref: '#/definitions/SupportedVersion'
x-go-name: VersionDetails
versions:
type: array
items:
type: string
x-go-name: Versions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cluster/types
ValidationError:
type: object
properties:
errors:
type: array
items:
type: string
x-go-name: Errors
supported_distributions:
type: array
items:
$ref: '#/definitions/SupportedDistributionAndVersions'
x-go-name: SupportedDistributions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cluster/types
AirgapBuildSummary:
type: object
title: AirgapBuildSummary is a lightweight snapshot of a channel-release's airgap build state.
properties:
airgapBuildError:
type: string
x-go-name: AirgapBuildError
airgapBuildStatus:
type: string
x-go-name: AirgapBuildStatus
channelId:
type: string
x-go-name: ChannelID
channelName:
type: string
x-go-name: ChannelName
channelSequence:
type: integer
format: int64
x-go-name: ChannelSequence
fullAirgapBuild:
description: 'FullAirgapBuild is true when the channel-release is configured to produce
or has completed with a full airgap bundle.
When false, the worker may still run metadata generation for the
channel-release and that step can fail.'
type: boolean
x-go-name: FullAirgapBuild
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
ImageVulnCounts:
type: object
properties:
counts:
$ref: '#/definitions/VulnCounts'
digest:
type: string
x-go-name: Digest
digest_first_seen_at:
type: string
x-go-name: DigestFirstSeenAt
image_size_bytes:
type: integer
format: int64
x-go-name: ImageSizeBytes
input:
type: string
x-go-name: Input
installation_phase:
description: 'InstallationPhase indicates the Embedded Cluster phase for the image ("", "online", or "airgap").
Application images have the phase "".
Infrastructure images used for Embedded Cluster in both online and airgap have the phase "online" or "airgap".
Infrastructure images used for Embedded Cluster only in airgap have the phase "airgap".'
type: string
x-go-name: InstallationPhase
last_scanned_at:
type: string
x-go-name: LastScannedAt
not_found:
type: boolean
x-go-name: NotFound
sbom_status:
description: SBOM status tracking
type: string
x-go-name: SBOMStatus
sbom_status_message:
type: string
x-go-name: SBOMStatusMessage
sbom_status_updated_at:
type: string
x-go-name: SBOMStatusUpdatedAt
scan_status:
description: Scan status tracking
type: string
x-go-name: ScanStatus
scan_status_message:
type: string
x-go-name: ScanStatusMessage
scan_status_updated_at:
type: string
x-go-name: ScanStatusUpdatedAt
scanned_images:
description: Scan completeness tracking
type: integer
format: int64
x-go-name: ScannedImages
total_images:
type: integer
format: int64
x-go-name: TotalImages
x-go-package: github.com/replicatedhq/vandoor/pkg/securebuild/types
InstallerTypeKotsConfig:
type: object
properties:
apiVersion:
type: string
x-go-name: APIVersion
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
LintResult:
type: object
properties:
isLintingComplete:
type: boolean
x-go-name: IsLintingComplete
lintExpressions:
type: array
items:
$ref: '#/definitions/LintExpression'
x-go-name: LintExpressions
x-go-package: github.com/replicatedhq/vandoor/pkg/lint
InstallerTypeHelm:
type: object
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
AppRelease:
type: object
properties:
airgapBuilds:
description: 'AirgapBuilds is the full history of channel-releases for this release sequence,
including prior re-promotes to the same channel. Populated by GetAppRelease via
GetAirgapBuildStatusesForRelease. Use this for inspect / history views.
For "what should I poll on" after a fresh promote, prefer the top-level
PromoteReleaseResponse.Body.AirgapBuilds, which contains only the channels just
queued by that promote call. The two fields can diverge for releases that have
been promoted before.'
type: array
items:
$ref: '#/definitions/AirgapBuildSummary'
x-go-name: AirgapBuilds
appId:
type: string
x-go-name: AppID
channels:
type: array
items:
$ref: '#/definitions/Channel'
x-go-name: Channels
charts:
type: array
items:
$ref: '#/definitions/Chart'
x-go-name: Charts
compatibilityResults:
type: array
items:
$ref: '#/definitions/CompatibilityResult'
x-go-name: CompatibilityResults
created:
type: string
format: date-time
x-go-name: CreatedAt
createdBy:
$ref: '#/definitions/Actor'
hasKurlInstaller:
type: boolean
x-go-name: HasKurlInstaller
installationTypes:
$ref: '#/definitions/InstallationTypes'
isArchived:
type: boolean
x-go-name: IsArchived
isHelmOnly:
type: boolean
x-go-name: IsHelmOnly
isReleaseNotEditable:
type: boolean
x-go-name: IsReleaseNotEditable
lintResult:
$ref: '#/definitions/LintResult'
mostRecentChannel:
$ref: '#/definitions/KotsChannelRelease'
rawSpec:
type: string
x-go-name: RawSpec
releaseNotes:
type: string
x-go-name: ReleaseNotes
sequence:
type: integer
format: int64
x-go-name: Sequence
spec:
type: string
x-go-name: Spec
updated:
type: string
format: date-time
x-go-name: UpdatedAt
updatedBy:
$ref: '#/definitions/Actor'
userAgent:
type: string
x-go-name: UserAgent
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
GitHubRef:
type: object
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
InstallerTypeReplicatedSDK:
type: object
properties:
sdk
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/replicated/refs/heads/main/openapi/replicated-releases-api-openapi.yml