---
title: "Updates an app channel."
method: PUT
path: "/app/{app_id}/channel/{channel_id}"
tags: ["channels"]
---

# Updates an app channel.

`PUT /app/{app_id}/channel/{channel_id}`

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

## Path parameters

- `app_id` string, required
- `channel_id` string, required

## Request body

- object
  - `airgapDiffBundlesEnabled` boolean — AirgapDiffBundlesEnabled will allow building diff airgap bundles for the channel.
  - `airgapDockerRegistryFormatEnabled` boolean — AirgapDockerRegistryFormatEnabled airgap bundles built after enabling this will use the Docker Registry format.
  - `autoAirgapBuildsValue` integer — AutoAirgapBuildsValue of the channel that is to be updated.
  - `channelIcon` string — Icon of the channel that is to be updated.
  - `customHostnameOverrides` CustomHostnameOverrides
    - `downloadPortal` CustomHostnameOverride
      - `hostname` string
    - `proxy` CustomHostnameOverride
      - `hostname` string
    - `registry` CustomHostnameOverride
      - `hostname` string
    - `replicatedApp` CustomHostnameOverride
      - `hostname` string
  - `description` string — Description of the channel that is to be updated.
  - `isDefault` boolean — IsDefault indicates if this channel is the default channel for the application.
  - `name` string, required — Name of the channel that is to be updated.
  - `semverRequired` boolean — SemverRequired when enabled, will cause an error when non semver values are used for new releases

## Response `200`

GetChannelResponse represents a channel.

- object
  - `channel` Channel
    - `adoptionRate` CustomerAdoption[]
      - `channelId` string
      - `count` integer
      - `percent` number, double
      - `releaseSequence` integer
      - `semver` string
      - `totalOnChannel` integer
    - `airgapDiffBundlesEnabled` boolean
    - `airgapDockerRegistryFormatEnabled` boolean
    - `appId` string
    - `appName` string
    - `appSlug` string
    - `buildAirgapAutomatically` boolean
    - `channelIcon` string
    - `channelSequence` integer
    - `channelSlug` string
    - `chartReleases` HelmChart[] — ChartReleases is a map of chart name -> []string of version labels
      - `error` string
      - `hasPreflightSpec` boolean
      - `name` string
      - `version` string
      - `weight` integer
    - `created` string, date-time
    - `currentVersion` string
    - `customHostnameOverrides` CustomHostnameOverrides
      - `downloadPortal` CustomHostnameOverride
        - `hostname` string
      - `proxy` CustomHostnameOverride
        - `hostname` string
      - `registry` CustomHostnameOverride
        - `hostname` string
      - `replicatedApp` CustomHostnameOverride
        - `hostname` string
    - `customers` TotalActiveInactiveCustomers
      - `activeCustomers` integer
      - `inactiveCustomers` integer
      - `totalCustomers` integer
    - `description` string
    - `embeddedClusterInstallCommand` string
    - `enterprisePartnerChannelID` string
    - `existingClusterInstallCommand` string
    - `extraLintRules` ExtraLintRules[]
    - `gitHubRef` GitHubRef
    - `hasKurlInstaller` boolean — swager:ignore
    - `id` string
    - `isArchived` boolean
    - `isDefault` boolean
    - `isHelmOnly` boolean
    - `latestChannelSequence` integer
    - `name` string
    - `numActiveInstances` integer
    - `numReleases` integer
    - `releaseNotes` string
    - `releaseSequence` integer
    - `releases` KotsChannelRelease[]
      - `airgapBuildError` string
      - `airgapBuildStatus` string
      - `airgapBundleImages` string[]
      - `channelIcon` string
      - `channelId` string
      - `channelName` string
      - `channelSequence` integer
      - `created` string, date-time
      - `createdBy` Actor
        - `description` string
        - `id` string
        - `link` string
        - `timestamp` string, date-time
        - `type` string
      - `customResourceError` string
      - `customResourceWarnings` string[]
      - `demotedAt` string, date-time
      - `embeddedClusterVersion` string
      - `hasECInstaller` boolean
      - `hasKurlInstaller` boolean
      - `imageSecurityInfo` ImageVulnCounts[]
        - `counts` VulnCounts
          - `critical` integer
          - `high` integer
          - `low` integer
          - `medium` integer
          - `total` integer
        - `digest` string
        - `digest_first_seen_at` string
        - `image_size_bytes` integer
        - `input` string
        - `installation_phase` string — 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".
        - `last_scanned_at` string
        - `not_found` boolean
      - `imageSecuritySums` object
      - `installationTypes` InstallationTypes
        - `embeddedCluster` InstallerTypeEmbeddedCluster
          - `proxyRegistryDomain` string
          - `replicatedAppDomain` string
          - `replicatedRegistryDomain` string
          - `version` string
        - `helm` InstallerTypeHelm
        - `kots` InstallerTypeKots
          - `minKotsVersion` string
          - `targetKotsVersion` string
        - `kotsConfig` InstallerTypeKotsConfig
          - `apiVersion` string
        - `kurl` InstallationTypeKurl
          - `installerVersion` string
        - `preflight` InstallerTypePreflight
          - `apiVersion` string
        - `replicatedSDK` InstallerTypeReplicatedSDK
          - `sdkVersion` string
        - `supportBundle` InstallerTypeSupportBundle
          - `apiVersion` string
      - `isDemoted` boolean
      - `isRequired` boolean
      - `kurlInstallerID` string
      - `lintResult` LintResult
        - `isLintingComplete` boolean
        - `lintExpressions` LintExpression[]
          - `message` string
          - `path` string
          - `rule` string
          - `type` string
      - `proxyRegistryDomain` string
      - `registrySecret` string
      - `releaseNotes` string
      - `releasedAt` string, date-time
      - `replicatedRegistryDomain` string
      - `semver` string
      - `sequence` integer
      - `updated` string, date-time
      - `updatedBy` Actor
        - `description` string
        - `id` string
        - `link` string
        - `timestamp` string, date-time
        - `type` string
    - `replicatedRegistryDomain` string
    - `semverRequired` boolean
    - `semverWarning` string
    - `targetKotsVersion` string
    - `updated` string, date-time

## Other responses

- `400` — Returned on bad input
- `401` — Return if the caller is not authorized
- `403` — Returned if the caller does not have the needed permission

---

[API](https://skmtc.net/replicated/apis/vendor-api-v3-2.md) · [All operations](https://skmtc.net/replicated/apis/vendor-api-v3-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/replicated/vendor-api-v3-2/versions/6fcf9e54aba4/schema)
