@snokam/mcp-api 0.106.1 → 0.107.0

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.
@@ -0,0 +1,2028 @@
1
+ {
2
+ "openapi": "3.0.1",
3
+ "info": {
4
+ "title": "Office API",
5
+ "description": "Office automation service",
6
+ "version": "v1.0.0"
7
+ },
8
+ "servers": [
9
+ {
10
+ "url": "https://office.api.test.snokam.no"
11
+ }
12
+ ],
13
+ "paths": {
14
+ "/v1.0/unloc/event": {
15
+ "post": {
16
+ "tags": [
17
+ "Unloc"
18
+ ],
19
+ "summary": "Handles Unloc events",
20
+ "description": "This function processes Unloc events.",
21
+ "operationId": "unlocEvent",
22
+ "requestBody": {
23
+ "description": "The Unloc event payload",
24
+ "content": {
25
+ "application/json": {
26
+ "schema": {
27
+ "$ref": "#/components/schemas/unlocEvent"
28
+ }
29
+ }
30
+ },
31
+ "required": true
32
+ },
33
+ "responses": {
34
+ "200": {
35
+ "description": "Event processed successfully",
36
+ "x-ms-summary": "Success"
37
+ }
38
+ },
39
+ "x-ms-visibility": "important"
40
+ }
41
+ },
42
+ "/v1.0/protected/health/{provider}": {
43
+ "get": {
44
+ "tags": [
45
+ "Health"
46
+ ],
47
+ "summary": "Checks an integration's connectivity",
48
+ "description": "Verifies that a provider this function owns can be reached with the configured credentials.",
49
+ "operationId": "integrationHealth",
50
+ "parameters": [
51
+ {
52
+ "name": "provider",
53
+ "in": "path",
54
+ "required": true,
55
+ "schema": {
56
+ "type": "string"
57
+ }
58
+ }
59
+ ],
60
+ "responses": {
61
+ "200": {
62
+ "description": "Payload of IntegrationHealthResult",
63
+ "content": {
64
+ "application/json": {
65
+ "schema": {
66
+ "$ref": "#/components/schemas/integrationHealthResult"
67
+ }
68
+ }
69
+ },
70
+ "x-ms-summary": "Health result"
71
+ }
72
+ },
73
+ "security": [
74
+ {
75
+ "Implicit": [
76
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
77
+ ]
78
+ }
79
+ ]
80
+ }
81
+ },
82
+ "/v1.0/sonos/households": {
83
+ "get": {
84
+ "tags": [
85
+ "Sonos"
86
+ ],
87
+ "summary": "Gets Sonos Music households",
88
+ "description": "Retrieves a list of Sonos Music households.",
89
+ "operationId": "getHouseholds",
90
+ "responses": {
91
+ "200": {
92
+ "description": "List of Sonos Music households",
93
+ "content": {
94
+ "application/json": {
95
+ "schema": {
96
+ "$ref": "#/components/schemas/sonosHouseholds"
97
+ }
98
+ }
99
+ },
100
+ "x-ms-summary": "Success"
101
+ }
102
+ }
103
+ }
104
+ },
105
+ "/v1.0/playback/status": {
106
+ "get": {
107
+ "tags": [
108
+ "Playback"
109
+ ],
110
+ "summary": "Gets playback status",
111
+ "description": "Retrieves the playback status of the household.",
112
+ "operationId": "getPlaybackStatus",
113
+ "responses": {
114
+ "200": {
115
+ "description": "Playback status of the household",
116
+ "content": {
117
+ "application/json": {
118
+ "schema": {
119
+ "$ref": "#/components/schemas/household"
120
+ }
121
+ }
122
+ },
123
+ "x-ms-summary": "Success"
124
+ }
125
+ }
126
+ }
127
+ },
128
+ "/v1.0/sonos/household": {
129
+ "get": {
130
+ "tags": [
131
+ "Sonos"
132
+ ],
133
+ "summary": "Gets a Sonos Music household",
134
+ "description": "Retrieves a Sonos Music household.",
135
+ "operationId": "getHousehold",
136
+ "responses": {
137
+ "200": {
138
+ "description": "A Sonos Music household",
139
+ "content": {
140
+ "application/json": {
141
+ "schema": {
142
+ "$ref": "#/components/schemas/household"
143
+ }
144
+ }
145
+ },
146
+ "x-ms-summary": "Success"
147
+ }
148
+ }
149
+ }
150
+ },
151
+ "/v1.0/sonos/groups/{name}": {
152
+ "get": {
153
+ "tags": [
154
+ "Sonos"
155
+ ],
156
+ "summary": "Gets a Sonos Music group",
157
+ "description": "Retrieves a Sonos Music group by name.",
158
+ "operationId": "getGroup",
159
+ "parameters": [
160
+ {
161
+ "name": "name",
162
+ "in": "path",
163
+ "description": "The name of the group to retrieve",
164
+ "required": true,
165
+ "schema": {
166
+ "type": "string"
167
+ },
168
+ "x-ms-summary": "The name of the group"
169
+ }
170
+ ],
171
+ "responses": {
172
+ "200": {
173
+ "description": "A Sonos Music group",
174
+ "content": {
175
+ "application/json": {
176
+ "schema": {
177
+ "$ref": "#/components/schemas/group"
178
+ }
179
+ }
180
+ },
181
+ "x-ms-summary": "Success"
182
+ },
183
+ "404": {
184
+ "description": "Group not found",
185
+ "x-ms-summary": "Not Found"
186
+ }
187
+ }
188
+ }
189
+ },
190
+ "/v1.0/sonos/groups/{name}/playback/play": {
191
+ "put": {
192
+ "tags": [
193
+ "Sonos"
194
+ ],
195
+ "summary": "Plays a group",
196
+ "description": "Starts playback on a Sonos Music group by name.",
197
+ "operationId": "play",
198
+ "parameters": [
199
+ {
200
+ "name": "name",
201
+ "in": "path",
202
+ "description": "The name of the group to play",
203
+ "required": true,
204
+ "schema": {
205
+ "type": "string"
206
+ },
207
+ "x-ms-summary": "The name of the group"
208
+ }
209
+ ],
210
+ "responses": {
211
+ "200": {
212
+ "description": "Playback started on the group",
213
+ "content": {
214
+ "application/json": {
215
+ "schema": {
216
+ "$ref": "#/components/schemas/simpleResponse"
217
+ }
218
+ }
219
+ },
220
+ "x-ms-summary": "Success"
221
+ },
222
+ "404": {
223
+ "description": "Group not found",
224
+ "x-ms-summary": "Not Found"
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "/v1.0/sonos/groups/{name}/playback/skipToNextTrack": {
230
+ "put": {
231
+ "tags": [
232
+ "Sonos"
233
+ ],
234
+ "summary": "Skips to the next track",
235
+ "description": "Skips to the next track on a Sonos Music group by name.",
236
+ "operationId": "skipTrack",
237
+ "parameters": [
238
+ {
239
+ "name": "name",
240
+ "in": "path",
241
+ "description": "The name of the group to skip track",
242
+ "required": true,
243
+ "schema": {
244
+ "type": "string"
245
+ },
246
+ "x-ms-summary": "The name of the group"
247
+ }
248
+ ],
249
+ "responses": {
250
+ "200": {
251
+ "description": "Skipped track on the group",
252
+ "content": {
253
+ "application/json": {
254
+ "schema": {
255
+ "$ref": "#/components/schemas/simpleResponse"
256
+ }
257
+ }
258
+ },
259
+ "x-ms-summary": "Success"
260
+ },
261
+ "404": {
262
+ "description": "Group not found",
263
+ "x-ms-summary": "Not Found"
264
+ }
265
+ }
266
+ }
267
+ },
268
+ "/v1.0/sonos/groups/{name}/playback/skipToPreviousTrack": {
269
+ "put": {
270
+ "tags": [
271
+ "Sonos"
272
+ ],
273
+ "summary": "Skips to the previous track",
274
+ "description": "Skips to the previous track on a Sonos Music group by name.",
275
+ "operationId": "previousTrack",
276
+ "parameters": [
277
+ {
278
+ "name": "name",
279
+ "in": "path",
280
+ "description": "The name of the group to skip to the previous track",
281
+ "required": true,
282
+ "schema": {
283
+ "type": "string"
284
+ },
285
+ "x-ms-summary": "The name of the group"
286
+ }
287
+ ],
288
+ "responses": {
289
+ "200": {
290
+ "description": "Skipped to the previous track on the group",
291
+ "content": {
292
+ "application/json": {
293
+ "schema": {
294
+ "$ref": "#/components/schemas/simpleResponse"
295
+ }
296
+ }
297
+ },
298
+ "x-ms-summary": "Success"
299
+ },
300
+ "404": {
301
+ "description": "Group not found",
302
+ "x-ms-summary": "Not Found"
303
+ }
304
+ }
305
+ }
306
+ },
307
+ "/v1.0/sonos/groups/{name}/playback/pause": {
308
+ "put": {
309
+ "tags": [
310
+ "Sonos"
311
+ ],
312
+ "summary": "Pauses playback",
313
+ "description": "Pauses playback on a Sonos Music group by name.",
314
+ "operationId": "pause",
315
+ "parameters": [
316
+ {
317
+ "name": "name",
318
+ "in": "path",
319
+ "description": "The name of the group to pause playback",
320
+ "required": true,
321
+ "schema": {
322
+ "type": "string"
323
+ },
324
+ "x-ms-summary": "The name of the group"
325
+ }
326
+ ],
327
+ "responses": {
328
+ "200": {
329
+ "description": "Paused playback on the group",
330
+ "content": {
331
+ "application/json": {
332
+ "schema": {
333
+ "$ref": "#/components/schemas/simpleResponse"
334
+ }
335
+ }
336
+ },
337
+ "x-ms-summary": "Success"
338
+ },
339
+ "404": {
340
+ "description": "Group not found",
341
+ "x-ms-summary": "Not Found"
342
+ }
343
+ }
344
+ }
345
+ },
346
+ "/v1.0/sonos/groups/{name}/playback/status": {
347
+ "get": {
348
+ "tags": [
349
+ "Sonos"
350
+ ],
351
+ "summary": "Gets playback status",
352
+ "description": "Gets the playback status of a Sonos Music group by name.",
353
+ "operationId": "status",
354
+ "parameters": [
355
+ {
356
+ "name": "name",
357
+ "in": "path",
358
+ "description": "The name of the group to get playback status",
359
+ "required": true,
360
+ "schema": {
361
+ "type": "string"
362
+ },
363
+ "x-ms-summary": "The name of the group"
364
+ }
365
+ ],
366
+ "responses": {
367
+ "200": {
368
+ "description": "Playback status of the group",
369
+ "content": {
370
+ "application/json": {
371
+ "schema": {
372
+ "$ref": "#/components/schemas/playbackStatus"
373
+ }
374
+ }
375
+ },
376
+ "x-ms-summary": "Success"
377
+ },
378
+ "404": {
379
+ "description": "Group not found",
380
+ "x-ms-summary": "Not Found"
381
+ }
382
+ }
383
+ }
384
+ },
385
+ "/v1.0/sonos/groups/{name}/playbackMetadata": {
386
+ "get": {
387
+ "tags": [
388
+ "Sonos"
389
+ ],
390
+ "summary": "Gets playback metadata",
391
+ "description": "Gets the playback metadata of a Sonos Music group by name.",
392
+ "operationId": "playbackMetadata",
393
+ "parameters": [
394
+ {
395
+ "name": "name",
396
+ "in": "path",
397
+ "description": "The name of the group to get playback metadata",
398
+ "required": true,
399
+ "schema": {
400
+ "type": "string"
401
+ },
402
+ "x-ms-summary": "The name of the group"
403
+ }
404
+ ],
405
+ "responses": {
406
+ "200": {
407
+ "description": "Playback metadata of the group",
408
+ "content": {
409
+ "application/json": {
410
+ "schema": {
411
+ "$ref": "#/components/schemas/sonosMetaData"
412
+ }
413
+ }
414
+ },
415
+ "x-ms-summary": "Success"
416
+ },
417
+ "404": {
418
+ "description": "Group not found",
419
+ "x-ms-summary": "Not Found"
420
+ }
421
+ }
422
+ }
423
+ },
424
+ "/v1.0/sonos/groups": {
425
+ "get": {
426
+ "tags": [
427
+ "Sonos"
428
+ ],
429
+ "summary": "Gets all groups",
430
+ "description": "Gets a list of all Sonos Music groups.",
431
+ "operationId": "getGroups",
432
+ "responses": {
433
+ "200": {
434
+ "description": "List of Sonos Music groups",
435
+ "content": {
436
+ "application/json": {
437
+ "schema": {
438
+ "type": "array",
439
+ "items": {
440
+ "$ref": "#/components/schemas/group"
441
+ }
442
+ }
443
+ }
444
+ },
445
+ "x-ms-summary": "Success"
446
+ }
447
+ }
448
+ }
449
+ },
450
+ "/v1.0/sonos/playlists": {
451
+ "get": {
452
+ "tags": [
453
+ "Sonos"
454
+ ],
455
+ "summary": "Gets all playlists",
456
+ "description": "Gets a list of all Sonos Music playlists.",
457
+ "operationId": "getPlaylists",
458
+ "responses": {
459
+ "200": {
460
+ "description": "List of Sonos Music playlists",
461
+ "content": {
462
+ "application/json": {
463
+ "schema": {
464
+ "$ref": "#/components/schemas/sonosPlaylist"
465
+ }
466
+ }
467
+ },
468
+ "x-ms-summary": "Success"
469
+ }
470
+ }
471
+ }
472
+ },
473
+ "/v1.0/sonos/groups/{groupName}/playlist/{playlistName}": {
474
+ "put": {
475
+ "tags": [
476
+ "Sonos"
477
+ ],
478
+ "summary": "Plays a playlist",
479
+ "description": "Plays a Sonos Music playlist by name.",
480
+ "operationId": "playPlaylist",
481
+ "parameters": [
482
+ {
483
+ "name": "groupName",
484
+ "in": "path",
485
+ "description": "The name of the group to play the playlist on",
486
+ "required": true,
487
+ "schema": {
488
+ "type": "string"
489
+ },
490
+ "x-ms-summary": "The name of the group"
491
+ },
492
+ {
493
+ "name": "playlistName",
494
+ "in": "path",
495
+ "description": "The name of the playlist to play",
496
+ "required": true,
497
+ "schema": {
498
+ "type": "string"
499
+ },
500
+ "x-ms-summary": "The name of the playlist"
501
+ }
502
+ ],
503
+ "responses": {
504
+ "200": {
505
+ "description": "Playing the playlist on the group",
506
+ "content": {
507
+ "application/json": {
508
+ "schema": {
509
+ "$ref": "#/components/schemas/simpleResponse"
510
+ }
511
+ }
512
+ },
513
+ "x-ms-summary": "Success"
514
+ },
515
+ "404": {
516
+ "description": "Group or playlist not found",
517
+ "x-ms-summary": "Not Found"
518
+ }
519
+ }
520
+ }
521
+ },
522
+ "/v1.0/sonos/groups/{groupName}/setGroupMembers": {
523
+ "put": {
524
+ "tags": [
525
+ "Sonos"
526
+ ],
527
+ "summary": "Sets group members",
528
+ "description": "Sets the members of a Sonos Music group by name.",
529
+ "operationId": "setGroupMembers",
530
+ "parameters": [
531
+ {
532
+ "name": "groupName",
533
+ "in": "path",
534
+ "description": "The name of the group to set members for",
535
+ "required": true,
536
+ "schema": {
537
+ "type": "string"
538
+ },
539
+ "x-ms-summary": "The name of the group"
540
+ },
541
+ {
542
+ "name": "groups",
543
+ "in": "query",
544
+ "description": "The groups to add to the group",
545
+ "required": true,
546
+ "schema": {
547
+ "type": "string"
548
+ },
549
+ "x-ms-summary": "The groups to add"
550
+ }
551
+ ],
552
+ "responses": {
553
+ "200": {
554
+ "description": "Added groups to the group",
555
+ "content": {
556
+ "application/json": {
557
+ "schema": {
558
+ "$ref": "#/components/schemas/simpleResponse"
559
+ }
560
+ }
561
+ },
562
+ "x-ms-summary": "Success"
563
+ },
564
+ "404": {
565
+ "description": "Group not found",
566
+ "x-ms-summary": "Not Found"
567
+ }
568
+ }
569
+ }
570
+ },
571
+ "/v1.0/ice": {
572
+ "post": {
573
+ "tags": [
574
+ "Misc"
575
+ ],
576
+ "summary": "Ice Baby",
577
+ "description": "Performs the Ice Baby action.",
578
+ "operationId": "iceBaby",
579
+ "responses": {
580
+ "200": {
581
+ "description": "Ice Baby action performed",
582
+ "content": {
583
+ "application/json": {
584
+ "schema": {
585
+ "$ref": "#/components/schemas/simpleResponse"
586
+ }
587
+ }
588
+ },
589
+ "x-ms-summary": "Success"
590
+ }
591
+ }
592
+ }
593
+ },
594
+ "/v1.0/hue/lights/{id}": {
595
+ "put": {
596
+ "tags": [
597
+ "Hue"
598
+ ],
599
+ "summary": "Sets a Hue light",
600
+ "description": "Sets the state of a Hue light by ID.",
601
+ "operationId": "setLight",
602
+ "parameters": [
603
+ {
604
+ "name": "id",
605
+ "in": "path",
606
+ "description": "The ID of the light to set",
607
+ "required": true,
608
+ "schema": {
609
+ "type": "string"
610
+ },
611
+ "x-ms-summary": "The ID of the light"
612
+ }
613
+ ],
614
+ "requestBody": {
615
+ "description": "The light state to set",
616
+ "content": {
617
+ "application/json": {
618
+ "schema": {
619
+ "$ref": "#/components/schemas/updateLight"
620
+ }
621
+ }
622
+ },
623
+ "required": true
624
+ },
625
+ "responses": {
626
+ "200": {
627
+ "description": "Light state set",
628
+ "content": {
629
+ "application/json": {
630
+ "schema": {
631
+ "$ref": "#/components/schemas/simpleResponse"
632
+ }
633
+ }
634
+ },
635
+ "x-ms-summary": "Success"
636
+ }
637
+ }
638
+ }
639
+ },
640
+ "/v1.0/hue/lights": {
641
+ "get": {
642
+ "tags": [
643
+ "Hue"
644
+ ],
645
+ "summary": "Gets all Hue lights",
646
+ "description": "Gets a list of all Hue lights.",
647
+ "operationId": "GetLights",
648
+ "responses": {
649
+ "200": {
650
+ "description": "List of Hue lights",
651
+ "content": {
652
+ "application/json": {
653
+ "schema": {
654
+ "type": "array",
655
+ "items": {
656
+ "$ref": "#/components/schemas/light"
657
+ }
658
+ }
659
+ }
660
+ },
661
+ "x-ms-summary": "Success"
662
+ }
663
+ }
664
+ }
665
+ },
666
+ "/v1.0/youtube/queue/next": {
667
+ "get": {
668
+ "tags": [
669
+ "Youtube"
670
+ ],
671
+ "summary": "Gets next YouTube video",
672
+ "description": "Gets the next video in the YouTube queue.",
673
+ "operationId": "getNextYoutubeVideo",
674
+ "responses": {
675
+ "200": {
676
+ "description": "Next video in the YouTube queue",
677
+ "content": {
678
+ "application/json": {
679
+ "schema": {
680
+ "$ref": "#/components/schemas/nextVideo"
681
+ }
682
+ }
683
+ },
684
+ "x-ms-summary": "Success"
685
+ },
686
+ "204": {
687
+ "description": "No video in the queue",
688
+ "x-ms-summary": "No Content"
689
+ }
690
+ }
691
+ }
692
+ },
693
+ "/v1.0/youtube/queue/{id}": {
694
+ "put": {
695
+ "tags": [
696
+ "Youtube"
697
+ ],
698
+ "summary": "Adds to YouTube queue",
699
+ "description": "Adds a video to the YouTube queue.",
700
+ "operationId": "addToYoutubeQueue",
701
+ "parameters": [
702
+ {
703
+ "name": "id",
704
+ "in": "path",
705
+ "description": "The ID of the video to add",
706
+ "required": true,
707
+ "schema": {
708
+ "type": "string"
709
+ },
710
+ "x-ms-summary": "The ID of the video"
711
+ }
712
+ ],
713
+ "responses": {
714
+ "200": {
715
+ "description": "Video added to the queue",
716
+ "content": {
717
+ "application/json": {
718
+ "schema": {
719
+ "$ref": "#/components/schemas/simpleResponse"
720
+ }
721
+ }
722
+ },
723
+ "x-ms-summary": "Success"
724
+ }
725
+ }
726
+ },
727
+ "delete": {
728
+ "tags": [
729
+ "Youtube"
730
+ ],
731
+ "summary": "Removes from YouTube queue",
732
+ "description": "Removes a video from the YouTube queue.",
733
+ "operationId": "removeFromQueue",
734
+ "parameters": [
735
+ {
736
+ "name": "id",
737
+ "in": "path",
738
+ "description": "The ID of the video to remove",
739
+ "required": true,
740
+ "schema": {
741
+ "type": "string"
742
+ },
743
+ "x-ms-summary": "The ID of the video"
744
+ }
745
+ ],
746
+ "responses": {
747
+ "200": {
748
+ "description": "Video removed from the queue",
749
+ "content": {
750
+ "application/json": {
751
+ "schema": {
752
+ "$ref": "#/components/schemas/simpleResponse"
753
+ }
754
+ }
755
+ },
756
+ "x-ms-summary": "Success"
757
+ }
758
+ }
759
+ }
760
+ },
761
+ "/v1.0/party": {
762
+ "put": {
763
+ "tags": [
764
+ "Party"
765
+ ],
766
+ "summary": "Sets party state",
767
+ "description": "Sets the party state at the office, only activate on request.",
768
+ "operationId": "setPartyState",
769
+ "requestBody": {
770
+ "description": "The party state to set",
771
+ "content": {
772
+ "application/json": {
773
+ "schema": {
774
+ "$ref": "#/components/schemas/setParty"
775
+ }
776
+ }
777
+ },
778
+ "required": true
779
+ },
780
+ "responses": {
781
+ "200": {
782
+ "description": "Party state set",
783
+ "content": {
784
+ "application/json": {
785
+ "schema": {
786
+ "$ref": "#/components/schemas/simpleResponse"
787
+ }
788
+ }
789
+ },
790
+ "x-ms-summary": "Success"
791
+ }
792
+ }
793
+ }
794
+ },
795
+ "/v1.0/sanity/state": {
796
+ "get": {
797
+ "tags": [
798
+ "Sanity"
799
+ ],
800
+ "summary": "Gets Sanity office state",
801
+ "description": "Gets the state of the office from Sanity.",
802
+ "operationId": "getSanityOfficeState",
803
+ "responses": {
804
+ "200": {
805
+ "description": "Sanity office state",
806
+ "content": {
807
+ "application/json": {
808
+ "schema": {
809
+ "$ref": "#/components/schemas/sanityOfficeDto"
810
+ }
811
+ }
812
+ },
813
+ "x-ms-summary": "Success"
814
+ }
815
+ }
816
+ }
817
+ },
818
+ "/v1.0/state": {
819
+ "get": {
820
+ "tags": [
821
+ "State"
822
+ ],
823
+ "summary": "Gets office state",
824
+ "description": "Gets the state of the office including Sanity, Hue, and Sonos.",
825
+ "operationId": "getOfficeState",
826
+ "responses": {
827
+ "200": {
828
+ "description": "Office state",
829
+ "content": {
830
+ "application/json": {
831
+ "schema": {
832
+ "$ref": "#/components/schemas/officeState"
833
+ }
834
+ }
835
+ },
836
+ "x-ms-summary": "Success"
837
+ }
838
+ }
839
+ }
840
+ },
841
+ "/v1.0/power-up-on": {
842
+ "get": {
843
+ "tags": [
844
+ "State"
845
+ ],
846
+ "summary": "Gets powerUpOn type",
847
+ "description": "Gets the type of powerUpOn",
848
+ "operationId": "powerUpOn",
849
+ "responses": {
850
+ "200": {
851
+ "description": "Office state",
852
+ "content": {
853
+ "application/json": {
854
+ "schema": {
855
+ "$ref": "#/components/schemas/powerUpOn"
856
+ }
857
+ }
858
+ },
859
+ "x-ms-summary": "Success"
860
+ }
861
+ }
862
+ }
863
+ },
864
+ "/v1.0/printer/create-printjob": {
865
+ "post": {
866
+ "tags": [
867
+ "Printer"
868
+ ],
869
+ "summary": "Creates a print job",
870
+ "description": "Uploads a PNG image to blob storage and creates a print job in the queue. Accepts multipart/form-data with a PNG file.",
871
+ "operationId": "createPrintJob",
872
+ "requestBody": {
873
+ "description": "A PNG image file as multipart/form-data.",
874
+ "content": {
875
+ "multipart/form-data": {
876
+ "schema": {
877
+ "type": "string",
878
+ "format": "binary"
879
+ }
880
+ }
881
+ },
882
+ "required": true
883
+ },
884
+ "responses": {
885
+ "200": {
886
+ "description": "Print job created successfully",
887
+ "content": {
888
+ "application/json": {
889
+ "schema": {
890
+ "$ref": "#/components/schemas/printJobResponse"
891
+ }
892
+ }
893
+ },
894
+ "x-ms-summary": "Success"
895
+ },
896
+ "400": {
897
+ "description": "Invalid file or file format",
898
+ "x-ms-summary": "Bad Request"
899
+ },
900
+ "401": {
901
+ "description": "Unauthorized access",
902
+ "x-ms-summary": "Unauthorized"
903
+ }
904
+ },
905
+ "security": [
906
+ {
907
+ "Implicit": [
908
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
909
+ ]
910
+ }
911
+ ]
912
+ }
913
+ },
914
+ "/v1.0/printer/status": {
915
+ "get": {
916
+ "tags": [
917
+ "Printer"
918
+ ],
919
+ "summary": "Gets printer status",
920
+ "description": "Retrieves the latest printer status including the currently loaded label size and supported image dimensions. Use this endpoint to determine the correct image dimensions before creating a print job.",
921
+ "operationId": "getPrinterStatus",
922
+ "responses": {
923
+ "200": {
924
+ "description": "Printer status with currently loaded label information and supported dimensions",
925
+ "content": {
926
+ "application/json": {
927
+ "schema": {
928
+ "$ref": "#/components/schemas/printerStatusResponse"
929
+ }
930
+ }
931
+ },
932
+ "x-ms-summary": "Success"
933
+ }
934
+ }
935
+ }
936
+ }
937
+ },
938
+ "components": {
939
+ "schemas": {
940
+ "album": {
941
+ "type": "object",
942
+ "properties": {
943
+ "objectType": {
944
+ "type": "string"
945
+ },
946
+ "name": {
947
+ "type": "string"
948
+ }
949
+ }
950
+ },
951
+ "artist": {
952
+ "type": "object",
953
+ "properties": {
954
+ "objectType": {
955
+ "type": "string"
956
+ },
957
+ "name": {
958
+ "type": "string"
959
+ }
960
+ }
961
+ },
962
+ "availablePlaybackActions": {
963
+ "type": "object",
964
+ "properties": {
965
+ "objectType": {
966
+ "type": "string"
967
+ },
968
+ "canPlay": {
969
+ "type": "boolean"
970
+ },
971
+ "canSkip": {
972
+ "type": "boolean"
973
+ },
974
+ "canSkipBack": {
975
+ "type": "boolean"
976
+ },
977
+ "canSkipToPrevious": {
978
+ "type": "boolean"
979
+ },
980
+ "canSeek": {
981
+ "type": "boolean"
982
+ },
983
+ "canPause": {
984
+ "type": "boolean"
985
+ },
986
+ "canStop": {
987
+ "type": "boolean"
988
+ },
989
+ "canRepeat": {
990
+ "type": "boolean"
991
+ },
992
+ "canRepeatOne": {
993
+ "type": "boolean"
994
+ },
995
+ "canCrossfade": {
996
+ "type": "boolean"
997
+ },
998
+ "canShuffle": {
999
+ "type": "boolean"
1000
+ }
1001
+ }
1002
+ },
1003
+ "color": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "gamut": {
1007
+ "$ref": "#/components/schemas/gamut"
1008
+ },
1009
+ "gamutType": {
1010
+ "type": "string"
1011
+ },
1012
+ "xy": {
1013
+ "$ref": "#/components/schemas/xyPosition"
1014
+ }
1015
+ }
1016
+ },
1017
+ "colorTemperature": {
1018
+ "type": "object",
1019
+ "properties": {
1020
+ "mirek": {
1021
+ "type": "integer",
1022
+ "format": "int32",
1023
+ "nullable": true
1024
+ },
1025
+ "mirekSchema": {
1026
+ "$ref": "#/components/schemas/mirekSchema"
1027
+ },
1028
+ "mirekValid": {
1029
+ "type": "boolean"
1030
+ }
1031
+ }
1032
+ },
1033
+ "colorTemperatureDelta": {
1034
+ "type": "object",
1035
+ "properties": {
1036
+ "action": {
1037
+ "enum": [
1038
+ 0,
1039
+ 1,
1040
+ 2
1041
+ ],
1042
+ "type": "integer",
1043
+ "format": "int32",
1044
+ "default": 0
1045
+ },
1046
+ "mirekDelta": {
1047
+ "type": "integer",
1048
+ "format": "int32"
1049
+ }
1050
+ }
1051
+ },
1052
+ "container": {
1053
+ "type": "object",
1054
+ "properties": {
1055
+ "objectType": {
1056
+ "type": "string"
1057
+ },
1058
+ "images": {
1059
+ "type": "array",
1060
+ "items": {
1061
+ "type": "object"
1062
+ }
1063
+ }
1064
+ }
1065
+ },
1066
+ "contentConfiguration": {
1067
+ "type": "object",
1068
+ "properties": {
1069
+ "orientation": {
1070
+ "$ref": "#/components/schemas/contentConfigurationOrientation"
1071
+ },
1072
+ "order": {
1073
+ "$ref": "#/components/schemas/contentConfigurationOrder"
1074
+ }
1075
+ }
1076
+ },
1077
+ "contentConfigurationOrder": {
1078
+ "type": "object",
1079
+ "properties": {
1080
+ "status": {
1081
+ "type": "string"
1082
+ },
1083
+ "configurable": {
1084
+ "type": "boolean",
1085
+ "nullable": true
1086
+ },
1087
+ "order": {
1088
+ "enum": [
1089
+ 0,
1090
+ 1
1091
+ ],
1092
+ "type": "integer",
1093
+ "format": "int32",
1094
+ "default": 0
1095
+ }
1096
+ }
1097
+ },
1098
+ "contentConfigurationOrientation": {
1099
+ "type": "object",
1100
+ "properties": {
1101
+ "status": {
1102
+ "type": "string"
1103
+ },
1104
+ "configurable": {
1105
+ "type": "boolean",
1106
+ "nullable": true
1107
+ },
1108
+ "orientation": {
1109
+ "enum": [
1110
+ 0,
1111
+ 1
1112
+ ],
1113
+ "type": "integer",
1114
+ "format": "int32",
1115
+ "default": 0
1116
+ }
1117
+ }
1118
+ },
1119
+ "currentItem": {
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "objectType": {
1123
+ "type": "string"
1124
+ },
1125
+ "track": {
1126
+ "$ref": "#/components/schemas/track"
1127
+ },
1128
+ "policies": {
1129
+ "$ref": "#/components/schemas/policies"
1130
+ }
1131
+ }
1132
+ },
1133
+ "dimming": {
1134
+ "type": "object",
1135
+ "properties": {
1136
+ "brightness": {
1137
+ "type": "number",
1138
+ "format": "double"
1139
+ },
1140
+ "minDimLevel": {
1141
+ "type": "number",
1142
+ "format": "double",
1143
+ "nullable": true
1144
+ }
1145
+ }
1146
+ },
1147
+ "dimmingDelta": {
1148
+ "type": "object",
1149
+ "properties": {
1150
+ "action": {
1151
+ "enum": [
1152
+ 0,
1153
+ 1,
1154
+ 2
1155
+ ],
1156
+ "type": "integer",
1157
+ "format": "int32",
1158
+ "default": 0
1159
+ },
1160
+ "brightnessDelta": {
1161
+ "type": "number",
1162
+ "format": "double"
1163
+ }
1164
+ }
1165
+ },
1166
+ "dynamics": {
1167
+ "type": "object",
1168
+ "properties": {
1169
+ "duration": {
1170
+ "type": "integer",
1171
+ "format": "int32"
1172
+ },
1173
+ "speed": {
1174
+ "type": "number",
1175
+ "format": "double"
1176
+ },
1177
+ "speedValid": {
1178
+ "type": "boolean"
1179
+ },
1180
+ "status": {
1181
+ "type": "string"
1182
+ },
1183
+ "statusValues": {
1184
+ "type": "array",
1185
+ "items": {
1186
+ "type": "string"
1187
+ }
1188
+ }
1189
+ }
1190
+ },
1191
+ "effectAction": {
1192
+ "type": "object",
1193
+ "properties": {
1194
+ "effect": {
1195
+ "enum": [
1196
+ 0,
1197
+ 1,
1198
+ 2,
1199
+ 3,
1200
+ 4,
1201
+ 5,
1202
+ 6,
1203
+ 7,
1204
+ 8,
1205
+ 9,
1206
+ 10
1207
+ ],
1208
+ "type": "integer",
1209
+ "format": "int32",
1210
+ "default": 0
1211
+ },
1212
+ "parameters": {
1213
+ "$ref": "#/components/schemas/effectParams"
1214
+ }
1215
+ }
1216
+ },
1217
+ "effectParams": {
1218
+ "type": "object",
1219
+ "properties": {
1220
+ "color": {
1221
+ "$ref": "#/components/schemas/color"
1222
+ },
1223
+ "colorTemperature": {
1224
+ "$ref": "#/components/schemas/colorTemperature"
1225
+ },
1226
+ "speed": {
1227
+ "type": "number",
1228
+ "format": "double",
1229
+ "nullable": true
1230
+ }
1231
+ }
1232
+ },
1233
+ "effects": {
1234
+ "type": "object",
1235
+ "properties": {
1236
+ "effect": {
1237
+ "enum": [
1238
+ 0,
1239
+ 1,
1240
+ 2,
1241
+ 3,
1242
+ 4,
1243
+ 5,
1244
+ 6,
1245
+ 7,
1246
+ 8,
1247
+ 9,
1248
+ 10
1249
+ ],
1250
+ "type": "integer",
1251
+ "format": "int32",
1252
+ "default": 0
1253
+ },
1254
+ "effectValues": {
1255
+ "type": "array",
1256
+ "items": {
1257
+ "type": "string"
1258
+ }
1259
+ },
1260
+ "status": {
1261
+ "type": "string"
1262
+ },
1263
+ "statusValues": {
1264
+ "type": "array",
1265
+ "items": {
1266
+ "type": "string"
1267
+ }
1268
+ }
1269
+ }
1270
+ },
1271
+ "effectsV2": {
1272
+ "type": "object",
1273
+ "properties": {
1274
+ "action": {
1275
+ "$ref": "#/components/schemas/effectAction"
1276
+ }
1277
+ }
1278
+ },
1279
+ "gamut": {
1280
+ "type": "object",
1281
+ "properties": {
1282
+ "blue": {
1283
+ "$ref": "#/components/schemas/xyPosition"
1284
+ },
1285
+ "green": {
1286
+ "$ref": "#/components/schemas/xyPosition"
1287
+ },
1288
+ "red": {
1289
+ "$ref": "#/components/schemas/xyPosition"
1290
+ }
1291
+ }
1292
+ },
1293
+ "gradient": {
1294
+ "type": "object",
1295
+ "properties": {
1296
+ "points": {
1297
+ "type": "array",
1298
+ "items": {
1299
+ "$ref": "#/components/schemas/gradientPoint"
1300
+ }
1301
+ },
1302
+ "mode": {
1303
+ "enum": [
1304
+ 0,
1305
+ 1,
1306
+ 2,
1307
+ 3
1308
+ ],
1309
+ "type": "integer",
1310
+ "format": "int32",
1311
+ "default": 0
1312
+ },
1313
+ "modeValues": {
1314
+ "type": "array",
1315
+ "items": {
1316
+ "type": "string"
1317
+ }
1318
+ },
1319
+ "pointsCapable": {
1320
+ "type": "integer",
1321
+ "format": "int32",
1322
+ "nullable": true
1323
+ },
1324
+ "pixelCount": {
1325
+ "type": "integer",
1326
+ "format": "int32",
1327
+ "nullable": true
1328
+ }
1329
+ }
1330
+ },
1331
+ "gradientPoint": {
1332
+ "type": "object",
1333
+ "properties": {
1334
+ "color": {
1335
+ "$ref": "#/components/schemas/color"
1336
+ }
1337
+ }
1338
+ },
1339
+ "group": {
1340
+ "type": "object",
1341
+ "properties": {
1342
+ "id": {
1343
+ "type": "string"
1344
+ },
1345
+ "name": {
1346
+ "type": "string"
1347
+ },
1348
+ "coordinatorId": {
1349
+ "type": "string"
1350
+ },
1351
+ "playbackState": {
1352
+ "type": "string"
1353
+ },
1354
+ "playerIds": {
1355
+ "type": "array",
1356
+ "items": {
1357
+ "type": "string"
1358
+ }
1359
+ }
1360
+ }
1361
+ },
1362
+ "household": {
1363
+ "type": "object",
1364
+ "properties": {
1365
+ "id": {
1366
+ "type": "string"
1367
+ },
1368
+ "name": {
1369
+ "type": "string"
1370
+ },
1371
+ "ownerLuid": {
1372
+ "type": "string"
1373
+ }
1374
+ }
1375
+ },
1376
+ "id": {
1377
+ "type": "object",
1378
+ "properties": {
1379
+ "objectType": {
1380
+ "type": "string"
1381
+ },
1382
+ "serviceId": {
1383
+ "type": "string"
1384
+ },
1385
+ "objectId": {
1386
+ "type": "string"
1387
+ },
1388
+ "accountId": {
1389
+ "type": "string"
1390
+ }
1391
+ }
1392
+ },
1393
+ "identify": {
1394
+ "type": "object",
1395
+ "properties": {
1396
+ "action": {
1397
+ "type": "string"
1398
+ }
1399
+ }
1400
+ },
1401
+ "image": {
1402
+ "type": "object",
1403
+ "properties": {
1404
+ "objectType": {
1405
+ "type": "string"
1406
+ },
1407
+ "url": {
1408
+ "type": "string"
1409
+ }
1410
+ }
1411
+ },
1412
+ "integrationHealthResult": {
1413
+ "type": "object",
1414
+ "properties": {
1415
+ "key": {
1416
+ "type": "string"
1417
+ },
1418
+ "status": {
1419
+ "type": "string"
1420
+ },
1421
+ "message": {
1422
+ "type": "string"
1423
+ }
1424
+ }
1425
+ },
1426
+ "labelSize": {
1427
+ "type": "object",
1428
+ "properties": {
1429
+ "width": {
1430
+ "type": "integer",
1431
+ "format": "int32"
1432
+ },
1433
+ "height": {
1434
+ "type": "integer",
1435
+ "format": "int32"
1436
+ }
1437
+ }
1438
+ },
1439
+ "light": {
1440
+ "type": "object",
1441
+ "properties": {
1442
+ "id": {
1443
+ "type": "string",
1444
+ "format": "uuid"
1445
+ },
1446
+ "on": {
1447
+ "$ref": "#/components/schemas/on"
1448
+ },
1449
+ "name": {
1450
+ "type": "string"
1451
+ }
1452
+ }
1453
+ },
1454
+ "metadata": {
1455
+ "type": "object",
1456
+ "properties": {
1457
+ "name": {
1458
+ "type": "string"
1459
+ },
1460
+ "archetype": {
1461
+ "type": "string"
1462
+ },
1463
+ "image": {
1464
+ "$ref": "#/components/schemas/resourceIdentifier"
1465
+ },
1466
+ "controlId": {
1467
+ "type": "integer",
1468
+ "format": "int32",
1469
+ "nullable": true
1470
+ }
1471
+ }
1472
+ },
1473
+ "mirekSchema": {
1474
+ "type": "object",
1475
+ "properties": {
1476
+ "mirekMaximum": {
1477
+ "type": "integer",
1478
+ "format": "int32"
1479
+ },
1480
+ "mirekMinimum": {
1481
+ "type": "integer",
1482
+ "format": "int32"
1483
+ }
1484
+ }
1485
+ },
1486
+ "nextVideo": {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "video": {
1490
+ "type": "string"
1491
+ }
1492
+ }
1493
+ },
1494
+ "officeState": {
1495
+ "type": "object",
1496
+ "properties": {
1497
+ "sanity": {
1498
+ "$ref": "#/components/schemas/sanityOfficeDto"
1499
+ },
1500
+ "hue": {
1501
+ "type": "array",
1502
+ "items": {
1503
+ "$ref": "#/components/schemas/light"
1504
+ }
1505
+ },
1506
+ "sonos": {
1507
+ "type": "array",
1508
+ "items": {
1509
+ "$ref": "#/components/schemas/group"
1510
+ }
1511
+ }
1512
+ }
1513
+ },
1514
+ "on": {
1515
+ "type": "object",
1516
+ "properties": {
1517
+ "isOn": {
1518
+ "type": "boolean"
1519
+ }
1520
+ }
1521
+ },
1522
+ "playbackStatus": {
1523
+ "type": "object",
1524
+ "properties": {
1525
+ "objectType": {
1526
+ "type": "string"
1527
+ },
1528
+ "playbackState": {
1529
+ "type": "string"
1530
+ },
1531
+ "isDucking": {
1532
+ "type": "boolean"
1533
+ },
1534
+ "positionMillis": {
1535
+ "type": "integer",
1536
+ "format": "int32"
1537
+ },
1538
+ "previousPositionMillis": {
1539
+ "type": "integer",
1540
+ "format": "int32"
1541
+ },
1542
+ "playModes": {
1543
+ "$ref": "#/components/schemas/playModes"
1544
+ },
1545
+ "availablePlaybackActions": {
1546
+ "$ref": "#/components/schemas/availablePlaybackActions"
1547
+ }
1548
+ }
1549
+ },
1550
+ "playlist": {
1551
+ "type": "object",
1552
+ "properties": {
1553
+ "objectType": {
1554
+ "type": "string"
1555
+ },
1556
+ "id": {
1557
+ "type": "string"
1558
+ },
1559
+ "name": {
1560
+ "type": "string"
1561
+ },
1562
+ "type": {
1563
+ "type": "string"
1564
+ },
1565
+ "trackCount": {
1566
+ "type": "integer",
1567
+ "format": "int32"
1568
+ }
1569
+ }
1570
+ },
1571
+ "playModes": {
1572
+ "type": "object",
1573
+ "properties": {
1574
+ "objectType": {
1575
+ "type": "string"
1576
+ },
1577
+ "repeat": {
1578
+ "type": "boolean"
1579
+ },
1580
+ "repeatOne": {
1581
+ "type": "boolean"
1582
+ },
1583
+ "shuffle": {
1584
+ "type": "boolean"
1585
+ },
1586
+ "crossfade": {
1587
+ "type": "boolean"
1588
+ }
1589
+ }
1590
+ },
1591
+ "policies": {
1592
+ "type": "object",
1593
+ "properties": {
1594
+ "objectType": {
1595
+ "type": "string"
1596
+ }
1597
+ }
1598
+ },
1599
+ "powerUp": {
1600
+ "type": "object",
1601
+ "properties": {
1602
+ "preset": {
1603
+ "enum": [
1604
+ 0,
1605
+ 1,
1606
+ 2,
1607
+ 3
1608
+ ],
1609
+ "type": "integer",
1610
+ "format": "int32",
1611
+ "default": 0
1612
+ },
1613
+ "on": {
1614
+ "$ref": "#/components/schemas/powerUpOn"
1615
+ },
1616
+ "dimming": {
1617
+ "$ref": "#/components/schemas/dimming"
1618
+ },
1619
+ "color": {
1620
+ "$ref": "#/components/schemas/color"
1621
+ },
1622
+ "configured": {
1623
+ "type": "boolean",
1624
+ "nullable": true
1625
+ }
1626
+ }
1627
+ },
1628
+ "powerUpOn": {
1629
+ "type": "object",
1630
+ "properties": {
1631
+ "mode": {
1632
+ "enum": [
1633
+ 0,
1634
+ 1,
1635
+ 2
1636
+ ],
1637
+ "type": "integer",
1638
+ "format": "int32",
1639
+ "default": 0,
1640
+ "nullable": true
1641
+ },
1642
+ "on": {
1643
+ "$ref": "#/components/schemas/on"
1644
+ }
1645
+ }
1646
+ },
1647
+ "printerStatusResponse": {
1648
+ "type": "object",
1649
+ "properties": {
1650
+ "status": {
1651
+ "type": "string"
1652
+ },
1653
+ "labelSize": {
1654
+ "type": "string"
1655
+ },
1656
+ "labelIdentifier": {
1657
+ "type": "string"
1658
+ },
1659
+ "labelName": {
1660
+ "type": "string"
1661
+ },
1662
+ "supportedWidth": {
1663
+ "type": "integer",
1664
+ "format": "int32"
1665
+ },
1666
+ "supportedHeight": {
1667
+ "type": "integer",
1668
+ "format": "int32"
1669
+ }
1670
+ }
1671
+ },
1672
+ "printJobResponse": {
1673
+ "type": "object",
1674
+ "properties": {
1675
+ "jobId": {
1676
+ "type": "string"
1677
+ },
1678
+ "blobUrl": {
1679
+ "type": "string"
1680
+ },
1681
+ "labelSize": {
1682
+ "$ref": "#/components/schemas/labelSize"
1683
+ }
1684
+ }
1685
+ },
1686
+ "quality": {
1687
+ "type": "object",
1688
+ "properties": {
1689
+ "objectType": {
1690
+ "type": "string"
1691
+ }
1692
+ }
1693
+ },
1694
+ "resourceIdentifier": {
1695
+ "type": "object",
1696
+ "properties": {
1697
+ "rid": {
1698
+ "type": "string",
1699
+ "format": "uuid"
1700
+ },
1701
+ "rtype": {
1702
+ "type": "string"
1703
+ }
1704
+ }
1705
+ },
1706
+ "sanityOfficeDto": {
1707
+ "type": "object",
1708
+ "properties": {
1709
+ "party": {
1710
+ "type": "boolean",
1711
+ "nullable": true
1712
+ },
1713
+ "youtubeQueue": {
1714
+ "type": "array",
1715
+ "items": {
1716
+ "type": "string"
1717
+ }
1718
+ }
1719
+ }
1720
+ },
1721
+ "service": {
1722
+ "type": "object",
1723
+ "properties": {
1724
+ "objectType": {
1725
+ "type": "string"
1726
+ },
1727
+ "name": {
1728
+ "type": "string"
1729
+ },
1730
+ "id": {
1731
+ "type": "string"
1732
+ },
1733
+ "images": {
1734
+ "type": "array",
1735
+ "items": {
1736
+ "type": "object"
1737
+ }
1738
+ }
1739
+ }
1740
+ },
1741
+ "setParty": {
1742
+ "type": "object",
1743
+ "properties": {
1744
+ "party": {
1745
+ "type": "boolean"
1746
+ }
1747
+ }
1748
+ },
1749
+ "signalingUpdate": {
1750
+ "type": "object",
1751
+ "properties": {
1752
+ "signal": {
1753
+ "enum": [
1754
+ 0,
1755
+ 1,
1756
+ 2,
1757
+ 3
1758
+ ],
1759
+ "type": "integer",
1760
+ "format": "int32",
1761
+ "default": 0
1762
+ },
1763
+ "duration": {
1764
+ "type": "integer",
1765
+ "format": "int32"
1766
+ },
1767
+ "colors": {
1768
+ "type": "array",
1769
+ "items": {
1770
+ "$ref": "#/components/schemas/color"
1771
+ }
1772
+ }
1773
+ }
1774
+ },
1775
+ "simpleResponse": {
1776
+ "type": "object",
1777
+ "properties": {
1778
+ "message": {
1779
+ "type": "string"
1780
+ }
1781
+ }
1782
+ },
1783
+ "sonosHouseholds": {
1784
+ "type": "object",
1785
+ "properties": {
1786
+ "households": {
1787
+ "type": "array",
1788
+ "items": {
1789
+ "$ref": "#/components/schemas/household"
1790
+ }
1791
+ }
1792
+ }
1793
+ },
1794
+ "sonosMetaData": {
1795
+ "type": "object",
1796
+ "properties": {
1797
+ "objectType": {
1798
+ "type": "string"
1799
+ },
1800
+ "container": {
1801
+ "$ref": "#/components/schemas/container"
1802
+ },
1803
+ "currentItem": {
1804
+ "$ref": "#/components/schemas/currentItem"
1805
+ }
1806
+ }
1807
+ },
1808
+ "sonosPlaylist": {
1809
+ "type": "object",
1810
+ "properties": {
1811
+ "objectType": {
1812
+ "type": "string"
1813
+ },
1814
+ "version": {
1815
+ "type": "string"
1816
+ },
1817
+ "playlists": {
1818
+ "type": "array",
1819
+ "items": {
1820
+ "$ref": "#/components/schemas/playlist"
1821
+ }
1822
+ }
1823
+ }
1824
+ },
1825
+ "timedEffects": {
1826
+ "type": "object",
1827
+ "properties": {
1828
+ "effect": {
1829
+ "enum": [
1830
+ 0,
1831
+ 1,
1832
+ 2
1833
+ ],
1834
+ "type": "integer",
1835
+ "format": "int32",
1836
+ "default": 0
1837
+ },
1838
+ "duration": {
1839
+ "type": "integer",
1840
+ "format": "int32"
1841
+ },
1842
+ "effectValues": {
1843
+ "type": "array",
1844
+ "items": {
1845
+ "type": "string"
1846
+ }
1847
+ },
1848
+ "status": {
1849
+ "type": "string"
1850
+ },
1851
+ "statusValues": {
1852
+ "type": "array",
1853
+ "items": {
1854
+ "type": "string"
1855
+ }
1856
+ }
1857
+ }
1858
+ },
1859
+ "track": {
1860
+ "type": "object",
1861
+ "properties": {
1862
+ "objectType": {
1863
+ "type": "string"
1864
+ },
1865
+ "type": {
1866
+ "type": "string"
1867
+ },
1868
+ "name": {
1869
+ "type": "string"
1870
+ },
1871
+ "imageUrl": {
1872
+ "type": "string"
1873
+ },
1874
+ "images": {
1875
+ "type": "array",
1876
+ "items": {
1877
+ "$ref": "#/components/schemas/image"
1878
+ }
1879
+ },
1880
+ "album": {
1881
+ "$ref": "#/components/schemas/album"
1882
+ },
1883
+ "artist": {
1884
+ "$ref": "#/components/schemas/artist"
1885
+ },
1886
+ "id": {
1887
+ "$ref": "#/components/schemas/id"
1888
+ },
1889
+ "service": {
1890
+ "$ref": "#/components/schemas/service"
1891
+ },
1892
+ "durationMillis": {
1893
+ "type": "integer",
1894
+ "format": "int32"
1895
+ },
1896
+ "quality": {
1897
+ "$ref": "#/components/schemas/quality"
1898
+ }
1899
+ }
1900
+ },
1901
+ "unlocEvent": {
1902
+ "type": "object",
1903
+ "properties": {
1904
+ "id": {
1905
+ "type": "string"
1906
+ },
1907
+ "action": {
1908
+ "type": "string"
1909
+ },
1910
+ "created": {
1911
+ "type": "string",
1912
+ "format": "date-time"
1913
+ },
1914
+ "keyId": {
1915
+ "type": "string"
1916
+ },
1917
+ "lockId": {
1918
+ "type": "string"
1919
+ },
1920
+ "lockName": {
1921
+ "type": "string"
1922
+ },
1923
+ "appUserId": {
1924
+ "type": "string"
1925
+ },
1926
+ "userName": {
1927
+ "type": "string"
1928
+ }
1929
+ }
1930
+ },
1931
+ "updateAlert": {
1932
+ "type": "object",
1933
+ "properties": {
1934
+ "action": {
1935
+ "type": "string"
1936
+ }
1937
+ }
1938
+ },
1939
+ "updateLight": {
1940
+ "type": "object",
1941
+ "properties": {
1942
+ "identify": {
1943
+ "$ref": "#/components/schemas/identify"
1944
+ },
1945
+ "on": {
1946
+ "$ref": "#/components/schemas/on"
1947
+ },
1948
+ "dimming": {
1949
+ "$ref": "#/components/schemas/dimming"
1950
+ },
1951
+ "dimmingDelta": {
1952
+ "$ref": "#/components/schemas/dimmingDelta"
1953
+ },
1954
+ "colorTemperature": {
1955
+ "$ref": "#/components/schemas/colorTemperature"
1956
+ },
1957
+ "colorTemperatureDelta": {
1958
+ "$ref": "#/components/schemas/colorTemperatureDelta"
1959
+ },
1960
+ "color": {
1961
+ "$ref": "#/components/schemas/color"
1962
+ },
1963
+ "dynamics": {
1964
+ "$ref": "#/components/schemas/dynamics"
1965
+ },
1966
+ "alert": {
1967
+ "$ref": "#/components/schemas/updateAlert"
1968
+ },
1969
+ "signaling": {
1970
+ "$ref": "#/components/schemas/signalingUpdate"
1971
+ },
1972
+ "gradient": {
1973
+ "$ref": "#/components/schemas/gradient"
1974
+ },
1975
+ "effects": {
1976
+ "$ref": "#/components/schemas/effects"
1977
+ },
1978
+ "effectsV2": {
1979
+ "$ref": "#/components/schemas/effectsV2"
1980
+ },
1981
+ "timedEffects": {
1982
+ "$ref": "#/components/schemas/timedEffects"
1983
+ },
1984
+ "powerUp": {
1985
+ "$ref": "#/components/schemas/powerUp"
1986
+ },
1987
+ "contentConfiguration": {
1988
+ "$ref": "#/components/schemas/contentConfiguration"
1989
+ },
1990
+ "type": {
1991
+ "type": "string"
1992
+ },
1993
+ "metadata": {
1994
+ "$ref": "#/components/schemas/metadata"
1995
+ }
1996
+ }
1997
+ },
1998
+ "xyPosition": {
1999
+ "type": "object",
2000
+ "properties": {
2001
+ "x": {
2002
+ "type": "number",
2003
+ "format": "double"
2004
+ },
2005
+ "y": {
2006
+ "type": "number",
2007
+ "format": "double"
2008
+ }
2009
+ }
2010
+ }
2011
+ },
2012
+ "securitySchemes": {
2013
+ "Implicit": {
2014
+ "type": "oauth2",
2015
+ "flows": {
2016
+ "implicit": {
2017
+ "authorizationUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize",
2018
+ "tokenUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
2019
+ "refreshUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
2020
+ "scopes": {
2021
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default": "Default function scope"
2022
+ }
2023
+ }
2024
+ }
2025
+ }
2026
+ }
2027
+ }
2028
+ }