Artifact Hub Packages API
Search and retrieve cloud-native packages
Search and retrieve cloud-native packages
openapi: 3.0.3
info:
title: Artifact Hub Packages API
description: Find, install and publish Cloud Native packages
version: 1.22.0
contact:
name: Artifact Hub support
url: https://cloud-native.slack.com/channels/artifact-hub
servers:
- url: https://artifacthub.io/api/v1
description: Artifact Hub production API
x-evidence:
source: https://artifacthub.io/docs/api/openapi.yaml
source_title: Artifact Hub
source_version: 1.22.0
harvested: '2026-08-01'
harvest_status: HTTP 200
server_verified: https://artifacthub.io/api/v1/stats -> HTTP 200 (2026-08-01)
note: Harvested from the provider. Replaces a reconstructed spec that shared no paths with this document
and carried no schemas.
tags:
- name: Packages
description: ''
paths:
/packages/stats:
get:
tags:
- Packages
summary: Get the number of packages and releases registered
description: Get the number of packages and releases registered
operationId: getPackageStats
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
packages:
type: integer
nullable: false
releases:
type: integer
nullable: false
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/random:
get:
tags:
- Packages
summary: Get some random packages
description: Get some random packages
operationId: getRandomPackages
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PackageSummary'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/search:
get:
tags:
- Packages
summary: Search packages that meet the provided criteria
description: Search packages that meet the provided criteria
operationId: searchPackages
parameters:
- $ref: '#/components/parameters/OffsetParam'
- $ref: '#/components/parameters/LimitParam'
- $ref: '#/components/parameters/FacetsParam'
- $ref: '#/components/parameters/TSQueryWebParam'
- $ref: '#/components/parameters/RepositoryKindsListParam'
- $ref: '#/components/parameters/PackageCategoryListParam'
- $ref: '#/components/parameters/UsersListParam'
- $ref: '#/components/parameters/OrgsListParam'
- $ref: '#/components/parameters/RepositoriesListParam'
- $ref: '#/components/parameters/LicensesListParam'
- $ref: '#/components/parameters/CapabilitiesListParam'
- $ref: '#/components/parameters/DeprecatedParam'
- $ref: '#/components/parameters/OperatorsParam'
- $ref: '#/components/parameters/VerifiedPublisherParam'
- $ref: '#/components/parameters/OfficialParam'
- $ref: '#/components/parameters/CNCFParam'
- $ref: '#/components/parameters/SortParam'
responses:
'200':
description: ''
headers:
Pagination-Total-Count:
schema:
type: string
description: Total number of packages for this search
content:
application/json:
schema:
type: object
properties:
packages:
type: array
nullable: false
items:
$ref: '#/components/schemas/PackageSummary'
facets:
type: array
nullable: false
items:
$ref: '#/components/schemas/Facets'
examples:
s1:
value:
packages:
- package_id: a9c77b9a-2cd1-4a8f-b9e8-6b8f94e13407
name: artifact-hub
normalized_name: artifact-hub
logo_image_id: 0f5488e2-da57-486b-a20f-bfe746ed3e23
stars: 2
description: Artifact Hub is a web-based application that enables finding, installing,
and publishing Cloud Native packages.
version: 0.1.0
app_version: 0.1.0
deprecated: false
ts: 1617098261617098268
repository:
url: http://url.com
kind: 0
name: artifact-hub
display_name: Artifact Hub
repository_id: a032a436-3568-4970-804a-2780f5e9d231
organization_name: artifacthub
organization_display_name: Artifact Hub
verified_publisher: true
official: true
scanner_disabled: false
- package_id: 3af7b6a1-adbd-41f1-ad96-e1eb3350b019
name: sentry-kubernetes
normalized_name: sentry-kubernetes
logo_image_id: 55f2ed75-015d-4edd-9990-11fb2ffcae9e
stars: 0
category: 4
description: A Helm chart for sentry-kubernetes
version: 0.2.3
app_version: latest
deprecated: false
ts: 1617098268
repository:
url: http://url.com
kind: 0
name: incubator
display_name: Incubator
repository_id: dba459d0-6beb-451a-b15a-52d67cc93fa0
organization_name: helm
organization_display_name: Helm
verified_publisher: false
official: false
scanner_disabled: false
- package_id: 0d38123f-fb60-41f0-bd00-76fb331bf7ed
name: etcd-operator
normalized_name: etcd-operator
logo_image_id: 5gt2ed75-015d-40dd-9990-11fb2tgcae9e
stars: 0
category: 2
description: CoreOS etcd-operator Helm chart for Kubernetes
version: 0.10.3
app_version: 0.9.4
deprecated: false
ts: 1617098268
repository:
url: http://url.com
kind: 0
name: stable
display_name: Stable
repository_id: 486f6d4c-9f66-11eb-a8b3-0242ac130003
organization_name: helm
organization_display_name: Helm
verified_publisher: false
official: false
scanner_disabled: false
facets:
- title: Organization
filter_key: org
options:
- id: helm
name: Helm
total: 53
- id: artifacthub
name: Artifact Hub
total: 1
- title: kind
filter_key: kind
options:
- id: '0'
name: Helm charts
total: 54
- title: Repository
filter_key: repo
options:
- id: stable
name: Stable
total: 16
- id: incubator
name: Incubator
total: 36
- id: artifact-hub
name: Artifact Hub
total: 1
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/starred:
get:
tags:
- Packages
security:
- ApiKeyId: []
ApiKeySecret: []
summary: Get packages starred by user
description: Get packages starred by user
operationId: getStarredPackagesByUser
parameters:
- $ref: '#/components/parameters/OffsetParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: ''
headers:
Pagination-Total-Count:
schema:
type: string
description: Total number of starred packages
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PackageSummary'
'401':
$ref: '#/components/responses/UnauthorizedError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/argo-template/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getArgoTemplatesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ArgoTemplate'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/backstage/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getBackstagePluginsDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BackstagePlugin'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/bootc/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getBootableContainersDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BootableContainer'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/container/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get container image details
description: Get container image details
operationId: getContainerImageDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ContainerImage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/coredns/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getCoreDNSPluginDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CoreDNSPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/falco/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getFalcoRulesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FalcoPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/gatekeeper/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getGatekeeperPoliciesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GatekeeperPolicy'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/headlamp/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getHeadlampPluginDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/HeadlampPluginPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/helm/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getHelmPackageDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/HelmPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/helm-plugin/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getHelmPluginDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/HelmPluginPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/inspektor-gadget/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getInspektorGadgetDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/InspektorGadgetPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/kagent/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKagentPackageDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KagentPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/kcl/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKCLPackageDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KCLPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/keda-scaler/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKedaScalerDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KedaScalerPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/keptn/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKeptnIntegrationsDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KeptnIntegrationsPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/knative-client-plugin/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKnativeClientPluginIntegrationsDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KnativeClientPluginsPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/krew/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKubectlPluginDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KrewPluginsPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/kubearmor/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKubeArmorPoliciesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KubeArmorPoliciesPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/kubewarden/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKubewardenPoliciesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KubewardenPoliciesPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/kyverno/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getKyvernoPoliciesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KyvernoPolicy'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/meshery/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getMesheryDesignsDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/MesheryDesign'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/opa/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getOPAPoliciesDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/OPAPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/olm/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getOLMOperatorDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/OLMPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/opencost/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getOpencostPluginDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/OpencostPlugin'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/radius/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getRadiusRecipeDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/RadiusRecipe'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/tbaction/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getTinkerbellActionsDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TBActionPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/tekton-pipeline/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getTektonPipelineDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TektonPipelinePackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/tekton-stepaction/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getTektonStepActionDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TektonStepActionPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/tekton-task/{repoName}/{packageName}:
get:
tags:
- Packages
summary: Get package details
description: Get package details
operationId: getTektonTaskDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TektonTaskPackage'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/argo-template/{repoName}/{packageName}/{version}:
get:
tags:
- Packages
summary: Get package version details
description: Get package version details
operationId: getArgoTemplatesVersionDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
- $ref: '#/components/parameters/VersionParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ArgoTemplate'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/packages/backstage/{repoName}/{packageName}/{version}:
get:
tags:
- Packages
summary: Get package version details
description: Get package version details
operationId: getBackstagePluginsVersionDetails
parameters:
- $ref: '#/components/parameters/RepoNameParam'
- $ref: '#/components/parameters/PackageNameParam'
- $ref: '#/components/parameters/VersionParam'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BackstagePlugin'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
# --- truncated at 32 KB (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/artifact-hub/refs/heads/main/openapi/artifact-hub-packages-api-openapi.yml