Search integration requirements - GetLinkfire/Integrations GitHub Wiki

All

Internal Id: Internal ID used for de-duplication and generating urls if possible

Web url: Required, If we can't compose the url from the Internal ID

Mobile url: mobile url only required if different from the Web url. meaning, if they have an app that requires a specific schema.


Artist page:

If the external service has an artist page, the following data is necessary for each artist. The artist name should be searchable:

Mandatory Highly recommended Optional If possible
Artist name x
Internal Id x
Mobile url (if app available and can’t be composed by id) x
Genre as an array of string values x
Artist Popularity indication x
Artist image url x
International Artist name x
Mobile url x

Album page:

If the external service has the option to link to albums, the following data should be provided for each album. Combination of album and artist name should be searchable:

Mandatory Highly recommended Optional If possible
Album name x
Internal Id x
Artist name x
Web url x
Label x
Release date x
List of available countries (if geographically limited) 2 digit iso code x
Search top albums per artist id x
Release country x
Genre as an array of string values x
Upc code x
Album Popularity indication x
Number of tracks x
Length of album (total number of seconds for all tracks) x
Samples (optional): Sample Track URl x
Artwork url (if possible min. 320x320) x
Mobile url x

Track page

If the external service has the option of linking directly to tracks the following data should be provided for each track. Combination of artist name and track name should be searchable:

Mandatory Highly recommended Optional If possible
Track name x
Internal Id x
Artist name x
Label x
Web url x
List of available countries (if geographically limited) 2 digit iso code x
Search top tracks per artist id x
Album name x
ISRC code x
UPC code x
Genre as an array of string values x
Track Popularity indication x
Tracklength x
Sample url x
Artwork url (if possible min. 320x320) x
Mobile url x

Playlist page

If the external service has the option of linking directly to playlists the following data should be provided for each playlist. Combination of playlist name, artist name and track name should be searchable:

Mandatory Highly recommended Optional If possible
Playlist name x
Internal Id x
Playlist Source: Source URL x
Number of tracks x
Tracklist: List of Artist & Track names x
Creator x
Artwork: Same as artwork for Albums/Tracks x
Creation Date x

Recommended endpoint structure

Description Mandatory Highly recommended Optional Mandatory Params Optional Params
SearchTrack
{baseUrl}/search/tracks?track={trackTitle}&album={albumTitle?}&artist={artistName?} x track album, artist
{baseUrl}/search/tracks?id={id} x
{baseUrl}/search/tracks?isrc={isrc} x
{baseUrl}/search/tracks?ids={ids} x
{baseUrl}/search/tracks?isrc={isrcs} x
{baseUrl}/search/tracks?album={albumTitle}&artist={artistName?} x track album, artist
{baseUrl}/search/tracks?artist={artistName} x
{baseUrl}/search/tracks?albumId={albumId} x
{baseUrl}/search/tracks?artistId={artistId} x
SearchAlbum
{baseUrl}/search/albums?album={albumTitle}&artist={artistName?} x album artist
{baseUrl}/search/albums?id={id} x
{baseUrl}/search/albums?upc={upc} x
{baseUrl}/search/albums?ids={ids} x
{baseUrl}/search/albums?upc={upcs} x
{baseUrl}/search/albums?artistid={artistId} x
{baseUrl}/search/albums?artist={artistName} x
SearchArtist
{baseUrl}/search/artists?artist={artistName} x
{baseUrl}/search/artists?id={id} x
{baseUrl}/search/artists?ids={ids} x

Notes to Recommended endpoint structure:

  • It would be nice to support offset & limit params for search endpoints.
  • It is also fine to use single /search?types=tracks,albums,artists endpoint by adding types parameter to the request:
    • {baseUrl}/search?types=tracks&track={trackTitle}&....
    • {baseUrl}/search?types=tracks,albums,artists&track={trackTitle}&....

Data feeds If a data dump is used, the file should be regenerated at least every 24 hours. Linkfire will then download the file and search it locally.