Replicated releases API
The releases API from Replicated — 13 operation(s) for releases.
The releases API from Replicated — 13 operation(s) for releases.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/replicated-releases-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.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
servers:
- url: https://api.replicated.com/vendor/v3
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'
tags:
- releases
summary: Demote a channel release.
operationId: demoteChannelRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: ChannelID
description: Channel identifier
name: channel_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/demoteChannelRelease'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
description: Demote channel release parameters.
/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'
tags:
- releases
summary: Un-demote a channel release.
operationId: unDemoteChannelRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: ChannelID
description: Channel identifier
name: channel_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/unDemoteChannelRelease'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
description: UnDemote channel release parameters.
/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'
tags:
- releases
summary: Create a new release.
operationId: createRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
responses:
'201':
$ref: '#/components/responses/createRelease'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
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
description: Create release parameters.
/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'
tags:
- releases
summary: Draft a release for an app.
operationId: draftRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/draftReleaseResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
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
description: Create draft release parameters.
/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'
tags:
- releases
summary: Get a release by sequence.
operationId: getRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/getRelease'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
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'
tags:
- releases
summary: Update a release.
operationId: updateRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/updateRelease'
'400':
$ref: '#/components/responses/updateReleaseError'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
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
description: Update release parameters.
/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'
tags:
- releases
summary: Report a compatibility result.
operationId: reportCompatibilityResult
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'201':
$ref: '#/components/responses/compatibilityResponse'
'400':
$ref: '#/components/responses/compatibilityErrorResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
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
description: Report Compatibility result parameters.
/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'
tags:
- releases
summary: Get exposure counts for a release.
operationId: getReleaseExposure
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/getReleaseExposure'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/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'
tags:
- releases
summary: Promote a release.
operationId: promoteRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/promoteReleaseResponse'
'400':
$ref: '#/components/responses/promoteReleaseErrorResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
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
description: Promote release parameters.
/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'
tags:
- releases
summary: Test a release.
operationId: testRelease
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: Sequence
description: Release identifier
name: sequence
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/testReleaseResponse'
'400':
$ref: '#/components/responses/testReleaseErrorResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/testReleaseErrorResponse'
'412':
$ref: '#/components/responses/testReleaseErrorResponse'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
description: Promote release parameters.
/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'
tags:
- releases
summary: List releases for an app.
operationId: listReleases
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: PageSize
description: Page size
name: pageSize
in: query
schema:
type: integer
format: int64
default: 20
- x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
schema:
type: integer
format: int64
- x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/listReleasesResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/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'
tags:
- releases
summary: List active releases for an app.
operationId: listActiveReleases
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: PageSize
description: Page size
name: pageSize
in: query
schema:
type: integer
format: int64
default: 20
- x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
schema:
type: integer
format: int64
- x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
schema:
type: boolean
responses:
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/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'
tags:
- releases
summary: Archive releases.
operationId: archiveReleases
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/atchiveReleasesResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
properties:
sequences:
description: The release sequences to archive
type: array
items:
type: integer
format: int64
x-go-name: Sequences
description: Archive releases parameters.
/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'
tags:
- releases
summary: Find releases containing a container image reference.
operationId: getImageReleaseSearch
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: PageSize
description: Page size
name: pageSize
in: query
schema:
type: integer
format: int64
default: 20
- x-go-name: CurrentPage
description: Current page
name: currentPage
in: query
schema:
type: integer
format: int64
- x-go-name: Image
description: Image reference to find across releases.
name: image
in: query
required: true
schema:
type: string
- x-go-name: Digest
description: Optional scan digest from Security Center (sha256:...).
name: digest
in: query
schema:
type: string
responses:
'200':
$ref: '#/components/responses/getImageReleaseSearch'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
components:
schemas:
GitHubRef:
type: object
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
Chart:
type: object
properties:
appVersion:
type: string
x-go-name: AppVersion
archiveSize:
type: integer
format: int64
x-go-name: ArchiveSize
error:
type: string
x-go-name: Error
name:
type: string
x-go-name: Name
status:
$ref: '#/components/schemas/ChartStatus'
updatedAt:
type: string
format: date-time
x-go-name: UpdatedAt
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
HelmInstallabilityIssue:
type: object
properties:
message:
type: string
x-go-name: Message
resources:
type: array
items:
$ref: '#/components/schemas/HelmUnavailableResource'
x-go-name: Resources
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
InstallerTypeHelm:
type: object
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
LintExpression:
type: object
properties:
message:
type: string
x-go-name: Message
path:
type: string
x-go-name: Path
rule:
type: string
x-go-name: Rule
type:
type: string
x-go-name: Type
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
CompatibilityResult:
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
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
ReleaseChannelExposure:
type: object
title: ReleaseChannelExposure is the per-channel customer breakdown for a release.
properties:
customer_count:
type: integer
format: int64
x-go-name: CustomerCount
id:
type: string
x-go-name: ID
name:
type: string
x-go-name: Name
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/exposure
ImageReleaseSearchResponse:
type: object
properties:
active:
$ref: '#/components/schemas/ImageReleaseSearchBucket'
all:
$ref: '#/components/schemas/ImageReleaseSearchBucket'
image:
type: string
x-go-name: Image
x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/releases
SupportedVersion:
type: object
properties:
nodes_max:
type: integer
format: int64
x-go-name: NodesMax
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cluster/types
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
ClusterDistributionStatus:
type: object
properties:
enabled:
type: boolean
x-go-name: Enabled
status:
type: string
x-go-name: Status
status_message:
type: string
x-go-name: StatusMessage
versions:
type: string
x-go-name: Versions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cluster/types
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: '#/components/schemas/ClusterDistributionStatus'
version_details:
type: array
items:
$ref: '#/components/schemas/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
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
ChartStatus:
type: string
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/release
InstallerTypeKotsConfig:
type: object
properties:
apiVersion:
type: string
x-go-name: APIVersion
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
ImageReleaseSearchBucket:
type: object
properties:
releases:
type: array
items:
$ref: '#/components/schemas/ImageReleaseSearchRelease'
x-go-name: Releases
total_active_instances:
type: integer
format: int64
x-go-name: TotalActiveInstances
total_releases:
type: integer
format: int64
x-go-name: TotalReleases
x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/releases
Channel:
type: object
properties:
adoptionRate:
type: array
items:
$ref: '#/components/schemas/CustomerAdoption'
x-go-name: AdoptionRate
airgapDiffBundlesEnabled:
type: boolean
x-go-name: AirgapDiffBundlesEnabled
airgapDockerRegistryFormatEnabled:
type: boolean
x-go-name: AirgapDockerRegistryFormatEnabled
allowPublishableKey:
type: boolean
x-go-name: AllowPublishableKey
appId:
type: string
x-go-name: AppID
appName:
type: string
x-go-name: AppName
appSlug:
type: string
x-go-name: AppSlug
buildAirgapAutomatically:
type: boolean
x-go-name: BuildAirgapAutomatically
channelIcon:
# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/replicated/refs/heads/main/openapi/replicated-releases-api-openapi.yml