@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.
Files changed (67) hide show
  1. package/generated/capabilities.json +579 -4
  2. package/generated/openapi.json +369 -40
  3. package/generated/public/docs/for-ai/capability-interfaces/media-player/1.0.md +1 -0
  4. package/generated/public/docs/for-ai/capability-interfaces/media-playlist/1.0.md +3 -0
  5. package/generated/public/docs/for-ai/capability-interfaces/media-search/1.0.md +2 -0
  6. package/generated/public/docs/for-ai/capability-interfaces/route-discovery/1.0.md +1 -1
  7. package/generated/public/docs/for-ai/schemas/m-1.md +6 -6
  8. package/generated/public/docs/for-ai/schemas/m-2.md +6 -0
  9. package/generated/public/docs/for-ai/schemas/p-2.md +2 -0
  10. package/generated/public/docs/for-ai/schemas/s-3.md +1 -0
  11. package/generated/public/docs/for-ai/schemas.md +4 -4
  12. package/generated/public/docs/references/capability-interfaces/media-player/1.0/attributes/now-playing.yaml +30 -0
  13. package/generated/public/docs/references/capability-interfaces/media-player/1.0/configuration.yaml +30 -0
  14. package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/play-media.yaml +11 -5
  15. package/generated/public/docs/references/capability-interfaces/media-player/1.0.yaml +73 -4
  16. package/generated/public/docs/references/capability-interfaces/media-player.yaml +73 -4
  17. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/get-playlist.yaml +9 -0
  18. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/list-playlists.yaml +15 -0
  19. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlist-contents.yaml +114 -0
  20. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlists.yaml +35 -0
  21. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0.yaml +184 -0
  22. package/generated/public/docs/references/capability-interfaces/media-playlist.yaml +184 -0
  23. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/audio-media-results.yaml +67 -0
  24. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/get-media.yaml +32 -0
  25. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/media-details.yaml +118 -0
  26. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/search-media.yaml +15 -1
  27. package/generated/public/docs/references/capability-interfaces/media-search/1.0.yaml +235 -1
  28. package/generated/public/docs/references/capability-interfaces/media-search.yaml +235 -1
  29. package/generated/public/docs/references/capability-interfaces/recordings/1.0/messages/list-recordings-response.yaml +11 -5
  30. package/generated/public/docs/references/capability-interfaces/recordings/1.0.yaml +10 -5
  31. package/generated/public/docs/references/capability-interfaces/recordings.yaml +10 -5
  32. package/generated/public/docs/references/capability-interfaces/route-discovery/1.0.yaml +1 -1
  33. package/generated/public/docs/references/capability-interfaces/route-discovery.yaml +1 -1
  34. package/generated/public/docs/references/manifest.json +203 -83
  35. package/generated/public/docs/references/openapi.yaml +304 -38
  36. package/generated/public/docs/references/schemas/CreateMessageTarget.json +4 -0
  37. package/generated/public/docs/references/schemas/MediaId.json +3 -1
  38. package/generated/public/docs/references/schemas/MediaPlayerInterfaceConfiguration.json +7 -0
  39. package/generated/public/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json +27 -0
  40. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json +11 -0
  41. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json +24 -0
  42. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json +37 -0
  43. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistsMessage.json +26 -0
  44. package/generated/public/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json +17 -0
  45. package/generated/public/docs/references/schemas/MediaSearchInterfaceGetMediaMessage.json +30 -0
  46. package/generated/public/docs/references/schemas/MediaSearchInterfaceMediaDetailsMessage.json +43 -0
  47. package/generated/public/docs/references/schemas/MediaSearchInterfaceSearchMediaMessage.json +13 -1
  48. package/generated/public/docs/references/schemas/Playlist.json +8 -0
  49. package/generated/public/docs/references/schemas/PodcastEpisode.json +30 -0
  50. package/generated/public/docs/references/schemas/PodcastShow.json +22 -0
  51. package/generated/public/docs/references/schemas/RouteDiscoveryInterfaceDiscoverRoutesMessage.json +1 -1
  52. package/generated/public/docs/references/schemas/SupportedMediaResource.json +34 -0
  53. package/generated/public/docs/references/schemas/configuration-6.json +6 -2
  54. package/generated/public/docs/references/schemas/index.json +54 -0
  55. package/generated/resources/media-player/configuration.json +37 -0
  56. package/generated/resources/media-player/message-play-media.json +3 -1
  57. package/generated/resources/media-player/state-now-playing.json +27 -0
  58. package/generated/resources/media-playlist/message-get-playlist.json +11 -0
  59. package/generated/resources/media-playlist/message-list-playlists.json +18 -0
  60. package/generated/resources/media-playlist/message-playlist-contents.json +140 -0
  61. package/generated/resources/media-playlist/message-playlists.json +46 -0
  62. package/generated/resources/media-search/message-audio-media-results.json +76 -0
  63. package/generated/resources/media-search/message-get-media.json +29 -0
  64. package/generated/resources/media-search/message-media-details.json +146 -0
  65. package/generated/resources/media-search/message-search-media.json +13 -1
  66. package/generated/resources/recordings/message-list-recordings-response.json +3 -1
  67. package/package.json +8 -3
@@ -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: Supported types, track, album, artist, playlist. Defaults to track
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
@@ -12485,7 +12641,7 @@ components:
12485
12641
  x-name: discover-routes
12486
12642
  x-version: '1.0'
12487
12643
  x-type: message
12488
- x-directionality: out
12644
+ x-directionality: in
12489
12645
  description: Request to discover routes
12490
12646
  type: object
12491
12647
  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
- description: >-
18127
- Media IDs are a standardized identifier that Port OS uses to represent media across YouTube,
18128
- Spotify, and other media providers. See https://portpowered.com/docs/media for the current
18129
- media identifiers documentation.
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
- MovementInstruction:
21654
+ Playlist:
21460
21655
  type: object
21461
- description: A movement instruction for remote control
21462
21656
  properties:
21463
- velocity:
21464
- type: number
21465
- description: Forward/backward speed
21466
- omega:
21467
- type: number
21468
- description: Angular velocity for turning
21469
- duration:
21470
- type: integer
21471
- description: Duration in milliseconds
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
- - velocity
21474
- - omega
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
- Playlist:
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
- "description": "Media IDs are a standardized identifier that Port OS uses to represent media across YouTube, Spotify, and other media providers. See https://portpowered.com/docs/media for the current media identifiers documentation."
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
+ }
@@ -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": [
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }