mirror of
https://github.com/navidrome/navidrome.git
synced 2026-10-10 03:17:27 +02:00
194 lines
6.3 KiB
YAML
194 lines
6.3 KiB
YAML
|
|
openapi: 3.0.3
|
||
|
|
info:
|
||
|
|
title: Navidrome API
|
||
|
|
version: 1.0.0
|
||
|
|
description: |
|
||
|
|
Navidrome API v1. Spec-first, additive within v1. Clients discover implemented
|
||
|
|
capability modules through `GET /server` and never sniff versions.
|
||
|
|
|
||
|
|
Enums are open: new values may be added to any enum within v1. Clients must
|
||
|
|
accept values they do not recognise instead of failing.
|
||
|
|
|
||
|
|
Every operation declares `x-stability-level`: `alpha` operations may change or
|
||
|
|
disappear without notice, `beta` and `stable` operations only change additively.
|
||
|
|
A level is only ever raised, never lowered.
|
||
|
|
|
||
|
|
`HEAD` is accepted wherever `GET` is. A `405` response lists the allowed methods
|
||
|
|
in its `Allow` header.
|
||
|
|
license:
|
||
|
|
name: GPL-3.0
|
||
|
|
url: https://www.gnu.org/licenses/gpl-3.0.html
|
||
|
|
servers:
|
||
|
|
- url: /api/v1
|
||
|
|
tags:
|
||
|
|
- name: server
|
||
|
|
description: Server discovery and the published OpenAPI document.
|
||
|
|
paths:
|
||
|
|
/server:
|
||
|
|
get:
|
||
|
|
operationId: getServerInfo
|
||
|
|
x-module: core
|
||
|
|
x-stability-level: alpha
|
||
|
|
tags: [server]
|
||
|
|
summary: Describe the server
|
||
|
|
description: |
|
||
|
|
Returns the public server description. No authentication required.
|
||
|
|
Authenticated requests will additionally receive the implemented capability modules
|
||
|
|
once authentication is available.
|
||
|
|
responses:
|
||
|
|
'200':
|
||
|
|
description: Server description.
|
||
|
|
content:
|
||
|
|
application/json:
|
||
|
|
schema:
|
||
|
|
$ref: '#/components/schemas/ServerInfo'
|
||
|
|
'500':
|
||
|
|
$ref: '#/components/responses/InternalError'
|
||
|
|
/openapi.json:
|
||
|
|
get:
|
||
|
|
operationId: getOpenAPISpecJSON
|
||
|
|
x-module: core
|
||
|
|
x-stability-level: alpha
|
||
|
|
tags: [server]
|
||
|
|
summary: Get the OpenAPI document (JSON)
|
||
|
|
description: The bundled OpenAPI document of the running server version. Supports ETag revalidation.
|
||
|
|
responses:
|
||
|
|
'200':
|
||
|
|
description: The OpenAPI document.
|
||
|
|
headers:
|
||
|
|
ETag:
|
||
|
|
$ref: '#/components/headers/ETag'
|
||
|
|
content:
|
||
|
|
application/json:
|
||
|
|
schema:
|
||
|
|
type: object
|
||
|
|
description: OpenAPI 3.0 document.
|
||
|
|
'304':
|
||
|
|
$ref: '#/components/responses/NotModified'
|
||
|
|
/openapi.yaml:
|
||
|
|
get:
|
||
|
|
operationId: getOpenAPISpecYAML
|
||
|
|
x-module: core
|
||
|
|
x-stability-level: alpha
|
||
|
|
tags: [server]
|
||
|
|
summary: Get the OpenAPI document (YAML)
|
||
|
|
description: The bundled OpenAPI document of the running server version. Supports ETag revalidation.
|
||
|
|
responses:
|
||
|
|
'200':
|
||
|
|
description: The OpenAPI document.
|
||
|
|
headers:
|
||
|
|
ETag:
|
||
|
|
$ref: '#/components/headers/ETag'
|
||
|
|
content:
|
||
|
|
application/yaml:
|
||
|
|
schema:
|
||
|
|
type: object
|
||
|
|
description: OpenAPI 3.0 document.
|
||
|
|
'304':
|
||
|
|
$ref: '#/components/responses/NotModified'
|
||
|
|
components:
|
||
|
|
securitySchemes:
|
||
|
|
bearerAuth:
|
||
|
|
type: http
|
||
|
|
scheme: bearer
|
||
|
|
bearerFormat: JWT
|
||
|
|
description: Short-lived access token minted from a device grant. Not yet applied to any operation.
|
||
|
|
schemas:
|
||
|
|
ServerInfo:
|
||
|
|
type: object
|
||
|
|
description: Public server description. Everything an add-server screen needs before login.
|
||
|
|
required:
|
||
|
|
- name
|
||
|
|
- serverVersion
|
||
|
|
- specVersion
|
||
|
|
- setupRequired
|
||
|
|
- loginMethods
|
||
|
|
properties:
|
||
|
|
name:
|
||
|
|
type: string
|
||
|
|
description: Human-readable server product name.
|
||
|
|
serverVersion:
|
||
|
|
type: string
|
||
|
|
description: Version of the running server build.
|
||
|
|
specVersion:
|
||
|
|
type: string
|
||
|
|
description: Version of the OpenAPI document this server implements.
|
||
|
|
setupRequired:
|
||
|
|
type: boolean
|
||
|
|
description: True until the first admin user has been created.
|
||
|
|
loginMethods:
|
||
|
|
type: array
|
||
|
|
description: Login methods this server accepts. New methods may be added; clients ignore values they do not recognise.
|
||
|
|
items:
|
||
|
|
type: string
|
||
|
|
enum:
|
||
|
|
- password
|
||
|
|
Problem:
|
||
|
|
type: object
|
||
|
|
description: RFC 9457 problem details, returned for every 4xx and 5xx response.
|
||
|
|
required:
|
||
|
|
- title
|
||
|
|
- status
|
||
|
|
- code
|
||
|
|
properties:
|
||
|
|
type:
|
||
|
|
type: string
|
||
|
|
description: |
|
||
|
|
URI reference identifying the problem type. Omitted while the problem carries no semantics
|
||
|
|
beyond its HTTP status code, which RFC 9457 defines as `about:blank`. Problems with their
|
||
|
|
own semantics get their own URI; switch on `code` instead.
|
||
|
|
title:
|
||
|
|
type: string
|
||
|
|
description: Short human-readable summary, the same for all occurrences of this problem type.
|
||
|
|
status:
|
||
|
|
type: integer
|
||
|
|
description: HTTP status code of this response.
|
||
|
|
detail:
|
||
|
|
type: string
|
||
|
|
description: Human-readable explanation specific to this occurrence. Omitted for internal errors.
|
||
|
|
code:
|
||
|
|
type: string
|
||
|
|
description: Machine-readable error code, and the value clients switch on. New codes may be added.
|
||
|
|
enum:
|
||
|
|
- validation
|
||
|
|
- unauthorized
|
||
|
|
- forbidden
|
||
|
|
- not_found
|
||
|
|
- method_not_allowed
|
||
|
|
- unavailable
|
||
|
|
- internal
|
||
|
|
errors:
|
||
|
|
type: array
|
||
|
|
description: Per-field failures. Present only when `code` is `validation`.
|
||
|
|
items:
|
||
|
|
$ref: '#/components/schemas/ValidationError'
|
||
|
|
ValidationError:
|
||
|
|
type: object
|
||
|
|
description: One field-level validation failure.
|
||
|
|
required:
|
||
|
|
- field
|
||
|
|
- message
|
||
|
|
properties:
|
||
|
|
field:
|
||
|
|
type: string
|
||
|
|
description: Name of the offending query parameter, path parameter, or body field (dotted for nested).
|
||
|
|
message:
|
||
|
|
type: string
|
||
|
|
description: Why the value was rejected.
|
||
|
|
responses:
|
||
|
|
InternalError:
|
||
|
|
description: Unexpected server failure. Details are in the server log.
|
||
|
|
content:
|
||
|
|
application/problem+json:
|
||
|
|
schema:
|
||
|
|
$ref: '#/components/schemas/Problem'
|
||
|
|
NotModified:
|
||
|
|
description: Not modified.
|
||
|
|
headers:
|
||
|
|
ETag:
|
||
|
|
$ref: '#/components/headers/ETag'
|
||
|
|
headers:
|
||
|
|
ETag:
|
||
|
|
description: Entity tag for `If-None-Match` revalidation.
|
||
|
|
schema:
|
||
|
|
type: string
|