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