@portpowered/reference-data 0.4.6 → 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.
- package/generated/capabilities.json +713 -7
- package/generated/openapi.json +503 -41
- package/generated/public/docs/for-ai/capability-interfaces/brightness/1.0.md +1 -0
- package/generated/public/docs/for-ai/capability-interfaces/media-player/1.0.md +3 -1
- package/generated/public/docs/for-ai/capability-interfaces/media-playlist/1.0.md +3 -0
- package/generated/public/docs/for-ai/capability-interfaces/media-search/1.0.md +2 -0
- package/generated/public/docs/for-ai/schemas/b-1.md +1 -0
- package/generated/public/docs/for-ai/schemas/m-1.md +8 -8
- package/generated/public/docs/for-ai/schemas/m-2.md +8 -0
- package/generated/public/docs/for-ai/schemas/p-2.md +2 -0
- package/generated/public/docs/for-ai/schemas/s-3.md +1 -0
- package/generated/public/docs/for-ai/schemas.md +5 -5
- package/generated/public/docs/references/capability-interfaces/brightness/1.0/messages/adjust-brightness.yaml +12 -0
- package/generated/public/docs/references/capability-interfaces/brightness/1.0.yaml +18 -0
- package/generated/public/docs/references/capability-interfaces/brightness.yaml +18 -0
- package/generated/public/docs/references/capability-interfaces/keypad-input/1.0/configuration.yaml +1 -0
- package/generated/public/docs/references/capability-interfaces/keypad-input/1.0/messages/send-key.yaml +1 -0
- package/generated/public/docs/references/capability-interfaces/keypad-input/1.0.yaml +2 -0
- package/generated/public/docs/references/capability-interfaces/keypad-input.yaml +2 -0
- package/generated/public/docs/references/capability-interfaces/media-player/1.0/attributes/now-playing.yaml +30 -0
- package/generated/public/docs/references/capability-interfaces/media-player/1.0/configuration.yaml +70 -0
- package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/fast-forward.yaml +5 -0
- package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/play-media.yaml +11 -5
- package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/search-and-play.yaml +39 -1
- package/generated/public/docs/references/capability-interfaces/media-player/1.0.yaml +162 -6
- package/generated/public/docs/references/capability-interfaces/media-player.yaml +162 -6
- package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/get-playlist.yaml +9 -0
- package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/list-playlists.yaml +15 -0
- package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlist-contents.yaml +114 -0
- package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlists.yaml +35 -0
- package/generated/public/docs/references/capability-interfaces/media-playlist/1.0.yaml +184 -0
- package/generated/public/docs/references/capability-interfaces/media-playlist.yaml +184 -0
- package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/audio-media-results.yaml +67 -0
- package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/get-media.yaml +32 -0
- package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/media-details.yaml +118 -0
- package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/search-media.yaml +15 -1
- package/generated/public/docs/references/capability-interfaces/media-search/1.0.yaml +235 -1
- package/generated/public/docs/references/capability-interfaces/media-search.yaml +235 -1
- package/generated/public/docs/references/capability-interfaces/recordings/1.0/messages/list-recordings-response.yaml +11 -5
- package/generated/public/docs/references/capability-interfaces/recordings/1.0.yaml +10 -5
- package/generated/public/docs/references/capability-interfaces/recordings.yaml +10 -5
- package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0/configuration.yaml +14 -0
- package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0/messages/speak.yaml +7 -0
- package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0.yaml +22 -1
- package/generated/public/docs/references/capability-interfaces/speech-synthesizer.yaml +22 -1
- package/generated/public/docs/references/manifest.json +278 -111
- package/generated/public/docs/references/openapi.yaml +427 -38
- package/generated/public/docs/references/schemas/BrightnessInterfaceAdjustBrightnessMessage.json +21 -0
- package/generated/public/docs/references/schemas/CreateMessageTarget.json +4 -0
- package/generated/public/docs/references/schemas/KeypadInputInterfaceConfiguration.json +1 -0
- package/generated/public/docs/references/schemas/KeypadInputInterfaceSendKeyMessage.json +1 -0
- package/generated/public/docs/references/schemas/MediaId.json +3 -1
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceConfiguration.json +31 -0
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceFastForwardMessage.json +11 -0
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json +27 -0
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceSearchAndPlayMessage.json +23 -1
- package/generated/public/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json +11 -0
- package/generated/public/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json +24 -0
- package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json +37 -0
- package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistsMessage.json +26 -0
- package/generated/public/docs/references/schemas/MediaProvider.json +37 -0
- package/generated/public/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json +17 -0
- package/generated/public/docs/references/schemas/MediaSearchInterfaceGetMediaMessage.json +30 -0
- package/generated/public/docs/references/schemas/MediaSearchInterfaceMediaDetailsMessage.json +43 -0
- package/generated/public/docs/references/schemas/MediaSearchInterfaceSearchMediaMessage.json +13 -1
- package/generated/public/docs/references/schemas/Playlist.json +8 -0
- package/generated/public/docs/references/schemas/PodcastEpisode.json +30 -0
- package/generated/public/docs/references/schemas/PodcastShow.json +22 -0
- package/generated/public/docs/references/schemas/SpeechInput.json +7 -1
- package/generated/public/docs/references/schemas/SpeechSynthesizerInterfaceConfiguration.json +13 -0
- package/generated/public/docs/references/schemas/SupportedMediaResource.json +34 -0
- package/generated/public/docs/references/schemas/configuration-6.json +6 -2
- package/generated/public/docs/references/schemas/index.json +72 -0
- package/generated/resources/brightness/message-adjust-brightness.json +15 -0
- package/generated/resources/keypad-input/configuration.json +1 -0
- package/generated/resources/keypad-input/message-send-key.json +1 -0
- package/generated/resources/media-player/configuration.json +78 -0
- package/generated/resources/media-player/message-fast-forward.json +5 -0
- package/generated/resources/media-player/message-play-media.json +3 -1
- package/generated/resources/media-player/message-search-and-play.json +36 -1
- package/generated/resources/media-player/state-now-playing.json +27 -0
- package/generated/resources/media-playlist/message-get-playlist.json +11 -0
- package/generated/resources/media-playlist/message-list-playlists.json +18 -0
- package/generated/resources/media-playlist/message-playlist-contents.json +140 -0
- package/generated/resources/media-playlist/message-playlists.json +46 -0
- package/generated/resources/media-search/message-audio-media-results.json +76 -0
- package/generated/resources/media-search/message-get-media.json +29 -0
- package/generated/resources/media-search/message-media-details.json +146 -0
- package/generated/resources/media-search/message-search-media.json +13 -1
- package/generated/resources/recordings/message-list-recordings-response.json +3 -1
- package/generated/resources/speech-synthesizer/configuration.json +18 -1
- package/generated/resources/speech-synthesizer/message-speak.json +7 -1
- package/package.json +1 -1
|
@@ -361,6 +361,12 @@
|
|
|
361
361
|
"path": "/docs/references/schemas/BrandingInformation.json",
|
|
362
362
|
"source": "/docs/references/openapi.yaml#/components/schemas/BrandingInformation"
|
|
363
363
|
},
|
|
364
|
+
{
|
|
365
|
+
"kind": "schemas",
|
|
366
|
+
"name": "BrightnessInterfaceAdjustBrightnessMessage",
|
|
367
|
+
"path": "/docs/references/schemas/BrightnessInterfaceAdjustBrightnessMessage.json",
|
|
368
|
+
"source": "/docs/references/openapi.yaml#/components/schemas/BrightnessInterfaceAdjustBrightnessMessage"
|
|
369
|
+
},
|
|
364
370
|
{
|
|
365
371
|
"kind": "schemas",
|
|
366
372
|
"name": "BrightnessInterfaceBrightnessAttribute",
|
|
@@ -2077,12 +2083,24 @@
|
|
|
2077
2083
|
"path": "/docs/references/schemas/MediaPlayerInterfaceConfiguration.json",
|
|
2078
2084
|
"source": "/docs/references/openapi.yaml#/components/schemas/MediaPlayerInterfaceConfiguration"
|
|
2079
2085
|
},
|
|
2086
|
+
{
|
|
2087
|
+
"kind": "schemas",
|
|
2088
|
+
"name": "MediaPlayerInterfaceFastForwardMessage",
|
|
2089
|
+
"path": "/docs/references/schemas/MediaPlayerInterfaceFastForwardMessage.json",
|
|
2090
|
+
"source": "/docs/references/openapi.yaml#/components/schemas/MediaPlayerInterfaceFastForwardMessage"
|
|
2091
|
+
},
|
|
2080
2092
|
{
|
|
2081
2093
|
"kind": "schemas",
|
|
2082
2094
|
"name": "MediaPlayerInterfaceNextMessage",
|
|
2083
2095
|
"path": "/docs/references/schemas/MediaPlayerInterfaceNextMessage.json",
|
|
2084
2096
|
"source": "/docs/references/openapi.yaml#/components/schemas/MediaPlayerInterfaceNextMessage"
|
|
2085
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
|
+
},
|
|
2086
2104
|
{
|
|
2087
2105
|
"kind": "schemas",
|
|
2088
2106
|
"name": "MediaPlayerInterfacePauseMessage",
|
|
@@ -2197,6 +2215,24 @@
|
|
|
2197
2215
|
"path": "/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json",
|
|
2198
2216
|
"source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfaceGetPlaylistMessage"
|
|
2199
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
|
+
},
|
|
2200
2236
|
{
|
|
2201
2237
|
"kind": "schemas",
|
|
2202
2238
|
"name": "MediaPlaylistInterfacePlayPlaylistMessage",
|
|
@@ -2215,6 +2251,12 @@
|
|
|
2215
2251
|
"path": "/docs/references/schemas/MediaPlaylistInterfaceShufflePlaylistMessage.json",
|
|
2216
2252
|
"source": "/docs/references/openapi.yaml#/components/schemas/MediaPlaylistInterfaceShufflePlaylistMessage"
|
|
2217
2253
|
},
|
|
2254
|
+
{
|
|
2255
|
+
"kind": "schemas",
|
|
2256
|
+
"name": "MediaProvider",
|
|
2257
|
+
"path": "/docs/references/schemas/MediaProvider.json",
|
|
2258
|
+
"source": "/docs/references/openapi.yaml#/components/schemas/MediaProvider"
|
|
2259
|
+
},
|
|
2218
2260
|
{
|
|
2219
2261
|
"kind": "schemas",
|
|
2220
2262
|
"name": "MediaSearchCapabilityInterfaceConfiguration",
|
|
@@ -2227,6 +2269,18 @@
|
|
|
2227
2269
|
"path": "/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json",
|
|
2228
2270
|
"source": "/docs/references/openapi.yaml#/components/schemas/MediaSearchInterfaceAudioMediaResultsMessage"
|
|
2229
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
|
+
},
|
|
2230
2284
|
{
|
|
2231
2285
|
"kind": "schemas",
|
|
2232
2286
|
"name": "MediaSearchInterfaceSearchMediaMessage",
|
|
@@ -2773,6 +2827,18 @@
|
|
|
2773
2827
|
"path": "/docs/references/schemas/PM25ConcentrationMeasurementInterfaceMeasuredValueAttribute.json",
|
|
2774
2828
|
"source": "/docs/references/openapi.yaml#/components/schemas/PM25ConcentrationMeasurementInterfaceMeasuredValueAttribute"
|
|
2775
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
|
+
},
|
|
2776
2842
|
{
|
|
2777
2843
|
"kind": "schemas",
|
|
2778
2844
|
"name": "Position",
|
|
@@ -3835,6 +3901,12 @@
|
|
|
3835
3901
|
"path": "/docs/references/schemas/SupportedInput.json",
|
|
3836
3902
|
"source": "/docs/references/openapi.yaml#/components/schemas/SupportedInput"
|
|
3837
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
|
+
},
|
|
3838
3910
|
{
|
|
3839
3911
|
"kind": "schemas",
|
|
3840
3912
|
"name": "SynchronizationItemError",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Adjust brightness by a signed number of percentage points. The endpoint must advertise this message separately from set-brightness.",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"brightnessDelta": {
|
|
6
|
+
"type": "integer",
|
|
7
|
+
"minimum": -100,
|
|
8
|
+
"maximum": 100
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": [
|
|
12
|
+
"brightnessDelta"
|
|
13
|
+
],
|
|
14
|
+
"additionalProperties": false
|
|
15
|
+
}
|
|
@@ -2,6 +2,84 @@
|
|
|
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
|
+
},
|
|
42
|
+
"supportedAudioProviders": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"uniqueItems": true,
|
|
45
|
+
"description": "Audio services accepted by search-and-play on this endpoint. These describe command support, not active subscriptions.",
|
|
46
|
+
"items": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Media service identifier. A provider enum value does not imply that every endpoint supports that service; use the endpoint's advertised provider lists.",
|
|
49
|
+
"enum": [
|
|
50
|
+
"SPOTIFY",
|
|
51
|
+
"AMAZON_MUSIC",
|
|
52
|
+
"APPLE_MUSIC",
|
|
53
|
+
"AUDIBLE",
|
|
54
|
+
"TUNE_IN",
|
|
55
|
+
"PANDORA",
|
|
56
|
+
"IHEART_RADIO",
|
|
57
|
+
"SIRIUSXM",
|
|
58
|
+
"DEEZER",
|
|
59
|
+
"TIDAL",
|
|
60
|
+
"YOUTUBE",
|
|
61
|
+
"NETFLIX",
|
|
62
|
+
"PRIME_VIDEO",
|
|
63
|
+
"DAILYMOTION"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"supportedVideoProviders": {
|
|
68
|
+
"type": "array",
|
|
69
|
+
"uniqueItems": true,
|
|
70
|
+
"description": "Video services accepted by search-and-play on this endpoint. These describe command support, not installed applications or active subscriptions.",
|
|
71
|
+
"items": {
|
|
72
|
+
"$ref": "#/properties/supportedAudioProviders/items"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"defaultAudioProvider": {
|
|
76
|
+
"$ref": "#/properties/supportedAudioProviders/items",
|
|
77
|
+
"description": "Default service for an audio search. Must be in supportedAudioProviders."
|
|
78
|
+
},
|
|
79
|
+
"defaultVideoProvider": {
|
|
80
|
+
"$ref": "#/properties/supportedAudioProviders/items",
|
|
81
|
+
"description": "Default service for a video search. Must be in supportedVideoProviders."
|
|
82
|
+
},
|
|
5
83
|
"supportedPlaybackStates": {
|
|
6
84
|
"type": "array",
|
|
7
85
|
"items": {
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
"title": "MediaId",
|
|
6
6
|
"type": "string",
|
|
7
7
|
"minLength": 1,
|
|
8
|
-
"
|
|
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": [
|
|
@@ -1,10 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
+
"description": "Search for and play media by title or query using a service advertised by the endpoint. Omitting mediaType retains audio search behavior; video-only endpoints may default to video.",
|
|
2
3
|
"type": "object",
|
|
3
4
|
"properties": {
|
|
4
5
|
"query": {
|
|
5
6
|
"type": "string",
|
|
6
|
-
"description": "Query to search for
|
|
7
|
+
"description": "Query to search for media content",
|
|
7
8
|
"minLength": 1
|
|
9
|
+
},
|
|
10
|
+
"provider": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Media service identifier. A provider enum value does not imply that every endpoint supports that service; use the endpoint's advertised provider lists.",
|
|
13
|
+
"enum": [
|
|
14
|
+
"SPOTIFY",
|
|
15
|
+
"AMAZON_MUSIC",
|
|
16
|
+
"APPLE_MUSIC",
|
|
17
|
+
"AUDIBLE",
|
|
18
|
+
"TUNE_IN",
|
|
19
|
+
"PANDORA",
|
|
20
|
+
"IHEART_RADIO",
|
|
21
|
+
"SIRIUSXM",
|
|
22
|
+
"DEEZER",
|
|
23
|
+
"TIDAL",
|
|
24
|
+
"YOUTUBE",
|
|
25
|
+
"NETFLIX",
|
|
26
|
+
"PRIME_VIDEO",
|
|
27
|
+
"DAILYMOTION"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"mediaType": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"enum": [
|
|
33
|
+
"AUDIO",
|
|
34
|
+
"VIDEO"
|
|
35
|
+
],
|
|
36
|
+
"description": "Media search domain. The endpoint must advertise support for the selected type."
|
|
37
|
+
},
|
|
38
|
+
"timerSeconds": {
|
|
39
|
+
"type": "integer",
|
|
40
|
+
"minimum": 1,
|
|
41
|
+
"maximum": 86400,
|
|
42
|
+
"description": "Optional provider playback timer in seconds."
|
|
8
43
|
}
|
|
9
44
|
},
|
|
10
45
|
"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
|
+
}
|
|
@@ -114,6 +114,14 @@
|
|
|
114
114
|
"type": "string",
|
|
115
115
|
"description": "Playlist name",
|
|
116
116
|
"minLength": 1
|
|
117
|
+
},
|
|
118
|
+
"ownerId": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"description": "Provider-scoped owner identity, when supplied by the provider."
|
|
121
|
+
},
|
|
122
|
+
"ownerName": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"description": "Owner display name, useful for distinguishing owned and followed playlists."
|
|
117
125
|
}
|
|
118
126
|
},
|
|
119
127
|
"required": [
|
|
@@ -124,6 +132,74 @@
|
|
|
124
132
|
"title": "Playlist"
|
|
125
133
|
},
|
|
126
134
|
"description": "Playlist results"
|
|
135
|
+
},
|
|
136
|
+
"shows": {
|
|
137
|
+
"type": "array",
|
|
138
|
+
"items": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"description": "Provider-qualified podcast series; read episodes before playback.",
|
|
141
|
+
"properties": {
|
|
142
|
+
"id": {
|
|
143
|
+
"title": "MediaId",
|
|
144
|
+
"type": "string",
|
|
145
|
+
"minLength": 1,
|
|
146
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
147
|
+
"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_-]+)$",
|
|
148
|
+
"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"
|
|
149
|
+
},
|
|
150
|
+
"name": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"minLength": 1
|
|
153
|
+
},
|
|
154
|
+
"publisher": {
|
|
155
|
+
"type": "string"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"required": [
|
|
159
|
+
"id",
|
|
160
|
+
"name"
|
|
161
|
+
],
|
|
162
|
+
"additionalProperties": false,
|
|
163
|
+
"title": "PodcastShow"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"episodes": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"items": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"description": "Provider-qualified podcast episode with selection metadata.",
|
|
171
|
+
"properties": {
|
|
172
|
+
"id": {
|
|
173
|
+
"$ref": "#/properties/shows/items/properties/id"
|
|
174
|
+
},
|
|
175
|
+
"name": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"minLength": 1
|
|
178
|
+
},
|
|
179
|
+
"showId": {
|
|
180
|
+
"$ref": "#/properties/shows/items/properties/id"
|
|
181
|
+
},
|
|
182
|
+
"releaseDate": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"description": "Provider release date; precision can be year, month or day."
|
|
185
|
+
},
|
|
186
|
+
"releaseDatePrecision": {
|
|
187
|
+
"type": "string",
|
|
188
|
+
"description": "Provider date precision."
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"required": [
|
|
192
|
+
"id",
|
|
193
|
+
"name"
|
|
194
|
+
],
|
|
195
|
+
"additionalProperties": false,
|
|
196
|
+
"title": "PodcastEpisode"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"nextToken": {
|
|
200
|
+
"type": "string",
|
|
201
|
+
"minLength": 1,
|
|
202
|
+
"description": "Opaque continuation for the same search; omit when exhausted."
|
|
127
203
|
}
|
|
128
204
|
},
|
|
129
205
|
"required": [
|