version: v1-draft exports: nd_scrobbler_is_authorized: description: IsAuthorized checks if a user is authorized to scrobble to this service. input: $ref: '#/components/schemas/IsAuthorizedRequest' contentType: application/json output: type: boolean contentType: application/json nd_scrobbler_now_playing: description: NowPlaying sends a now playing notification to the scrobbling service. input: $ref: '#/components/schemas/NowPlayingRequest' contentType: application/json nd_scrobbler_scrobble: description: Scrobble submits a completed scrobble to the scrobbling service. input: $ref: '#/components/schemas/ScrobbleRequest' contentType: application/json nd_scrobbler_playback_report: description: PlaybackReport sends a playback state report to the scrobbling service. input: $ref: '#/components/schemas/PlaybackReportRequest' contentType: application/json components: schemas: IsAuthorizedRequest: description: IsAuthorizedRequest is the request for authorization check. properties: username: type: string description: Username is the username of the user. required: - username NowPlayingRequest: description: NowPlayingRequest is the request for now playing notification. properties: username: type: string description: Username is the username of the user. track: $ref: '#/components/schemas/TrackInfo' description: Track is the track currently playing. position: type: integer format: int32 description: Position is the current playback position in seconds. required: - username - track - position PlaybackReportRequest: description: PlaybackReportRequest is the request for playback report notifications. properties: username: type: string description: Username is the username of the user. track: $ref: '#/components/schemas/TrackInfo' description: Track is the track being played. state: type: string description: State is the current playback state (starting/playing/paused/stopped/expired). positionMs: type: integer format: int64 description: PositionMs is the current playback position in milliseconds. playbackRate: type: number format: float description: PlaybackRate is the playback speed (1.0 = normal). playerId: type: string description: PlayerId is the unique client identifier. playerName: type: string description: PlayerName is the human-readable player name. timestamp: type: integer format: int64 description: Timestamp is the Unix timestamp when this report was generated. required: - username - track - state - positionMs - playbackRate - playerId - playerName - timestamp ScrobbleRequest: description: ScrobbleRequest is the request for submitting a scrobble. properties: username: type: string description: Username is the username of the user. track: $ref: '#/components/schemas/TrackInfo' description: Track is the track that was played. timestamp: type: integer format: int64 description: Timestamp is the Unix timestamp when the track started playing. required: - username - track - timestamp TrackInfo: description: TrackInfo contains track metadata. properties: id: type: string description: ID is the internal Navidrome track ID. title: type: string description: Title is the track title. album: type: string description: Album is the album name. artist: type: string description: Artist is the formatted artist name for display (e.g., "Artist1 • Artist2"). albumArtist: type: string description: AlbumArtist is the formatted album artist name for display. artists: type: array description: Artists is the list of track artists. items: $ref: '#/components/schemas/ArtistRef' albumArtists: type: array description: AlbumArtists is the list of album artists. items: $ref: '#/components/schemas/ArtistRef' duration: type: number format: float description: Duration is the track duration in seconds. trackNumber: type: integer format: int32 description: TrackNumber is the track number on the album. discNumber: type: integer format: int32 description: DiscNumber is the disc number. mbzRecordingId: type: string description: MBZRecordingID is the MusicBrainz recording ID. mbzAlbumId: type: string description: MBZAlbumID is the MusicBrainz album/release ID. mbzReleaseGroupId: type: string description: MBZReleaseGroupID is the MusicBrainz release group ID. mbzReleaseTrackId: type: string description: MBZReleaseTrackID is the MusicBrainz release track ID. libraryId: type: integer format: int32 description: |- LibraryID is the ID of the library the track belongs to. Only included if the plugin has library permission with filesystem access for the track's library. path: type: string description: |- Path is the full path to the track file, relative to the library root. Only included if the plugin has library permission with filesystem access for the track's library. required: - id - title - album - artist - albumArtist - artists - albumArtists - duration - trackNumber - discNumber ArtistRef: description: |- ArtistRef is the minimal information a plugin returns for Navidrome to match an artist against the library. It is a reference, not a full artist entity: it carries only matching keys (name and optional internal/MusicBrainz IDs) plus a few projection fields used when describing a track's participants, never descriptive data such as biographies or images. properties: id: type: string description: ID is the internal Navidrome artist ID (if known). name: type: string description: Name is the artist name. mbid: type: string description: MBID is the MusicBrainz ID for the artist. sortName: type: string description: SortName is the artist name used for sorting (if known). role: type: string description: Role is the participation category (e.g. "artist", "composer", "performer"). subRole: type: string description: SubRole is a specialization within Role (e.g. the instrument for a performer). required: - name