1 - ClientInfo

Contains information about the client’s capabilities.
{
  "name": "Play:1",
  "platform": "Sonos",
  "maxAudioBitrate": 512000,
  "maxTranscodingAudioBitrate": 256000,
  "directPlayProfiles": [
    {
      "containers": [ "mp3" ],
      "audioCodecs": [ "mp3" ],
      "protocols": [ "http" ],
      "maxAudioChannels": 2
    },
    {
      "containers": [ "flac" ],
      "audioCodecs": [ "flac" ],
      "protocols": [],
      "maxAudioChannels": 2
    }
    ,
    {
      "containers": [ "mp4" ],
      "audioCodecs": [ "flac", "aac", "alac" ],
      "protocols": [],
      "maxAudioChannels": 2
    }
    ],
    "transcodingProfiles": [
    {
      "container": "mp3",
      "audioCodec": "mp3",
      "protocol": "http",
      "maxAudioChannels": 2
    },
    {
      "container": "flac",
      "audioCodec": "flac",
      "protocol": "hls",
      "maxAudioChannels": 2
    }
  ],
  "codecProfiles": [
    {
      "type": "AudioCodec",
      "name": "mp3",
      "limitations": [
        { "name": "audioBitrate", "comparison": "LessThanEqual", "values": [ "320000" ], "required": true }
      ]
    },
    {
      "type": "AudioCodec",
      "name": "flac",
      "limitations": [
        { "name": "audioSamplerate", "comparison": "LessThanEqual", "values":  [ "192000" ], "required": false },
        { "name": "audioChannels",  "comparison": "Equals", "values": ["1", "2" ],      "required": false }
      ]
    }
  ]
}
FieldTypeReq.OpenS.Details
namestringYesYesThe name of the client device.
platformstringYesYesThe platform of the client (e.g., Android, iOS).
maxAudioBitrateintegerNoYesThe maximum audio bitrate the client can handle. 0 or missing means no limitation.
maxTranscodingAudioBitrateintegerNoYesThe maximum audio bitrate for transcoded content. 0 or missing means no limitation.
directPlayProfilesDirectPlayProfile[]NoYesA list of profiles for direct playback.
transcodingProfilesTranscodingProfile[]NoYesA list of profiles for transcoding. The server should evaluate these in the order they are listed, as a priority list.
codecProfilesCodecProfile[]NoYesA list of codec-specific profiles.

2 - CodecProfile

Defines a codec profile with optional limitations.
{
  "type": "AudioCodec",
  "name": "mp3",
  "limitations": [
    { "name": "audioBitrate", "comparison": "LessThanEqual", "values": ["320000"], "required": true }
  ]
}
FieldTypeReq.OpenS.Details
typestringYesYesThe type of codec profile. Currently only AudioCodec is supported.
namestringYesYesThe name of the codec (e.g., mp3, flac). Only a single value is accepted.
limitationsLimitation[]NoYesA list of limitations for this codec.

3 - collectionItemID

An identifier for a collection item to be added.

Depending on the item type, either id or name must be provided. For most types, id is the natural choice, but some types (e.g. Genre) don’t have it, so name should be used.

{
  "type": "song",
  "id": "20"
}
{
  "type": "album",
  "id": "30"
}
{
  "type": "genre",
  "name": "vaporwave"
}
FieldTypeReq.OpenS.Details
typestringYesOne of: song, album, artist, playlist, genre, internetRadioStation, podcastEpisode, podcast.
idstringNoID of the item, where applicable
namestringNoName of the item, where applicable

4 - CreateCollectionRequest

Request payload for creating a collection.

Should be used in the CreateCollection endpoint.

{
  "name": "test collection",
  "comment": "this is a collection",
  "items": [
    {
      "type": "song",
      "id": "300000060"
    },
    {
      "type": "album",
      "id": "200000021"
    },
    {
      "type": "genre",
      "name": "vaporwave"
    }
  ]
}
FieldTypeReq.OpenS.Details
namestringYesYesThe human-readable name of the collection.
commentstringNoYesThe collection comment.
publicbooleanNoYestrue if the collection should be visible to all users, false otherwise. Default false.
itemsCollectionItemID[]NoYesA list of items.

5 - DirectPlayProfile

Defines a direct play profile.
{
  "containers": [ "mp4" ],
  "audioCodecs": [ "aac", "alac" ],
  "protocols": [ "http" ],
  "maxAudioChannels": 2
}
FieldTypeReq.OpenS.Details
containersArray of stringYesYesList of supported container format (e.g., mp3, flac, mp4). An empty array means any container.
audioCodecsArray of stringYesYesList of supported audio codecs. An empty array means any codec.
protocolsArray of stringYesYesThe streaming protocols. Supported values are http, hls.
maxAudioChannelsintegerNoYesThe maximum number of audio channels supported.

6 - Limitation

Defines a limitation for a codec profile.
{
  "name": "audioSamplerate",
  "comparison": "Equals",
  "values": [ "44100", "48000" ],
  "required": true
}
FieldTypeReq.OpenS.Details
namestringYesThe name of the limitation. Can be audioChannels, audioBitrate, audioProfile, audioSamplerate, or audioBitdepth.
comparisonstringYesThe comparison operator. Can be Equals, NotEquals, LessThanEqual, GreaterThanEqual.
valuesstringYesThe values to compare against. For LessThanEqual and GreaterThanEqual, only the first value will be used.
requiredbooleanYesWhether this limitation must be met.

7 - MoveRange

Move a range of items from one position to another.
{
  "fromStart": 0,
  "fromEnd": 5,
  "to": 20
}
FieldTypeReq.OpenS.Details
fromStartintegerYesYesStart of the original range (inclusive).
fromEndintegerYesYesEnd of the original range (exclusive).
tointegerYesYesNew index of the first item in the range.

8 - TranscodingProfile

Defines a transcoding profile.
{
  "container": "mp3",
  "audioCodec": "mp3",
  "protocol": "http",
  "maxAudioChannels": 2
}
FieldTypeReq.OpenS.Details
containerstringYesYesThe container format (e.g., mp3, flac).
audioCodecstringYesYesThe target audio codec for transcoding.
protocolstringYesYesThe streaming protocol. Can be http or hls.
maxAudioChannelsintegerNoYesThe maximum number of audio channels for the transcoded stream.

9 - UpdateCollectionRequest

Request payload for updating a collection.

Should be used in the UpdateCollection endpoint. Only the fields supplied in the request payload will have an effect on a collection.

{
  "collectionId": "23785995",
  "name": "new name",
  "comment": "this is a new comment"
}
{
  "collectionId": "23785995",
  "add": [
    {
      "type": "album",
      "id": "1234"
    }
  ]
}
{
  "collectionId": "23785995",
  "move": {
    "fromStart": 0,
    "fromEnd": 5,
    "to": 20
  }
}
{
  "collectionId": "23785995",
  "remove": [0, 1, 2, 6]
}
FieldTypeReq.OpenS.Details
collectionIdstringYesYesThe collection ID.
namestringNoYesThe human-readable name of the collection. Cannot be an empty string.
commentstringNoYesThe collection comment.
publicbooleanNoYestrue if the collection should be visible to all users, false otherwise.
addCollectionItemID[]NoYesAdd the specified items to the collection. Items are appended to the tail of the collection.
moveMoveRangeNoYesMove items from the original position to another in the collection.
removeArray of integerNoYesRemove the items at the specified positions from the collection.

Only one of add, move, and remove can be non-empty in a single request.