Helm

Manage Helm on a member cluster: the Helm console (tiller) configuration, Helm v3 release lifecycle (list/install/upgrade/uninstall/rollback, plus content, status, and history), chart bundle/package views, and the resource editor used to generate and apply installations.

All paths on this page are relative to:

/api/v1/clusters/{owner}/{cluster}

All endpoints require a token (Authorization: token <YOUR_TOKEN>). Common path parameters used throughout this page:

NameTypeDescription
ownerstringOrganization slug or username that owns the cluster.
clusterstringCluster name.
namestringHelm release name (on release endpoints).

Several install/upgrade/uninstall/rollback/editor operations are submitted as async tasks and return a TaskResponse ({ "id": "...", "subject": "..." }) rather than completing synchronously. Many request/response bodies are opaque Kubernetes-style or Helm library objects, passed through verbatim; those are noted per endpoint.

A documented call looks like:

curl -H "Authorization: token $AKP_TOKEN" \
  https://<akp-host>/api/v1/clusters/appscode/ace/helm/v3/releases/

Console (tiller) configuration

GET /clusters/{owner}/{cluster}/helm/tiller-config

Get the Helm console (tiller/driver) config.

  • Auth: token.
  • Response: 200 with a ConsoleConfig.
{
  "id": 1,
  "userID": 2,
  "clusterID": "<uid>",
  "type": 1,
  "data": { "driver": { "helm3": { "driverName": "Secret" } } },
  "createdUnix": 1783967505,
  "updatedUnix": 1783967505
}
FieldTypeDescription
idintegerConfig record ID.
userIDintegerOwning user ID.
clusterIDstringCluster UID.
typestring/intSetting type (models.SettingType).
dataobjectConfig payload (e.g. the Helm driver options).
createdUnix / updatedUnixintegerUnix create/update timestamps.

Verified: GET returned 200 against appscode/ace (hub) and appscode/arnob-dev (spoke) on 2026-07-14.

PUT /clusters/{owner}/{cluster}/helm/tiller-config

Update the Helm console (tiller/driver) config.

  • Auth: token.
  • Request body: a TillerOptions object.
{ "driver": { "helm3": { "driverName": "Secret" } } }
FieldTypeRequiredDescription
driver.helm3.driverNamestringnoHelm 3 storage driver (e.g. Secret, ConfigMap).
  • Response: 200 with the updated ConsoleConfig.

GET /clusters/{owner}/{cluster}/helm/tiller-config/default

Get the default Helm console (tiller) config.

  • Auth: token.
  • Response: 200 with a ConsoleConfig (same shape as above).

Verified: GET returned 200 against appscode/ace (hub) on 2026-07-14.


Helm v3 releases

GET /clusters/{owner}/{cluster}/helm/v3/releases/

List Helm v3 releases in the cluster.

  • Auth: token.
  • Request body: optional Helm list options (action.ListOptions), passed as an opaque object.
  • Response: 200 with an array of Helm release.Release objects.
[
  {
    "name": "ace",
    "info": {
      "first_deployed": "2026-07-05T06:42:46Z",
      "last_deployed": "2026-07-05T06:49:03Z",
      "status": "deployed",
      "description": "Upgrade complete"
    },
    "chart": { "metadata": { "name": "ace" } }
  }
]

Verified: GET returned 200 against appscode/ace (hub) and appscode/arnob-dev (spoke) on 2026-07-14.

POST /clusters/{owner}/{cluster}/helm/v3/releases/

Install a Helm v3 release. Submitted as an async task.

  • Auth: token.
  • Request body: Helm install options (action.InstallOptions), passed as an opaque object.
  • Response: 200 with a TaskResponse.
{ "id": "task-9f8e7d", "subject": "tasks.helm.install" }

GET /clusters/{owner}/{cluster}/helm/v3/releases/{name}/

Get the revision history of a Helm release.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Query parameters:
NameTypeRequiredDescription
maxintegernoMaximum number of history revisions to return.
  • Response: 200 with an array of Helm release.Release objects (one per revision); 404 if the release is not found.

PUT /clusters/{owner}/{cluster}/helm/v3/releases/{name}/

Upgrade a Helm v3 release. Submitted as an async task.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Request body: Helm upgrade options (action.UpgradeOptions), passed as an opaque object.
  • Response: 200 with a TaskResponse; 404 if the release is not found.

DELETE /clusters/{owner}/{cluster}/helm/v3/releases/{name}/

Uninstall a Helm v3 release. Submitted as an async task.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Request body: an UninstallReleaseRequest.
{
  "namespace": "default",
  "disable_hooks": false,
  "purge": true,
  "timeout": 300
}
FieldTypeRequiredDescription
namespacestringnoNamespace of the release.
disable_hooksbooleannoSkip running lifecycle hooks.
purgebooleannoRemove the release history.
timeoutinteger (int64)noOperation timeout (seconds).
  • Response: 200 with a TaskResponse; 404 if the release is not found.

GET /clusters/{owner}/{cluster}/helm/v3/releases/{name}/content

Get the content (manifest and metadata) of a Helm release.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Query parameters:
NameTypeRequiredDescription
versionintegernoSpecific release revision.
namespacestringnoNamespace of the release.
  • Response: 200 with the Helm release.Release object.

GET /clusters/{owner}/{cluster}/helm/v3/releases/{name}/status

Get the status of a Helm release.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Query parameters: version (integer, optional revision) and namespace (string, optional).
  • Response: 200 with the Helm release.Release object.

POST /clusters/{owner}/{cluster}/helm/v3/releases/{name}/rollback

Roll back a Helm v3 release to a previous revision. Submitted as an async task.

  • Auth: token.
  • Path parameters: owner, cluster, plus name (release name).
  • Request body: a RollbackReleaseRequest.
{
  "namespace": "default",
  "version": 2,
  "dry_run": false,
  "recreate": false,
  "wait": true,
  "force": false,
  "timeout": 300,
  "description": "rollback to v2"
}
FieldTypeRequiredDescription
namespacestringnoNamespace of the release.
versioninteger (int32)noTarget revision to roll back to.
dry_runbooleannoSimulate the rollback.
disable_hooksbooleannoSkip lifecycle hooks.
recreatebooleannoRecreate pods.
waitbooleannoWait until resources are ready.
forcebooleannoForce resource updates.
cleanup_on_failbooleannoDelete new resources on failure.
timeoutinteger (int64)noOperation timeout (seconds).
descriptionstringnoRollback description.
  • Response: 200 with a TaskResponse; 404 if the release is not found.

Bundle & package views

These endpoints let you inspect a chart before installing it. The bundle/package request and response bodies are releasesapi/chartsapi objects passed through as opaque objects.

GET /clusters/{owner}/{cluster}/helm/bundleview

Get the bundle view for a chart.

  • Auth: token.
  • Request body: a chart source reference (releasesapi.ChartSourceFlatRef).
  • Response: 200 with the bundle view (releasesapi.BundleView).

POST /clusters/{owner}/{cluster}/helm/bundleview/orders

Create an order for a bundle view.

  • Auth: token.
  • Request body: a bundle view (releasesapi.BundleView).
  • Response: 200 with the generated order (releasesapi.Order).

GET /clusters/{owner}/{cluster}/helm/packageview

Get the package view for a chart.

  • Auth: token.
  • Request body: a chart source reference (releasesapi.ChartSourceFlatRef).
  • Response: 200 with the package view (releasesapi.PackageView).

GET /clusters/{owner}/{cluster}/helm/packageview/files

List the files inside a chart package.

  • Auth: token.
  • Request body: a chart source reference (releasesapi.ChartSourceFlatRef).
  • Response: 200 with an array of file-path strings.
["Chart.yaml", "values.yaml", "templates/deployment.yaml"]

GET /clusters/{owner}/{cluster}/helm/packageview/files/{path}

Get a single file from a chart package.

  • Auth: token.
  • Path parameters: owner, cluster, plus path (the file path within the chart package).
  • Request body: a chart source reference (releasesapi.ChartSourceFlatRef).
  • Response: 200 with the raw file content (application/octet-stream; content-type varies); 404 if the file is not found.

POST /clusters/{owner}/{cluster}/helm/packageview/orders

Create an order for an editor package view / chart.

  • Auth: token.
  • Request body: a chart order (releasesapi.ChartOrder).
  • Response: 200 with the generated order (releasesapi.Order).

GET /clusters/{owner}/{cluster}/helm/packageview/values

Get the merged values file for a chart preset.

  • Auth: token.
  • Request body: a chart preset reference (chartsapi.ChartPresetFlatRef).
  • Response: 200 with the merged chart values (a dynamic map).

Resource editor

The editor generates an editor model from options, previews the resulting manifest and resources, applies (installs/updates) or deletes an installation, and loads state back from an existing install. The options bodies are arbitrary JSON objects; the load/apply bodies are releasesapi objects passed through opaquely.

PUT /clusters/{owner}/{cluster}/helm/options/model

Generate an editor model from options.

  • Auth: token.
  • Request body: an arbitrary JSON options object.
  • Response: 200 with the generated editor model (unstructured object; YAML when requested).

PUT /clusters/{owner}/{cluster}/helm/options/manifest

Preview the editor manifest from options.

  • Auth: token.
  • Request body: an arbitrary JSON options object.
  • Response: 200 with the rendered manifest as raw text/plain YAML.

PUT /clusters/{owner}/{cluster}/helm/options/resources

Preview the editor resources from options.

  • Auth: token.
  • Request body: an arbitrary JSON options object.
  • Response: 200 with the rendered resources (releasesapi.ResourceOutput).

PUT /clusters/{owner}/{cluster}/helm/editor/

Apply (create/update/install) a resource editor model. Submitted as an async task.

  • Auth: token.
  • Request body: an arbitrary JSON editor model object.
  • Response: 200 with a TaskResponse.

DELETE /clusters/{owner}/{cluster}/helm/editor/

Delete a resource editor installation. Submitted as an async task.

  • Auth: token.
  • Request body: resource metadata (releasesapi.MetadataFlat).
  • Response: 200 with a TaskResponse.

PUT /clusters/{owner}/{cluster}/helm/editor/model

Load an editor model from an existing installation.

  • Auth: token.
  • Request body: an editor model (releasesapi.Model).
  • Response: 200 with the editor model values (raw JSON/YAML).

PUT /clusters/{owner}/{cluster}/helm/editor/manifest

Load the editor manifest from an existing installation.

  • Auth: token.
  • Request body: an editor model (releasesapi.Model).
  • Response: 200 with the rendered manifest as raw text/plain YAML.

PUT /clusters/{owner}/{cluster}/helm/editor/resources

Load the editor resources from an existing installation.

  • Auth: token.
  • Request body: editor model metadata (releasesapi.ModelMetadata).
  • Response: 200 with the rendered resources (releasesapi.ResourceOutput).