@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.
- package/generated/capabilities.json +578 -3
- package/generated/openapi.json +368 -39
- 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/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/manifest.json +195 -75
- package/generated/public/docs/references/openapi.yaml +303 -37
- 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/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 +1 -1
|
@@ -11047,6 +11047,73 @@ components:
|
|
|
11047
11047
|
required:
|
|
11048
11048
|
- playlistId
|
|
11049
11049
|
additionalProperties: false
|
|
11050
|
+
MediaPlaylistInterfaceListPlaylistsMessage:
|
|
11051
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-playlist
|
|
11052
|
+
x-name: list-playlists
|
|
11053
|
+
x-version: '1.0'
|
|
11054
|
+
x-type: message
|
|
11055
|
+
x-directionality: in
|
|
11056
|
+
description: >-
|
|
11057
|
+
List the connected customer's owned or followed playlists; use search-media for catalog
|
|
11058
|
+
search.
|
|
11059
|
+
type: object
|
|
11060
|
+
properties:
|
|
11061
|
+
maxResults:
|
|
11062
|
+
type: integer
|
|
11063
|
+
minimum: 1
|
|
11064
|
+
maximum: 50
|
|
11065
|
+
default: 20
|
|
11066
|
+
nextToken:
|
|
11067
|
+
type: string
|
|
11068
|
+
minLength: 1
|
|
11069
|
+
required: []
|
|
11070
|
+
additionalProperties: false
|
|
11071
|
+
MediaPlaylistInterfacePlaylistsMessage:
|
|
11072
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-playlist
|
|
11073
|
+
x-name: playlists
|
|
11074
|
+
x-version: '1.0'
|
|
11075
|
+
x-type: message
|
|
11076
|
+
x-directionality: out
|
|
11077
|
+
description: A page of the connected customer's playlists with exact resource IDs.
|
|
11078
|
+
type: object
|
|
11079
|
+
properties:
|
|
11080
|
+
playlists:
|
|
11081
|
+
type: array
|
|
11082
|
+
items:
|
|
11083
|
+
$ref: '#/components/schemas/Playlist'
|
|
11084
|
+
nextToken:
|
|
11085
|
+
type: string
|
|
11086
|
+
minLength: 1
|
|
11087
|
+
required:
|
|
11088
|
+
- playlists
|
|
11089
|
+
additionalProperties: false
|
|
11090
|
+
MediaPlaylistInterfacePlaylistContentsMessage:
|
|
11091
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-playlist
|
|
11092
|
+
x-name: playlist-contents
|
|
11093
|
+
x-version: '1.0'
|
|
11094
|
+
x-type: message
|
|
11095
|
+
x-directionality: out
|
|
11096
|
+
description: A bounded playlist page containing playable tracks or episodes.
|
|
11097
|
+
type: object
|
|
11098
|
+
properties:
|
|
11099
|
+
playlistId:
|
|
11100
|
+
$ref: '#/components/schemas/MediaId'
|
|
11101
|
+
tracks:
|
|
11102
|
+
type: array
|
|
11103
|
+
items:
|
|
11104
|
+
$ref: '#/components/schemas/Track'
|
|
11105
|
+
episodes:
|
|
11106
|
+
type: array
|
|
11107
|
+
items:
|
|
11108
|
+
$ref: '#/components/schemas/PodcastEpisode'
|
|
11109
|
+
nextToken:
|
|
11110
|
+
type: string
|
|
11111
|
+
minLength: 1
|
|
11112
|
+
required:
|
|
11113
|
+
- playlistId
|
|
11114
|
+
- tracks
|
|
11115
|
+
- episodes
|
|
11116
|
+
additionalProperties: false
|
|
11050
11117
|
MediaPlaylistInterfaceGetPlaylistMessage:
|
|
11051
11118
|
x-namespace: port1/systems/zero/capability-interfaces/media-playlist
|
|
11052
11119
|
x-name: get-playlist
|
|
@@ -11059,6 +11126,15 @@ components:
|
|
|
11059
11126
|
type: string
|
|
11060
11127
|
description: ID of the playlist to retrieve
|
|
11061
11128
|
minLength: 1
|
|
11129
|
+
maxResults:
|
|
11130
|
+
type: integer
|
|
11131
|
+
minimum: 1
|
|
11132
|
+
maximum: 50
|
|
11133
|
+
default: 20
|
|
11134
|
+
nextToken:
|
|
11135
|
+
type: string
|
|
11136
|
+
minLength: 1
|
|
11137
|
+
description: Opaque continuation for the same playlist.
|
|
11062
11138
|
required:
|
|
11063
11139
|
- playlistId
|
|
11064
11140
|
additionalProperties: false
|
|
@@ -11348,6 +11424,18 @@ components:
|
|
|
11348
11424
|
items:
|
|
11349
11425
|
$ref: '#/components/schemas/Playlist'
|
|
11350
11426
|
description: Playlist results
|
|
11427
|
+
shows:
|
|
11428
|
+
type: array
|
|
11429
|
+
items:
|
|
11430
|
+
$ref: '#/components/schemas/PodcastShow'
|
|
11431
|
+
episodes:
|
|
11432
|
+
type: array
|
|
11433
|
+
items:
|
|
11434
|
+
$ref: '#/components/schemas/PodcastEpisode'
|
|
11435
|
+
nextToken:
|
|
11436
|
+
type: string
|
|
11437
|
+
minLength: 1
|
|
11438
|
+
description: Opaque continuation for the same search; omit when exhausted.
|
|
11351
11439
|
required:
|
|
11352
11440
|
- artists
|
|
11353
11441
|
- albums
|
|
@@ -11367,6 +11455,62 @@ components:
|
|
|
11367
11455
|
required:
|
|
11368
11456
|
- mediaId
|
|
11369
11457
|
additionalProperties: false
|
|
11458
|
+
MediaSearchInterfaceMediaDetailsMessage:
|
|
11459
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-search
|
|
11460
|
+
x-name: media-details
|
|
11461
|
+
x-version: '1.0'
|
|
11462
|
+
x-type: message
|
|
11463
|
+
x-directionality: out
|
|
11464
|
+
description: Exact media resource details and a bounded page of its children.
|
|
11465
|
+
type: object
|
|
11466
|
+
properties:
|
|
11467
|
+
mediaId:
|
|
11468
|
+
$ref: '#/components/schemas/MediaId'
|
|
11469
|
+
name:
|
|
11470
|
+
type: string
|
|
11471
|
+
resourceKind:
|
|
11472
|
+
type: string
|
|
11473
|
+
description: Provider resource kind from the media URI.
|
|
11474
|
+
tracks:
|
|
11475
|
+
type: array
|
|
11476
|
+
items:
|
|
11477
|
+
$ref: '#/components/schemas/Track'
|
|
11478
|
+
episodes:
|
|
11479
|
+
type: array
|
|
11480
|
+
items:
|
|
11481
|
+
$ref: '#/components/schemas/PodcastEpisode'
|
|
11482
|
+
nextToken:
|
|
11483
|
+
type: string
|
|
11484
|
+
minLength: 1
|
|
11485
|
+
required:
|
|
11486
|
+
- mediaId
|
|
11487
|
+
- resourceKind
|
|
11488
|
+
additionalProperties: false
|
|
11489
|
+
MediaSearchInterfaceGetMediaMessage:
|
|
11490
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-search
|
|
11491
|
+
x-name: get-media
|
|
11492
|
+
x-version: '1.0'
|
|
11493
|
+
x-type: message
|
|
11494
|
+
x-directionality: in
|
|
11495
|
+
description: >-
|
|
11496
|
+
Inspect an exact media resource or traverse an album/show. Use get-playlist for playlist
|
|
11497
|
+
contents.
|
|
11498
|
+
type: object
|
|
11499
|
+
properties:
|
|
11500
|
+
mediaId:
|
|
11501
|
+
$ref: '#/components/schemas/MediaId'
|
|
11502
|
+
maxResults:
|
|
11503
|
+
type: integer
|
|
11504
|
+
minimum: 1
|
|
11505
|
+
maximum: 50
|
|
11506
|
+
default: 20
|
|
11507
|
+
nextToken:
|
|
11508
|
+
type: string
|
|
11509
|
+
minLength: 1
|
|
11510
|
+
description: Opaque continuation for the same resource.
|
|
11511
|
+
required:
|
|
11512
|
+
- mediaId
|
|
11513
|
+
additionalProperties: false
|
|
11370
11514
|
MediaSearchInterfaceSearchMediaMessage:
|
|
11371
11515
|
x-namespace: port1/systems/zero/capability-interfaces/media-search
|
|
11372
11516
|
x-name: search-media
|
|
@@ -11380,7 +11524,9 @@ components:
|
|
|
11380
11524
|
description: Freeform query string
|
|
11381
11525
|
type:
|
|
11382
11526
|
type: string
|
|
11383
|
-
description:
|
|
11527
|
+
description: >-
|
|
11528
|
+
Resource kind: track, album, artist, playlist, show or episode when advertised. Defaults
|
|
11529
|
+
to track
|
|
11384
11530
|
default: track
|
|
11385
11531
|
album:
|
|
11386
11532
|
type: string
|
|
@@ -11393,6 +11539,16 @@ components:
|
|
|
11393
11539
|
description: >-
|
|
11394
11540
|
Search by year, can only be used when searching albums, years, and tracks. You can pass
|
|
11395
11541
|
a range like 1990-2000
|
|
11542
|
+
maxResults:
|
|
11543
|
+
type: integer
|
|
11544
|
+
minimum: 1
|
|
11545
|
+
maximum: 50
|
|
11546
|
+
default: 20
|
|
11547
|
+
description: Maximum results on one page.
|
|
11548
|
+
nextToken:
|
|
11549
|
+
type: string
|
|
11550
|
+
minLength: 1
|
|
11551
|
+
description: Copy the opaque continuation from the previous result with the same query and filters.
|
|
11396
11552
|
required:
|
|
11397
11553
|
- query
|
|
11398
11554
|
additionalProperties: false
|
|
@@ -13524,6 +13680,27 @@ components:
|
|
|
13524
13680
|
required:
|
|
13525
13681
|
- value
|
|
13526
13682
|
additionalProperties: false
|
|
13683
|
+
MediaPlayerInterfaceNowPlayingAttribute:
|
|
13684
|
+
x-namespace: port1/systems/zero/capability-interfaces/media-player
|
|
13685
|
+
x-name: now-playing
|
|
13686
|
+
x-version: '1.0'
|
|
13687
|
+
x-type: attribute-definition
|
|
13688
|
+
description: >-
|
|
13689
|
+
Media identity observed on this route. Active false means the provider session is on another
|
|
13690
|
+
target; it does not prove the speaker is silent through other providers.
|
|
13691
|
+
type: object
|
|
13692
|
+
properties:
|
|
13693
|
+
active:
|
|
13694
|
+
type: boolean
|
|
13695
|
+
mediaId:
|
|
13696
|
+
$ref: '#/components/schemas/MediaId'
|
|
13697
|
+
contextMediaId:
|
|
13698
|
+
$ref: '#/components/schemas/MediaId'
|
|
13699
|
+
name:
|
|
13700
|
+
type: string
|
|
13701
|
+
required:
|
|
13702
|
+
- active
|
|
13703
|
+
additionalProperties: false
|
|
13527
13704
|
MediaPlayerInterfacePlaybackStateAttribute:
|
|
13528
13705
|
x-namespace: port1/systems/zero/capability-interfaces/media-player
|
|
13529
13706
|
x-name: playback-state
|
|
@@ -17423,6 +17600,13 @@ components:
|
|
|
17423
17600
|
implemented by this endpoint.
|
|
17424
17601
|
type: object
|
|
17425
17602
|
properties:
|
|
17603
|
+
supportedMediaResources:
|
|
17604
|
+
type: array
|
|
17605
|
+
description: >-
|
|
17606
|
+
Exact play-media URI combinations accepted by this route. Member or endpoint unions do
|
|
17607
|
+
not imply support by every route.
|
|
17608
|
+
items:
|
|
17609
|
+
$ref: '#/components/schemas/SupportedMediaResource'
|
|
17426
17610
|
supportedAudioProviders:
|
|
17427
17611
|
type: array
|
|
17428
17612
|
uniqueItems: true
|
|
@@ -18123,10 +18307,16 @@ components:
|
|
|
18123
18307
|
title: MediaId
|
|
18124
18308
|
type: string
|
|
18125
18309
|
minLength: 1
|
|
18126
|
-
|
|
18127
|
-
|
|
18128
|
-
|
|
18129
|
-
|
|
18310
|
+
example: portos-media://portpowered.com/spotify/audio/track/Ab123
|
|
18311
|
+
pattern: >-
|
|
18312
|
+
^(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_-]+)$
|
|
18313
|
+
description: >
|
|
18314
|
+
Exact provider resource identity. The canonical form is
|
|
18315
|
+
portos-media://portpowered.com/provider/media-type/resource-kind/resource-id, with no URI
|
|
18316
|
+
version. Spotify emits audio track, playlist, album, artist, show and episode identities.
|
|
18317
|
+
Copy an ID returned by search or library discovery; do not send a search phrase as an ID.
|
|
18318
|
+
Legacy providers retain their own input contracts until explicitly migrated. See
|
|
18319
|
+
https://portpowered.com/docs/media.
|
|
18130
18320
|
PlayableAudio:
|
|
18131
18321
|
type: object
|
|
18132
18322
|
description: An audio object to play on an endpoint with audio output.
|
|
@@ -20989,6 +21179,11 @@ components:
|
|
|
20989
21179
|
id:
|
|
20990
21180
|
type: string
|
|
20991
21181
|
description: The ID of the target
|
|
21182
|
+
routeId:
|
|
21183
|
+
type: string
|
|
21184
|
+
description: >-
|
|
21185
|
+
Optional full route or group-route ID belonging to this target. Selects one advertised
|
|
21186
|
+
provider route and preserves that provider for follow-up transport or volume commands.
|
|
20992
21187
|
CreateMessageRequestResponseType:
|
|
20993
21188
|
type: string
|
|
20994
21189
|
enum:
|
|
@@ -21456,39 +21651,27 @@ components:
|
|
|
21456
21651
|
format: uri
|
|
21457
21652
|
description: Logo image URL
|
|
21458
21653
|
additionalProperties: false
|
|
21459
|
-
|
|
21654
|
+
Playlist:
|
|
21460
21655
|
type: object
|
|
21461
|
-
description: A movement instruction for remote control
|
|
21462
21656
|
properties:
|
|
21463
|
-
|
|
21464
|
-
type:
|
|
21465
|
-
description:
|
|
21466
|
-
|
|
21467
|
-
|
|
21468
|
-
|
|
21469
|
-
|
|
21470
|
-
|
|
21471
|
-
|
|
21657
|
+
id:
|
|
21658
|
+
type: string
|
|
21659
|
+
description: Unique identifier for the playlist
|
|
21660
|
+
minLength: 1
|
|
21661
|
+
name:
|
|
21662
|
+
type: string
|
|
21663
|
+
description: Playlist name
|
|
21664
|
+
minLength: 1
|
|
21665
|
+
ownerId:
|
|
21666
|
+
type: string
|
|
21667
|
+
description: Provider-scoped owner identity, when supplied by the provider.
|
|
21668
|
+
ownerName:
|
|
21669
|
+
type: string
|
|
21670
|
+
description: Owner display name, useful for distinguishing owned and followed playlists.
|
|
21472
21671
|
required:
|
|
21473
|
-
-
|
|
21474
|
-
-
|
|
21475
|
-
- duration
|
|
21672
|
+
- id
|
|
21673
|
+
- name
|
|
21476
21674
|
additionalProperties: false
|
|
21477
|
-
CleaningMode:
|
|
21478
|
-
type: string
|
|
21479
|
-
description: Robot vacuum cleaning mode
|
|
21480
|
-
enum:
|
|
21481
|
-
- AUTO
|
|
21482
|
-
- SPOT
|
|
21483
|
-
- EDGE
|
|
21484
|
-
- SINGLE_ROOM
|
|
21485
|
-
- CUSTOM
|
|
21486
|
-
x-enum-varnames:
|
|
21487
|
-
- CleaningModeAuto
|
|
21488
|
-
- CleaningModeSpot
|
|
21489
|
-
- CleaningModeEdge
|
|
21490
|
-
- CleaningModeSingleRoom
|
|
21491
|
-
- CleaningModeCustom
|
|
21492
21675
|
Artist:
|
|
21493
21676
|
type: object
|
|
21494
21677
|
description: Artist information
|
|
@@ -21553,17 +21736,71 @@ components:
|
|
|
21553
21736
|
- artists
|
|
21554
21737
|
- album
|
|
21555
21738
|
additionalProperties: false
|
|
21556
|
-
|
|
21739
|
+
PodcastEpisode:
|
|
21557
21740
|
type: object
|
|
21741
|
+
description: Provider-qualified podcast episode with selection metadata.
|
|
21558
21742
|
properties:
|
|
21559
21743
|
id:
|
|
21744
|
+
$ref: '#/components/schemas/MediaId'
|
|
21745
|
+
name:
|
|
21560
21746
|
type: string
|
|
21561
|
-
description: Unique identifier for the playlist
|
|
21562
21747
|
minLength: 1
|
|
21748
|
+
showId:
|
|
21749
|
+
$ref: '#/components/schemas/MediaId'
|
|
21750
|
+
releaseDate:
|
|
21751
|
+
type: string
|
|
21752
|
+
description: Provider release date; precision can be year, month or day.
|
|
21753
|
+
releaseDatePrecision:
|
|
21754
|
+
type: string
|
|
21755
|
+
description: Provider date precision.
|
|
21756
|
+
required:
|
|
21757
|
+
- id
|
|
21758
|
+
- name
|
|
21759
|
+
additionalProperties: false
|
|
21760
|
+
MovementInstruction:
|
|
21761
|
+
type: object
|
|
21762
|
+
description: A movement instruction for remote control
|
|
21763
|
+
properties:
|
|
21764
|
+
velocity:
|
|
21765
|
+
type: number
|
|
21766
|
+
description: Forward/backward speed
|
|
21767
|
+
omega:
|
|
21768
|
+
type: number
|
|
21769
|
+
description: Angular velocity for turning
|
|
21770
|
+
duration:
|
|
21771
|
+
type: integer
|
|
21772
|
+
description: Duration in milliseconds
|
|
21773
|
+
required:
|
|
21774
|
+
- velocity
|
|
21775
|
+
- omega
|
|
21776
|
+
- duration
|
|
21777
|
+
additionalProperties: false
|
|
21778
|
+
CleaningMode:
|
|
21779
|
+
type: string
|
|
21780
|
+
description: Robot vacuum cleaning mode
|
|
21781
|
+
enum:
|
|
21782
|
+
- AUTO
|
|
21783
|
+
- SPOT
|
|
21784
|
+
- EDGE
|
|
21785
|
+
- SINGLE_ROOM
|
|
21786
|
+
- CUSTOM
|
|
21787
|
+
x-enum-varnames:
|
|
21788
|
+
- CleaningModeAuto
|
|
21789
|
+
- CleaningModeSpot
|
|
21790
|
+
- CleaningModeEdge
|
|
21791
|
+
- CleaningModeSingleRoom
|
|
21792
|
+
- CleaningModeCustom
|
|
21793
|
+
PodcastShow:
|
|
21794
|
+
type: object
|
|
21795
|
+
description: Provider-qualified podcast series; read episodes before playback.
|
|
21796
|
+
properties:
|
|
21797
|
+
id:
|
|
21798
|
+
$ref: '#/components/schemas/MediaId'
|
|
21563
21799
|
name:
|
|
21564
21800
|
type: string
|
|
21565
|
-
description: Playlist name
|
|
21566
21801
|
minLength: 1
|
|
21802
|
+
publisher:
|
|
21803
|
+
type: string
|
|
21567
21804
|
required:
|
|
21568
21805
|
- id
|
|
21569
21806
|
- name
|
|
@@ -22383,6 +22620,31 @@ components:
|
|
|
22383
22620
|
required:
|
|
22384
22621
|
- name
|
|
22385
22622
|
additionalProperties: false
|
|
22623
|
+
SupportedMediaResource:
|
|
22624
|
+
title: SupportedMediaResource
|
|
22625
|
+
description: A provider, media type and resource-kind combination accepted by a control route.
|
|
22626
|
+
type: object
|
|
22627
|
+
properties:
|
|
22628
|
+
provider:
|
|
22629
|
+
$ref: '#/components/schemas/MediaProvider'
|
|
22630
|
+
mediaType:
|
|
22631
|
+
type: string
|
|
22632
|
+
enum:
|
|
22633
|
+
- AUDIO
|
|
22634
|
+
- VIDEO
|
|
22635
|
+
- IMAGE
|
|
22636
|
+
resourceKinds:
|
|
22637
|
+
type: array
|
|
22638
|
+
minItems: 1
|
|
22639
|
+
uniqueItems: true
|
|
22640
|
+
items:
|
|
22641
|
+
type: string
|
|
22642
|
+
description: Lowercase resource-kind segment from the provider URI.
|
|
22643
|
+
required:
|
|
22644
|
+
- provider
|
|
22645
|
+
- mediaType
|
|
22646
|
+
- resourceKinds
|
|
22647
|
+
additionalProperties: false
|
|
22386
22648
|
MeasurementRange:
|
|
22387
22649
|
type: object
|
|
22388
22650
|
description: Range of measurement values (min and max)
|
|
@@ -22417,6 +22679,8 @@ components:
|
|
|
22417
22679
|
- PLAYLIST
|
|
22418
22680
|
- GENRE
|
|
22419
22681
|
- YEAR
|
|
22682
|
+
- SHOW
|
|
22683
|
+
- EPISODE
|
|
22420
22684
|
x-enum-varnames:
|
|
22421
22685
|
- Configuration6SupportedSearchTypesTrack
|
|
22422
22686
|
- Configuration6SupportedSearchTypesAlbum
|
|
@@ -22424,6 +22688,8 @@ components:
|
|
|
22424
22688
|
- Configuration6SupportedSearchTypesPlaylist
|
|
22425
22689
|
- Configuration6SupportedSearchTypesGenre
|
|
22426
22690
|
- Configuration6SupportedSearchTypesYear
|
|
22691
|
+
- Configuration6SupportedSearchTypesShow
|
|
22692
|
+
- Configuration6SupportedSearchTypesEpisode
|
|
22427
22693
|
description: List of supported search types
|
|
22428
22694
|
maxResults:
|
|
22429
22695
|
type: integer
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
"id": {
|
|
13
13
|
"type": "string",
|
|
14
14
|
"description": "The ID of the target"
|
|
15
|
+
},
|
|
16
|
+
"routeId": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "Optional full route or group-route ID belonging to this target. Selects one advertised provider route and preserves that provider for follow-up transport or volume commands."
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
21
|
}
|
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
"title": "MediaId",
|
|
4
4
|
"type": "string",
|
|
5
5
|
"minLength": 1,
|
|
6
|
-
"
|
|
6
|
+
"example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
|
|
7
|
+
"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_-]+)$",
|
|
8
|
+
"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"
|
|
7
9
|
}
|
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
"description": "Configure media playback, media selection and audio playback. Advertise only the messages implemented by this endpoint.",
|
|
8
8
|
"type": "object",
|
|
9
9
|
"properties": {
|
|
10
|
+
"supportedMediaResources": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"description": "Exact play-media URI combinations accepted by this route. Member or endpoint unions do not imply support by every route.",
|
|
13
|
+
"items": {
|
|
14
|
+
"$ref": "/docs/references/schemas/SupportedMediaResource.json"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
10
17
|
"supportedAudioProviders": {
|
|
11
18
|
"type": "array",
|
|
12
19
|
"uniqueItems": true,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"x-namespace": "port1/systems/zero/capability-interfaces/media-player",
|
|
4
|
+
"x-name": "now-playing",
|
|
5
|
+
"x-version": "1.0",
|
|
6
|
+
"x-type": "attribute-definition",
|
|
7
|
+
"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.",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"active": {
|
|
11
|
+
"type": "boolean"
|
|
12
|
+
},
|
|
13
|
+
"mediaId": {
|
|
14
|
+
"$ref": "/docs/references/schemas/MediaId.json"
|
|
15
|
+
},
|
|
16
|
+
"contextMediaId": {
|
|
17
|
+
"$ref": "/docs/references/schemas/MediaId.json"
|
|
18
|
+
},
|
|
19
|
+
"name": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": [
|
|
24
|
+
"active"
|
|
25
|
+
],
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
package/generated/public/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json
CHANGED
|
@@ -11,6 +11,17 @@
|
|
|
11
11
|
"type": "string",
|
|
12
12
|
"description": "ID of the playlist to retrieve",
|
|
13
13
|
"minLength": 1
|
|
14
|
+
},
|
|
15
|
+
"maxResults": {
|
|
16
|
+
"type": "integer",
|
|
17
|
+
"minimum": 1,
|
|
18
|
+
"maximum": 50,
|
|
19
|
+
"default": 20
|
|
20
|
+
},
|
|
21
|
+
"nextToken": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"minLength": 1,
|
|
24
|
+
"description": "Opaque continuation for the same playlist."
|
|
14
25
|
}
|
|
15
26
|
},
|
|
16
27
|
"required": [
|
package/generated/public/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
|
|
4
|
+
"x-name": "list-playlists",
|
|
5
|
+
"x-version": "1.0",
|
|
6
|
+
"x-type": "message",
|
|
7
|
+
"x-directionality": "in",
|
|
8
|
+
"description": "List the connected customer's owned or followed playlists; use search-media for catalog search.",
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"maxResults": {
|
|
12
|
+
"type": "integer",
|
|
13
|
+
"minimum": 1,
|
|
14
|
+
"maximum": 50,
|
|
15
|
+
"default": 20
|
|
16
|
+
},
|
|
17
|
+
"nextToken": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": [],
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
}
|
package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
|
|
4
|
+
"x-name": "playlist-contents",
|
|
5
|
+
"x-version": "1.0",
|
|
6
|
+
"x-type": "message",
|
|
7
|
+
"x-directionality": "out",
|
|
8
|
+
"description": "A bounded playlist page containing playable tracks or episodes.",
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"playlistId": {
|
|
12
|
+
"$ref": "/docs/references/schemas/MediaId.json"
|
|
13
|
+
},
|
|
14
|
+
"tracks": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": {
|
|
17
|
+
"$ref": "/docs/references/schemas/Track.json"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"episodes": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"$ref": "/docs/references/schemas/PodcastEpisode.json"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"nextToken": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"minLength": 1
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": [
|
|
32
|
+
"playlistId",
|
|
33
|
+
"tracks",
|
|
34
|
+
"episodes"
|
|
35
|
+
],
|
|
36
|
+
"additionalProperties": false
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
|
|
4
|
+
"x-name": "playlists",
|
|
5
|
+
"x-version": "1.0",
|
|
6
|
+
"x-type": "message",
|
|
7
|
+
"x-directionality": "out",
|
|
8
|
+
"description": "A page of the connected customer's playlists with exact resource IDs.",
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"playlists": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"$ref": "/docs/references/schemas/Playlist.json"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"nextToken": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": [
|
|
23
|
+
"playlists"
|
|
24
|
+
],
|
|
25
|
+
"additionalProperties": false
|
|
26
|
+
}
|
package/generated/public/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json
CHANGED
|
@@ -34,6 +34,23 @@
|
|
|
34
34
|
"$ref": "/docs/references/schemas/Playlist.json"
|
|
35
35
|
},
|
|
36
36
|
"description": "Playlist results"
|
|
37
|
+
},
|
|
38
|
+
"shows": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"items": {
|
|
41
|
+
"$ref": "/docs/references/schemas/PodcastShow.json"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"episodes": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": {
|
|
47
|
+
"$ref": "/docs/references/schemas/PodcastEpisode.json"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"nextToken": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"minLength": 1,
|
|
53
|
+
"description": "Opaque continuation for the same search; omit when exhausted."
|
|
37
54
|
}
|
|
38
55
|
},
|
|
39
56
|
"required": [
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"x-namespace": "port1/systems/zero/capability-interfaces/media-search",
|
|
4
|
+
"x-name": "get-media",
|
|
5
|
+
"x-version": "1.0",
|
|
6
|
+
"x-type": "message",
|
|
7
|
+
"x-directionality": "in",
|
|
8
|
+
"description": "Inspect an exact media resource or traverse an album/show. Use get-playlist for playlist contents.",
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"mediaId": {
|
|
12
|
+
"$ref": "/docs/references/schemas/MediaId.json"
|
|
13
|
+
},
|
|
14
|
+
"maxResults": {
|
|
15
|
+
"type": "integer",
|
|
16
|
+
"minimum": 1,
|
|
17
|
+
"maximum": 50,
|
|
18
|
+
"default": 20
|
|
19
|
+
},
|
|
20
|
+
"nextToken": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1,
|
|
23
|
+
"description": "Opaque continuation for the same resource."
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"required": [
|
|
27
|
+
"mediaId"
|
|
28
|
+
],
|
|
29
|
+
"additionalProperties": false
|
|
30
|
+
}
|