openapi: 3.0.3info:title: Navidrome APIversion: 1.0.0description: |Navidrome API v1. Spec-first, additive within v1. Clients discover implementedcapability modules through `GET /server` and never sniff versions.Enums are open: new values may be added to any enum within v1. Clients mustaccept values they do not recognise instead of failing.Every operation declares `x-stability-level`: `alpha` operations may change ordisappear 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 methodsin its `Allow` header.license:name: GPL-3.0url: https://www.gnu.org/licenses/gpl-3.0.htmlservers:- url: /api/v1tags:- name: serverdescription: Server discovery and the published OpenAPI document.paths:/server:get:operationId: getServerInfox-module: corex-stability-level: alphatags: [server]summary: Describe the serverdescription: |Returns the public server description. No authentication required.Authenticated requests will additionally receive the implemented capability modulesonce 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: getOpenAPISpecJSONx-module: corex-stability-level: alphatags: [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: objectdescription: OpenAPI 3.0 document.'304':$ref: '#/components/responses/NotModified'/openapi.yaml:get:operationId: getOpenAPISpecYAMLx-module: corex-stability-level: alphatags: [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: objectdescription: OpenAPI 3.0 document.'304':$ref: '#/components/responses/NotModified'components:securitySchemes:bearerAuth:type: httpscheme: bearerbearerFormat: JWTdescription: Short-lived access token minted from a device grant. Not yet applied to any operation.schemas:ServerInfo:type: objectdescription: Public server description. Everything an add-server screen needs before login.required:- name- serverVersion- specVersion- setupRequired- loginMethodsproperties:name:type: stringdescription: Human-readable server product name.serverVersion:type: stringdescription: Version of the running server build.specVersion:type: stringdescription: Version of the OpenAPI document this server implements.setupRequired:type: booleandescription: True until the first admin user has been created.loginMethods:type: arraydescription: Login methods this server accepts. New methods may be added; clients ignore values they do not recognise.items:type: stringenum:- passwordProblem:type: objectdescription: RFC 9457 problem details, returned for every 4xx and 5xx response.required:- title- status- codeproperties:type:type: stringdescription: |URI reference identifying the problem type. Omitted while the problem carries no semanticsbeyond its HTTP status code, which RFC 9457 defines as `about:blank`. Problems with theirown semantics get their own URI; switch on `code` instead.title:type: stringdescription: Short human-readable summary, the same for all occurrences of this problem type.status:type: integerdescription: HTTP status code of this response.detail:type: stringdescription: Human-readable explanation specific to this occurrence. Omitted for internal errors.code:type: stringdescription: 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- internalerrors:type: arraydescription: Per-field failures. Present only when `code` is `validation`.items:$ref: '#/components/schemas/ValidationError'ValidationError:type: objectdescription: One field-level validation failure.required:- field- messageproperties:field:type: stringdescription: Name of the offending query parameter, path parameter, or body field (dotted for nested).message:type: stringdescription: 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