@portpowered/reference-data 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/generated/capabilities.json +578 -3
  2. package/generated/openapi.json +368 -39
  3. package/generated/public/docs/for-ai/capability-interfaces/media-player/1.0.md +1 -0
  4. package/generated/public/docs/for-ai/capability-interfaces/media-playlist/1.0.md +3 -0
  5. package/generated/public/docs/for-ai/capability-interfaces/media-search/1.0.md +2 -0
  6. package/generated/public/docs/for-ai/schemas/m-1.md +6 -6
  7. package/generated/public/docs/for-ai/schemas/m-2.md +6 -0
  8. package/generated/public/docs/for-ai/schemas/p-2.md +2 -0
  9. package/generated/public/docs/for-ai/schemas/s-3.md +1 -0
  10. package/generated/public/docs/for-ai/schemas.md +4 -4
  11. package/generated/public/docs/references/capability-interfaces/media-player/1.0/attributes/now-playing.yaml +30 -0
  12. package/generated/public/docs/references/capability-interfaces/media-player/1.0/configuration.yaml +30 -0
  13. package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/play-media.yaml +11 -5
  14. package/generated/public/docs/references/capability-interfaces/media-player/1.0.yaml +73 -4
  15. package/generated/public/docs/references/capability-interfaces/media-player.yaml +73 -4
  16. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/get-playlist.yaml +9 -0
  17. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/list-playlists.yaml +15 -0
  18. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlist-contents.yaml +114 -0
  19. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlists.yaml +35 -0
  20. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0.yaml +184 -0
  21. package/generated/public/docs/references/capability-interfaces/media-playlist.yaml +184 -0
  22. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/audio-media-results.yaml +67 -0
  23. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/get-media.yaml +32 -0
  24. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/media-details.yaml +118 -0
  25. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/search-media.yaml +15 -1
  26. package/generated/public/docs/references/capability-interfaces/media-search/1.0.yaml +235 -1
  27. package/generated/public/docs/references/capability-interfaces/media-search.yaml +235 -1
  28. package/generated/public/docs/references/capability-interfaces/recordings/1.0/messages/list-recordings-response.yaml +11 -5
  29. package/generated/public/docs/references/capability-interfaces/recordings/1.0.yaml +10 -5
  30. package/generated/public/docs/references/capability-interfaces/recordings.yaml +10 -5
  31. package/generated/public/docs/references/manifest.json +195 -75
  32. package/generated/public/docs/references/openapi.yaml +303 -37
  33. package/generated/public/docs/references/schemas/CreateMessageTarget.json +4 -0
  34. package/generated/public/docs/references/schemas/MediaId.json +3 -1
  35. package/generated/public/docs/references/schemas/MediaPlayerInterfaceConfiguration.json +7 -0
  36. package/generated/public/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json +27 -0
  37. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json +11 -0
  38. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json +24 -0
  39. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json +37 -0
  40. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistsMessage.json +26 -0
  41. package/generated/public/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json +17 -0
  42. package/generated/public/docs/references/schemas/MediaSearchInterfaceGetMediaMessage.json +30 -0
  43. package/generated/public/docs/references/schemas/MediaSearchInterfaceMediaDetailsMessage.json +43 -0
  44. package/generated/public/docs/references/schemas/MediaSearchInterfaceSearchMediaMessage.json +13 -1
  45. package/generated/public/docs/references/schemas/Playlist.json +8 -0
  46. package/generated/public/docs/references/schemas/PodcastEpisode.json +30 -0
  47. package/generated/public/docs/references/schemas/PodcastShow.json +22 -0
  48. package/generated/public/docs/references/schemas/SupportedMediaResource.json +34 -0
  49. package/generated/public/docs/references/schemas/configuration-6.json +6 -2
  50. package/generated/public/docs/references/schemas/index.json +54 -0
  51. package/generated/resources/media-player/configuration.json +37 -0
  52. package/generated/resources/media-player/message-play-media.json +3 -1
  53. package/generated/resources/media-player/state-now-playing.json +27 -0
  54. package/generated/resources/media-playlist/message-get-playlist.json +11 -0
  55. package/generated/resources/media-playlist/message-list-playlists.json +18 -0
  56. package/generated/resources/media-playlist/message-playlist-contents.json +140 -0
  57. package/generated/resources/media-playlist/message-playlists.json +46 -0
  58. package/generated/resources/media-search/message-audio-media-results.json +76 -0
  59. package/generated/resources/media-search/message-get-media.json +29 -0
  60. package/generated/resources/media-search/message-media-details.json +146 -0
  61. package/generated/resources/media-search/message-search-media.json +13 -1
  62. package/generated/resources/recordings/message-list-recordings-response.json +3 -1
  63. package/package.json +1 -1
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-search",
4
+ "x-name": "media-details",
5
+ "x-version": "1.0",
6
+ "x-type": "message",
7
+ "x-directionality": "out",
8
+ "description": "Exact media resource details and a bounded page of its children.",
9
+ "type": "object",
10
+ "properties": {
11
+ "mediaId": {
12
+ "$ref": "/docs/references/schemas/MediaId.json"
13
+ },
14
+ "name": {
15
+ "type": "string"
16
+ },
17
+ "resourceKind": {
18
+ "type": "string",
19
+ "description": "Provider resource kind from the media URI."
20
+ },
21
+ "tracks": {
22
+ "type": "array",
23
+ "items": {
24
+ "$ref": "/docs/references/schemas/Track.json"
25
+ }
26
+ },
27
+ "episodes": {
28
+ "type": "array",
29
+ "items": {
30
+ "$ref": "/docs/references/schemas/PodcastEpisode.json"
31
+ }
32
+ },
33
+ "nextToken": {
34
+ "type": "string",
35
+ "minLength": 1
36
+ }
37
+ },
38
+ "required": [
39
+ "mediaId",
40
+ "resourceKind"
41
+ ],
42
+ "additionalProperties": false
43
+ }
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "type": {
15
15
  "type": "string",
16
- "description": "Supported types, track, album, artist, playlist. Defaults to track",
16
+ "description": "Resource kind: track, album, artist, playlist, show or episode when advertised. Defaults to track",
17
17
  "default": "track"
18
18
  },
19
19
  "album": {
@@ -27,6 +27,18 @@
27
27
  "year": {
28
28
  "type": "string",
29
29
  "description": "Search by year, can only be used when searching albums, years, and tracks. You can pass a range like 1990-2000"
30
+ },
31
+ "maxResults": {
32
+ "type": "integer",
33
+ "minimum": 1,
34
+ "maximum": 50,
35
+ "default": 20,
36
+ "description": "Maximum results on one page."
37
+ },
38
+ "nextToken": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "description": "Copy the opaque continuation from the previous result with the same query and filters."
30
42
  }
31
43
  },
32
44
  "required": [
@@ -11,6 +11,14 @@
11
11
  "type": "string",
12
12
  "description": "Playlist name",
13
13
  "minLength": 1
14
+ },
15
+ "ownerId": {
16
+ "type": "string",
17
+ "description": "Provider-scoped owner identity, when supplied by the provider."
18
+ },
19
+ "ownerName": {
20
+ "type": "string",
21
+ "description": "Owner display name, useful for distinguishing owned and followed playlists."
14
22
  }
15
23
  },
16
24
  "required": [
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "description": "Provider-qualified podcast episode with selection metadata.",
5
+ "properties": {
6
+ "id": {
7
+ "$ref": "/docs/references/schemas/MediaId.json"
8
+ },
9
+ "name": {
10
+ "type": "string",
11
+ "minLength": 1
12
+ },
13
+ "showId": {
14
+ "$ref": "/docs/references/schemas/MediaId.json"
15
+ },
16
+ "releaseDate": {
17
+ "type": "string",
18
+ "description": "Provider release date; precision can be year, month or day."
19
+ },
20
+ "releaseDatePrecision": {
21
+ "type": "string",
22
+ "description": "Provider date precision."
23
+ }
24
+ },
25
+ "required": [
26
+ "id",
27
+ "name"
28
+ ],
29
+ "additionalProperties": false
30
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "description": "Provider-qualified podcast series; read episodes before playback.",
5
+ "properties": {
6
+ "id": {
7
+ "$ref": "/docs/references/schemas/MediaId.json"
8
+ },
9
+ "name": {
10
+ "type": "string",
11
+ "minLength": 1
12
+ },
13
+ "publisher": {
14
+ "type": "string"
15
+ }
16
+ },
17
+ "required": [
18
+ "id",
19
+ "name"
20
+ ],
21
+ "additionalProperties": false
22
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "SupportedMediaResource",
4
+ "description": "A provider, media type and resource-kind combination accepted by a control route.",
5
+ "type": "object",
6
+ "properties": {
7
+ "provider": {
8
+ "$ref": "/docs/references/schemas/MediaProvider.json"
9
+ },
10
+ "mediaType": {
11
+ "type": "string",
12
+ "enum": [
13
+ "AUDIO",
14
+ "VIDEO",
15
+ "IMAGE"
16
+ ]
17
+ },
18
+ "resourceKinds": {
19
+ "type": "array",
20
+ "minItems": 1,
21
+ "uniqueItems": true,
22
+ "items": {
23
+ "type": "string",
24
+ "description": "Lowercase resource-kind segment from the provider URI."
25
+ }
26
+ }
27
+ },
28
+ "required": [
29
+ "provider",
30
+ "mediaType",
31
+ "resourceKinds"
32
+ ],
33
+ "additionalProperties": false
34
+ }
@@ -18,7 +18,9 @@
18
18
  "ARTIST",
19
19
  "PLAYLIST",
20
20
  "GENRE",
21
- "YEAR"
21
+ "YEAR",
22
+ "SHOW",
23
+ "EPISODE"
22
24
  ],
23
25
  "x-enum-varnames": [
24
26
  "Configuration6SupportedSearchTypesTrack",
@@ -26,7 +28,9 @@
26
28
  "Configuration6SupportedSearchTypesArtist",
27
29
  "Configuration6SupportedSearchTypesPlaylist",
28
30
  "Configuration6SupportedSearchTypesGenre",
29
- "Configuration6SupportedSearchTypesYear"
31
+ "Configuration6SupportedSearchTypesYear",
32
+ "Configuration6SupportedSearchTypesShow",
33
+ "Configuration6SupportedSearchTypesEpisode"
30
34
  ]
31
35
  },
32
36
  "description": "List of supported search types"
@@ -2095,6 +2095,12 @@
2095
2095
  "path": "/docs/references/schemas/MediaPlayerInterfaceNextMessage.json",
2096
2096
  "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlayerInterfaceNextMessage"
2097
2097
  },
2098
+ {
2099
+ "kind": "schemas",
2100
+ "name": "MediaPlayerInterfaceNowPlayingAttribute",
2101
+ "path": "/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json",
2102
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlayerInterfaceNowPlayingAttribute"
2103
+ },
2098
2104
  {
2099
2105
  "kind": "schemas",
2100
2106
  "name": "MediaPlayerInterfacePauseMessage",
@@ -2209,6 +2215,24 @@
2209
2215
  "path": "/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json",
2210
2216
  "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfaceGetPlaylistMessage"
2211
2217
  },
2218
+ {
2219
+ "kind": "schemas",
2220
+ "name": "MediaPlaylistInterfaceListPlaylistsMessage",
2221
+ "path": "/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json",
2222
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfaceListPlaylistsMessage"
2223
+ },
2224
+ {
2225
+ "kind": "schemas",
2226
+ "name": "MediaPlaylistInterfacePlaylistContentsMessage",
2227
+ "path": "/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json",
2228
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfacePlaylistContentsMessage"
2229
+ },
2230
+ {
2231
+ "kind": "schemas",
2232
+ "name": "MediaPlaylistInterfacePlaylistsMessage",
2233
+ "path": "/docs/references/schemas/MediaPlaylistInterfacePlaylistsMessage.json",
2234
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfacePlaylistsMessage"
2235
+ },
2212
2236
  {
2213
2237
  "kind": "schemas",
2214
2238
  "name": "MediaPlaylistInterfacePlayPlaylistMessage",
@@ -2245,6 +2269,18 @@
2245
2269
  "path": "/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json",
2246
2270
  "source": "/docs/references/openapi.yaml#/components/schemas/MediaSearchInterfaceAudioMediaResultsMessage"
2247
2271
  },
2272
+ {
2273
+ "kind": "schemas",
2274
+ "name": "MediaSearchInterfaceGetMediaMessage",
2275
+ "path": "/docs/references/schemas/MediaSearchInterfaceGetMediaMessage.json",
2276
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaSearchInterfaceGetMediaMessage"
2277
+ },
2278
+ {
2279
+ "kind": "schemas",
2280
+ "name": "MediaSearchInterfaceMediaDetailsMessage",
2281
+ "path": "/docs/references/schemas/MediaSearchInterfaceMediaDetailsMessage.json",
2282
+ "source": "/docs/references/openapi.yaml#/components/schemas/MediaSearchInterfaceMediaDetailsMessage"
2283
+ },
2248
2284
  {
2249
2285
  "kind": "schemas",
2250
2286
  "name": "MediaSearchInterfaceSearchMediaMessage",
@@ -2791,6 +2827,18 @@
2791
2827
  "path": "/docs/references/schemas/PM25ConcentrationMeasurementInterfaceMeasuredValueAttribute.json",
2792
2828
  "source": "/docs/references/openapi.yaml#/components/schemas/PM25ConcentrationMeasurementInterfaceMeasuredValueAttribute"
2793
2829
  },
2830
+ {
2831
+ "kind": "schemas",
2832
+ "name": "PodcastEpisode",
2833
+ "path": "/docs/references/schemas/PodcastEpisode.json",
2834
+ "source": "/docs/references/openapi.yaml#/components/schemas/PodcastEpisode"
2835
+ },
2836
+ {
2837
+ "kind": "schemas",
2838
+ "name": "PodcastShow",
2839
+ "path": "/docs/references/schemas/PodcastShow.json",
2840
+ "source": "/docs/references/openapi.yaml#/components/schemas/PodcastShow"
2841
+ },
2794
2842
  {
2795
2843
  "kind": "schemas",
2796
2844
  "name": "Position",
@@ -3853,6 +3901,12 @@
3853
3901
  "path": "/docs/references/schemas/SupportedInput.json",
3854
3902
  "source": "/docs/references/openapi.yaml#/components/schemas/SupportedInput"
3855
3903
  },
3904
+ {
3905
+ "kind": "schemas",
3906
+ "name": "SupportedMediaResource",
3907
+ "path": "/docs/references/schemas/SupportedMediaResource.json",
3908
+ "source": "/docs/references/openapi.yaml#/components/schemas/SupportedMediaResource"
3909
+ },
3856
3910
  {
3857
3911
  "kind": "schemas",
3858
3912
  "name": "SynchronizationItemError",
@@ -2,6 +2,43 @@
2
2
  "description": "Media players select media by its Port OS media ID, play supplied audio or a URI, and control playback. Read playback state and use only the commands supported by the connected player.",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "supportedMediaResources": {
6
+ "type": "array",
7
+ "description": "Exact play-media URI combinations accepted by this route. Member or endpoint unions do not imply support by every route.",
8
+ "items": {
9
+ "title": "SupportedMediaResource",
10
+ "description": "A provider, media type and resource-kind combination accepted by a control route.",
11
+ "type": "object",
12
+ "properties": {
13
+ "provider": {
14
+ "$ref": "#/properties/supportedAudioProviders/items"
15
+ },
16
+ "mediaType": {
17
+ "type": "string",
18
+ "enum": [
19
+ "AUDIO",
20
+ "VIDEO",
21
+ "IMAGE"
22
+ ]
23
+ },
24
+ "resourceKinds": {
25
+ "type": "array",
26
+ "minItems": 1,
27
+ "uniqueItems": true,
28
+ "items": {
29
+ "type": "string",
30
+ "description": "Lowercase resource-kind segment from the provider URI."
31
+ }
32
+ }
33
+ },
34
+ "required": [
35
+ "provider",
36
+ "mediaType",
37
+ "resourceKinds"
38
+ ],
39
+ "additionalProperties": false
40
+ }
41
+ },
5
42
  "supportedAudioProviders": {
6
43
  "type": "array",
7
44
  "uniqueItems": true,
@@ -5,7 +5,9 @@
5
5
  "title": "MediaId",
6
6
  "type": "string",
7
7
  "minLength": 1,
8
- "description": "Media IDs are a standardized identifier that Port OS uses to represent media across YouTube, Spotify, and other media providers. See https://portpowered.com/docs/media for the current media identifiers documentation."
8
+ "example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
9
+ "pattern": "^(portos-media://portpowered[.]com/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+|youtube:video:[A-Za-z0-9_-]+)$",
10
+ "description": "Exact provider resource identity. The canonical form is portos-media://portpowered.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. Legacy providers retain their own input contracts until explicitly migrated. See https://portpowered.com/docs/media.\n"
9
11
  }
10
12
  },
11
13
  "required": [
@@ -0,0 +1,27 @@
1
+ {
2
+ "description": "Media identity observed on this route. Active false means the provider session is on another target; it does not prove the speaker is silent through other providers.",
3
+ "type": "object",
4
+ "properties": {
5
+ "active": {
6
+ "type": "boolean"
7
+ },
8
+ "mediaId": {
9
+ "title": "MediaId",
10
+ "type": "string",
11
+ "minLength": 1,
12
+ "example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
13
+ "pattern": "^(portos-media://portpowered[.]com/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+|youtube:video:[A-Za-z0-9_-]+)$",
14
+ "description": "Exact provider resource identity. The canonical form is portos-media://portpowered.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. Legacy providers retain their own input contracts until explicitly migrated. See https://portpowered.com/docs/media.\n"
15
+ },
16
+ "contextMediaId": {
17
+ "$ref": "#/properties/mediaId"
18
+ },
19
+ "name": {
20
+ "type": "string"
21
+ }
22
+ },
23
+ "required": [
24
+ "active"
25
+ ],
26
+ "additionalProperties": false
27
+ }
@@ -5,6 +5,17 @@
5
5
  "type": "string",
6
6
  "description": "ID of the playlist to retrieve",
7
7
  "minLength": 1
8
+ },
9
+ "maxResults": {
10
+ "type": "integer",
11
+ "minimum": 1,
12
+ "maximum": 50,
13
+ "default": 20
14
+ },
15
+ "nextToken": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Opaque continuation for the same playlist."
8
19
  }
9
20
  },
10
21
  "required": [
@@ -0,0 +1,18 @@
1
+ {
2
+ "description": "List the connected customer's owned or followed playlists; use search-media for catalog search.",
3
+ "type": "object",
4
+ "properties": {
5
+ "maxResults": {
6
+ "type": "integer",
7
+ "minimum": 1,
8
+ "maximum": 50,
9
+ "default": 20
10
+ },
11
+ "nextToken": {
12
+ "type": "string",
13
+ "minLength": 1
14
+ }
15
+ },
16
+ "required": [],
17
+ "additionalProperties": false
18
+ }
@@ -0,0 +1,140 @@
1
+ {
2
+ "description": "A bounded playlist page containing playable tracks or episodes.",
3
+ "type": "object",
4
+ "properties": {
5
+ "playlistId": {
6
+ "title": "MediaId",
7
+ "type": "string",
8
+ "minLength": 1,
9
+ "example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
10
+ "pattern": "^(portos-media://portpowered[.]com/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+|youtube:video:[A-Za-z0-9_-]+)$",
11
+ "description": "Exact provider resource identity. The canonical form is portos-media://portpowered.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. Legacy providers retain their own input contracts until explicitly migrated. See https://portpowered.com/docs/media.\n"
12
+ },
13
+ "tracks": {
14
+ "type": "array",
15
+ "items": {
16
+ "type": "object",
17
+ "description": "Track information",
18
+ "properties": {
19
+ "id": {
20
+ "type": "string",
21
+ "description": "Unique identifier for the track",
22
+ "minLength": 1
23
+ },
24
+ "name": {
25
+ "type": "string",
26
+ "description": "Track name",
27
+ "minLength": 1
28
+ },
29
+ "artists": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "description": "Artist information",
34
+ "properties": {
35
+ "id": {
36
+ "type": "string",
37
+ "description": "Unique identifier for the artist",
38
+ "minLength": 1
39
+ },
40
+ "name": {
41
+ "type": "string",
42
+ "description": "Artist name",
43
+ "minLength": 1
44
+ }
45
+ },
46
+ "required": [
47
+ "id",
48
+ "name"
49
+ ],
50
+ "additionalProperties": false,
51
+ "title": "Artist"
52
+ },
53
+ "description": "Track artists"
54
+ },
55
+ "album": {
56
+ "description": "Track album",
57
+ "type": "object",
58
+ "properties": {
59
+ "id": {
60
+ "type": "string",
61
+ "description": "Unique identifier for the album",
62
+ "minLength": 1
63
+ },
64
+ "name": {
65
+ "type": "string",
66
+ "description": "Album name",
67
+ "minLength": 1
68
+ },
69
+ "artists": {
70
+ "type": "array",
71
+ "items": {
72
+ "$ref": "#/properties/tracks/items/properties/artists/items"
73
+ },
74
+ "description": "Album artists"
75
+ }
76
+ },
77
+ "required": [
78
+ "id",
79
+ "name",
80
+ "artists"
81
+ ],
82
+ "additionalProperties": false,
83
+ "title": "Album"
84
+ }
85
+ },
86
+ "required": [
87
+ "id",
88
+ "name",
89
+ "artists",
90
+ "album"
91
+ ],
92
+ "additionalProperties": false,
93
+ "title": "Track"
94
+ }
95
+ },
96
+ "episodes": {
97
+ "type": "array",
98
+ "items": {
99
+ "type": "object",
100
+ "description": "Provider-qualified podcast episode with selection metadata.",
101
+ "properties": {
102
+ "id": {
103
+ "$ref": "#/properties/playlistId"
104
+ },
105
+ "name": {
106
+ "type": "string",
107
+ "minLength": 1
108
+ },
109
+ "showId": {
110
+ "$ref": "#/properties/playlistId"
111
+ },
112
+ "releaseDate": {
113
+ "type": "string",
114
+ "description": "Provider release date; precision can be year, month or day."
115
+ },
116
+ "releaseDatePrecision": {
117
+ "type": "string",
118
+ "description": "Provider date precision."
119
+ }
120
+ },
121
+ "required": [
122
+ "id",
123
+ "name"
124
+ ],
125
+ "additionalProperties": false,
126
+ "title": "PodcastEpisode"
127
+ }
128
+ },
129
+ "nextToken": {
130
+ "type": "string",
131
+ "minLength": 1
132
+ }
133
+ },
134
+ "required": [
135
+ "playlistId",
136
+ "tracks",
137
+ "episodes"
138
+ ],
139
+ "additionalProperties": false
140
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "description": "A page of the connected customer's playlists with exact resource IDs.",
3
+ "type": "object",
4
+ "properties": {
5
+ "playlists": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "type": "string",
12
+ "description": "Unique identifier for the playlist",
13
+ "minLength": 1
14
+ },
15
+ "name": {
16
+ "type": "string",
17
+ "description": "Playlist name",
18
+ "minLength": 1
19
+ },
20
+ "ownerId": {
21
+ "type": "string",
22
+ "description": "Provider-scoped owner identity, when supplied by the provider."
23
+ },
24
+ "ownerName": {
25
+ "type": "string",
26
+ "description": "Owner display name, useful for distinguishing owned and followed playlists."
27
+ }
28
+ },
29
+ "required": [
30
+ "id",
31
+ "name"
32
+ ],
33
+ "additionalProperties": false,
34
+ "title": "Playlist"
35
+ }
36
+ },
37
+ "nextToken": {
38
+ "type": "string",
39
+ "minLength": 1
40
+ }
41
+ },
42
+ "required": [
43
+ "playlists"
44
+ ],
45
+ "additionalProperties": false
46
+ }