@portpowered/reference-data 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/generated/capabilities.json +713 -7
  2. package/generated/openapi.json +503 -41
  3. package/generated/public/docs/for-ai/capability-interfaces/brightness/1.0.md +1 -0
  4. package/generated/public/docs/for-ai/capability-interfaces/media-player/1.0.md +3 -1
  5. package/generated/public/docs/for-ai/capability-interfaces/media-playlist/1.0.md +3 -0
  6. package/generated/public/docs/for-ai/capability-interfaces/media-search/1.0.md +2 -0
  7. package/generated/public/docs/for-ai/schemas/b-1.md +1 -0
  8. package/generated/public/docs/for-ai/schemas/m-1.md +8 -8
  9. package/generated/public/docs/for-ai/schemas/m-2.md +8 -0
  10. package/generated/public/docs/for-ai/schemas/p-2.md +2 -0
  11. package/generated/public/docs/for-ai/schemas/s-3.md +1 -0
  12. package/generated/public/docs/for-ai/schemas.md +5 -5
  13. package/generated/public/docs/references/capability-interfaces/brightness/1.0/messages/adjust-brightness.yaml +12 -0
  14. package/generated/public/docs/references/capability-interfaces/brightness/1.0.yaml +18 -0
  15. package/generated/public/docs/references/capability-interfaces/brightness.yaml +18 -0
  16. package/generated/public/docs/references/capability-interfaces/keypad-input/1.0/configuration.yaml +1 -0
  17. package/generated/public/docs/references/capability-interfaces/keypad-input/1.0/messages/send-key.yaml +1 -0
  18. package/generated/public/docs/references/capability-interfaces/keypad-input/1.0.yaml +2 -0
  19. package/generated/public/docs/references/capability-interfaces/keypad-input.yaml +2 -0
  20. package/generated/public/docs/references/capability-interfaces/media-player/1.0/attributes/now-playing.yaml +30 -0
  21. package/generated/public/docs/references/capability-interfaces/media-player/1.0/configuration.yaml +70 -0
  22. package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/fast-forward.yaml +5 -0
  23. package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/play-media.yaml +11 -5
  24. package/generated/public/docs/references/capability-interfaces/media-player/1.0/messages/search-and-play.yaml +39 -1
  25. package/generated/public/docs/references/capability-interfaces/media-player/1.0.yaml +162 -6
  26. package/generated/public/docs/references/capability-interfaces/media-player.yaml +162 -6
  27. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/get-playlist.yaml +9 -0
  28. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/list-playlists.yaml +15 -0
  29. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlist-contents.yaml +114 -0
  30. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0/messages/playlists.yaml +35 -0
  31. package/generated/public/docs/references/capability-interfaces/media-playlist/1.0.yaml +184 -0
  32. package/generated/public/docs/references/capability-interfaces/media-playlist.yaml +184 -0
  33. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/audio-media-results.yaml +67 -0
  34. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/get-media.yaml +32 -0
  35. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/media-details.yaml +118 -0
  36. package/generated/public/docs/references/capability-interfaces/media-search/1.0/messages/search-media.yaml +15 -1
  37. package/generated/public/docs/references/capability-interfaces/media-search/1.0.yaml +235 -1
  38. package/generated/public/docs/references/capability-interfaces/media-search.yaml +235 -1
  39. package/generated/public/docs/references/capability-interfaces/recordings/1.0/messages/list-recordings-response.yaml +11 -5
  40. package/generated/public/docs/references/capability-interfaces/recordings/1.0.yaml +10 -5
  41. package/generated/public/docs/references/capability-interfaces/recordings.yaml +10 -5
  42. package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0/configuration.yaml +14 -0
  43. package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0/messages/speak.yaml +7 -0
  44. package/generated/public/docs/references/capability-interfaces/speech-synthesizer/1.0.yaml +22 -1
  45. package/generated/public/docs/references/capability-interfaces/speech-synthesizer.yaml +22 -1
  46. package/generated/public/docs/references/manifest.json +278 -111
  47. package/generated/public/docs/references/openapi.yaml +427 -38
  48. package/generated/public/docs/references/schemas/BrightnessInterfaceAdjustBrightnessMessage.json +21 -0
  49. package/generated/public/docs/references/schemas/CreateMessageTarget.json +4 -0
  50. package/generated/public/docs/references/schemas/KeypadInputInterfaceConfiguration.json +1 -0
  51. package/generated/public/docs/references/schemas/KeypadInputInterfaceSendKeyMessage.json +1 -0
  52. package/generated/public/docs/references/schemas/MediaId.json +3 -1
  53. package/generated/public/docs/references/schemas/MediaPlayerInterfaceConfiguration.json +31 -0
  54. package/generated/public/docs/references/schemas/MediaPlayerInterfaceFastForwardMessage.json +11 -0
  55. package/generated/public/docs/references/schemas/MediaPlayerInterfaceNowPlayingAttribute.json +27 -0
  56. package/generated/public/docs/references/schemas/MediaPlayerInterfaceSearchAndPlayMessage.json +23 -1
  57. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceGetPlaylistMessage.json +11 -0
  58. package/generated/public/docs/references/schemas/MediaPlaylistInterfaceListPlaylistsMessage.json +24 -0
  59. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistContentsMessage.json +37 -0
  60. package/generated/public/docs/references/schemas/MediaPlaylistInterfacePlaylistsMessage.json +26 -0
  61. package/generated/public/docs/references/schemas/MediaProvider.json +37 -0
  62. package/generated/public/docs/references/schemas/MediaSearchInterfaceAudioMediaResultsMessage.json +17 -0
  63. package/generated/public/docs/references/schemas/MediaSearchInterfaceGetMediaMessage.json +30 -0
  64. package/generated/public/docs/references/schemas/MediaSearchInterfaceMediaDetailsMessage.json +43 -0
  65. package/generated/public/docs/references/schemas/MediaSearchInterfaceSearchMediaMessage.json +13 -1
  66. package/generated/public/docs/references/schemas/Playlist.json +8 -0
  67. package/generated/public/docs/references/schemas/PodcastEpisode.json +30 -0
  68. package/generated/public/docs/references/schemas/PodcastShow.json +22 -0
  69. package/generated/public/docs/references/schemas/SpeechInput.json +7 -1
  70. package/generated/public/docs/references/schemas/SpeechSynthesizerInterfaceConfiguration.json +13 -0
  71. package/generated/public/docs/references/schemas/SupportedMediaResource.json +34 -0
  72. package/generated/public/docs/references/schemas/configuration-6.json +6 -2
  73. package/generated/public/docs/references/schemas/index.json +72 -0
  74. package/generated/resources/brightness/message-adjust-brightness.json +15 -0
  75. package/generated/resources/keypad-input/configuration.json +1 -0
  76. package/generated/resources/keypad-input/message-send-key.json +1 -0
  77. package/generated/resources/media-player/configuration.json +78 -0
  78. package/generated/resources/media-player/message-fast-forward.json +5 -0
  79. package/generated/resources/media-player/message-play-media.json +3 -1
  80. package/generated/resources/media-player/message-search-and-play.json +36 -1
  81. package/generated/resources/media-player/state-now-playing.json +27 -0
  82. package/generated/resources/media-playlist/message-get-playlist.json +11 -0
  83. package/generated/resources/media-playlist/message-list-playlists.json +18 -0
  84. package/generated/resources/media-playlist/message-playlist-contents.json +140 -0
  85. package/generated/resources/media-playlist/message-playlists.json +46 -0
  86. package/generated/resources/media-search/message-audio-media-results.json +76 -0
  87. package/generated/resources/media-search/message-get-media.json +29 -0
  88. package/generated/resources/media-search/message-media-details.json +146 -0
  89. package/generated/resources/media-search/message-search-media.json +13 -1
  90. package/generated/resources/recordings/message-list-recordings-response.json +3 -1
  91. package/generated/resources/speech-synthesizer/configuration.json +18 -1
  92. package/generated/resources/speech-synthesizer/message-speak.json +7 -1
  93. package/package.json +1 -1
@@ -13367,12 +13367,34 @@
13367
13367
  "x-version": "1.0",
13368
13368
  "x-type": "message",
13369
13369
  "x-directionality": "in",
13370
+ "description": "Search for and play media by title or query using a service advertised by the endpoint. Omitting mediaType retains audio search behavior; video-only endpoints may default to video.",
13370
13371
  "type": "object",
13371
13372
  "properties": {
13372
13373
  "query": {
13373
13374
  "type": "string",
13374
- "description": "Query to search for audio content",
13375
+ "description": "Query to search for media content",
13375
13376
  "minLength": 1
13377
+ },
13378
+ "provider": {
13379
+ "$ref": "#/components/schemas/MediaProvider"
13380
+ },
13381
+ "mediaType": {
13382
+ "type": "string",
13383
+ "enum": [
13384
+ "AUDIO",
13385
+ "VIDEO"
13386
+ ],
13387
+ "description": "Media search domain. The endpoint must advertise support for the selected type.",
13388
+ "x-enum-varnames": [
13389
+ "MediaSearchTypeAudio",
13390
+ "MediaSearchTypeVideo"
13391
+ ]
13392
+ },
13393
+ "timerSeconds": {
13394
+ "type": "integer",
13395
+ "minimum": 1,
13396
+ "maximum": 86400,
13397
+ "description": "Optional provider playback timer in seconds."
13376
13398
  }
13377
13399
  },
13378
13400
  "required": [
@@ -14575,6 +14597,7 @@
14575
14597
  "LEFT",
14576
14598
  "RIGHT",
14577
14599
  "SELECT",
14600
+ "HOME",
14578
14601
  "BACK",
14579
14602
  "EXIT",
14580
14603
  "MENU",
@@ -14687,6 +14710,16 @@
14687
14710
  "type": "object",
14688
14711
  "additionalProperties": false
14689
14712
  },
14713
+ "MediaPlayerInterfaceFastForwardMessage": {
14714
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-player",
14715
+ "x-name": "fast-forward",
14716
+ "x-version": "1.0",
14717
+ "x-type": "message",
14718
+ "x-directionality": "in",
14719
+ "description": "Begin provider-defined fast-forward playback. This does not seek by a specific duration; use skip-forward or seek for a known position change.",
14720
+ "type": "object",
14721
+ "additionalProperties": false
14722
+ },
14690
14723
  "MediaPlayerInterfaceStartOverMessage": {
14691
14724
  "x-namespace": "port1/systems/zero/capability-interfaces/media-player",
14692
14725
  "x-name": "start-over",
@@ -14819,6 +14852,90 @@
14819
14852
  ],
14820
14853
  "additionalProperties": false
14821
14854
  },
14855
+ "MediaPlaylistInterfaceListPlaylistsMessage": {
14856
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
14857
+ "x-name": "list-playlists",
14858
+ "x-version": "1.0",
14859
+ "x-type": "message",
14860
+ "x-directionality": "in",
14861
+ "description": "List the connected customer's owned or followed playlists; use search-media for catalog search.",
14862
+ "type": "object",
14863
+ "properties": {
14864
+ "maxResults": {
14865
+ "type": "integer",
14866
+ "minimum": 1,
14867
+ "maximum": 50,
14868
+ "default": 20
14869
+ },
14870
+ "nextToken": {
14871
+ "type": "string",
14872
+ "minLength": 1
14873
+ }
14874
+ },
14875
+ "required": [],
14876
+ "additionalProperties": false
14877
+ },
14878
+ "MediaPlaylistInterfacePlaylistsMessage": {
14879
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
14880
+ "x-name": "playlists",
14881
+ "x-version": "1.0",
14882
+ "x-type": "message",
14883
+ "x-directionality": "out",
14884
+ "description": "A page of the connected customer's playlists with exact resource IDs.",
14885
+ "type": "object",
14886
+ "properties": {
14887
+ "playlists": {
14888
+ "type": "array",
14889
+ "items": {
14890
+ "$ref": "#/components/schemas/Playlist"
14891
+ }
14892
+ },
14893
+ "nextToken": {
14894
+ "type": "string",
14895
+ "minLength": 1
14896
+ }
14897
+ },
14898
+ "required": [
14899
+ "playlists"
14900
+ ],
14901
+ "additionalProperties": false
14902
+ },
14903
+ "MediaPlaylistInterfacePlaylistContentsMessage": {
14904
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
14905
+ "x-name": "playlist-contents",
14906
+ "x-version": "1.0",
14907
+ "x-type": "message",
14908
+ "x-directionality": "out",
14909
+ "description": "A bounded playlist page containing playable tracks or episodes.",
14910
+ "type": "object",
14911
+ "properties": {
14912
+ "playlistId": {
14913
+ "$ref": "#/components/schemas/MediaId"
14914
+ },
14915
+ "tracks": {
14916
+ "type": "array",
14917
+ "items": {
14918
+ "$ref": "#/components/schemas/Track"
14919
+ }
14920
+ },
14921
+ "episodes": {
14922
+ "type": "array",
14923
+ "items": {
14924
+ "$ref": "#/components/schemas/PodcastEpisode"
14925
+ }
14926
+ },
14927
+ "nextToken": {
14928
+ "type": "string",
14929
+ "minLength": 1
14930
+ }
14931
+ },
14932
+ "required": [
14933
+ "playlistId",
14934
+ "tracks",
14935
+ "episodes"
14936
+ ],
14937
+ "additionalProperties": false
14938
+ },
14822
14939
  "MediaPlaylistInterfaceGetPlaylistMessage": {
14823
14940
  "x-namespace": "port1/systems/zero/capability-interfaces/media-playlist",
14824
14941
  "x-name": "get-playlist",
@@ -14831,6 +14948,17 @@
14831
14948
  "type": "string",
14832
14949
  "description": "ID of the playlist to retrieve",
14833
14950
  "minLength": 1
14951
+ },
14952
+ "maxResults": {
14953
+ "type": "integer",
14954
+ "minimum": 1,
14955
+ "maximum": 50,
14956
+ "default": 20
14957
+ },
14958
+ "nextToken": {
14959
+ "type": "string",
14960
+ "minLength": 1,
14961
+ "description": "Opaque continuation for the same playlist."
14834
14962
  }
14835
14963
  },
14836
14964
  "required": [
@@ -15128,6 +15256,26 @@
15128
15256
  "brightness"
15129
15257
  ]
15130
15258
  },
15259
+ "BrightnessInterfaceAdjustBrightnessMessage": {
15260
+ "x-namespace": "port1/systems/zero/capability-interfaces/brightness",
15261
+ "x-name": "adjust-brightness",
15262
+ "x-version": "1.0",
15263
+ "x-type": "message",
15264
+ "x-directionality": "in",
15265
+ "description": "Adjust brightness by a signed number of percentage points. The endpoint must advertise this message separately from set-brightness.",
15266
+ "type": "object",
15267
+ "properties": {
15268
+ "brightnessDelta": {
15269
+ "type": "integer",
15270
+ "minimum": -100,
15271
+ "maximum": 100
15272
+ }
15273
+ },
15274
+ "required": [
15275
+ "brightnessDelta"
15276
+ ],
15277
+ "additionalProperties": false
15278
+ },
15131
15279
  "MediaSearchInterfaceAudioMediaResultsMessage": {
15132
15280
  "x-namespace": "port1/systems/zero/capability-interfaces/media-search",
15133
15281
  "x-name": "audio-media-results",
@@ -15163,6 +15311,23 @@
15163
15311
  "$ref": "#/components/schemas/Playlist"
15164
15312
  },
15165
15313
  "description": "Playlist results"
15314
+ },
15315
+ "shows": {
15316
+ "type": "array",
15317
+ "items": {
15318
+ "$ref": "#/components/schemas/PodcastShow"
15319
+ }
15320
+ },
15321
+ "episodes": {
15322
+ "type": "array",
15323
+ "items": {
15324
+ "$ref": "#/components/schemas/PodcastEpisode"
15325
+ }
15326
+ },
15327
+ "nextToken": {
15328
+ "type": "string",
15329
+ "minLength": 1,
15330
+ "description": "Opaque continuation for the same search; omit when exhausted."
15166
15331
  }
15167
15332
  },
15168
15333
  "required": [
@@ -15190,6 +15355,77 @@
15190
15355
  ],
15191
15356
  "additionalProperties": false
15192
15357
  },
15358
+ "MediaSearchInterfaceMediaDetailsMessage": {
15359
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-search",
15360
+ "x-name": "media-details",
15361
+ "x-version": "1.0",
15362
+ "x-type": "message",
15363
+ "x-directionality": "out",
15364
+ "description": "Exact media resource details and a bounded page of its children.",
15365
+ "type": "object",
15366
+ "properties": {
15367
+ "mediaId": {
15368
+ "$ref": "#/components/schemas/MediaId"
15369
+ },
15370
+ "name": {
15371
+ "type": "string"
15372
+ },
15373
+ "resourceKind": {
15374
+ "type": "string",
15375
+ "description": "Provider resource kind from the media URI."
15376
+ },
15377
+ "tracks": {
15378
+ "type": "array",
15379
+ "items": {
15380
+ "$ref": "#/components/schemas/Track"
15381
+ }
15382
+ },
15383
+ "episodes": {
15384
+ "type": "array",
15385
+ "items": {
15386
+ "$ref": "#/components/schemas/PodcastEpisode"
15387
+ }
15388
+ },
15389
+ "nextToken": {
15390
+ "type": "string",
15391
+ "minLength": 1
15392
+ }
15393
+ },
15394
+ "required": [
15395
+ "mediaId",
15396
+ "resourceKind"
15397
+ ],
15398
+ "additionalProperties": false
15399
+ },
15400
+ "MediaSearchInterfaceGetMediaMessage": {
15401
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-search",
15402
+ "x-name": "get-media",
15403
+ "x-version": "1.0",
15404
+ "x-type": "message",
15405
+ "x-directionality": "in",
15406
+ "description": "Inspect an exact media resource or traverse an album/show. Use get-playlist for playlist contents.",
15407
+ "type": "object",
15408
+ "properties": {
15409
+ "mediaId": {
15410
+ "$ref": "#/components/schemas/MediaId"
15411
+ },
15412
+ "maxResults": {
15413
+ "type": "integer",
15414
+ "minimum": 1,
15415
+ "maximum": 50,
15416
+ "default": 20
15417
+ },
15418
+ "nextToken": {
15419
+ "type": "string",
15420
+ "minLength": 1,
15421
+ "description": "Opaque continuation for the same resource."
15422
+ }
15423
+ },
15424
+ "required": [
15425
+ "mediaId"
15426
+ ],
15427
+ "additionalProperties": false
15428
+ },
15193
15429
  "MediaSearchInterfaceSearchMediaMessage": {
15194
15430
  "x-namespace": "port1/systems/zero/capability-interfaces/media-search",
15195
15431
  "x-name": "search-media",
@@ -15204,7 +15440,7 @@
15204
15440
  },
15205
15441
  "type": {
15206
15442
  "type": "string",
15207
- "description": "Supported types, track, album, artist, playlist. Defaults to track",
15443
+ "description": "Resource kind: track, album, artist, playlist, show or episode when advertised. Defaults to track",
15208
15444
  "default": "track"
15209
15445
  },
15210
15446
  "album": {
@@ -15218,6 +15454,18 @@
15218
15454
  "year": {
15219
15455
  "type": "string",
15220
15456
  "description": "Search by year, can only be used when searching albums, years, and tracks. You can pass a range like 1990-2000"
15457
+ },
15458
+ "maxResults": {
15459
+ "type": "integer",
15460
+ "minimum": 1,
15461
+ "maximum": 50,
15462
+ "default": 20,
15463
+ "description": "Maximum results on one page."
15464
+ },
15465
+ "nextToken": {
15466
+ "type": "string",
15467
+ "minLength": 1,
15468
+ "description": "Copy the opaque continuation from the previous result with the same query and filters."
15221
15469
  }
15222
15470
  },
15223
15471
  "required": [
@@ -17888,6 +18136,32 @@
17888
18136
  ],
17889
18137
  "additionalProperties": false
17890
18138
  },
18139
+ "MediaPlayerInterfaceNowPlayingAttribute": {
18140
+ "x-namespace": "port1/systems/zero/capability-interfaces/media-player",
18141
+ "x-name": "now-playing",
18142
+ "x-version": "1.0",
18143
+ "x-type": "attribute-definition",
18144
+ "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.",
18145
+ "type": "object",
18146
+ "properties": {
18147
+ "active": {
18148
+ "type": "boolean"
18149
+ },
18150
+ "mediaId": {
18151
+ "$ref": "#/components/schemas/MediaId"
18152
+ },
18153
+ "contextMediaId": {
18154
+ "$ref": "#/components/schemas/MediaId"
18155
+ },
18156
+ "name": {
18157
+ "type": "string"
18158
+ }
18159
+ },
18160
+ "required": [
18161
+ "active"
18162
+ ],
18163
+ "additionalProperties": false
18164
+ },
17891
18165
  "MediaPlayerInterfacePlaybackStateAttribute": {
17892
18166
  "x-namespace": "port1/systems/zero/capability-interfaces/media-player",
17893
18167
  "x-name": "playback-state",
@@ -22126,6 +22400,7 @@
22126
22400
  "LEFT",
22127
22401
  "RIGHT",
22128
22402
  "SELECT",
22403
+ "HOME",
22129
22404
  "BACK",
22130
22405
  "EXIT",
22131
22406
  "MENU",
@@ -22222,6 +22497,37 @@
22222
22497
  "description": "Configure media playback, media selection and audio playback. Advertise only the messages implemented by this endpoint.",
22223
22498
  "type": "object",
22224
22499
  "properties": {
22500
+ "supportedMediaResources": {
22501
+ "type": "array",
22502
+ "description": "Exact play-media URI combinations accepted by this route. Member or endpoint unions do not imply support by every route.",
22503
+ "items": {
22504
+ "$ref": "#/components/schemas/SupportedMediaResource"
22505
+ }
22506
+ },
22507
+ "supportedAudioProviders": {
22508
+ "type": "array",
22509
+ "uniqueItems": true,
22510
+ "description": "Audio services accepted by search-and-play on this endpoint. These describe command support, not active subscriptions.",
22511
+ "items": {
22512
+ "$ref": "#/components/schemas/MediaProvider"
22513
+ }
22514
+ },
22515
+ "supportedVideoProviders": {
22516
+ "type": "array",
22517
+ "uniqueItems": true,
22518
+ "description": "Video services accepted by search-and-play on this endpoint. These describe command support, not installed applications or active subscriptions.",
22519
+ "items": {
22520
+ "$ref": "#/components/schemas/MediaProvider"
22521
+ }
22522
+ },
22523
+ "defaultAudioProvider": {
22524
+ "$ref": "#/components/schemas/MediaProvider",
22525
+ "description": "Default service for an audio search. Must be in supportedAudioProviders."
22526
+ },
22527
+ "defaultVideoProvider": {
22528
+ "$ref": "#/components/schemas/MediaProvider",
22529
+ "description": "Default service for a video search. Must be in supportedVideoProviders."
22530
+ },
22225
22531
  "supportedPlaybackStates": {
22226
22532
  "type": "array",
22227
22533
  "items": {
@@ -22924,6 +23230,19 @@
22924
23230
  "x-version": "1.0",
22925
23231
  "x-type": "configuration",
22926
23232
  "type": "object",
23233
+ "properties": {
23234
+ "supportedInputTypes": {
23235
+ "type": "array",
23236
+ "uniqueItems": true,
23237
+ "items": {
23238
+ "type": "string",
23239
+ "enum": [
23240
+ "SSML",
23241
+ "CANNED_TTS"
23242
+ ]
23243
+ }
23244
+ }
23245
+ },
22927
23246
  "additionalProperties": false
22928
23247
  },
22929
23248
  "TemperatureSensorInterfaceConfiguration": {
@@ -23023,7 +23342,9 @@
23023
23342
  "title": "MediaId",
23024
23343
  "type": "string",
23025
23344
  "minLength": 1,
23026
- "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."
23345
+ "example": "portos-media://portpowered.com/spotify/audio/track/Ab123",
23346
+ "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_-]+)$",
23347
+ "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"
23027
23348
  },
23028
23349
  "PlayableAudio": {
23029
23350
  "type": "object",
@@ -26797,6 +27118,10 @@
26797
27118
  "id": {
26798
27119
  "type": "string",
26799
27120
  "description": "The ID of the target"
27121
+ },
27122
+ "routeId": {
27123
+ "type": "string",
27124
+ "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."
26800
27125
  }
26801
27126
  }
26802
27127
  },
@@ -27099,6 +27424,42 @@
27099
27424
  },
27100
27425
  "additionalProperties": false
27101
27426
  },
27427
+ "MediaProvider": {
27428
+ "type": "string",
27429
+ "description": "Media service identifier. A provider enum value does not imply that every endpoint supports that service; use the endpoint's advertised provider lists.",
27430
+ "enum": [
27431
+ "SPOTIFY",
27432
+ "AMAZON_MUSIC",
27433
+ "APPLE_MUSIC",
27434
+ "AUDIBLE",
27435
+ "TUNE_IN",
27436
+ "PANDORA",
27437
+ "IHEART_RADIO",
27438
+ "SIRIUSXM",
27439
+ "DEEZER",
27440
+ "TIDAL",
27441
+ "YOUTUBE",
27442
+ "NETFLIX",
27443
+ "PRIME_VIDEO",
27444
+ "DAILYMOTION"
27445
+ ],
27446
+ "x-enum-varnames": [
27447
+ "MediaProviderSpotify",
27448
+ "MediaProviderAmazonMusic",
27449
+ "MediaProviderAppleMusic",
27450
+ "MediaProviderAudible",
27451
+ "MediaProviderTuneIn",
27452
+ "MediaProviderPandora",
27453
+ "MediaProviderIHeartRadio",
27454
+ "MediaProviderSiriusXM",
27455
+ "MediaProviderDeezer",
27456
+ "MediaProviderTidal",
27457
+ "MediaProviderYouTube",
27458
+ "MediaProviderNetflix",
27459
+ "MediaProviderPrimeVideo",
27460
+ "MediaProviderDailymotion"
27461
+ ]
27462
+ },
27102
27463
  "NotificationPayload": {
27103
27464
  "type": "object",
27104
27465
  "description": "Notification payload information",
@@ -27374,48 +27735,34 @@
27374
27735
  },
27375
27736
  "additionalProperties": false
27376
27737
  },
27377
- "MovementInstruction": {
27738
+ "Playlist": {
27378
27739
  "type": "object",
27379
- "description": "A movement instruction for remote control",
27380
27740
  "properties": {
27381
- "velocity": {
27382
- "type": "number",
27383
- "description": "Forward/backward speed"
27741
+ "id": {
27742
+ "type": "string",
27743
+ "description": "Unique identifier for the playlist",
27744
+ "minLength": 1
27384
27745
  },
27385
- "omega": {
27386
- "type": "number",
27387
- "description": "Angular velocity for turning"
27746
+ "name": {
27747
+ "type": "string",
27748
+ "description": "Playlist name",
27749
+ "minLength": 1
27388
27750
  },
27389
- "duration": {
27390
- "type": "integer",
27391
- "description": "Duration in milliseconds"
27751
+ "ownerId": {
27752
+ "type": "string",
27753
+ "description": "Provider-scoped owner identity, when supplied by the provider."
27754
+ },
27755
+ "ownerName": {
27756
+ "type": "string",
27757
+ "description": "Owner display name, useful for distinguishing owned and followed playlists."
27392
27758
  }
27393
27759
  },
27394
27760
  "required": [
27395
- "velocity",
27396
- "omega",
27397
- "duration"
27761
+ "id",
27762
+ "name"
27398
27763
  ],
27399
27764
  "additionalProperties": false
27400
27765
  },
27401
- "CleaningMode": {
27402
- "type": "string",
27403
- "description": "Robot vacuum cleaning mode",
27404
- "enum": [
27405
- "AUTO",
27406
- "SPOT",
27407
- "EDGE",
27408
- "SINGLE_ROOM",
27409
- "CUSTOM"
27410
- ],
27411
- "x-enum-varnames": [
27412
- "CleaningModeAuto",
27413
- "CleaningModeSpot",
27414
- "CleaningModeEdge",
27415
- "CleaningModeSingleRoom",
27416
- "CleaningModeCustom"
27417
- ]
27418
- },
27419
27766
  "Artist": {
27420
27767
  "type": "object",
27421
27768
  "description": "Artist information",
@@ -27500,18 +27847,90 @@
27500
27847
  ],
27501
27848
  "additionalProperties": false
27502
27849
  },
27503
- "Playlist": {
27850
+ "PodcastEpisode": {
27504
27851
  "type": "object",
27852
+ "description": "Provider-qualified podcast episode with selection metadata.",
27505
27853
  "properties": {
27506
27854
  "id": {
27855
+ "$ref": "#/components/schemas/MediaId"
27856
+ },
27857
+ "name": {
27507
27858
  "type": "string",
27508
- "description": "Unique identifier for the playlist",
27509
27859
  "minLength": 1
27510
27860
  },
27861
+ "showId": {
27862
+ "$ref": "#/components/schemas/MediaId"
27863
+ },
27864
+ "releaseDate": {
27865
+ "type": "string",
27866
+ "description": "Provider release date; precision can be year, month or day."
27867
+ },
27868
+ "releaseDatePrecision": {
27869
+ "type": "string",
27870
+ "description": "Provider date precision."
27871
+ }
27872
+ },
27873
+ "required": [
27874
+ "id",
27875
+ "name"
27876
+ ],
27877
+ "additionalProperties": false
27878
+ },
27879
+ "MovementInstruction": {
27880
+ "type": "object",
27881
+ "description": "A movement instruction for remote control",
27882
+ "properties": {
27883
+ "velocity": {
27884
+ "type": "number",
27885
+ "description": "Forward/backward speed"
27886
+ },
27887
+ "omega": {
27888
+ "type": "number",
27889
+ "description": "Angular velocity for turning"
27890
+ },
27891
+ "duration": {
27892
+ "type": "integer",
27893
+ "description": "Duration in milliseconds"
27894
+ }
27895
+ },
27896
+ "required": [
27897
+ "velocity",
27898
+ "omega",
27899
+ "duration"
27900
+ ],
27901
+ "additionalProperties": false
27902
+ },
27903
+ "CleaningMode": {
27904
+ "type": "string",
27905
+ "description": "Robot vacuum cleaning mode",
27906
+ "enum": [
27907
+ "AUTO",
27908
+ "SPOT",
27909
+ "EDGE",
27910
+ "SINGLE_ROOM",
27911
+ "CUSTOM"
27912
+ ],
27913
+ "x-enum-varnames": [
27914
+ "CleaningModeAuto",
27915
+ "CleaningModeSpot",
27916
+ "CleaningModeEdge",
27917
+ "CleaningModeSingleRoom",
27918
+ "CleaningModeCustom"
27919
+ ]
27920
+ },
27921
+ "PodcastShow": {
27922
+ "type": "object",
27923
+ "description": "Provider-qualified podcast series; read episodes before playback.",
27924
+ "properties": {
27925
+ "id": {
27926
+ "$ref": "#/components/schemas/MediaId"
27927
+ },
27511
27928
  "name": {
27512
27929
  "type": "string",
27513
- "description": "Playlist name",
27514
27930
  "minLength": 1
27931
+ },
27932
+ "publisher": {
27933
+ "type": "string"
27515
27934
  }
27516
27935
  },
27517
27936
  "required": [
@@ -27743,11 +28162,17 @@
27743
28162
  "type": {
27744
28163
  "type": "string",
27745
28164
  "enum": [
27746
- "SSML"
28165
+ "SSML",
28166
+ "CANNED_TTS"
27747
28167
  ]
27748
28168
  },
27749
28169
  "ssml": {
27750
28170
  "type": "string"
28171
+ },
28172
+ "cannedTtsStringId": {
28173
+ "type": "string",
28174
+ "minLength": 1,
28175
+ "description": "Provider-defined canned speech identifier; supported only by integrations advertising canned speech."
27751
28176
  }
27752
28177
  }
27753
28178
  },
@@ -28594,6 +29019,39 @@
28594
29019
  ],
28595
29020
  "additionalProperties": false
28596
29021
  },
29022
+ "SupportedMediaResource": {
29023
+ "title": "SupportedMediaResource",
29024
+ "description": "A provider, media type and resource-kind combination accepted by a control route.",
29025
+ "type": "object",
29026
+ "properties": {
29027
+ "provider": {
29028
+ "$ref": "#/components/schemas/MediaProvider"
29029
+ },
29030
+ "mediaType": {
29031
+ "type": "string",
29032
+ "enum": [
29033
+ "AUDIO",
29034
+ "VIDEO",
29035
+ "IMAGE"
29036
+ ]
29037
+ },
29038
+ "resourceKinds": {
29039
+ "type": "array",
29040
+ "minItems": 1,
29041
+ "uniqueItems": true,
29042
+ "items": {
29043
+ "type": "string",
29044
+ "description": "Lowercase resource-kind segment from the provider URI."
29045
+ }
29046
+ }
29047
+ },
29048
+ "required": [
29049
+ "provider",
29050
+ "mediaType",
29051
+ "resourceKinds"
29052
+ ],
29053
+ "additionalProperties": false
29054
+ },
28597
29055
  "MeasurementRange": {
28598
29056
  "type": "object",
28599
29057
  "description": "Range of measurement values (min and max)",
@@ -28632,7 +29090,9 @@
28632
29090
  "ARTIST",
28633
29091
  "PLAYLIST",
28634
29092
  "GENRE",
28635
- "YEAR"
29093
+ "YEAR",
29094
+ "SHOW",
29095
+ "EPISODE"
28636
29096
  ],
28637
29097
  "x-enum-varnames": [
28638
29098
  "Configuration6SupportedSearchTypesTrack",
@@ -28640,7 +29100,9 @@
28640
29100
  "Configuration6SupportedSearchTypesArtist",
28641
29101
  "Configuration6SupportedSearchTypesPlaylist",
28642
29102
  "Configuration6SupportedSearchTypesGenre",
28643
- "Configuration6SupportedSearchTypesYear"
29103
+ "Configuration6SupportedSearchTypesYear",
29104
+ "Configuration6SupportedSearchTypesShow",
29105
+ "Configuration6SupportedSearchTypesEpisode"
28644
29106
  ]
28645
29107
  },
28646
29108
  "description": "List of supported search types"