openapi: 3.1.0 info: title: Helm Chart Repository ChartMuseum API description: The Helm Chart Repository API defines the HTTP endpoints used by Helm clients to discover and download charts from a repository server. A chart repository is an HTTP server that houses an index.yaml file listing all available charts and optionally packaged chart archives (.tgz files). ChartMuseum and compatible implementations extend this with a JSON-based management API for listing, uploading, and deleting charts programmatically. version: v3.17.0 contact: name: Helm Project url: https://helm.sh license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://{repository-host} description: Helm Chart Repository Server variables: repository-host: default: charts.example.com description: The hostname of the chart repository tags: - name: ChartMuseum description: Extended API endpoints provided by ChartMuseum and compatible chart repository servers for JSON-based chart management. paths: /api/charts: get: operationId: listAllCharts summary: Helm List all charts description: Returns a list of all charts available in the repository grouped by chart name. This endpoint is provided by ChartMuseum and other enhanced chart repository implementations supporting JSON-based management. tags: - ChartMuseum responses: '200': description: Chart list returned successfully content: application/json: schema: type: object description: Map of chart names to their available versions. additionalProperties: type: array items: $ref: '#/components/schemas/ChartVersion' '401': description: Unauthorized post: operationId: uploadChart summary: Helm Upload chart package description: Uploads a new chart package to the repository. This endpoint is provided by ChartMuseum and other writable chart repository implementations. The chart archive is sent as multipart form data or as a raw binary body. tags: - ChartMuseum requestBody: required: true content: multipart/form-data: schema: type: object properties: chart: type: string format: binary description: The chart package archive (.tgz file) prov: type: string format: binary description: Optional PGP provenance file (.tgz.prov) responses: '201': description: Chart uploaded successfully content: application/json: schema: type: object properties: saved: type: boolean description: Whether the chart was saved successfully example: true '401': description: Unauthorized '409': description: Chart version already exists /api/charts/{chartName}: get: operationId: getChartVersions summary: Helm Get chart versions description: Returns all available versions for a specific chart. This endpoint is provided by ChartMuseum and other enhanced chart repository implementations. tags: - ChartMuseum parameters: - $ref: '#/components/parameters/ChartName' responses: '200': description: Chart versions returned successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ChartVersion' '401': description: Unauthorized '404': description: Chart not found /api/charts/{chartName}/{version}: get: operationId: getChartVersion summary: Helm Get specific chart version description: Returns metadata for a specific version of a named chart. This endpoint is provided by ChartMuseum and other enhanced chart repository implementations. tags: - ChartMuseum parameters: - $ref: '#/components/parameters/ChartName' - $ref: '#/components/parameters/Version' responses: '200': description: Chart version metadata returned successfully content: application/json: schema: $ref: '#/components/schemas/ChartVersion' '401': description: Unauthorized '404': description: Chart version not found delete: operationId: deleteChartVersion summary: Helm Delete chart version description: Deletes a specific version of a chart from the repository. This endpoint is provided by ChartMuseum and other writable chart repository implementations. tags: - ChartMuseum parameters: - $ref: '#/components/parameters/ChartName' - $ref: '#/components/parameters/Version' responses: '200': description: Chart version deleted successfully content: application/json: schema: type: object properties: deleted: type: boolean description: Whether the chart version was deleted example: true '401': description: Unauthorized '404': description: Chart version not found /api/prov: post: operationId: uploadProvenance summary: Helm Upload provenance file description: Uploads a PGP provenance file to the repository independently of a chart package. This endpoint is provided by ChartMuseum for cases where chart and provenance files are uploaded separately. tags: - ChartMuseum requestBody: required: true content: multipart/form-data: schema: type: object properties: prov: type: string format: binary description: The PGP provenance file (.tgz.prov) responses: '201': description: Provenance file uploaded successfully content: application/json: schema: type: object properties: saved: type: boolean description: Whether the provenance file was saved example: true '401': description: Unauthorized '409': description: Provenance file already exists components: schemas: Dependency: type: object description: A chart dependency specifying another chart required by this chart. required: - name - version properties: name: type: string description: The name of the dependency chart. version: type: string description: The SemVer range for the dependency version. repository: type: string format: uri description: The URL of the chart repository where the dependency is hosted. condition: type: string description: A YAML path that resolves to a boolean to enable or disable the dependency. tags: type: array items: type: string description: Tags used to group dependencies for enable/disable. alias: type: string description: Alias name for the dependency chart. ChartVersion: type: object description: Metadata describing a specific version of a Helm chart as it appears in the repository index. required: - apiVersion - name - version properties: apiVersion: type: string description: The chart API version (v1 for Helm 2, v2 for Helm 3). enum: - v1 - v2 example: v2 name: type: string description: The name of the chart. example: nginx version: type: string description: The SemVer 2 version of the chart. example: 1.2.3 kubeVersion: type: string description: A SemVer range of compatible Kubernetes versions. example: '>= 1.19.0' description: type: string description: A single-sentence description of the chart. type: type: string description: The type of chart — application for installable charts, library for utility charts. enum: - application - library default: application keywords: type: array items: type: string description: Keywords associated with the chart for search and categorization. home: type: string format: uri description: The URL of the project home page. sources: type: array items: type: string format: uri description: URLs to source code for the chart. maintainers: type: array items: $ref: '#/components/schemas/Maintainer' description: List of chart maintainers. icon: type: string format: uri description: URL to an SVG or PNG icon for the chart. appVersion: type: string description: The version of the application contained in the chart. example: 1.21.0 deprecated: type: boolean description: Whether this chart version is deprecated. default: false annotations: type: object additionalProperties: type: string description: Annotations are key-value pairs used by Artifact Hub and other tools for additional metadata. urls: type: array items: type: string format: uri description: Download URLs for the chart package. created: type: string format: date-time description: Timestamp when this version was added to the index. digest: type: string description: SHA-256 digest of the chart package for integrity verification. example: sha256:abc123def456 dependencies: type: array items: $ref: '#/components/schemas/Dependency' description: List of chart dependencies declared in Chart.yaml. Maintainer: type: object description: Contact information for a chart maintainer. required: - name properties: name: type: string description: The maintainer name. email: type: string format: email description: The maintainer email address. url: type: string format: uri description: The maintainer URL. parameters: Version: name: version in: path required: true description: The SemVer 2 version of the chart schema: type: string example: 1.2.3 ChartName: name: chartName in: path required: true description: The name of the chart schema: type: string example: nginx externalDocs: description: Helm Chart Repository Guide url: https://helm.sh/docs/topics/chart_repository/