Replicated channels API
The channels API from Replicated — 7 operation(s) for channels.
The channels API from Replicated — 7 operation(s) for channels.
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-channels-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 Channels 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: channels
paths:
/app/{app_id}/channel:
post:
security:
- api_key: []
description: 'Create a new channel for the specified app, allowing for configuration of channel properties such as name, description, and feature flags.
Required RBAC Policy: kots/app/[:appid]/channel/create'
tags:
- channels
summary: Creates a channel in the KOTS application.
operationId: createChannel
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
responses:
'201':
$ref: '#/components/responses/getChannelResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
required:
- name
properties:
airgapDiffBundlesEnabled:
description: AirgapDiffBundlesEnabled will allow building diff airgap bundles for the channel.
type: boolean
x-go-name: AirgapDiffBundlesEnabled
airgapDockerRegistryFormatEnabled:
description: AirgapDockerRegistryFormatEnabled airgap bundles built after enabling this will use the Docker Registry format.
type: boolean
x-go-name: AirgapDockerRegistryFormatEnabled
allowPublishableKey:
description: AllowPublishableKey when enabled, allows customers to use publishable keys to create customer records and sign up for this channel through the SDK
type: boolean
x-go-name: AllowPublishableKey
buildAirgapAutomatically:
description: BuildAirgapAutomatically when enabled, automatically creates air gap builds for newly promoted releases in this channel.
type: boolean
x-go-name: BuildAirgapAutomatically
channelIcon:
description: ChannelIcon icon of the channel that is to be created.
type: string
x-go-name: ChannelIcon
customHostnameOverrides:
$ref: '#/components/schemas/CustomHostnameOverrides'
description:
description: Description of the channel that is to be created.
type: string
x-go-name: Description
enterprisePartnerChannelID:
description: Enterprise Partner Channel Id to be added to channel.
type: string
x-go-name: EnterprisePartnerChannelID
isDefault:
description: IsDefault indicates if this channel is the default channel for the application.
type: boolean
x-go-name: IsDefault
name:
type: string
x-go-name: Name
semverRequired:
description: SemverRequired when enabled, will cause an error when non semver values are used for new releases
type: boolean
x-go-name: SemverRequired
description: JSON input
required: true
/app/{app_id}/channel/{channel_id}:
get:
security:
- api_key: []
description: 'Retrieve the details of a specific channel within an app, including its metadata and optionally its releases.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/read'
tags:
- channels
summary: Get a channel.
operationId: getChannelProperties
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: ExcludeReleases
description: Exclude releases
name: excludeReleases
in: query
schema:
type: boolean
- x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/getChannelResponse'
'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 properties of an existing channel, such as its name, description, and feature flags.
All properties must be provided in the request body.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/update'
tags:
- channels
summary: Updates an app channel.
operationId: updateChannel
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
responses:
'200':
$ref: '#/components/responses/getChannelResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
required:
- name
properties:
airgapDiffBundlesEnabled:
description: AirgapDiffBundlesEnabled will allow building diff airgap bundles for the channel.
type: boolean
x-go-name: AirgapDiffBundlesEnabled
airgapDockerRegistryFormatEnabled:
description: AirgapDockerRegistryFormatEnabled airgap bundles built after enabling this will use the Docker Registry format.
type: boolean
x-go-name: AirgapDockerRegistryFormatEnabled
allowPublishableKey:
description: AllowPublishableKey when enabled, allows customers to use publishable keys to create customer records and sign up for this channel through the SDK
type: boolean
x-go-name: AllowPublishableKey
buildAirgapAutomatically:
description: BuildAirgapAutomatically when enabled, automatically creates air gap builds for newly promoted releases in this channel.
type: boolean
x-go-name: BuildAirgapAutomatically
channelIcon:
description: Icon of the channel that is to be updated.
type: string
x-go-name: ChannelIcon
customHostnameOverrides:
$ref: '#/components/schemas/CustomHostnameOverrides'
description:
description: Description of the channel that is to be updated.
type: string
x-go-name: Description
isDefault:
description: IsDefault indicates if this channel is the default channel for the application.
type: boolean
x-go-name: IsDefault
name:
description: Name of the channel that is to be updated.
type: string
x-go-name: Name
semverRequired:
description: SemverRequired when enabled, will cause an error when non semver values are used for new releases
type: boolean
x-go-name: SemverRequired
description: Channel update parameters.
delete:
security:
- api_key: []
description: 'Archives the specified channel, making it unavailable for new releases or deployments.
Archived channels can no longer be used but are retained for historical reference.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/archive'
tags:
- channels
summary: Archives an app channel.
operationId: archiveChannel
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
responses:
'200':
$ref: '#/components/responses/responseOk'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
servers:
- url: https://api.replicated.com/vendor/v3
patch:
security:
- api_key: []
description: 'Allow partial updates to a channel''s properties. Only the fields provided in the request body will be updated.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/update'
tags:
- channels
summary: Patches an app channel.
operationId: patchChannel
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
responses:
'200':
$ref: '#/components/responses/getChannelResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
properties:
airgapDiffBundlesEnabled:
description: AirgapDiffBundlesEnabled will allow building diff airgap bundles for the channel.
type: boolean
x-go-name: AirgapDiffBundlesEnabled
airgapDockerRegistryFormatEnabled:
description: AirgapDockerRegistryFormatEnabled airgap bundles built after enabling this will use the Docker Registry format.
type: boolean
x-go-name: AirgapDockerRegistryFormatEnabled
allowPublishableKey:
description: AllowPublishableKey when enabled, allows customers to use publishable keys to create customer records and sign up for this channel through the SDK
type: boolean
x-go-name: AllowPublishableKey
buildAirgapAutomatically:
description: BuildAirgapAutomatically when enabled, automatically creates air gap builds for newly promoted releases in this channel.
type: boolean
x-go-name: BuildAirgapAutomatically
channelIcon:
description: Icon of the channel that is to be updated.
type: string
x-go-name: ChannelIcon
customHostnameOverrides:
$ref: '#/components/schemas/CustomHostnameOverrides'
description:
description: Description of the channel that is to be updated.
type: string
x-go-name: Description
isDefault:
description: IsDefault indicates if this channel is the default channel for the application.
type: boolean
x-go-name: IsDefault
name:
description: Name of the channel that is to be updated.
type: string
x-go-name: Name
semverRequired:
description: SemverRequired when enabled, will cause an error when non semver values are used for new releases
type: boolean
x-go-name: SemverRequired
description: Channel patch parameters.
/app/{app_id}/channel/{channel_id}/adoption:
get:
security:
- api_key: []
description: 'Returns a report of version adoption rates for a channel, grouped by day or week, and filtered by license type and date range.
The report helps track how quickly customers are upgrading to new releases.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/read'
tags:
- channels
summary: Get adoption rates for an app channel.
operationId: getChannelAdoptionReport
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: StartDate
description: Report start date in YYYY-MM-DD format
name: startDate
in: query
required: true
schema:
type: string
format: date-time
- x-go-name: EndDate
description: Report end date in YYYY-MM-DD format
name: endDate
in: query
required: true
schema:
type: string
format: date-time
- x-go-name: LicenseTypes
description: License types to include
name: licenseTypes
in: query
required: true
schema:
type: string
- x-go-name: Interval
description: Interval to group the report by. Valid values are "1d" and "1w". Default is 1d
name: interval
in: query
schema:
type: string
responses:
'200':
$ref: '#/components/responses/getChannelAdoptionReportResponse'
'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}/channel/{channel_id}/delete:
delete:
security:
- api_key: []
description: 'Permanently deletes the specified channel, removing it from the database.
This action is irreversible. The channel cannot have any customers assigned to it.
Default channels and system channels cannot be deleted.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/delete'
tags:
- channels
summary: Permanently deletes an app channel.
operationId: deleteChannel
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
responses:
'200':
$ref: '#/components/responses/responseOk'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
servers:
- url: https://api.replicated.com/vendor/v3
/app/{app_id}/channel/{channel_id}/embeddedcluster/release:
get:
security:
- api_key: []
description: 'Return a .tgz file containing the embedded cluster release for the specified channel and app.
Optional query parameters allow specifying a channel sequence, a customer license file to include, and whether to include an airgap bundle.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/embeddedcluster/release'
tags:
- channels
summary: Get an embedded cluster release.
operationId: getEmbeddedClusterRelease
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: ChannelSequence
description: If provided, downloads the embedded cluster release for the given channel sequence.
name: channelSequence
in: query
schema:
type: integer
format: int64
- x-go-name: CustomerID
description: If provided, includes the customer's license file in the embedded cluster release.
name: customerId
in: query
schema:
type: string
- x-go-name: Airgap
description: If provided, includes the airgap bundle in the embedded cluster release.
name: airgap
in: query
schema:
type: boolean
- x-go-name: Include
description: 'If provided, only the specified components are included in the release.
Comma-separated list of component names: binary, release, license, ec-online-bundle, app-airgap-bundle, ec-airgap-bundle.
When omitted, all components are included.'
name: include
in: query
schema:
type: array
items:
type: string
responses:
'200':
description: ''
'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}/channel/{channel_id}/trends:
get:
security:
- api_key: []
description: 'Return historical and current trends for customer instances on a specific channel, such as median instance age, unique versions, active instances, and upgrade statistics.
The interval for trend comparison is specified via query parameter.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/read'
tags:
- channels
summary: Get customer instance trends for an app channel.
operationId: getChannelInstanceTrends
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
- description: Interval
name: Interval
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/getChannelInstanceTrendsResponse'
'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}/channels:
get:
security:
- api_key: []
description: 'Returns a paginated list of channels for the specified app, with optional filtering by channel name. Channel details and associated releases can be included or excluded using query parameters.
Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/read'
tags:
- channels
summary: List channels for an app.
operationId: listChannels
parameters:
- x-go-name: AppID
description: App identifier
name: app_id
in: path
required: true
schema:
type: string
- x-go-name: ChannelName
description: filter by channel name
name: channelName
in: query
schema:
type: string
- x-go-name: ExcludeDetail
description: Exclude detail
name: excludeDetail
in: query
schema:
type: boolean
- x-go-name: ExcludeAdoption
description: Exclude adoption
name: excludeAdoption
in: query
schema:
type: boolean
- 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: ChannelNameFilter
description: Channel name filter
name: channelNameFilter
in: query
schema:
type: string
- x-go-name: IncludeSecuritySummary
description: Include security summary
name: includeSecuritySummary
in: query
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/listChannelsResponse'
'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
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
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
VersionAdoption:
type: object
properties:
instanceCount:
type: integer
format: int64
x-go-name: InstanceCount
versionLabel:
type: string
x-go-name: VersionLabel
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
InstallerTypeKotsConfig:
type: object
properties:
apiVersion:
type: string
x-go-name: APIVersion
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
InstanceTrends:
type: object
properties:
activeInstancesBefore:
type: integer
format: int64
x-go-name: ActiveInstancesBefore
activeInstancesToday:
type: integer
format: int64
x-go-name: ActiveInstancesToday
completedUpgradesPreviousPeriod:
type: integer
format: int64
x-go-name: CompletedUpgradesPreviousPeriod
completedUpgradesThisPeriod:
type: integer
format: int64
x-go-name: CompletedUpgradesThisPeriod
lastThreeVersionsPercentageBefore:
type: number
format: double
x-go-name: LastThreeVersionsPercentageBefore
lastThreeVersionsPercentageToday:
type: number
format: double
x-go-name: LastThreeVersionsPercentageToday
medianInstanceAgeBefore:
type: integer
format: int64
x-go-name: MedianInstanceAgeBefore
medianInstanceAgeToday:
type: integer
format: int64
x-go-name: MedianInstanceAgeToday
uniqueVersionsBefore:
type: integer
format: int64
x-go-name: UniqueVersionsBefore
uniqueVersionsToday:
type: integer
format: int64
x-go-name: UniqueVersionsToday
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
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:
type: string
x-go-name: ChannelIcon
channelSequence:
type: integer
format: int64
x-go-name: ChannelSequence
channelSlug:
type: string
x-go-name: Slug
chartReleases:
description: ChartReleases is a map of chart name -> []string of version labels
type: array
items:
$ref: '#/components/schemas/HelmChart'
x-go-name: ChartReleases
created:
type: string
format: date-time
x-go-name: Created
currentVersion:
type: string
x-go-name: CurrentVersion
customHostnameOverrides:
$ref: '#/components/schemas/CustomHostnameOverrides'
customers:
$ref: '#/components/schemas/TotalActiveInactiveCustomers'
description:
type: string
x-go-name: Description
embeddedClusterInstallCommand:
type: string
x-go-name: EmbeddedClusterInstallCommand
enterprisePartnerChannelID:
type: string
x-go-name: EnterprisePartnerChannelID
existingClusterInstallCommand:
type: string
x-go-name: ExistingClusterInstallCommand
extraLintRules:
type: array
items:
$ref: '#/components/schemas/ExtraLintRules'
x-go-name: ExtraLintRules
gitHubRef:
$ref: '#/components/schemas/GitHubRef'
hasKurlInstaller:
description: swager:ignore
type: boolean
x-go-name: HasKurlInstaller
hasV1Beta3PreflightSpec:
description: 'HasV1Beta3PreflightSpec is true when the channel''s current release has an external
troubleshoot.sh/v1beta3 Preflight spec (distinct from a chart-embedded one). Only v1beta3 sets it.'
type: boolean
x-go-name: HasV1Beta3PreflightSpec
id:
type: string
x-go-name: ID
isArchived:
type: boolean
x-go-name: IsArchived
isDefault:
type: boolean
x-go-name: IsDefault
isHelmOnly:
type: boolean
x-go-name: IsHelmOnly
latestChannelSequence:
type: integer
format: int64
x-go-name: LatestChannelSequence
name:
type: string
x-go-name: Name
numActiveInstances:
type: integer
format: int64
x-go-name: NumActiveInstances
numReleases:
type: integer
format: int32
x-go-name: NumReleases
releaseNotes:
type: string
x-go-name: ReleaseNotes
releaseSequence:
type: integer
format: int64
x-go-name: ReleaseSequence
releases:
type: array
items:
$ref: '#/components/schemas/KotsChannelRelease'
x-go-name: Releases
replicatedRegistryDomain:
type: string
x-go-name: ReplicatedRegistryDomain
semverRequired:
type: boolean
x-go-name: SemverRequired
semverWarning:
type: string
x-go-name: SemverWarning
targetKotsVersion:
type: string
x-go-name: TargetKotsVersion
updated:
type: string
format: date-time
x-go-name: Updated
x-go-package: github.com/replicatedhq/vandoor/pkg/kots/channel/types
KotsChannelRelease:
type: object
properties:
airgapBuildError:
type: string
x-go-name: AirgapBuildError
airgapBuildStatus:
type: string
x-go-name: AirgapBuildStatus
airgapBundleImages:
type: array
items:
type: string
x-go-name: AirgapBundleImages
channelIcon:
type: string
x-go-name: ChannelIcon
channelId:
type: string
x-go-name: ChannelID
channelName:
type: string
x-go-name: ChannelName
channelSequence:
type: integer
format: int64
x-go-name: ChannelSequence
created:
type: string
format: date-time
x-go-name: Created
createdBy:
$ref: '#/components/schemas/Actor'
customResourceError:
type: string
x-go-name: CustomResourceError
customResourceWarnings:
type: array
items:
type: string
x-go-name: CustomResourceWarnings
demotedAt:
type: string
format: date-time
x-go-name: DemotedAt
embeddedClus
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/replicated/refs/heads/main/openapi/replicated-channels-api-openapi.yml