OpenAPI Specification
openapi: 3.0.3
info:
title: Artifact Hub Users 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: Users
description: ''
paths:
/users:
post:
tags:
- Users
summary: Register a new user
description: Register a new user
operationId: registerUser
requestBody:
description: ''
required: true
content:
application/json:
schema:
type: object
required:
- alias
- email
- password
properties:
alias:
type: string
example: jdoe
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: jdoe@email.com
password:
type: string
format: password
example: strongP@55w0rd
responses:
'201':
$ref: '#/components/responses/Created'
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/verify-email:
post:
tags:
- Users
summary: Verify user's email address
description: Verify user's email address
operationId: verifyEmail
requestBody:
content:
application/json:
schema:
type: object
required:
- code
properties:
code:
type: string
format: uuid
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/UnauthorizedError'
'410':
$ref: '#/components/responses/GoneError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/profile:
get:
tags:
- Users
security:
- ApiKeyId: []
ApiKeySecret: []
summary: Get user's profile
description: Get user's profile
operationId: getUserProfile
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/responses/UnauthorizedError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
put:
tags:
- Users
security:
- ApiKeyId: []
ApiKeySecret: []
summary: Update user's profile
description: Update user's profile
operationId: updateUserProfile
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/UnauthorizedError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/password:
put:
tags:
- Users
security:
- ApiKeyId: []
ApiKeySecret: []
summary: Update user's password
description: Update user's password
operationId: updateUserPassword
requestBody:
description: ''
content:
application/json:
schema:
type: object
required:
- old
- new
properties:
old:
type: string
format: password
new:
type: string
format: password
example:
old: strongP@55w0rd
new: newstrongP@55w0rd
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/UnauthorizedError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/password-reset-code:
post:
tags:
- Users
summary: Register a code to reset the password
description: Register a code to reset the password
operationId: resetPasswordCode
requestBody:
content:
application/json:
schema:
type: object
required:
- email
properties:
email:
type: string
responses:
'201':
$ref: '#/components/responses/Created'
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/verify-password-reset-code:
post:
tags:
- Users
summary: Verify a reset password code
description: Verify a reset password code
operationId: verifyPasswordCode
requestBody:
content:
application/json:
schema:
type: object
required:
- code
properties:
code:
type: string
format: uuid
responses:
'200':
description: The request has succeeded
'400':
$ref: '#/components/responses/BadRequest'
'410':
$ref: '#/components/responses/GoneError'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/users/reset-password:
put:
tags:
- Users
summary: Reset the user's password
description: Reset the user's password
operationId: resetPassword
requestBody:
content:
application/json:
schema:
type: object
required:
- code
- password
properties:
code:
type: string
format: uuid
password:
type: string
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
Error:
type: object
properties:
message:
type: string
example: error details
User:
type: object
required:
- alias
- email
- password_set
properties:
alias:
type: string
nullable: false
example: jdoe
first_name:
type: string
nullable: false
example: John
last_name:
type: string
nullable: false
example: Doe
email:
type: string
format: email
nullable: false
example: jdoe@email.com
profile_image_id:
type: string
nullable: false
example: 12345abcde
password_set:
type: boolean
nullable: false
tfa_enabled:
type: boolean
nullable: false
responses:
Created:
description: The request has succeeded and has led to the creation of a resource
BadRequest:
description: The request sent was not valid
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: The user has sent too many requests in a given amount of time
InternalServerError:
description: The server encountered an unexpected condition that prevented it from fulfilling the
request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NoContent:
description: The request has succeeded, no content returned
GoneError:
description: The code provided has expired
UnauthorizedError:
description: Valid authentication credentials not provided
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
ApiKeyId:
type: apiKey
in: header
name: X-API-KEY-ID
ApiKeySecret:
type: apiKey
in: header
name: X-API-KEY-SECRET