@portpowered/reference-data 0.4.7 → 0.4.9
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 +579 -4
- package/generated/openapi.json +369 -40
- package/generated/public/docs/for-ai/capability-interfaces/media-player/1.0.md +1 -0
- 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/capability-interfaces/route-discovery/1.0.md +1 -1
- package/generated/public/docs/for-ai/schemas/m-1.md +6 -6
- package/generated/public/docs/for-ai/schemas/m-2.md +6 -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 +4 -4
- 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 +30 -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.yaml +73 -4
- package/generated/public/docs/references/capability-interfaces/media-player.yaml +73 -4
- 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/route-discovery/1.0.yaml +1 -1
- package/generated/public/docs/references/capability-interfaces/route-discovery.yaml +1 -1
- package/generated/public/docs/references/manifest.json +203 -83
- package/generated/public/docs/references/openapi.yaml +304 -38
- package/generated/public/docs/references/schemas/CreateMessageTarget.json +4 -0
- package/generated/public/docs/references/schemas/MediaId.json +3 -1
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceConfiguration.json +7 -0
- package/generated/public/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json +27 -0
- 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/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/RouteDiscoveryInterfaceDiscoverRoutesMessage.json +1 -1
- 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 +54 -0
- package/generated/resources/media-player/configuration.json +37 -0
- package/generated/resources/media-player/message-play-media.json +3 -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/package.json +8 -3
|
@@ -4421,7 +4421,9 @@
|
|
|
4421
4421
|
"title": "MediaId",
|
|
4422
4422
|
"type": "string",
|
|
4423
4423
|
"minLength": 1,
|
|
4424
|
-
"
|
|
4424
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
4425
|
+
"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_-]+)$",
|
|
4426
|
+
"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"
|
|
4425
4427
|
}
|
|
4426
4428
|
},
|
|
4427
4429
|
"required": [
|
|
@@ -4612,6 +4614,37 @@
|
|
|
4612
4614
|
}
|
|
4613
4615
|
],
|
|
4614
4616
|
"attributes": [
|
|
4617
|
+
{
|
|
4618
|
+
"name": "now-playing",
|
|
4619
|
+
"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.",
|
|
4620
|
+
"schema": {
|
|
4621
|
+
"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.",
|
|
4622
|
+
"type": "object",
|
|
4623
|
+
"properties": {
|
|
4624
|
+
"active": {
|
|
4625
|
+
"type": "boolean"
|
|
4626
|
+
},
|
|
4627
|
+
"mediaId": {
|
|
4628
|
+
"title": "MediaId",
|
|
4629
|
+
"type": "string",
|
|
4630
|
+
"minLength": 1,
|
|
4631
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
4632
|
+
"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_-]+)$",
|
|
4633
|
+
"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"
|
|
4634
|
+
},
|
|
4635
|
+
"contextMediaId": {
|
|
4636
|
+
"$ref": "#/properties/mediaId"
|
|
4637
|
+
},
|
|
4638
|
+
"name": {
|
|
4639
|
+
"type": "string"
|
|
4640
|
+
}
|
|
4641
|
+
},
|
|
4642
|
+
"required": [
|
|
4643
|
+
"active"
|
|
4644
|
+
],
|
|
4645
|
+
"additionalProperties": false
|
|
4646
|
+
}
|
|
4647
|
+
},
|
|
4615
4648
|
{
|
|
4616
4649
|
"name": "playback-speed",
|
|
4617
4650
|
"description": null,
|
|
@@ -4660,6 +4693,43 @@
|
|
|
4660
4693
|
"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.",
|
|
4661
4694
|
"type": "object",
|
|
4662
4695
|
"properties": {
|
|
4696
|
+
"supportedMediaResources": {
|
|
4697
|
+
"type": "array",
|
|
4698
|
+
"description": "Exact play-media URI combinations accepted by this route. Member or endpoint unions do not imply support by every route.",
|
|
4699
|
+
"items": {
|
|
4700
|
+
"title": "SupportedMediaResource",
|
|
4701
|
+
"description": "A provider, media type and resource-kind combination accepted by a control route.",
|
|
4702
|
+
"type": "object",
|
|
4703
|
+
"properties": {
|
|
4704
|
+
"provider": {
|
|
4705
|
+
"$ref": "#/properties/supportedAudioProviders/items"
|
|
4706
|
+
},
|
|
4707
|
+
"mediaType": {
|
|
4708
|
+
"type": "string",
|
|
4709
|
+
"enum": [
|
|
4710
|
+
"AUDIO",
|
|
4711
|
+
"VIDEO",
|
|
4712
|
+
"IMAGE"
|
|
4713
|
+
]
|
|
4714
|
+
},
|
|
4715
|
+
"resourceKinds": {
|
|
4716
|
+
"type": "array",
|
|
4717
|
+
"minItems": 1,
|
|
4718
|
+
"uniqueItems": true,
|
|
4719
|
+
"items": {
|
|
4720
|
+
"type": "string",
|
|
4721
|
+
"description": "Lowercase resource-kind segment from the provider URI."
|
|
4722
|
+
}
|
|
4723
|
+
}
|
|
4724
|
+
},
|
|
4725
|
+
"required": [
|
|
4726
|
+
"provider",
|
|
4727
|
+
"mediaType",
|
|
4728
|
+
"resourceKinds"
|
|
4729
|
+
],
|
|
4730
|
+
"additionalProperties": false
|
|
4731
|
+
}
|
|
4732
|
+
},
|
|
4663
4733
|
"supportedAudioProviders": {
|
|
4664
4734
|
"type": "array",
|
|
4665
4735
|
"uniqueItems": true,
|
|
@@ -4879,6 +4949,17 @@
|
|
|
4879
4949
|
"type": "string",
|
|
4880
4950
|
"description": "ID of the playlist to retrieve",
|
|
4881
4951
|
"minLength": 1
|
|
4952
|
+
},
|
|
4953
|
+
"maxResults": {
|
|
4954
|
+
"type": "integer",
|
|
4955
|
+
"minimum": 1,
|
|
4956
|
+
"maximum": 50,
|
|
4957
|
+
"default": 20
|
|
4958
|
+
},
|
|
4959
|
+
"nextToken": {
|
|
4960
|
+
"type": "string",
|
|
4961
|
+
"minLength": 1,
|
|
4962
|
+
"description": "Opaque continuation for the same playlist."
|
|
4882
4963
|
}
|
|
4883
4964
|
},
|
|
4884
4965
|
"required": [
|
|
@@ -4887,6 +4968,29 @@
|
|
|
4887
4968
|
"additionalProperties": false
|
|
4888
4969
|
}
|
|
4889
4970
|
},
|
|
4971
|
+
{
|
|
4972
|
+
"name": "list-playlists",
|
|
4973
|
+
"description": "List the connected customer's owned or followed playlists; use search-media for catalog search.",
|
|
4974
|
+
"directionality": "in",
|
|
4975
|
+
"schema": {
|
|
4976
|
+
"description": "List the connected customer's owned or followed playlists; use search-media for catalog search.",
|
|
4977
|
+
"type": "object",
|
|
4978
|
+
"properties": {
|
|
4979
|
+
"maxResults": {
|
|
4980
|
+
"type": "integer",
|
|
4981
|
+
"minimum": 1,
|
|
4982
|
+
"maximum": 50,
|
|
4983
|
+
"default": 20
|
|
4984
|
+
},
|
|
4985
|
+
"nextToken": {
|
|
4986
|
+
"type": "string",
|
|
4987
|
+
"minLength": 1
|
|
4988
|
+
}
|
|
4989
|
+
},
|
|
4990
|
+
"required": [],
|
|
4991
|
+
"additionalProperties": false
|
|
4992
|
+
}
|
|
4993
|
+
},
|
|
4890
4994
|
{
|
|
4891
4995
|
"name": "play-playlist",
|
|
4892
4996
|
"description": null,
|
|
@@ -4910,6 +5014,202 @@
|
|
|
4910
5014
|
"additionalProperties": false
|
|
4911
5015
|
}
|
|
4912
5016
|
},
|
|
5017
|
+
{
|
|
5018
|
+
"name": "playlist-contents",
|
|
5019
|
+
"description": "A bounded playlist page containing playable tracks or episodes.",
|
|
5020
|
+
"directionality": "out",
|
|
5021
|
+
"schema": {
|
|
5022
|
+
"description": "A bounded playlist page containing playable tracks or episodes.",
|
|
5023
|
+
"type": "object",
|
|
5024
|
+
"properties": {
|
|
5025
|
+
"playlistId": {
|
|
5026
|
+
"title": "MediaId",
|
|
5027
|
+
"type": "string",
|
|
5028
|
+
"minLength": 1,
|
|
5029
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
5030
|
+
"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_-]+)$",
|
|
5031
|
+
"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"
|
|
5032
|
+
},
|
|
5033
|
+
"tracks": {
|
|
5034
|
+
"type": "array",
|
|
5035
|
+
"items": {
|
|
5036
|
+
"type": "object",
|
|
5037
|
+
"description": "Track information",
|
|
5038
|
+
"properties": {
|
|
5039
|
+
"id": {
|
|
5040
|
+
"type": "string",
|
|
5041
|
+
"description": "Unique identifier for the track",
|
|
5042
|
+
"minLength": 1
|
|
5043
|
+
},
|
|
5044
|
+
"name": {
|
|
5045
|
+
"type": "string",
|
|
5046
|
+
"description": "Track name",
|
|
5047
|
+
"minLength": 1
|
|
5048
|
+
},
|
|
5049
|
+
"artists": {
|
|
5050
|
+
"type": "array",
|
|
5051
|
+
"items": {
|
|
5052
|
+
"type": "object",
|
|
5053
|
+
"description": "Artist information",
|
|
5054
|
+
"properties": {
|
|
5055
|
+
"id": {
|
|
5056
|
+
"type": "string",
|
|
5057
|
+
"description": "Unique identifier for the artist",
|
|
5058
|
+
"minLength": 1
|
|
5059
|
+
},
|
|
5060
|
+
"name": {
|
|
5061
|
+
"type": "string",
|
|
5062
|
+
"description": "Artist name",
|
|
5063
|
+
"minLength": 1
|
|
5064
|
+
}
|
|
5065
|
+
},
|
|
5066
|
+
"required": [
|
|
5067
|
+
"id",
|
|
5068
|
+
"name"
|
|
5069
|
+
],
|
|
5070
|
+
"additionalProperties": false,
|
|
5071
|
+
"title": "Artist"
|
|
5072
|
+
},
|
|
5073
|
+
"description": "Track artists"
|
|
5074
|
+
},
|
|
5075
|
+
"album": {
|
|
5076
|
+
"description": "Track album",
|
|
5077
|
+
"type": "object",
|
|
5078
|
+
"properties": {
|
|
5079
|
+
"id": {
|
|
5080
|
+
"type": "string",
|
|
5081
|
+
"description": "Unique identifier for the album",
|
|
5082
|
+
"minLength": 1
|
|
5083
|
+
},
|
|
5084
|
+
"name": {
|
|
5085
|
+
"type": "string",
|
|
5086
|
+
"description": "Album name",
|
|
5087
|
+
"minLength": 1
|
|
5088
|
+
},
|
|
5089
|
+
"artists": {
|
|
5090
|
+
"type": "array",
|
|
5091
|
+
"items": {
|
|
5092
|
+
"$ref": "#/properties/tracks/items/properties/artists/items"
|
|
5093
|
+
},
|
|
5094
|
+
"description": "Album artists"
|
|
5095
|
+
}
|
|
5096
|
+
},
|
|
5097
|
+
"required": [
|
|
5098
|
+
"id",
|
|
5099
|
+
"name",
|
|
5100
|
+
"artists"
|
|
5101
|
+
],
|
|
5102
|
+
"additionalProperties": false,
|
|
5103
|
+
"title": "Album"
|
|
5104
|
+
}
|
|
5105
|
+
},
|
|
5106
|
+
"required": [
|
|
5107
|
+
"id",
|
|
5108
|
+
"name",
|
|
5109
|
+
"artists",
|
|
5110
|
+
"album"
|
|
5111
|
+
],
|
|
5112
|
+
"additionalProperties": false,
|
|
5113
|
+
"title": "Track"
|
|
5114
|
+
}
|
|
5115
|
+
},
|
|
5116
|
+
"episodes": {
|
|
5117
|
+
"type": "array",
|
|
5118
|
+
"items": {
|
|
5119
|
+
"type": "object",
|
|
5120
|
+
"description": "Provider-qualified podcast episode with selection metadata.",
|
|
5121
|
+
"properties": {
|
|
5122
|
+
"id": {
|
|
5123
|
+
"$ref": "#/properties/playlistId"
|
|
5124
|
+
},
|
|
5125
|
+
"name": {
|
|
5126
|
+
"type": "string",
|
|
5127
|
+
"minLength": 1
|
|
5128
|
+
},
|
|
5129
|
+
"showId": {
|
|
5130
|
+
"$ref": "#/properties/playlistId"
|
|
5131
|
+
},
|
|
5132
|
+
"releaseDate": {
|
|
5133
|
+
"type": "string",
|
|
5134
|
+
"description": "Provider release date; precision can be year, month or day."
|
|
5135
|
+
},
|
|
5136
|
+
"releaseDatePrecision": {
|
|
5137
|
+
"type": "string",
|
|
5138
|
+
"description": "Provider date precision."
|
|
5139
|
+
}
|
|
5140
|
+
},
|
|
5141
|
+
"required": [
|
|
5142
|
+
"id",
|
|
5143
|
+
"name"
|
|
5144
|
+
],
|
|
5145
|
+
"additionalProperties": false,
|
|
5146
|
+
"title": "PodcastEpisode"
|
|
5147
|
+
}
|
|
5148
|
+
},
|
|
5149
|
+
"nextToken": {
|
|
5150
|
+
"type": "string",
|
|
5151
|
+
"minLength": 1
|
|
5152
|
+
}
|
|
5153
|
+
},
|
|
5154
|
+
"required": [
|
|
5155
|
+
"playlistId",
|
|
5156
|
+
"tracks",
|
|
5157
|
+
"episodes"
|
|
5158
|
+
],
|
|
5159
|
+
"additionalProperties": false
|
|
5160
|
+
}
|
|
5161
|
+
},
|
|
5162
|
+
{
|
|
5163
|
+
"name": "playlists",
|
|
5164
|
+
"description": "A page of the connected customer's playlists with exact resource IDs.",
|
|
5165
|
+
"directionality": "out",
|
|
5166
|
+
"schema": {
|
|
5167
|
+
"description": "A page of the connected customer's playlists with exact resource IDs.",
|
|
5168
|
+
"type": "object",
|
|
5169
|
+
"properties": {
|
|
5170
|
+
"playlists": {
|
|
5171
|
+
"type": "array",
|
|
5172
|
+
"items": {
|
|
5173
|
+
"type": "object",
|
|
5174
|
+
"properties": {
|
|
5175
|
+
"id": {
|
|
5176
|
+
"type": "string",
|
|
5177
|
+
"description": "Unique identifier for the playlist",
|
|
5178
|
+
"minLength": 1
|
|
5179
|
+
},
|
|
5180
|
+
"name": {
|
|
5181
|
+
"type": "string",
|
|
5182
|
+
"description": "Playlist name",
|
|
5183
|
+
"minLength": 1
|
|
5184
|
+
},
|
|
5185
|
+
"ownerId": {
|
|
5186
|
+
"type": "string",
|
|
5187
|
+
"description": "Provider-scoped owner identity, when supplied by the provider."
|
|
5188
|
+
},
|
|
5189
|
+
"ownerName": {
|
|
5190
|
+
"type": "string",
|
|
5191
|
+
"description": "Owner display name, useful for distinguishing owned and followed playlists."
|
|
5192
|
+
}
|
|
5193
|
+
},
|
|
5194
|
+
"required": [
|
|
5195
|
+
"id",
|
|
5196
|
+
"name"
|
|
5197
|
+
],
|
|
5198
|
+
"additionalProperties": false,
|
|
5199
|
+
"title": "Playlist"
|
|
5200
|
+
}
|
|
5201
|
+
},
|
|
5202
|
+
"nextToken": {
|
|
5203
|
+
"type": "string",
|
|
5204
|
+
"minLength": 1
|
|
5205
|
+
}
|
|
5206
|
+
},
|
|
5207
|
+
"required": [
|
|
5208
|
+
"playlists"
|
|
5209
|
+
],
|
|
5210
|
+
"additionalProperties": false
|
|
5211
|
+
}
|
|
5212
|
+
},
|
|
4913
5213
|
{
|
|
4914
5214
|
"name": "remove-from-playlist",
|
|
4915
5215
|
"description": null,
|
|
@@ -5087,6 +5387,14 @@
|
|
|
5087
5387
|
"type": "string",
|
|
5088
5388
|
"description": "Playlist name",
|
|
5089
5389
|
"minLength": 1
|
|
5390
|
+
},
|
|
5391
|
+
"ownerId": {
|
|
5392
|
+
"type": "string",
|
|
5393
|
+
"description": "Provider-scoped owner identity, when supplied by the provider."
|
|
5394
|
+
},
|
|
5395
|
+
"ownerName": {
|
|
5396
|
+
"type": "string",
|
|
5397
|
+
"description": "Owner display name, useful for distinguishing owned and followed playlists."
|
|
5090
5398
|
}
|
|
5091
5399
|
},
|
|
5092
5400
|
"required": [
|
|
@@ -5097,6 +5405,74 @@
|
|
|
5097
5405
|
"title": "Playlist"
|
|
5098
5406
|
},
|
|
5099
5407
|
"description": "Playlist results"
|
|
5408
|
+
},
|
|
5409
|
+
"shows": {
|
|
5410
|
+
"type": "array",
|
|
5411
|
+
"items": {
|
|
5412
|
+
"type": "object",
|
|
5413
|
+
"description": "Provider-qualified podcast series; read episodes before playback.",
|
|
5414
|
+
"properties": {
|
|
5415
|
+
"id": {
|
|
5416
|
+
"title": "MediaId",
|
|
5417
|
+
"type": "string",
|
|
5418
|
+
"minLength": 1,
|
|
5419
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
5420
|
+
"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_-]+)$",
|
|
5421
|
+
"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"
|
|
5422
|
+
},
|
|
5423
|
+
"name": {
|
|
5424
|
+
"type": "string",
|
|
5425
|
+
"minLength": 1
|
|
5426
|
+
},
|
|
5427
|
+
"publisher": {
|
|
5428
|
+
"type": "string"
|
|
5429
|
+
}
|
|
5430
|
+
},
|
|
5431
|
+
"required": [
|
|
5432
|
+
"id",
|
|
5433
|
+
"name"
|
|
5434
|
+
],
|
|
5435
|
+
"additionalProperties": false,
|
|
5436
|
+
"title": "PodcastShow"
|
|
5437
|
+
}
|
|
5438
|
+
},
|
|
5439
|
+
"episodes": {
|
|
5440
|
+
"type": "array",
|
|
5441
|
+
"items": {
|
|
5442
|
+
"type": "object",
|
|
5443
|
+
"description": "Provider-qualified podcast episode with selection metadata.",
|
|
5444
|
+
"properties": {
|
|
5445
|
+
"id": {
|
|
5446
|
+
"$ref": "#/properties/shows/items/properties/id"
|
|
5447
|
+
},
|
|
5448
|
+
"name": {
|
|
5449
|
+
"type": "string",
|
|
5450
|
+
"minLength": 1
|
|
5451
|
+
},
|
|
5452
|
+
"showId": {
|
|
5453
|
+
"$ref": "#/properties/shows/items/properties/id"
|
|
5454
|
+
},
|
|
5455
|
+
"releaseDate": {
|
|
5456
|
+
"type": "string",
|
|
5457
|
+
"description": "Provider release date; precision can be year, month or day."
|
|
5458
|
+
},
|
|
5459
|
+
"releaseDatePrecision": {
|
|
5460
|
+
"type": "string",
|
|
5461
|
+
"description": "Provider date precision."
|
|
5462
|
+
}
|
|
5463
|
+
},
|
|
5464
|
+
"required": [
|
|
5465
|
+
"id",
|
|
5466
|
+
"name"
|
|
5467
|
+
],
|
|
5468
|
+
"additionalProperties": false,
|
|
5469
|
+
"title": "PodcastEpisode"
|
|
5470
|
+
}
|
|
5471
|
+
},
|
|
5472
|
+
"nextToken": {
|
|
5473
|
+
"type": "string",
|
|
5474
|
+
"minLength": 1,
|
|
5475
|
+
"description": "Opaque continuation for the same search; omit when exhausted."
|
|
5100
5476
|
}
|
|
5101
5477
|
},
|
|
5102
5478
|
"required": [
|
|
@@ -5108,6 +5484,191 @@
|
|
|
5108
5484
|
"additionalProperties": false
|
|
5109
5485
|
}
|
|
5110
5486
|
},
|
|
5487
|
+
{
|
|
5488
|
+
"name": "get-media",
|
|
5489
|
+
"description": "Inspect an exact media resource or traverse an album/show. Use get-playlist for playlist contents.",
|
|
5490
|
+
"directionality": "in",
|
|
5491
|
+
"schema": {
|
|
5492
|
+
"description": "Inspect an exact media resource or traverse an album/show. Use get-playlist for playlist contents.",
|
|
5493
|
+
"type": "object",
|
|
5494
|
+
"properties": {
|
|
5495
|
+
"mediaId": {
|
|
5496
|
+
"title": "MediaId",
|
|
5497
|
+
"type": "string",
|
|
5498
|
+
"minLength": 1,
|
|
5499
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
5500
|
+
"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_-]+)$",
|
|
5501
|
+
"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"
|
|
5502
|
+
},
|
|
5503
|
+
"maxResults": {
|
|
5504
|
+
"type": "integer",
|
|
5505
|
+
"minimum": 1,
|
|
5506
|
+
"maximum": 50,
|
|
5507
|
+
"default": 20
|
|
5508
|
+
},
|
|
5509
|
+
"nextToken": {
|
|
5510
|
+
"type": "string",
|
|
5511
|
+
"minLength": 1,
|
|
5512
|
+
"description": "Opaque continuation for the same resource."
|
|
5513
|
+
}
|
|
5514
|
+
},
|
|
5515
|
+
"required": [
|
|
5516
|
+
"mediaId"
|
|
5517
|
+
],
|
|
5518
|
+
"additionalProperties": false
|
|
5519
|
+
}
|
|
5520
|
+
},
|
|
5521
|
+
{
|
|
5522
|
+
"name": "media-details",
|
|
5523
|
+
"description": "Exact media resource details and a bounded page of its children.",
|
|
5524
|
+
"directionality": "out",
|
|
5525
|
+
"schema": {
|
|
5526
|
+
"description": "Exact media resource details and a bounded page of its children.",
|
|
5527
|
+
"type": "object",
|
|
5528
|
+
"properties": {
|
|
5529
|
+
"mediaId": {
|
|
5530
|
+
"title": "MediaId",
|
|
5531
|
+
"type": "string",
|
|
5532
|
+
"minLength": 1,
|
|
5533
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
5534
|
+
"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_-]+)$",
|
|
5535
|
+
"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"
|
|
5536
|
+
},
|
|
5537
|
+
"name": {
|
|
5538
|
+
"type": "string"
|
|
5539
|
+
},
|
|
5540
|
+
"resourceKind": {
|
|
5541
|
+
"type": "string",
|
|
5542
|
+
"description": "Provider resource kind from the media URI."
|
|
5543
|
+
},
|
|
5544
|
+
"tracks": {
|
|
5545
|
+
"type": "array",
|
|
5546
|
+
"items": {
|
|
5547
|
+
"type": "object",
|
|
5548
|
+
"description": "Track information",
|
|
5549
|
+
"properties": {
|
|
5550
|
+
"id": {
|
|
5551
|
+
"type": "string",
|
|
5552
|
+
"description": "Unique identifier for the track",
|
|
5553
|
+
"minLength": 1
|
|
5554
|
+
},
|
|
5555
|
+
"name": {
|
|
5556
|
+
"type": "string",
|
|
5557
|
+
"description": "Track name",
|
|
5558
|
+
"minLength": 1
|
|
5559
|
+
},
|
|
5560
|
+
"artists": {
|
|
5561
|
+
"type": "array",
|
|
5562
|
+
"items": {
|
|
5563
|
+
"type": "object",
|
|
5564
|
+
"description": "Artist information",
|
|
5565
|
+
"properties": {
|
|
5566
|
+
"id": {
|
|
5567
|
+
"type": "string",
|
|
5568
|
+
"description": "Unique identifier for the artist",
|
|
5569
|
+
"minLength": 1
|
|
5570
|
+
},
|
|
5571
|
+
"name": {
|
|
5572
|
+
"type": "string",
|
|
5573
|
+
"description": "Artist name",
|
|
5574
|
+
"minLength": 1
|
|
5575
|
+
}
|
|
5576
|
+
},
|
|
5577
|
+
"required": [
|
|
5578
|
+
"id",
|
|
5579
|
+
"name"
|
|
5580
|
+
],
|
|
5581
|
+
"additionalProperties": false,
|
|
5582
|
+
"title": "Artist"
|
|
5583
|
+
},
|
|
5584
|
+
"description": "Track artists"
|
|
5585
|
+
},
|
|
5586
|
+
"album": {
|
|
5587
|
+
"description": "Track album",
|
|
5588
|
+
"type": "object",
|
|
5589
|
+
"properties": {
|
|
5590
|
+
"id": {
|
|
5591
|
+
"type": "string",
|
|
5592
|
+
"description": "Unique identifier for the album",
|
|
5593
|
+
"minLength": 1
|
|
5594
|
+
},
|
|
5595
|
+
"name": {
|
|
5596
|
+
"type": "string",
|
|
5597
|
+
"description": "Album name",
|
|
5598
|
+
"minLength": 1
|
|
5599
|
+
},
|
|
5600
|
+
"artists": {
|
|
5601
|
+
"type": "array",
|
|
5602
|
+
"items": {
|
|
5603
|
+
"$ref": "#/properties/tracks/items/properties/artists/items"
|
|
5604
|
+
},
|
|
5605
|
+
"description": "Album artists"
|
|
5606
|
+
}
|
|
5607
|
+
},
|
|
5608
|
+
"required": [
|
|
5609
|
+
"id",
|
|
5610
|
+
"name",
|
|
5611
|
+
"artists"
|
|
5612
|
+
],
|
|
5613
|
+
"additionalProperties": false,
|
|
5614
|
+
"title": "Album"
|
|
5615
|
+
}
|
|
5616
|
+
},
|
|
5617
|
+
"required": [
|
|
5618
|
+
"id",
|
|
5619
|
+
"name",
|
|
5620
|
+
"artists",
|
|
5621
|
+
"album"
|
|
5622
|
+
],
|
|
5623
|
+
"additionalProperties": false,
|
|
5624
|
+
"title": "Track"
|
|
5625
|
+
}
|
|
5626
|
+
},
|
|
5627
|
+
"episodes": {
|
|
5628
|
+
"type": "array",
|
|
5629
|
+
"items": {
|
|
5630
|
+
"type": "object",
|
|
5631
|
+
"description": "Provider-qualified podcast episode with selection metadata.",
|
|
5632
|
+
"properties": {
|
|
5633
|
+
"id": {
|
|
5634
|
+
"$ref": "#/properties/mediaId"
|
|
5635
|
+
},
|
|
5636
|
+
"name": {
|
|
5637
|
+
"type": "string",
|
|
5638
|
+
"minLength": 1
|
|
5639
|
+
},
|
|
5640
|
+
"showId": {
|
|
5641
|
+
"$ref": "#/properties/mediaId"
|
|
5642
|
+
},
|
|
5643
|
+
"releaseDate": {
|
|
5644
|
+
"type": "string",
|
|
5645
|
+
"description": "Provider release date; precision can be year, month or day."
|
|
5646
|
+
},
|
|
5647
|
+
"releaseDatePrecision": {
|
|
5648
|
+
"type": "string",
|
|
5649
|
+
"description": "Provider date precision."
|
|
5650
|
+
}
|
|
5651
|
+
},
|
|
5652
|
+
"required": [
|
|
5653
|
+
"id",
|
|
5654
|
+
"name"
|
|
5655
|
+
],
|
|
5656
|
+
"additionalProperties": false,
|
|
5657
|
+
"title": "PodcastEpisode"
|
|
5658
|
+
}
|
|
5659
|
+
},
|
|
5660
|
+
"nextToken": {
|
|
5661
|
+
"type": "string",
|
|
5662
|
+
"minLength": 1
|
|
5663
|
+
}
|
|
5664
|
+
},
|
|
5665
|
+
"required": [
|
|
5666
|
+
"mediaId",
|
|
5667
|
+
"resourceKind"
|
|
5668
|
+
],
|
|
5669
|
+
"additionalProperties": false
|
|
5670
|
+
}
|
|
5671
|
+
},
|
|
5111
5672
|
{
|
|
5112
5673
|
"name": "search-media",
|
|
5113
5674
|
"description": null,
|
|
@@ -5121,7 +5682,7 @@
|
|
|
5121
5682
|
},
|
|
5122
5683
|
"type": {
|
|
5123
5684
|
"type": "string",
|
|
5124
|
-
"description": "
|
|
5685
|
+
"description": "Resource kind: track, album, artist, playlist, show or episode when advertised. Defaults to track",
|
|
5125
5686
|
"default": "track"
|
|
5126
5687
|
},
|
|
5127
5688
|
"album": {
|
|
@@ -5135,6 +5696,18 @@
|
|
|
5135
5696
|
"year": {
|
|
5136
5697
|
"type": "string",
|
|
5137
5698
|
"description": "Search by year, can only be used when searching albums, years, and tracks. You can pass a range like 1990-2000"
|
|
5699
|
+
},
|
|
5700
|
+
"maxResults": {
|
|
5701
|
+
"type": "integer",
|
|
5702
|
+
"minimum": 1,
|
|
5703
|
+
"maximum": 50,
|
|
5704
|
+
"default": 20,
|
|
5705
|
+
"description": "Maximum results on one page."
|
|
5706
|
+
},
|
|
5707
|
+
"nextToken": {
|
|
5708
|
+
"type": "string",
|
|
5709
|
+
"minLength": 1,
|
|
5710
|
+
"description": "Copy the opaque continuation from the previous result with the same query and filters."
|
|
5138
5711
|
}
|
|
5139
5712
|
},
|
|
5140
5713
|
"required": [
|
|
@@ -6563,7 +7136,9 @@
|
|
|
6563
7136
|
"title": "MediaId",
|
|
6564
7137
|
"type": "string",
|
|
6565
7138
|
"minLength": 1,
|
|
6566
|
-
"
|
|
7139
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
7140
|
+
"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_-]+)$",
|
|
7141
|
+
"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"
|
|
6567
7142
|
},
|
|
6568
7143
|
"startedAt": {
|
|
6569
7144
|
"type": "string",
|
|
@@ -7022,7 +7597,7 @@
|
|
|
7022
7597
|
{
|
|
7023
7598
|
"name": "discover-routes",
|
|
7024
7599
|
"description": "Request to discover routes",
|
|
7025
|
-
"directionality": "
|
|
7600
|
+
"directionality": "in",
|
|
7026
7601
|
"schema": {
|
|
7027
7602
|
"description": "Request to discover routes",
|
|
7028
7603
|
"type": "object",
|