@mhome/app-facade-protocol 1.0.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.
Files changed (58) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +11 -0
  3. package/fixtures/actor-link-claim-confirm.request.json +1 -0
  4. package/fixtures/actor-link-claim-confirm.response.json +1 -0
  5. package/fixtures/actor-link-claim-event.response.json +1 -0
  6. package/fixtures/actor-link-claim-status.request.json +1 -0
  7. package/fixtures/actor-link-claim-status.response.json +1 -0
  8. package/fixtures/actor-link-code-create.request.json +1 -0
  9. package/fixtures/actor-link-code-create.response.json +1 -0
  10. package/fixtures/actor-link-delete.request.json +1 -0
  11. package/fixtures/actor-link-delete.response.json +1 -0
  12. package/fixtures/actor-link-list.request.json +1 -0
  13. package/fixtures/actor-link-list.response.json +1 -0
  14. package/fixtures/invalid/mismatched-direction.json +5 -0
  15. package/fixtures/invalid/missing-required-extension.json +5 -0
  16. package/fixtures/invalid/unknown-request-field.json +5 -0
  17. package/fixtures/provider-account-delete.request.json +9 -0
  18. package/fixtures/provider-account-delete.response.json +5 -0
  19. package/fixtures/provider-account-list.request.json +5 -0
  20. package/fixtures/provider-account-list.response.json +21 -0
  21. package/fixtures/provider-account-status.request.json +5 -0
  22. package/fixtures/provider-account-status.response.json +12 -0
  23. package/fixtures/provider-account-test.request.json +5 -0
  24. package/fixtures/provider-account-test.response.json +5 -0
  25. package/fixtures/provider-account-update.request.json +10 -0
  26. package/fixtures/provider-account-update.response.json +15 -0
  27. package/fixtures/provider-list.request.json +14 -0
  28. package/fixtures/provider-list.response.json +35 -0
  29. package/fixtures/route-delete.request.json +5 -0
  30. package/fixtures/route-delete.response.json +5 -0
  31. package/fixtures/route-list.request.json +5 -0
  32. package/fixtures/route-list.response.json +55 -0
  33. package/fixtures/route-update.request.json +21 -0
  34. package/fixtures/route-update.response.json +29 -0
  35. package/fixtures/setup-options.request.json +5 -0
  36. package/fixtures/setup-options.response.json +5 -0
  37. package/fixtures/setup-start.request.json +9 -0
  38. package/fixtures/setup-start.response.json +12 -0
  39. package/fixtures/setup-status.request.json +5 -0
  40. package/fixtures/setup-status.response.json +14 -0
  41. package/fixtures/shared-account-grant-create.request.json +5 -0
  42. package/fixtures/shared-account-grant-create.response.json +5 -0
  43. package/fixtures/shared-account-grant-delete.request.json +5 -0
  44. package/fixtures/shared-account-grant-delete.response.json +5 -0
  45. package/fixtures/shared-account-grant-list.request.json +5 -0
  46. package/fixtures/shared-account-grant-list.response.json +9 -0
  47. package/fixtures/surface-bind-code-create.request.json +1 -0
  48. package/fixtures/surface-bind-code-create.response.json +1 -0
  49. package/fixtures/surface-dismiss.request.json +1 -0
  50. package/fixtures/surface-dismiss.response.json +1 -0
  51. package/fixtures/surface-list.request.json +1 -0
  52. package/fixtures/surface-list.response.json +1 -0
  53. package/manifest/app-facade.v1.json +32 -0
  54. package/manifest/targets.v1.json +57 -0
  55. package/package.json +43 -0
  56. package/protocol.json +13 -0
  57. package/schema/facade-call.v1.schema.json +46 -0
  58. package/schema/messaging-frame.v3.schema.json +2683 -0
@@ -0,0 +1,2683 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:mhome:app-facade-api:messaging:frame:v3",
4
+ "title": "mHome messaging management API conformance frame v3",
5
+ "$ref": "#/$defs/frame",
6
+ "$defs": {
7
+ "id": {
8
+ "type": "string",
9
+ "minLength": 1
10
+ },
11
+ "providerId": {
12
+ "type": "string",
13
+ "pattern": "^[a-z][a-z0-9_]*$"
14
+ },
15
+ "placement": {
16
+ "enum": [
17
+ "local",
18
+ "cloud"
19
+ ]
20
+ },
21
+ "extension": {
22
+ "type": "object"
23
+ },
24
+ "audience": {
25
+ "enum": [
26
+ "personal",
27
+ "shared"
28
+ ]
29
+ },
30
+ "contentCapability": {
31
+ "enum": [
32
+ "text",
33
+ "markdown",
34
+ "image",
35
+ "audio",
36
+ "video",
37
+ "file",
38
+ "action"
39
+ ]
40
+ },
41
+ "deliveryMode": {
42
+ "enum": [
43
+ "unrestricted",
44
+ "session_window"
45
+ ]
46
+ },
47
+ "projectionUnsupportedReason": {
48
+ "enum": [
49
+ "no_proactive_delivery",
50
+ "no_interactive_actions",
51
+ "session_window_only",
52
+ "provider_unconfigured"
53
+ ]
54
+ },
55
+ "notificationProjectionLevel": {
56
+ "enum": [
57
+ "alert",
58
+ "notify",
59
+ "chat"
60
+ ]
61
+ },
62
+ "projectionCapability": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": [
66
+ "supported"
67
+ ],
68
+ "properties": {
69
+ "supported": {
70
+ "type": "boolean"
71
+ },
72
+ "reason": {
73
+ "$ref": "#/$defs/projectionUnsupportedReason"
74
+ }
75
+ }
76
+ },
77
+ "projectionCapabilities": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": [
81
+ "notification",
82
+ "dialog"
83
+ ],
84
+ "properties": {
85
+ "notification": {
86
+ "$ref": "#/$defs/projectionCapability"
87
+ },
88
+ "dialog": {
89
+ "$ref": "#/$defs/projectionCapability"
90
+ }
91
+ }
92
+ },
93
+ "notificationProjectionSetting": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "required": [
97
+ "enabled",
98
+ "levels"
99
+ ],
100
+ "properties": {
101
+ "enabled": {
102
+ "type": "boolean"
103
+ },
104
+ "levels": {
105
+ "type": "array",
106
+ "uniqueItems": true,
107
+ "items": {
108
+ "$ref": "#/$defs/notificationProjectionLevel"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "dialogProjectionSetting": {
114
+ "type": "object",
115
+ "additionalProperties": false,
116
+ "required": [
117
+ "enabled"
118
+ ],
119
+ "properties": {
120
+ "enabled": {
121
+ "type": "boolean"
122
+ }
123
+ }
124
+ },
125
+ "routeProjectionSettings": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": [
129
+ "notification",
130
+ "dialog"
131
+ ],
132
+ "properties": {
133
+ "notification": {
134
+ "$ref": "#/$defs/notificationProjectionSetting"
135
+ },
136
+ "dialog": {
137
+ "$ref": "#/$defs/dialogProjectionSetting"
138
+ }
139
+ }
140
+ },
141
+ "notificationProjectionUpdate": {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "properties": {
145
+ "enabled": {
146
+ "type": "boolean"
147
+ },
148
+ "levels": {
149
+ "type": "array",
150
+ "uniqueItems": true,
151
+ "items": {
152
+ "$ref": "#/$defs/notificationProjectionLevel"
153
+ }
154
+ }
155
+ }
156
+ },
157
+ "dialogProjectionUpdate": {
158
+ "type": "object",
159
+ "additionalProperties": false,
160
+ "properties": {
161
+ "enabled": {
162
+ "type": "boolean"
163
+ }
164
+ }
165
+ },
166
+ "routeProjectionSettingsUpdate": {
167
+ "type": "object",
168
+ "additionalProperties": false,
169
+ "properties": {
170
+ "notification": {
171
+ "$ref": "#/$defs/notificationProjectionUpdate"
172
+ },
173
+ "dialog": {
174
+ "$ref": "#/$defs/dialogProjectionUpdate"
175
+ }
176
+ }
177
+ },
178
+ "managementOperation": {
179
+ "enum": [
180
+ "provider_account.list",
181
+ "provider_account.update",
182
+ "provider_account.delete",
183
+ "provider_account.test",
184
+ "provider_account.status",
185
+ "shared_account_grant.create",
186
+ "shared_account_grant.delete",
187
+ "shared_account_grant.list",
188
+ "route.list",
189
+ "route.update",
190
+ "route.delete",
191
+ "setup.options",
192
+ "setup.start",
193
+ "setup.status",
194
+ "surface.list",
195
+ "surface.dismiss",
196
+ "surface.bind_code.create",
197
+ "actor.link_code.create",
198
+ "actor.link_claim.status",
199
+ "actor.link_claim.confirm",
200
+ "actor.link.list",
201
+ "actor.link.delete"
202
+ ]
203
+ },
204
+ "frontendProvider": {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "required": [
208
+ "provider",
209
+ "deprecated",
210
+ "supportedPlacements"
211
+ ],
212
+ "properties": {
213
+ "provider": {
214
+ "$ref": "#/$defs/providerId"
215
+ },
216
+ "deprecated": {
217
+ "type": "boolean"
218
+ },
219
+ "supportedPlacements": {
220
+ "type": "array",
221
+ "minItems": 1,
222
+ "uniqueItems": true,
223
+ "items": {
224
+ "$ref": "#/$defs/placement"
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "providerMetadata": {
230
+ "type": "object",
231
+ "additionalProperties": false,
232
+ "required": [
233
+ "provider",
234
+ "displayName",
235
+ "placement",
236
+ "deprecated",
237
+ "available",
238
+ "setupFlow",
239
+ "audiences",
240
+ "inboundCapabilities",
241
+ "outboundCapabilities",
242
+ "deliveryMode",
243
+ "projections",
244
+ "managementOperations",
245
+ "providerData"
246
+ ],
247
+ "properties": {
248
+ "provider": {
249
+ "$ref": "#/$defs/providerId"
250
+ },
251
+ "displayName": {
252
+ "$ref": "#/$defs/id"
253
+ },
254
+ "placement": {
255
+ "$ref": "#/$defs/placement"
256
+ },
257
+ "deprecated": {
258
+ "type": "boolean"
259
+ },
260
+ "available": {
261
+ "type": "boolean"
262
+ },
263
+ "disabledReason": {
264
+ "$ref": "#/$defs/id"
265
+ },
266
+ "setupFlow": {
267
+ "$ref": "#/$defs/id"
268
+ },
269
+ "audiences": {
270
+ "type": "array",
271
+ "uniqueItems": true,
272
+ "items": {
273
+ "$ref": "#/$defs/audience"
274
+ }
275
+ },
276
+ "inboundCapabilities": {
277
+ "type": "array",
278
+ "uniqueItems": true,
279
+ "items": {
280
+ "$ref": "#/$defs/contentCapability"
281
+ }
282
+ },
283
+ "outboundCapabilities": {
284
+ "type": "array",
285
+ "uniqueItems": true,
286
+ "items": {
287
+ "$ref": "#/$defs/contentCapability"
288
+ }
289
+ },
290
+ "deliveryMode": {
291
+ "$ref": "#/$defs/deliveryMode"
292
+ },
293
+ "projections": {
294
+ "$ref": "#/$defs/projectionCapabilities"
295
+ },
296
+ "managementOperations": {
297
+ "type": "array",
298
+ "uniqueItems": true,
299
+ "items": {
300
+ "$ref": "#/$defs/managementOperation"
301
+ }
302
+ },
303
+ "providerData": {
304
+ "$ref": "#/$defs/extension"
305
+ }
306
+ }
307
+ },
308
+ "providerAccountOwnership": {
309
+ "enum": [
310
+ "system",
311
+ "user"
312
+ ]
313
+ },
314
+ "providerAccount": {
315
+ "type": "object",
316
+ "additionalProperties": false,
317
+ "required": [
318
+ "provider",
319
+ "placement",
320
+ "accountId",
321
+ "ownership",
322
+ "enabled",
323
+ "status",
324
+ "providerData"
325
+ ],
326
+ "properties": {
327
+ "provider": {
328
+ "$ref": "#/$defs/providerId"
329
+ },
330
+ "placement": {
331
+ "$ref": "#/$defs/placement"
332
+ },
333
+ "accountId": {
334
+ "$ref": "#/$defs/id"
335
+ },
336
+ "ownership": {
337
+ "$ref": "#/$defs/providerAccountOwnership"
338
+ },
339
+ "displayName": {
340
+ "$ref": "#/$defs/id"
341
+ },
342
+ "enabled": {
343
+ "type": "boolean"
344
+ },
345
+ "status": {
346
+ "$ref": "#/$defs/id"
347
+ },
348
+ "statusMessage": {
349
+ "$ref": "#/$defs/id"
350
+ },
351
+ "providerData": {
352
+ "$ref": "#/$defs/extension"
353
+ }
354
+ }
355
+ },
356
+ "providerStatus": {
357
+ "type": "object",
358
+ "additionalProperties": false,
359
+ "required": [
360
+ "provider",
361
+ "placement",
362
+ "enabled",
363
+ "providerData"
364
+ ],
365
+ "properties": {
366
+ "provider": {
367
+ "$ref": "#/$defs/providerId"
368
+ },
369
+ "placement": {
370
+ "$ref": "#/$defs/placement"
371
+ },
372
+ "enabled": {
373
+ "type": "boolean"
374
+ },
375
+ "providerData": {
376
+ "$ref": "#/$defs/extension"
377
+ }
378
+ }
379
+ },
380
+ "sharedAccountGrant": {
381
+ "type": "object",
382
+ "additionalProperties": false,
383
+ "required": [
384
+ "provider",
385
+ "placement",
386
+ "accountId",
387
+ "tenantId",
388
+ "scopeId",
389
+ "grantedByUserId",
390
+ "createdAtMs",
391
+ "updatedAtMs"
392
+ ],
393
+ "properties": {
394
+ "provider": {
395
+ "$ref": "#/$defs/providerId"
396
+ },
397
+ "placement": {
398
+ "$ref": "#/$defs/placement"
399
+ },
400
+ "accountId": {
401
+ "$ref": "#/$defs/id"
402
+ },
403
+ "tenantId": {
404
+ "$ref": "#/$defs/id"
405
+ },
406
+ "scopeId": {
407
+ "$ref": "#/$defs/id"
408
+ },
409
+ "grantedByUserId": {
410
+ "$ref": "#/$defs/id"
411
+ },
412
+ "createdAtMs": {
413
+ "type": "integer"
414
+ },
415
+ "updatedAtMs": {
416
+ "type": "integer"
417
+ }
418
+ }
419
+ },
420
+ "messagingRoute": {
421
+ "oneOf": [
422
+ {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "required": [
426
+ "audience",
427
+ "provider",
428
+ "placement",
429
+ "routeId",
430
+ "accountId",
431
+ "conversationId",
432
+ "externalActorId",
433
+ "tenantId",
434
+ "userId",
435
+ "scopeId",
436
+ "enabled",
437
+ "projections",
438
+ "providerData"
439
+ ],
440
+ "properties": {
441
+ "audience": {
442
+ "const": "personal"
443
+ },
444
+ "provider": {
445
+ "$ref": "#/$defs/providerId"
446
+ },
447
+ "placement": {
448
+ "$ref": "#/$defs/placement"
449
+ },
450
+ "routeId": {
451
+ "$ref": "#/$defs/id"
452
+ },
453
+ "accountId": {
454
+ "$ref": "#/$defs/id"
455
+ },
456
+ "conversationId": {
457
+ "$ref": "#/$defs/id"
458
+ },
459
+ "tenantId": {
460
+ "$ref": "#/$defs/id"
461
+ },
462
+ "scopeId": {
463
+ "$ref": "#/$defs/id"
464
+ },
465
+ "displayName": {
466
+ "$ref": "#/$defs/id"
467
+ },
468
+ "enabled": {
469
+ "type": "boolean"
470
+ },
471
+ "projections": {
472
+ "$ref": "#/$defs/routeProjectionSettings"
473
+ },
474
+ "providerData": {
475
+ "$ref": "#/$defs/extension"
476
+ },
477
+ "externalActorId": {
478
+ "$ref": "#/$defs/id"
479
+ },
480
+ "userId": {
481
+ "$ref": "#/$defs/id"
482
+ }
483
+ }
484
+ },
485
+ {
486
+ "type": "object",
487
+ "additionalProperties": false,
488
+ "required": [
489
+ "audience",
490
+ "provider",
491
+ "placement",
492
+ "routeId",
493
+ "accountId",
494
+ "conversationId",
495
+ "tenantId",
496
+ "scopeId",
497
+ "boundByUserId",
498
+ "enabled",
499
+ "projections",
500
+ "providerData"
501
+ ],
502
+ "properties": {
503
+ "audience": {
504
+ "const": "shared"
505
+ },
506
+ "provider": {
507
+ "$ref": "#/$defs/providerId"
508
+ },
509
+ "placement": {
510
+ "$ref": "#/$defs/placement"
511
+ },
512
+ "routeId": {
513
+ "$ref": "#/$defs/id"
514
+ },
515
+ "accountId": {
516
+ "$ref": "#/$defs/id"
517
+ },
518
+ "conversationId": {
519
+ "$ref": "#/$defs/id"
520
+ },
521
+ "tenantId": {
522
+ "$ref": "#/$defs/id"
523
+ },
524
+ "scopeId": {
525
+ "$ref": "#/$defs/id"
526
+ },
527
+ "displayName": {
528
+ "$ref": "#/$defs/id"
529
+ },
530
+ "enabled": {
531
+ "type": "boolean"
532
+ },
533
+ "projections": {
534
+ "$ref": "#/$defs/routeProjectionSettings"
535
+ },
536
+ "providerData": {
537
+ "$ref": "#/$defs/extension"
538
+ },
539
+ "boundByUserId": {
540
+ "$ref": "#/$defs/id"
541
+ }
542
+ }
543
+ }
544
+ ]
545
+ },
546
+ "setupAction": {
547
+ "type": "object",
548
+ "additionalProperties": false,
549
+ "required": [
550
+ "type"
551
+ ],
552
+ "properties": {
553
+ "type": {
554
+ "$ref": "#/$defs/id"
555
+ },
556
+ "url": {
557
+ "type": "string",
558
+ "format": "uri"
559
+ }
560
+ }
561
+ },
562
+ "setupState": {
563
+ "type": "object",
564
+ "additionalProperties": false,
565
+ "required": [
566
+ "status",
567
+ "providerData"
568
+ ],
569
+ "properties": {
570
+ "setupId": {
571
+ "$ref": "#/$defs/id"
572
+ },
573
+ "status": {
574
+ "$ref": "#/$defs/id"
575
+ },
576
+ "expiresAtMs": {
577
+ "type": "integer",
578
+ "minimum": 0
579
+ },
580
+ "action": {
581
+ "$ref": "#/$defs/setupAction"
582
+ },
583
+ "providerData": {
584
+ "$ref": "#/$defs/extension"
585
+ },
586
+ "accountId": {
587
+ "$ref": "#/$defs/id"
588
+ },
589
+ "routeId": {
590
+ "$ref": "#/$defs/id"
591
+ },
592
+ "message": {
593
+ "type": "string"
594
+ }
595
+ }
596
+ },
597
+ "surfaceState": {
598
+ "enum": [
599
+ "pending",
600
+ "bound",
601
+ "dismissed"
602
+ ]
603
+ },
604
+ "messagingSurface": {
605
+ "type": "object",
606
+ "additionalProperties": false,
607
+ "required": [
608
+ "provider",
609
+ "placement",
610
+ "accountId",
611
+ "surfaceId",
612
+ "state",
613
+ "firstSeenAtMs",
614
+ "lastSeenAtMs"
615
+ ],
616
+ "properties": {
617
+ "provider": {
618
+ "$ref": "#/$defs/providerId"
619
+ },
620
+ "placement": {
621
+ "$ref": "#/$defs/placement"
622
+ },
623
+ "accountId": {
624
+ "$ref": "#/$defs/id"
625
+ },
626
+ "surfaceId": {
627
+ "$ref": "#/$defs/id"
628
+ },
629
+ "displayName": {
630
+ "$ref": "#/$defs/id"
631
+ },
632
+ "state": {
633
+ "$ref": "#/$defs/surfaceState"
634
+ },
635
+ "scopeId": {
636
+ "$ref": "#/$defs/id"
637
+ },
638
+ "firstSeenAtMs": {
639
+ "type": "integer",
640
+ "minimum": 0
641
+ },
642
+ "lastSeenAtMs": {
643
+ "type": "integer",
644
+ "minimum": 0
645
+ }
646
+ }
647
+ },
648
+ "challengeCode": {
649
+ "type": "object",
650
+ "additionalProperties": false,
651
+ "required": [
652
+ "code",
653
+ "command",
654
+ "expiresAtMs"
655
+ ],
656
+ "properties": {
657
+ "code": {
658
+ "$ref": "#/$defs/id"
659
+ },
660
+ "command": {
661
+ "$ref": "#/$defs/id"
662
+ },
663
+ "expiresAtMs": {
664
+ "type": "integer",
665
+ "minimum": 0
666
+ }
667
+ }
668
+ },
669
+ "actorLinkView": {
670
+ "type": "object",
671
+ "additionalProperties": false,
672
+ "required": [
673
+ "linkId",
674
+ "provider",
675
+ "placement",
676
+ "accountId",
677
+ "externalUserId",
678
+ "createdAtMs",
679
+ "updatedAtMs"
680
+ ],
681
+ "properties": {
682
+ "linkId": {
683
+ "$ref": "#/$defs/id"
684
+ },
685
+ "provider": {
686
+ "$ref": "#/$defs/providerId"
687
+ },
688
+ "placement": {
689
+ "$ref": "#/$defs/placement"
690
+ },
691
+ "accountId": {
692
+ "$ref": "#/$defs/id"
693
+ },
694
+ "externalUserId": {
695
+ "$ref": "#/$defs/id"
696
+ },
697
+ "displayName": {
698
+ "$ref": "#/$defs/id"
699
+ },
700
+ "createdAtMs": {
701
+ "type": "integer",
702
+ "minimum": 0
703
+ },
704
+ "updatedAtMs": {
705
+ "type": "integer",
706
+ "minimum": 0
707
+ }
708
+ }
709
+ },
710
+ "mutationBody": {
711
+ "type": "object",
712
+ "additionalProperties": false,
713
+ "required": [
714
+ "success"
715
+ ],
716
+ "properties": {
717
+ "success": {
718
+ "type": "boolean"
719
+ }
720
+ }
721
+ },
722
+ "providerListBody": {
723
+ "type": "object",
724
+ "additionalProperties": false,
725
+ "required": [
726
+ "placement",
727
+ "frontendProviders"
728
+ ],
729
+ "properties": {
730
+ "placement": {
731
+ "$ref": "#/$defs/placement"
732
+ },
733
+ "frontendProviders": {
734
+ "type": "array",
735
+ "items": {
736
+ "$ref": "#/$defs/frontendProvider"
737
+ }
738
+ }
739
+ }
740
+ },
741
+ "providerPlacementBody": {
742
+ "type": "object",
743
+ "additionalProperties": false,
744
+ "required": [
745
+ "provider",
746
+ "placement"
747
+ ],
748
+ "properties": {
749
+ "provider": {
750
+ "$ref": "#/$defs/providerId"
751
+ },
752
+ "placement": {
753
+ "$ref": "#/$defs/placement"
754
+ }
755
+ }
756
+ },
757
+ "providerAccountUpdateBody": {
758
+ "type": "object",
759
+ "additionalProperties": false,
760
+ "required": [
761
+ "provider",
762
+ "placement",
763
+ "accountId",
764
+ "data"
765
+ ],
766
+ "properties": {
767
+ "provider": {
768
+ "$ref": "#/$defs/providerId"
769
+ },
770
+ "placement": {
771
+ "$ref": "#/$defs/placement"
772
+ },
773
+ "accountId": {
774
+ "$ref": "#/$defs/id"
775
+ },
776
+ "data": {
777
+ "$ref": "#/$defs/extension"
778
+ }
779
+ }
780
+ },
781
+ "providerAccountBody": {
782
+ "type": "object",
783
+ "additionalProperties": false,
784
+ "required": [
785
+ "provider",
786
+ "placement",
787
+ "accountId"
788
+ ],
789
+ "properties": {
790
+ "provider": {
791
+ "$ref": "#/$defs/providerId"
792
+ },
793
+ "placement": {
794
+ "$ref": "#/$defs/placement"
795
+ },
796
+ "accountId": {
797
+ "$ref": "#/$defs/id"
798
+ }
799
+ }
800
+ },
801
+ "providerAccountTestBody": {
802
+ "type": "object",
803
+ "additionalProperties": false,
804
+ "required": [
805
+ "provider",
806
+ "placement",
807
+ "data"
808
+ ],
809
+ "properties": {
810
+ "provider": {
811
+ "$ref": "#/$defs/providerId"
812
+ },
813
+ "placement": {
814
+ "$ref": "#/$defs/placement"
815
+ },
816
+ "data": {
817
+ "$ref": "#/$defs/extension"
818
+ }
819
+ }
820
+ },
821
+ "sharedAccountGrantBody": {
822
+ "type": "object",
823
+ "additionalProperties": false,
824
+ "required": [
825
+ "provider",
826
+ "placement",
827
+ "accountId"
828
+ ],
829
+ "properties": {
830
+ "provider": {
831
+ "$ref": "#/$defs/providerId"
832
+ },
833
+ "placement": {
834
+ "$ref": "#/$defs/placement"
835
+ },
836
+ "accountId": {
837
+ "$ref": "#/$defs/id"
838
+ }
839
+ }
840
+ },
841
+ "sharedAccountGrantListBody": {
842
+ "type": "object",
843
+ "additionalProperties": false,
844
+ "required": [
845
+ "provider",
846
+ "placement"
847
+ ],
848
+ "properties": {
849
+ "provider": {
850
+ "$ref": "#/$defs/providerId"
851
+ },
852
+ "placement": {
853
+ "$ref": "#/$defs/placement"
854
+ },
855
+ "accountId": {
856
+ "$ref": "#/$defs/id"
857
+ }
858
+ }
859
+ },
860
+ "routeListBody": {
861
+ "type": "object",
862
+ "additionalProperties": false,
863
+ "required": [
864
+ "provider",
865
+ "placement"
866
+ ],
867
+ "properties": {
868
+ "provider": {
869
+ "$ref": "#/$defs/providerId"
870
+ },
871
+ "placement": {
872
+ "$ref": "#/$defs/placement"
873
+ },
874
+ "accountId": {
875
+ "$ref": "#/$defs/id"
876
+ },
877
+ "audience": {
878
+ "$ref": "#/$defs/audience"
879
+ }
880
+ }
881
+ },
882
+ "routeBody": {
883
+ "type": "object",
884
+ "additionalProperties": false,
885
+ "required": [
886
+ "provider",
887
+ "placement",
888
+ "routeId"
889
+ ],
890
+ "properties": {
891
+ "provider": {
892
+ "$ref": "#/$defs/providerId"
893
+ },
894
+ "placement": {
895
+ "$ref": "#/$defs/placement"
896
+ },
897
+ "routeId": {
898
+ "$ref": "#/$defs/id"
899
+ }
900
+ }
901
+ },
902
+ "routeUpdateBody": {
903
+ "oneOf": [
904
+ {
905
+ "type": "object",
906
+ "additionalProperties": false,
907
+ "required": [
908
+ "audience",
909
+ "provider",
910
+ "placement",
911
+ "routeId"
912
+ ],
913
+ "properties": {
914
+ "audience": {
915
+ "const": "personal"
916
+ },
917
+ "provider": {
918
+ "$ref": "#/$defs/providerId"
919
+ },
920
+ "placement": {
921
+ "$ref": "#/$defs/placement"
922
+ },
923
+ "routeId": {
924
+ "$ref": "#/$defs/id"
925
+ },
926
+ "scopeId": {
927
+ "$ref": "#/$defs/id"
928
+ },
929
+ "enabled": {
930
+ "type": "boolean"
931
+ },
932
+ "projections": {
933
+ "$ref": "#/$defs/routeProjectionSettingsUpdate"
934
+ }
935
+ }
936
+ },
937
+ {
938
+ "type": "object",
939
+ "additionalProperties": false,
940
+ "required": [
941
+ "audience",
942
+ "provider",
943
+ "placement",
944
+ "routeId"
945
+ ],
946
+ "properties": {
947
+ "audience": {
948
+ "const": "shared"
949
+ },
950
+ "provider": {
951
+ "$ref": "#/$defs/providerId"
952
+ },
953
+ "placement": {
954
+ "$ref": "#/$defs/placement"
955
+ },
956
+ "routeId": {
957
+ "$ref": "#/$defs/id"
958
+ },
959
+ "enabled": {
960
+ "type": "boolean"
961
+ },
962
+ "projections": {
963
+ "$ref": "#/$defs/routeProjectionSettingsUpdate"
964
+ }
965
+ }
966
+ }
967
+ ]
968
+ },
969
+ "setupStartBody": {
970
+ "type": "object",
971
+ "additionalProperties": false,
972
+ "required": [
973
+ "provider",
974
+ "placement",
975
+ "data"
976
+ ],
977
+ "properties": {
978
+ "provider": {
979
+ "$ref": "#/$defs/providerId"
980
+ },
981
+ "placement": {
982
+ "$ref": "#/$defs/placement"
983
+ },
984
+ "data": {
985
+ "$ref": "#/$defs/extension"
986
+ }
987
+ }
988
+ },
989
+ "setupStatusBody": {
990
+ "type": "object",
991
+ "additionalProperties": false,
992
+ "required": [
993
+ "provider",
994
+ "placement",
995
+ "setupId"
996
+ ],
997
+ "properties": {
998
+ "provider": {
999
+ "$ref": "#/$defs/providerId"
1000
+ },
1001
+ "placement": {
1002
+ "$ref": "#/$defs/placement"
1003
+ },
1004
+ "setupId": {
1005
+ "$ref": "#/$defs/id"
1006
+ }
1007
+ }
1008
+ },
1009
+ "surfaceListBody": {
1010
+ "type": "object",
1011
+ "additionalProperties": false,
1012
+ "required": [
1013
+ "provider",
1014
+ "placement"
1015
+ ],
1016
+ "properties": {
1017
+ "provider": {
1018
+ "$ref": "#/$defs/providerId"
1019
+ },
1020
+ "placement": {
1021
+ "$ref": "#/$defs/placement"
1022
+ },
1023
+ "accountId": {
1024
+ "$ref": "#/$defs/id"
1025
+ },
1026
+ "state": {
1027
+ "$ref": "#/$defs/surfaceState"
1028
+ }
1029
+ }
1030
+ },
1031
+ "surfaceBody": {
1032
+ "type": "object",
1033
+ "additionalProperties": false,
1034
+ "required": [
1035
+ "provider",
1036
+ "placement",
1037
+ "surfaceId"
1038
+ ],
1039
+ "properties": {
1040
+ "provider": {
1041
+ "$ref": "#/$defs/providerId"
1042
+ },
1043
+ "placement": {
1044
+ "$ref": "#/$defs/placement"
1045
+ },
1046
+ "surfaceId": {
1047
+ "$ref": "#/$defs/id"
1048
+ }
1049
+ }
1050
+ },
1051
+ "surfaceBindCodeBody": {
1052
+ "type": "object",
1053
+ "additionalProperties": false,
1054
+ "required": [
1055
+ "provider",
1056
+ "placement",
1057
+ "surfaceId",
1058
+ "scopeId"
1059
+ ],
1060
+ "properties": {
1061
+ "provider": {
1062
+ "$ref": "#/$defs/providerId"
1063
+ },
1064
+ "placement": {
1065
+ "$ref": "#/$defs/placement"
1066
+ },
1067
+ "surfaceId": {
1068
+ "$ref": "#/$defs/id"
1069
+ },
1070
+ "scopeId": {
1071
+ "$ref": "#/$defs/id"
1072
+ }
1073
+ }
1074
+ },
1075
+ "actorLinkCodeBody": {
1076
+ "type": "object",
1077
+ "additionalProperties": false,
1078
+ "required": [
1079
+ "provider",
1080
+ "placement",
1081
+ "accountId",
1082
+ "target"
1083
+ ],
1084
+ "properties": {
1085
+ "provider": {
1086
+ "$ref": "#/$defs/providerId"
1087
+ },
1088
+ "placement": {
1089
+ "$ref": "#/$defs/placement"
1090
+ },
1091
+ "accountId": {
1092
+ "$ref": "#/$defs/id"
1093
+ },
1094
+ "target": {
1095
+ "$ref": "#/$defs/actorLinkTarget"
1096
+ }
1097
+ }
1098
+ },
1099
+ "actorLinkListBody": {
1100
+ "type": "object",
1101
+ "additionalProperties": false,
1102
+ "required": [
1103
+ "provider",
1104
+ "placement"
1105
+ ],
1106
+ "properties": {
1107
+ "provider": {
1108
+ "$ref": "#/$defs/providerId"
1109
+ },
1110
+ "placement": {
1111
+ "$ref": "#/$defs/placement"
1112
+ },
1113
+ "accountId": {
1114
+ "$ref": "#/$defs/id"
1115
+ }
1116
+ }
1117
+ },
1118
+ "actorLinkDeleteBody": {
1119
+ "type": "object",
1120
+ "additionalProperties": false,
1121
+ "required": [
1122
+ "provider",
1123
+ "placement",
1124
+ "linkId"
1125
+ ],
1126
+ "properties": {
1127
+ "provider": {
1128
+ "$ref": "#/$defs/providerId"
1129
+ },
1130
+ "placement": {
1131
+ "$ref": "#/$defs/placement"
1132
+ },
1133
+ "linkId": {
1134
+ "$ref": "#/$defs/id"
1135
+ }
1136
+ }
1137
+ },
1138
+ "providerListRequest": {
1139
+ "type": "object",
1140
+ "additionalProperties": false,
1141
+ "required": [
1142
+ "target",
1143
+ "direction",
1144
+ "body"
1145
+ ],
1146
+ "properties": {
1147
+ "target": {
1148
+ "const": "/app/messaging/provider/list"
1149
+ },
1150
+ "direction": {
1151
+ "const": "request"
1152
+ },
1153
+ "body": {
1154
+ "$ref": "#/$defs/providerListBody"
1155
+ }
1156
+ }
1157
+ },
1158
+ "providerListResponse": {
1159
+ "type": "object",
1160
+ "additionalProperties": false,
1161
+ "required": [
1162
+ "target",
1163
+ "direction",
1164
+ "body"
1165
+ ],
1166
+ "properties": {
1167
+ "target": {
1168
+ "const": "/app/messaging/provider/list"
1169
+ },
1170
+ "direction": {
1171
+ "const": "response"
1172
+ },
1173
+ "body": {
1174
+ "type": "object",
1175
+ "additionalProperties": false,
1176
+ "required": [
1177
+ "providers"
1178
+ ],
1179
+ "properties": {
1180
+ "providers": {
1181
+ "type": "array",
1182
+ "items": {
1183
+ "$ref": "#/$defs/providerMetadata"
1184
+ }
1185
+ }
1186
+ }
1187
+ }
1188
+ }
1189
+ },
1190
+ "providerAccountListRequest": {
1191
+ "type": "object",
1192
+ "additionalProperties": false,
1193
+ "required": [
1194
+ "target",
1195
+ "direction",
1196
+ "body"
1197
+ ],
1198
+ "properties": {
1199
+ "target": {
1200
+ "const": "/app/messaging/provider-account/list"
1201
+ },
1202
+ "direction": {
1203
+ "const": "request"
1204
+ },
1205
+ "body": {
1206
+ "$ref": "#/$defs/providerPlacementBody"
1207
+ }
1208
+ }
1209
+ },
1210
+ "providerAccountListResponse": {
1211
+ "type": "object",
1212
+ "additionalProperties": false,
1213
+ "required": [
1214
+ "target",
1215
+ "direction",
1216
+ "body"
1217
+ ],
1218
+ "properties": {
1219
+ "target": {
1220
+ "const": "/app/messaging/provider-account/list"
1221
+ },
1222
+ "direction": {
1223
+ "const": "response"
1224
+ },
1225
+ "body": {
1226
+ "type": "object",
1227
+ "additionalProperties": false,
1228
+ "required": [
1229
+ "accounts"
1230
+ ],
1231
+ "properties": {
1232
+ "accounts": {
1233
+ "type": "array",
1234
+ "items": {
1235
+ "$ref": "#/$defs/providerAccount"
1236
+ }
1237
+ }
1238
+ }
1239
+ }
1240
+ }
1241
+ },
1242
+ "providerAccountUpdateRequest": {
1243
+ "type": "object",
1244
+ "additionalProperties": false,
1245
+ "required": [
1246
+ "target",
1247
+ "direction",
1248
+ "body"
1249
+ ],
1250
+ "properties": {
1251
+ "target": {
1252
+ "const": "/app/messaging/provider-account/update"
1253
+ },
1254
+ "direction": {
1255
+ "const": "request"
1256
+ },
1257
+ "body": {
1258
+ "$ref": "#/$defs/providerAccountUpdateBody"
1259
+ }
1260
+ }
1261
+ },
1262
+ "providerAccountUpdateResponse": {
1263
+ "type": "object",
1264
+ "additionalProperties": false,
1265
+ "required": [
1266
+ "target",
1267
+ "direction",
1268
+ "body"
1269
+ ],
1270
+ "properties": {
1271
+ "target": {
1272
+ "const": "/app/messaging/provider-account/update"
1273
+ },
1274
+ "direction": {
1275
+ "const": "response"
1276
+ },
1277
+ "body": {
1278
+ "type": "object",
1279
+ "additionalProperties": false,
1280
+ "required": [
1281
+ "account"
1282
+ ],
1283
+ "properties": {
1284
+ "account": {
1285
+ "$ref": "#/$defs/providerAccount"
1286
+ }
1287
+ }
1288
+ }
1289
+ }
1290
+ },
1291
+ "providerAccountDeleteRequest": {
1292
+ "type": "object",
1293
+ "additionalProperties": false,
1294
+ "required": [
1295
+ "target",
1296
+ "direction",
1297
+ "body"
1298
+ ],
1299
+ "properties": {
1300
+ "target": {
1301
+ "const": "/app/messaging/provider-account/delete"
1302
+ },
1303
+ "direction": {
1304
+ "const": "request"
1305
+ },
1306
+ "body": {
1307
+ "$ref": "#/$defs/providerAccountBody"
1308
+ }
1309
+ }
1310
+ },
1311
+ "providerAccountDeleteResponse": {
1312
+ "type": "object",
1313
+ "additionalProperties": false,
1314
+ "required": [
1315
+ "target",
1316
+ "direction",
1317
+ "body"
1318
+ ],
1319
+ "properties": {
1320
+ "target": {
1321
+ "const": "/app/messaging/provider-account/delete"
1322
+ },
1323
+ "direction": {
1324
+ "const": "response"
1325
+ },
1326
+ "body": {
1327
+ "$ref": "#/$defs/mutationBody"
1328
+ }
1329
+ }
1330
+ },
1331
+ "providerAccountTestRequest": {
1332
+ "type": "object",
1333
+ "additionalProperties": false,
1334
+ "required": [
1335
+ "target",
1336
+ "direction",
1337
+ "body"
1338
+ ],
1339
+ "properties": {
1340
+ "target": {
1341
+ "const": "/app/messaging/provider-account/test"
1342
+ },
1343
+ "direction": {
1344
+ "const": "request"
1345
+ },
1346
+ "body": {
1347
+ "$ref": "#/$defs/providerAccountTestBody"
1348
+ }
1349
+ }
1350
+ },
1351
+ "providerAccountTestResponse": {
1352
+ "type": "object",
1353
+ "additionalProperties": false,
1354
+ "required": [
1355
+ "target",
1356
+ "direction",
1357
+ "body"
1358
+ ],
1359
+ "properties": {
1360
+ "target": {
1361
+ "const": "/app/messaging/provider-account/test"
1362
+ },
1363
+ "direction": {
1364
+ "const": "response"
1365
+ },
1366
+ "body": {
1367
+ "type": "object",
1368
+ "additionalProperties": false,
1369
+ "required": [
1370
+ "result"
1371
+ ],
1372
+ "properties": {
1373
+ "result": {
1374
+ "$ref": "#/$defs/extension"
1375
+ }
1376
+ }
1377
+ }
1378
+ }
1379
+ },
1380
+ "providerAccountStatusRequest": {
1381
+ "type": "object",
1382
+ "additionalProperties": false,
1383
+ "required": [
1384
+ "target",
1385
+ "direction",
1386
+ "body"
1387
+ ],
1388
+ "properties": {
1389
+ "target": {
1390
+ "const": "/app/messaging/provider-account/status"
1391
+ },
1392
+ "direction": {
1393
+ "const": "request"
1394
+ },
1395
+ "body": {
1396
+ "$ref": "#/$defs/providerPlacementBody"
1397
+ }
1398
+ }
1399
+ },
1400
+ "providerAccountStatusResponse": {
1401
+ "type": "object",
1402
+ "additionalProperties": false,
1403
+ "required": [
1404
+ "target",
1405
+ "direction",
1406
+ "body"
1407
+ ],
1408
+ "properties": {
1409
+ "target": {
1410
+ "const": "/app/messaging/provider-account/status"
1411
+ },
1412
+ "direction": {
1413
+ "const": "response"
1414
+ },
1415
+ "body": {
1416
+ "type": "object",
1417
+ "additionalProperties": false,
1418
+ "required": [
1419
+ "status"
1420
+ ],
1421
+ "properties": {
1422
+ "status": {
1423
+ "$ref": "#/$defs/providerStatus"
1424
+ }
1425
+ }
1426
+ }
1427
+ }
1428
+ },
1429
+ "sharedAccountGrantCreateRequest": {
1430
+ "type": "object",
1431
+ "additionalProperties": false,
1432
+ "required": [
1433
+ "target",
1434
+ "direction",
1435
+ "body"
1436
+ ],
1437
+ "properties": {
1438
+ "target": {
1439
+ "const": "/app/messaging/shared-account-grant/create"
1440
+ },
1441
+ "direction": {
1442
+ "const": "request"
1443
+ },
1444
+ "body": {
1445
+ "$ref": "#/$defs/sharedAccountGrantBody"
1446
+ }
1447
+ }
1448
+ },
1449
+ "sharedAccountGrantCreateResponse": {
1450
+ "type": "object",
1451
+ "additionalProperties": false,
1452
+ "required": [
1453
+ "target",
1454
+ "direction",
1455
+ "body"
1456
+ ],
1457
+ "properties": {
1458
+ "target": {
1459
+ "const": "/app/messaging/shared-account-grant/create"
1460
+ },
1461
+ "direction": {
1462
+ "const": "response"
1463
+ },
1464
+ "body": {
1465
+ "$ref": "#/$defs/mutationBody"
1466
+ }
1467
+ }
1468
+ },
1469
+ "sharedAccountGrantDeleteRequest": {
1470
+ "type": "object",
1471
+ "additionalProperties": false,
1472
+ "required": [
1473
+ "target",
1474
+ "direction",
1475
+ "body"
1476
+ ],
1477
+ "properties": {
1478
+ "target": {
1479
+ "const": "/app/messaging/shared-account-grant/delete"
1480
+ },
1481
+ "direction": {
1482
+ "const": "request"
1483
+ },
1484
+ "body": {
1485
+ "$ref": "#/$defs/sharedAccountGrantBody"
1486
+ }
1487
+ }
1488
+ },
1489
+ "sharedAccountGrantDeleteResponse": {
1490
+ "type": "object",
1491
+ "additionalProperties": false,
1492
+ "required": [
1493
+ "target",
1494
+ "direction",
1495
+ "body"
1496
+ ],
1497
+ "properties": {
1498
+ "target": {
1499
+ "const": "/app/messaging/shared-account-grant/delete"
1500
+ },
1501
+ "direction": {
1502
+ "const": "response"
1503
+ },
1504
+ "body": {
1505
+ "$ref": "#/$defs/mutationBody"
1506
+ }
1507
+ }
1508
+ },
1509
+ "sharedAccountGrantListRequest": {
1510
+ "type": "object",
1511
+ "additionalProperties": false,
1512
+ "required": [
1513
+ "target",
1514
+ "direction",
1515
+ "body"
1516
+ ],
1517
+ "properties": {
1518
+ "target": {
1519
+ "const": "/app/messaging/shared-account-grant/list"
1520
+ },
1521
+ "direction": {
1522
+ "const": "request"
1523
+ },
1524
+ "body": {
1525
+ "$ref": "#/$defs/sharedAccountGrantListBody"
1526
+ }
1527
+ }
1528
+ },
1529
+ "sharedAccountGrantListResponse": {
1530
+ "type": "object",
1531
+ "additionalProperties": false,
1532
+ "required": [
1533
+ "target",
1534
+ "direction",
1535
+ "body"
1536
+ ],
1537
+ "properties": {
1538
+ "target": {
1539
+ "const": "/app/messaging/shared-account-grant/list"
1540
+ },
1541
+ "direction": {
1542
+ "const": "response"
1543
+ },
1544
+ "body": {
1545
+ "type": "object",
1546
+ "additionalProperties": false,
1547
+ "required": [
1548
+ "grants"
1549
+ ],
1550
+ "properties": {
1551
+ "grants": {
1552
+ "type": "array",
1553
+ "items": {
1554
+ "$ref": "#/$defs/sharedAccountGrant"
1555
+ }
1556
+ }
1557
+ }
1558
+ }
1559
+ }
1560
+ },
1561
+ "routeListRequest": {
1562
+ "type": "object",
1563
+ "additionalProperties": false,
1564
+ "required": [
1565
+ "target",
1566
+ "direction",
1567
+ "body"
1568
+ ],
1569
+ "properties": {
1570
+ "target": {
1571
+ "const": "/app/messaging/route/list"
1572
+ },
1573
+ "direction": {
1574
+ "const": "request"
1575
+ },
1576
+ "body": {
1577
+ "$ref": "#/$defs/routeListBody"
1578
+ }
1579
+ }
1580
+ },
1581
+ "routeListResponse": {
1582
+ "type": "object",
1583
+ "additionalProperties": false,
1584
+ "required": [
1585
+ "target",
1586
+ "direction",
1587
+ "body"
1588
+ ],
1589
+ "properties": {
1590
+ "target": {
1591
+ "const": "/app/messaging/route/list"
1592
+ },
1593
+ "direction": {
1594
+ "const": "response"
1595
+ },
1596
+ "body": {
1597
+ "type": "object",
1598
+ "additionalProperties": false,
1599
+ "required": [
1600
+ "routes"
1601
+ ],
1602
+ "properties": {
1603
+ "routes": {
1604
+ "type": "array",
1605
+ "items": {
1606
+ "$ref": "#/$defs/messagingRoute"
1607
+ }
1608
+ }
1609
+ }
1610
+ }
1611
+ }
1612
+ },
1613
+ "routeUpdateRequest": {
1614
+ "type": "object",
1615
+ "additionalProperties": false,
1616
+ "required": [
1617
+ "target",
1618
+ "direction",
1619
+ "body"
1620
+ ],
1621
+ "properties": {
1622
+ "target": {
1623
+ "const": "/app/messaging/route/update"
1624
+ },
1625
+ "direction": {
1626
+ "const": "request"
1627
+ },
1628
+ "body": {
1629
+ "$ref": "#/$defs/routeUpdateBody"
1630
+ }
1631
+ }
1632
+ },
1633
+ "routeUpdateResponse": {
1634
+ "type": "object",
1635
+ "additionalProperties": false,
1636
+ "required": [
1637
+ "target",
1638
+ "direction",
1639
+ "body"
1640
+ ],
1641
+ "properties": {
1642
+ "target": {
1643
+ "const": "/app/messaging/route/update"
1644
+ },
1645
+ "direction": {
1646
+ "const": "response"
1647
+ },
1648
+ "body": {
1649
+ "type": "object",
1650
+ "additionalProperties": false,
1651
+ "required": [
1652
+ "route"
1653
+ ],
1654
+ "properties": {
1655
+ "route": {
1656
+ "$ref": "#/$defs/messagingRoute"
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ },
1662
+ "routeDeleteRequest": {
1663
+ "type": "object",
1664
+ "additionalProperties": false,
1665
+ "required": [
1666
+ "target",
1667
+ "direction",
1668
+ "body"
1669
+ ],
1670
+ "properties": {
1671
+ "target": {
1672
+ "const": "/app/messaging/route/delete"
1673
+ },
1674
+ "direction": {
1675
+ "const": "request"
1676
+ },
1677
+ "body": {
1678
+ "$ref": "#/$defs/routeBody"
1679
+ }
1680
+ }
1681
+ },
1682
+ "routeDeleteResponse": {
1683
+ "type": "object",
1684
+ "additionalProperties": false,
1685
+ "required": [
1686
+ "target",
1687
+ "direction",
1688
+ "body"
1689
+ ],
1690
+ "properties": {
1691
+ "target": {
1692
+ "const": "/app/messaging/route/delete"
1693
+ },
1694
+ "direction": {
1695
+ "const": "response"
1696
+ },
1697
+ "body": {
1698
+ "$ref": "#/$defs/mutationBody"
1699
+ }
1700
+ }
1701
+ },
1702
+ "setupOptionsRequest": {
1703
+ "type": "object",
1704
+ "additionalProperties": false,
1705
+ "required": [
1706
+ "target",
1707
+ "direction",
1708
+ "body"
1709
+ ],
1710
+ "properties": {
1711
+ "target": {
1712
+ "const": "/app/messaging/setup/options"
1713
+ },
1714
+ "direction": {
1715
+ "const": "request"
1716
+ },
1717
+ "body": {
1718
+ "$ref": "#/$defs/providerPlacementBody"
1719
+ }
1720
+ }
1721
+ },
1722
+ "setupOptionsResponse": {
1723
+ "type": "object",
1724
+ "additionalProperties": false,
1725
+ "required": [
1726
+ "target",
1727
+ "direction",
1728
+ "body"
1729
+ ],
1730
+ "properties": {
1731
+ "target": {
1732
+ "const": "/app/messaging/setup/options"
1733
+ },
1734
+ "direction": {
1735
+ "const": "response"
1736
+ },
1737
+ "body": {
1738
+ "type": "object",
1739
+ "additionalProperties": false,
1740
+ "required": [
1741
+ "options"
1742
+ ],
1743
+ "properties": {
1744
+ "options": {
1745
+ "$ref": "#/$defs/extension"
1746
+ }
1747
+ }
1748
+ }
1749
+ }
1750
+ },
1751
+ "setupStartRequest": {
1752
+ "type": "object",
1753
+ "additionalProperties": false,
1754
+ "required": [
1755
+ "target",
1756
+ "direction",
1757
+ "body"
1758
+ ],
1759
+ "properties": {
1760
+ "target": {
1761
+ "const": "/app/messaging/setup/start"
1762
+ },
1763
+ "direction": {
1764
+ "const": "request"
1765
+ },
1766
+ "body": {
1767
+ "$ref": "#/$defs/setupStartBody"
1768
+ }
1769
+ }
1770
+ },
1771
+ "setupStartResponse": {
1772
+ "type": "object",
1773
+ "additionalProperties": false,
1774
+ "required": [
1775
+ "target",
1776
+ "direction",
1777
+ "body"
1778
+ ],
1779
+ "properties": {
1780
+ "target": {
1781
+ "const": "/app/messaging/setup/start"
1782
+ },
1783
+ "direction": {
1784
+ "const": "response"
1785
+ },
1786
+ "body": {
1787
+ "type": "object",
1788
+ "additionalProperties": false,
1789
+ "required": [
1790
+ "setup"
1791
+ ],
1792
+ "properties": {
1793
+ "setup": {
1794
+ "$ref": "#/$defs/setupState"
1795
+ }
1796
+ }
1797
+ }
1798
+ }
1799
+ },
1800
+ "setupStatusRequest": {
1801
+ "type": "object",
1802
+ "additionalProperties": false,
1803
+ "required": [
1804
+ "target",
1805
+ "direction",
1806
+ "body"
1807
+ ],
1808
+ "properties": {
1809
+ "target": {
1810
+ "const": "/app/messaging/setup/status"
1811
+ },
1812
+ "direction": {
1813
+ "const": "request"
1814
+ },
1815
+ "body": {
1816
+ "$ref": "#/$defs/setupStatusBody"
1817
+ }
1818
+ }
1819
+ },
1820
+ "setupStatusResponse": {
1821
+ "type": "object",
1822
+ "additionalProperties": false,
1823
+ "required": [
1824
+ "target",
1825
+ "direction",
1826
+ "body"
1827
+ ],
1828
+ "properties": {
1829
+ "target": {
1830
+ "const": "/app/messaging/setup/status"
1831
+ },
1832
+ "direction": {
1833
+ "const": "response"
1834
+ },
1835
+ "body": {
1836
+ "type": "object",
1837
+ "additionalProperties": false,
1838
+ "required": [
1839
+ "setup"
1840
+ ],
1841
+ "properties": {
1842
+ "setup": {
1843
+ "$ref": "#/$defs/setupState"
1844
+ }
1845
+ }
1846
+ }
1847
+ }
1848
+ },
1849
+ "surfaceListRequest": {
1850
+ "type": "object",
1851
+ "additionalProperties": false,
1852
+ "required": [
1853
+ "target",
1854
+ "direction",
1855
+ "body"
1856
+ ],
1857
+ "properties": {
1858
+ "target": {
1859
+ "const": "/app/messaging/surface/list"
1860
+ },
1861
+ "direction": {
1862
+ "const": "request"
1863
+ },
1864
+ "body": {
1865
+ "$ref": "#/$defs/surfaceListBody"
1866
+ }
1867
+ }
1868
+ },
1869
+ "surfaceListResponse": {
1870
+ "type": "object",
1871
+ "additionalProperties": false,
1872
+ "required": [
1873
+ "target",
1874
+ "direction",
1875
+ "body"
1876
+ ],
1877
+ "properties": {
1878
+ "target": {
1879
+ "const": "/app/messaging/surface/list"
1880
+ },
1881
+ "direction": {
1882
+ "const": "response"
1883
+ },
1884
+ "body": {
1885
+ "type": "object",
1886
+ "additionalProperties": false,
1887
+ "required": [
1888
+ "surfaces"
1889
+ ],
1890
+ "properties": {
1891
+ "surfaces": {
1892
+ "type": "array",
1893
+ "items": {
1894
+ "$ref": "#/$defs/messagingSurface"
1895
+ }
1896
+ }
1897
+ }
1898
+ }
1899
+ }
1900
+ },
1901
+ "surfaceDismissRequest": {
1902
+ "type": "object",
1903
+ "additionalProperties": false,
1904
+ "required": [
1905
+ "target",
1906
+ "direction",
1907
+ "body"
1908
+ ],
1909
+ "properties": {
1910
+ "target": {
1911
+ "const": "/app/messaging/surface/dismiss"
1912
+ },
1913
+ "direction": {
1914
+ "const": "request"
1915
+ },
1916
+ "body": {
1917
+ "$ref": "#/$defs/surfaceBody"
1918
+ }
1919
+ }
1920
+ },
1921
+ "surfaceDismissResponse": {
1922
+ "type": "object",
1923
+ "additionalProperties": false,
1924
+ "required": [
1925
+ "target",
1926
+ "direction",
1927
+ "body"
1928
+ ],
1929
+ "properties": {
1930
+ "target": {
1931
+ "const": "/app/messaging/surface/dismiss"
1932
+ },
1933
+ "direction": {
1934
+ "const": "response"
1935
+ },
1936
+ "body": {
1937
+ "$ref": "#/$defs/mutationBody"
1938
+ }
1939
+ }
1940
+ },
1941
+ "surfaceBindCodeCreateRequest": {
1942
+ "type": "object",
1943
+ "additionalProperties": false,
1944
+ "required": [
1945
+ "target",
1946
+ "direction",
1947
+ "body"
1948
+ ],
1949
+ "properties": {
1950
+ "target": {
1951
+ "const": "/app/messaging/surface/bind-code/create"
1952
+ },
1953
+ "direction": {
1954
+ "const": "request"
1955
+ },
1956
+ "body": {
1957
+ "$ref": "#/$defs/surfaceBindCodeBody"
1958
+ }
1959
+ }
1960
+ },
1961
+ "surfaceBindCodeCreateResponse": {
1962
+ "type": "object",
1963
+ "additionalProperties": false,
1964
+ "required": [
1965
+ "target",
1966
+ "direction",
1967
+ "body"
1968
+ ],
1969
+ "properties": {
1970
+ "target": {
1971
+ "const": "/app/messaging/surface/bind-code/create"
1972
+ },
1973
+ "direction": {
1974
+ "const": "response"
1975
+ },
1976
+ "body": {
1977
+ "type": "object",
1978
+ "additionalProperties": false,
1979
+ "required": [
1980
+ "challenge"
1981
+ ],
1982
+ "properties": {
1983
+ "challenge": {
1984
+ "$ref": "#/$defs/challengeCode"
1985
+ }
1986
+ }
1987
+ }
1988
+ }
1989
+ },
1990
+ "actorLinkCodeCreateRequest": {
1991
+ "type": "object",
1992
+ "additionalProperties": false,
1993
+ "required": [
1994
+ "target",
1995
+ "direction",
1996
+ "body"
1997
+ ],
1998
+ "properties": {
1999
+ "target": {
2000
+ "const": "/app/messaging/actor/link-code/create"
2001
+ },
2002
+ "direction": {
2003
+ "const": "request"
2004
+ },
2005
+ "body": {
2006
+ "$ref": "#/$defs/actorLinkCodeBody"
2007
+ }
2008
+ }
2009
+ },
2010
+ "actorLinkCodeCreateResponse": {
2011
+ "type": "object",
2012
+ "additionalProperties": false,
2013
+ "required": [
2014
+ "target",
2015
+ "direction",
2016
+ "body"
2017
+ ],
2018
+ "properties": {
2019
+ "target": {
2020
+ "const": "/app/messaging/actor/link-code/create"
2021
+ },
2022
+ "direction": {
2023
+ "const": "response"
2024
+ },
2025
+ "body": {
2026
+ "type": "object",
2027
+ "additionalProperties": false,
2028
+ "required": [
2029
+ "challenge"
2030
+ ],
2031
+ "properties": {
2032
+ "challenge": {
2033
+ "$ref": "#/$defs/actorLinkChallenge"
2034
+ }
2035
+ }
2036
+ }
2037
+ }
2038
+ },
2039
+ "actorLinkListRequest": {
2040
+ "type": "object",
2041
+ "additionalProperties": false,
2042
+ "required": [
2043
+ "target",
2044
+ "direction",
2045
+ "body"
2046
+ ],
2047
+ "properties": {
2048
+ "target": {
2049
+ "const": "/app/messaging/actor/link/list"
2050
+ },
2051
+ "direction": {
2052
+ "const": "request"
2053
+ },
2054
+ "body": {
2055
+ "$ref": "#/$defs/actorLinkListBody"
2056
+ }
2057
+ }
2058
+ },
2059
+ "actorLinkListResponse": {
2060
+ "type": "object",
2061
+ "additionalProperties": false,
2062
+ "required": [
2063
+ "target",
2064
+ "direction",
2065
+ "body"
2066
+ ],
2067
+ "properties": {
2068
+ "target": {
2069
+ "const": "/app/messaging/actor/link/list"
2070
+ },
2071
+ "direction": {
2072
+ "const": "response"
2073
+ },
2074
+ "body": {
2075
+ "type": "object",
2076
+ "additionalProperties": false,
2077
+ "required": [
2078
+ "links"
2079
+ ],
2080
+ "properties": {
2081
+ "links": {
2082
+ "type": "array",
2083
+ "items": {
2084
+ "$ref": "#/$defs/actorLinkView"
2085
+ }
2086
+ }
2087
+ }
2088
+ }
2089
+ }
2090
+ },
2091
+ "actorLinkDeleteRequest": {
2092
+ "type": "object",
2093
+ "additionalProperties": false,
2094
+ "required": [
2095
+ "target",
2096
+ "direction",
2097
+ "body"
2098
+ ],
2099
+ "properties": {
2100
+ "target": {
2101
+ "const": "/app/messaging/actor/link/delete"
2102
+ },
2103
+ "direction": {
2104
+ "const": "request"
2105
+ },
2106
+ "body": {
2107
+ "$ref": "#/$defs/actorLinkDeleteBody"
2108
+ }
2109
+ }
2110
+ },
2111
+ "actorLinkDeleteResponse": {
2112
+ "type": "object",
2113
+ "additionalProperties": false,
2114
+ "required": [
2115
+ "target",
2116
+ "direction",
2117
+ "body"
2118
+ ],
2119
+ "properties": {
2120
+ "target": {
2121
+ "const": "/app/messaging/actor/link/delete"
2122
+ },
2123
+ "direction": {
2124
+ "const": "response"
2125
+ },
2126
+ "body": {
2127
+ "$ref": "#/$defs/mutationBody"
2128
+ }
2129
+ }
2130
+ },
2131
+ "requestFrame": {
2132
+ "oneOf": [
2133
+ {
2134
+ "$ref": "#/$defs/providerListRequest"
2135
+ },
2136
+ {
2137
+ "$ref": "#/$defs/providerAccountListRequest"
2138
+ },
2139
+ {
2140
+ "$ref": "#/$defs/providerAccountUpdateRequest"
2141
+ },
2142
+ {
2143
+ "$ref": "#/$defs/providerAccountDeleteRequest"
2144
+ },
2145
+ {
2146
+ "$ref": "#/$defs/providerAccountTestRequest"
2147
+ },
2148
+ {
2149
+ "$ref": "#/$defs/providerAccountStatusRequest"
2150
+ },
2151
+ {
2152
+ "$ref": "#/$defs/sharedAccountGrantCreateRequest"
2153
+ },
2154
+ {
2155
+ "$ref": "#/$defs/sharedAccountGrantDeleteRequest"
2156
+ },
2157
+ {
2158
+ "$ref": "#/$defs/sharedAccountGrantListRequest"
2159
+ },
2160
+ {
2161
+ "$ref": "#/$defs/routeListRequest"
2162
+ },
2163
+ {
2164
+ "$ref": "#/$defs/routeUpdateRequest"
2165
+ },
2166
+ {
2167
+ "$ref": "#/$defs/routeDeleteRequest"
2168
+ },
2169
+ {
2170
+ "$ref": "#/$defs/setupOptionsRequest"
2171
+ },
2172
+ {
2173
+ "$ref": "#/$defs/setupStartRequest"
2174
+ },
2175
+ {
2176
+ "$ref": "#/$defs/setupStatusRequest"
2177
+ },
2178
+ {
2179
+ "$ref": "#/$defs/surfaceListRequest"
2180
+ },
2181
+ {
2182
+ "$ref": "#/$defs/surfaceDismissRequest"
2183
+ },
2184
+ {
2185
+ "$ref": "#/$defs/surfaceBindCodeCreateRequest"
2186
+ },
2187
+ {
2188
+ "$ref": "#/$defs/actorLinkCodeCreateRequest"
2189
+ },
2190
+ {
2191
+ "$ref": "#/$defs/actorLinkClaimStatusRequest"
2192
+ },
2193
+ {
2194
+ "$ref": "#/$defs/actorLinkClaimConfirmRequest"
2195
+ },
2196
+ {
2197
+ "$ref": "#/$defs/actorLinkListRequest"
2198
+ },
2199
+ {
2200
+ "$ref": "#/$defs/actorLinkDeleteRequest"
2201
+ }
2202
+ ]
2203
+ },
2204
+ "responseFrame": {
2205
+ "oneOf": [
2206
+ {
2207
+ "$ref": "#/$defs/providerListResponse"
2208
+ },
2209
+ {
2210
+ "$ref": "#/$defs/providerAccountListResponse"
2211
+ },
2212
+ {
2213
+ "$ref": "#/$defs/providerAccountUpdateResponse"
2214
+ },
2215
+ {
2216
+ "$ref": "#/$defs/providerAccountDeleteResponse"
2217
+ },
2218
+ {
2219
+ "$ref": "#/$defs/providerAccountTestResponse"
2220
+ },
2221
+ {
2222
+ "$ref": "#/$defs/providerAccountStatusResponse"
2223
+ },
2224
+ {
2225
+ "$ref": "#/$defs/sharedAccountGrantCreateResponse"
2226
+ },
2227
+ {
2228
+ "$ref": "#/$defs/sharedAccountGrantDeleteResponse"
2229
+ },
2230
+ {
2231
+ "$ref": "#/$defs/sharedAccountGrantListResponse"
2232
+ },
2233
+ {
2234
+ "$ref": "#/$defs/routeListResponse"
2235
+ },
2236
+ {
2237
+ "$ref": "#/$defs/routeUpdateResponse"
2238
+ },
2239
+ {
2240
+ "$ref": "#/$defs/routeDeleteResponse"
2241
+ },
2242
+ {
2243
+ "$ref": "#/$defs/setupOptionsResponse"
2244
+ },
2245
+ {
2246
+ "$ref": "#/$defs/setupStartResponse"
2247
+ },
2248
+ {
2249
+ "$ref": "#/$defs/setupStatusResponse"
2250
+ },
2251
+ {
2252
+ "$ref": "#/$defs/surfaceListResponse"
2253
+ },
2254
+ {
2255
+ "$ref": "#/$defs/surfaceDismissResponse"
2256
+ },
2257
+ {
2258
+ "$ref": "#/$defs/surfaceBindCodeCreateResponse"
2259
+ },
2260
+ {
2261
+ "$ref": "#/$defs/actorLinkCodeCreateResponse"
2262
+ },
2263
+ {
2264
+ "$ref": "#/$defs/actorLinkClaimStatusResponse"
2265
+ },
2266
+ {
2267
+ "$ref": "#/$defs/actorLinkClaimConfirmResponse"
2268
+ },
2269
+ {
2270
+ "$ref": "#/$defs/actorLinkClaimEventResponse"
2271
+ },
2272
+ {
2273
+ "$ref": "#/$defs/actorLinkListResponse"
2274
+ },
2275
+ {
2276
+ "$ref": "#/$defs/actorLinkDeleteResponse"
2277
+ }
2278
+ ]
2279
+ },
2280
+ "frame": {
2281
+ "oneOf": [
2282
+ {
2283
+ "$ref": "#/$defs/requestFrame"
2284
+ },
2285
+ {
2286
+ "$ref": "#/$defs/responseFrame"
2287
+ }
2288
+ ]
2289
+ },
2290
+ "actorLinkTarget": {
2291
+ "oneOf": [
2292
+ {
2293
+ "type": "object",
2294
+ "additionalProperties": false,
2295
+ "required": [
2296
+ "audience"
2297
+ ],
2298
+ "properties": {
2299
+ "audience": {
2300
+ "const": "personal"
2301
+ }
2302
+ }
2303
+ },
2304
+ {
2305
+ "type": "object",
2306
+ "additionalProperties": false,
2307
+ "required": [
2308
+ "audience",
2309
+ "surfaceId"
2310
+ ],
2311
+ "properties": {
2312
+ "audience": {
2313
+ "const": "shared"
2314
+ },
2315
+ "surfaceId": {
2316
+ "$ref": "#/$defs/id"
2317
+ }
2318
+ }
2319
+ }
2320
+ ]
2321
+ },
2322
+ "messagingAddress": {
2323
+ "type": "object",
2324
+ "additionalProperties": false,
2325
+ "required": [
2326
+ "provider",
2327
+ "accountId",
2328
+ "conversationId",
2329
+ "audience"
2330
+ ],
2331
+ "properties": {
2332
+ "provider": {
2333
+ "$ref": "#/$defs/providerId"
2334
+ },
2335
+ "accountId": {
2336
+ "$ref": "#/$defs/id"
2337
+ },
2338
+ "conversationId": {
2339
+ "$ref": "#/$defs/id"
2340
+ },
2341
+ "laneId": {
2342
+ "$ref": "#/$defs/id"
2343
+ },
2344
+ "audience": {
2345
+ "$ref": "#/$defs/audience"
2346
+ }
2347
+ }
2348
+ },
2349
+ "externalActor": {
2350
+ "type": "object",
2351
+ "additionalProperties": false,
2352
+ "required": [
2353
+ "provider",
2354
+ "accountId",
2355
+ "externalUserId"
2356
+ ],
2357
+ "properties": {
2358
+ "provider": {
2359
+ "$ref": "#/$defs/providerId"
2360
+ },
2361
+ "accountId": {
2362
+ "$ref": "#/$defs/id"
2363
+ },
2364
+ "externalUserId": {
2365
+ "$ref": "#/$defs/id"
2366
+ },
2367
+ "displayName": {
2368
+ "$ref": "#/$defs/id"
2369
+ }
2370
+ }
2371
+ },
2372
+ "actorLinkCandidate": {
2373
+ "type": "object",
2374
+ "additionalProperties": false,
2375
+ "required": [
2376
+ "actor",
2377
+ "address",
2378
+ "eventId"
2379
+ ],
2380
+ "properties": {
2381
+ "actor": {
2382
+ "$ref": "#/$defs/externalActor"
2383
+ },
2384
+ "address": {
2385
+ "$ref": "#/$defs/messagingAddress"
2386
+ },
2387
+ "eventId": {
2388
+ "$ref": "#/$defs/id"
2389
+ }
2390
+ }
2391
+ },
2392
+ "actorLinkClaim": {
2393
+ "type": "object",
2394
+ "additionalProperties": false,
2395
+ "required": [
2396
+ "challengeId",
2397
+ "provider",
2398
+ "placement",
2399
+ "accountId",
2400
+ "target",
2401
+ "expiresAtMs",
2402
+ "lifecycle"
2403
+ ],
2404
+ "properties": {
2405
+ "challengeId": {
2406
+ "$ref": "#/$defs/id"
2407
+ },
2408
+ "provider": {
2409
+ "$ref": "#/$defs/providerId"
2410
+ },
2411
+ "placement": {
2412
+ "$ref": "#/$defs/placement"
2413
+ },
2414
+ "accountId": {
2415
+ "$ref": "#/$defs/id"
2416
+ },
2417
+ "target": {
2418
+ "$ref": "#/$defs/actorLinkTarget"
2419
+ },
2420
+ "expiresAtMs": {
2421
+ "type": "integer",
2422
+ "minimum": 0
2423
+ },
2424
+ "lifecycle": {
2425
+ "$ref": "#/$defs/actorLinkClaimLifecycle"
2426
+ }
2427
+ }
2428
+ },
2429
+ "actorLinkChallenge": {
2430
+ "type": "object",
2431
+ "additionalProperties": false,
2432
+ "required": [
2433
+ "challengeId",
2434
+ "code",
2435
+ "command",
2436
+ "target",
2437
+ "expiresAtMs"
2438
+ ],
2439
+ "properties": {
2440
+ "challengeId": {
2441
+ "$ref": "#/$defs/id"
2442
+ },
2443
+ "code": {
2444
+ "$ref": "#/$defs/id"
2445
+ },
2446
+ "command": {
2447
+ "$ref": "#/$defs/id"
2448
+ },
2449
+ "target": {
2450
+ "$ref": "#/$defs/actorLinkTarget"
2451
+ },
2452
+ "expiresAtMs": {
2453
+ "type": "integer",
2454
+ "minimum": 0
2455
+ }
2456
+ }
2457
+ },
2458
+ "actorLinkClaimBody": {
2459
+ "type": "object",
2460
+ "additionalProperties": false,
2461
+ "required": [
2462
+ "provider",
2463
+ "placement",
2464
+ "challengeId"
2465
+ ],
2466
+ "properties": {
2467
+ "provider": {
2468
+ "$ref": "#/$defs/providerId"
2469
+ },
2470
+ "placement": {
2471
+ "$ref": "#/$defs/placement"
2472
+ },
2473
+ "challengeId": {
2474
+ "$ref": "#/$defs/id"
2475
+ }
2476
+ }
2477
+ },
2478
+ "actorLinkClaimResponseBody": {
2479
+ "type": "object",
2480
+ "additionalProperties": false,
2481
+ "required": [
2482
+ "claim"
2483
+ ],
2484
+ "properties": {
2485
+ "claim": {
2486
+ "$ref": "#/$defs/actorLinkClaim"
2487
+ }
2488
+ }
2489
+ },
2490
+ "actorLinkClaimStatusRequest": {
2491
+ "type": "object",
2492
+ "additionalProperties": false,
2493
+ "required": [
2494
+ "target",
2495
+ "direction",
2496
+ "body"
2497
+ ],
2498
+ "properties": {
2499
+ "target": {
2500
+ "const": "/app/messaging/actor/link-claim/status"
2501
+ },
2502
+ "direction": {
2503
+ "const": "request"
2504
+ },
2505
+ "body": {
2506
+ "$ref": "#/$defs/actorLinkClaimBody"
2507
+ }
2508
+ }
2509
+ },
2510
+ "actorLinkClaimStatusResponse": {
2511
+ "type": "object",
2512
+ "additionalProperties": false,
2513
+ "required": [
2514
+ "target",
2515
+ "direction",
2516
+ "body"
2517
+ ],
2518
+ "properties": {
2519
+ "target": {
2520
+ "const": "/app/messaging/actor/link-claim/status"
2521
+ },
2522
+ "direction": {
2523
+ "const": "response"
2524
+ },
2525
+ "body": {
2526
+ "$ref": "#/$defs/actorLinkClaimResponseBody"
2527
+ }
2528
+ }
2529
+ },
2530
+ "actorLinkClaimConfirmRequest": {
2531
+ "type": "object",
2532
+ "additionalProperties": false,
2533
+ "required": [
2534
+ "target",
2535
+ "direction",
2536
+ "body"
2537
+ ],
2538
+ "properties": {
2539
+ "target": {
2540
+ "const": "/app/messaging/actor/link-claim/confirm"
2541
+ },
2542
+ "direction": {
2543
+ "const": "request"
2544
+ },
2545
+ "body": {
2546
+ "$ref": "#/$defs/actorLinkClaimBody"
2547
+ }
2548
+ }
2549
+ },
2550
+ "actorLinkClaimConfirmResponse": {
2551
+ "type": "object",
2552
+ "additionalProperties": false,
2553
+ "required": [
2554
+ "target",
2555
+ "direction",
2556
+ "body"
2557
+ ],
2558
+ "properties": {
2559
+ "target": {
2560
+ "const": "/app/messaging/actor/link-claim/confirm"
2561
+ },
2562
+ "direction": {
2563
+ "const": "response"
2564
+ },
2565
+ "body": {
2566
+ "$ref": "#/$defs/actorLinkClaimResponseBody"
2567
+ }
2568
+ }
2569
+ },
2570
+ "actorLinkClaimEventResponse": {
2571
+ "type": "object",
2572
+ "additionalProperties": false,
2573
+ "required": [
2574
+ "target",
2575
+ "direction",
2576
+ "body"
2577
+ ],
2578
+ "properties": {
2579
+ "target": {
2580
+ "const": "/app/messaging/actor/link-claim/changed"
2581
+ },
2582
+ "direction": {
2583
+ "const": "response"
2584
+ },
2585
+ "body": {
2586
+ "$ref": "#/$defs/actorLinkClaimResponseBody"
2587
+ }
2588
+ }
2589
+ },
2590
+ "actorLinkClaimLifecycle": {
2591
+ "oneOf": [
2592
+ {
2593
+ "type": "object",
2594
+ "additionalProperties": false,
2595
+ "required": [
2596
+ "state"
2597
+ ],
2598
+ "properties": {
2599
+ "state": {
2600
+ "const": "issued"
2601
+ }
2602
+ }
2603
+ },
2604
+ {
2605
+ "type": "object",
2606
+ "additionalProperties": false,
2607
+ "required": [
2608
+ "state"
2609
+ ],
2610
+ "properties": {
2611
+ "state": {
2612
+ "const": "superseded"
2613
+ }
2614
+ }
2615
+ },
2616
+ {
2617
+ "type": "object",
2618
+ "additionalProperties": false,
2619
+ "required": [
2620
+ "state"
2621
+ ],
2622
+ "properties": {
2623
+ "state": {
2624
+ "const": "expired"
2625
+ }
2626
+ }
2627
+ },
2628
+ {
2629
+ "type": "object",
2630
+ "additionalProperties": false,
2631
+ "required": [
2632
+ "state",
2633
+ "candidate"
2634
+ ],
2635
+ "properties": {
2636
+ "state": {
2637
+ "const": "awaiting_confirmation"
2638
+ },
2639
+ "candidate": {
2640
+ "$ref": "#/$defs/actorLinkCandidate"
2641
+ }
2642
+ }
2643
+ },
2644
+ {
2645
+ "type": "object",
2646
+ "additionalProperties": false,
2647
+ "required": [
2648
+ "state",
2649
+ "candidate"
2650
+ ],
2651
+ "properties": {
2652
+ "state": {
2653
+ "const": "confirming"
2654
+ },
2655
+ "candidate": {
2656
+ "$ref": "#/$defs/actorLinkCandidate"
2657
+ }
2658
+ }
2659
+ },
2660
+ {
2661
+ "type": "object",
2662
+ "additionalProperties": false,
2663
+ "required": [
2664
+ "state",
2665
+ "candidate",
2666
+ "linkId"
2667
+ ],
2668
+ "properties": {
2669
+ "state": {
2670
+ "const": "completed"
2671
+ },
2672
+ "candidate": {
2673
+ "$ref": "#/$defs/actorLinkCandidate"
2674
+ },
2675
+ "linkId": {
2676
+ "$ref": "#/$defs/id"
2677
+ }
2678
+ }
2679
+ }
2680
+ ]
2681
+ }
2682
+ }
2683
+ }