navidrome/plugins/capabilities/playlist_generator.yaml
Deluan fde4517339 refactor(plugins): rename GetPlaylists, add NotFound error and RetryInterval
Rename GetPlaylists → GetAvailablePlaylists for clarity. Add
PlaylistGeneratorErrorNotFound so plugins can signal a playlist is
temporarily unavailable (orchestrator skips it but retries on next
discovery). Add RetryInterval on GetAvailablePlaylistsResponse for
automatic retry of transient GetPlaylist failures.
2026-04-12 17:32:18 -04:00

127 lines
5.4 KiB
YAML

version: v1-draft
exports:
nd_playlist_generator_get_available_playlists:
description: GetAvailablePlaylists returns the list of playlists this plugin provides.
input:
$ref: '#/components/schemas/GetAvailablePlaylistsRequest'
contentType: application/json
output:
$ref: '#/components/schemas/GetAvailablePlaylistsResponse'
contentType: application/json
nd_playlist_generator_get_playlist:
description: GetPlaylist returns the full data for a single playlist (tracks, metadata).
input:
$ref: '#/components/schemas/GetPlaylistRequest'
contentType: application/json
output:
$ref: '#/components/schemas/GetPlaylistResponse'
contentType: application/json
components:
schemas:
GetAvailablePlaylistsRequest:
description: GetAvailablePlaylistsRequest is the request for GetAvailablePlaylists.
properties: {}
GetAvailablePlaylistsResponse:
description: GetAvailablePlaylistsResponse is the response for GetAvailablePlaylists.
properties:
playlists:
type: array
description: Playlists is the list of playlists provided by this plugin.
items:
$ref: '#/components/schemas/PlaylistInfo'
refreshInterval:
type: integer
format: int64
description: |-
RefreshInterval is the number of seconds until the next GetAvailablePlaylists call.
0 means never re-discover.
retryInterval:
type: integer
format: int64
description: |-
RetryInterval is the number of seconds before retrying a failed GetPlaylist call.
0 means no automatic retry for transient errors.
required:
- playlists
- refreshInterval
- retryInterval
GetPlaylistRequest:
description: GetPlaylistRequest is the request for GetPlaylist.
properties:
id:
type: string
description: ID is the plugin-scoped playlist ID.
required:
- id
GetPlaylistResponse:
description: GetPlaylistResponse is the response for GetPlaylist.
properties:
name:
type: string
description: Name is the display name of the playlist.
description:
type: string
description: Description is an optional description for the playlist.
coverArtUrl:
type: string
description: CoverArtURL is an optional external URL for the playlist cover art.
tracks:
type: array
description: Tracks is the list of songs in the playlist, using SongRef for matching.
items:
$ref: '#/components/schemas/SongRef'
validUntil:
type: integer
format: int64
description: |-
ValidUntil is a unix timestamp indicating when this playlist data expires.
0 means static (never refresh).
required:
- name
- tracks
- validUntil
PlaylistInfo:
description: PlaylistInfo identifies a plugin playlist and its target user.
properties:
id:
type: string
description: ID is the plugin-scoped unique identifier for this playlist.
ownerUsername:
type: string
description: OwnerUsername is the Navidrome username that owns this playlist.
required:
- id
- ownerUsername
SongRef:
description: SongRef is a reference to a song with metadata for matching.
properties:
id:
type: string
description: ID is the internal Navidrome mediafile ID (if known).
name:
type: string
description: Name is the song name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the song.
isrc:
type: string
description: ISRC is the International Standard Recording Code for the song.
artist:
type: string
description: Artist is the artist name.
artistMbid:
type: string
description: ArtistMBID is the MusicBrainz artist ID.
album:
type: string
description: Album is the album name.
albumMbid:
type: string
description: AlbumMBID is the MusicBrainz release ID.
duration:
type: number
format: float
description: Duration is the song duration in seconds.
required:
- name