@voyant-travel/openapi 0.2.6 → 0.3.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 (41) hide show
  1. package/package.json +8 -5
  2. package/spec/admin/accommodations.json +1395 -0
  3. package/spec/admin/action-ledger.json +6202 -0
  4. package/spec/admin/booking-requirements.json +5689 -0
  5. package/spec/admin/bookings.json +18794 -0
  6. package/spec/admin/catalog.json +690 -0
  7. package/spec/admin/distribution.json +19581 -0
  8. package/spec/admin/external-refs.json +1382 -0
  9. package/spec/admin/extras.json +4648 -0
  10. package/spec/admin/finance.json +35506 -0
  11. package/spec/admin/identity.json +4072 -0
  12. package/spec/admin/legal.json +14339 -0
  13. package/spec/admin/markets.json +5286 -0
  14. package/spec/admin/notifications.json +8409 -0
  15. package/spec/admin/operations.json +39806 -0
  16. package/spec/admin/operator-settings.json +1389 -0
  17. package/spec/admin/pricing.json +10640 -0
  18. package/spec/admin/products.json +22131 -0
  19. package/spec/admin/promotions.json +2730 -0
  20. package/spec/admin/quotes.json +7033 -0
  21. package/spec/admin/relationships.json +13911 -0
  22. package/spec/admin/sellability.json +4840 -0
  23. package/spec/admin/storefront.json +1953 -0
  24. package/spec/admin/suppliers.json +5850 -0
  25. package/spec/admin/trips.json +9357 -0
  26. package/spec/framework-admin.json +2812 -552
  27. package/spec/framework-openapi.json +2710 -276
  28. package/spec/framework-storefront.json +178 -4
  29. package/spec/storefront/booking-requirements.json +367 -0
  30. package/spec/storefront/bookings.json +6137 -0
  31. package/spec/storefront/catalog.json +690 -0
  32. package/spec/storefront/customer-portal.json +6038 -0
  33. package/spec/storefront/finance.json +4824 -0
  34. package/spec/storefront/legal.json +2082 -0
  35. package/spec/storefront/markets.json +256 -0
  36. package/spec/storefront/operator-settings.json +309 -0
  37. package/spec/storefront/pricing.json +585 -0
  38. package/spec/storefront/products.json +2910 -0
  39. package/spec/storefront/storefront-verification.json +909 -0
  40. package/spec/storefront/storefront.json +4067 -0
  41. package/spec/storefront/trips.json +9357 -0
@@ -0,0 +1,4072 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "Voyant Framework API",
5
+ "version": "0.0.0",
6
+ "description": "Generated from the Voyant framework's standard module composition. Do not edit by hand."
7
+ },
8
+ "components": {
9
+ "schemas": {
10
+ "CatalogSearchFilter": {
11
+ "anyOf": [
12
+ {
13
+ "type": "object",
14
+ "properties": {
15
+ "kind": {
16
+ "type": "string",
17
+ "enum": [
18
+ "eq"
19
+ ]
20
+ },
21
+ "field": {
22
+ "type": "string",
23
+ "minLength": 1
24
+ },
25
+ "value": {
26
+ "anyOf": [
27
+ {
28
+ "type": "string"
29
+ },
30
+ {
31
+ "type": "number"
32
+ },
33
+ {
34
+ "type": "boolean"
35
+ }
36
+ ]
37
+ }
38
+ },
39
+ "required": [
40
+ "kind",
41
+ "field",
42
+ "value"
43
+ ]
44
+ },
45
+ {
46
+ "type": "object",
47
+ "properties": {
48
+ "kind": {
49
+ "type": "string",
50
+ "enum": [
51
+ "in"
52
+ ]
53
+ },
54
+ "field": {
55
+ "type": "string",
56
+ "minLength": 1
57
+ },
58
+ "values": {
59
+ "type": "array",
60
+ "items": {
61
+ "anyOf": [
62
+ {
63
+ "type": "string"
64
+ },
65
+ {
66
+ "type": "number"
67
+ }
68
+ ]
69
+ }
70
+ }
71
+ },
72
+ "required": [
73
+ "kind",
74
+ "field",
75
+ "values"
76
+ ]
77
+ },
78
+ {
79
+ "type": "object",
80
+ "properties": {
81
+ "kind": {
82
+ "type": "string",
83
+ "enum": [
84
+ "range"
85
+ ]
86
+ },
87
+ "field": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ "gte": {
92
+ "type": "number"
93
+ },
94
+ "lte": {
95
+ "type": "number"
96
+ }
97
+ },
98
+ "required": [
99
+ "kind",
100
+ "field"
101
+ ]
102
+ },
103
+ {
104
+ "type": "object",
105
+ "properties": {
106
+ "kind": {
107
+ "type": "string",
108
+ "enum": [
109
+ "and"
110
+ ]
111
+ },
112
+ "clauses": {
113
+ "type": "array",
114
+ "items": {
115
+ "$ref": "#/components/schemas/CatalogSearchFilter"
116
+ }
117
+ }
118
+ },
119
+ "required": [
120
+ "kind",
121
+ "clauses"
122
+ ]
123
+ },
124
+ {
125
+ "type": "object",
126
+ "properties": {
127
+ "kind": {
128
+ "type": "string",
129
+ "enum": [
130
+ "or"
131
+ ]
132
+ },
133
+ "clauses": {
134
+ "type": "array",
135
+ "items": {
136
+ "$ref": "#/components/schemas/CatalogSearchFilter"
137
+ }
138
+ }
139
+ },
140
+ "required": [
141
+ "kind",
142
+ "clauses"
143
+ ]
144
+ }
145
+ ]
146
+ }
147
+ },
148
+ "parameters": {}
149
+ },
150
+ "paths": {
151
+ "/v1/admin/identity/contact-points": {
152
+ "get": {
153
+ "tags": [
154
+ "Identity"
155
+ ],
156
+ "summary": "List contact points",
157
+ "parameters": [
158
+ {
159
+ "schema": {
160
+ "type": "integer",
161
+ "minimum": 1,
162
+ "maximum": 200,
163
+ "default": 50
164
+ },
165
+ "required": false,
166
+ "name": "limit",
167
+ "in": "query"
168
+ },
169
+ {
170
+ "schema": {
171
+ "type": [
172
+ "integer",
173
+ "null"
174
+ ],
175
+ "minimum": 0,
176
+ "default": 0
177
+ },
178
+ "required": false,
179
+ "name": "offset",
180
+ "in": "query"
181
+ },
182
+ {
183
+ "schema": {
184
+ "type": "string",
185
+ "maxLength": 100
186
+ },
187
+ "required": false,
188
+ "name": "entityType",
189
+ "in": "query"
190
+ },
191
+ {
192
+ "schema": {
193
+ "type": "string",
194
+ "maxLength": 100
195
+ },
196
+ "required": false,
197
+ "name": "entityId",
198
+ "in": "query"
199
+ },
200
+ {
201
+ "schema": {
202
+ "type": "string",
203
+ "enum": [
204
+ "email",
205
+ "phone",
206
+ "mobile",
207
+ "whatsapp",
208
+ "website",
209
+ "sms",
210
+ "fax",
211
+ "social",
212
+ "other"
213
+ ]
214
+ },
215
+ "required": false,
216
+ "name": "kind",
217
+ "in": "query"
218
+ },
219
+ {
220
+ "schema": {
221
+ "type": "string",
222
+ "enum": [
223
+ "0",
224
+ "1",
225
+ "true",
226
+ "false"
227
+ ]
228
+ },
229
+ "required": false,
230
+ "name": "isPrimary",
231
+ "in": "query"
232
+ },
233
+ {
234
+ "schema": {
235
+ "type": "string"
236
+ },
237
+ "required": false,
238
+ "name": "search",
239
+ "in": "query"
240
+ }
241
+ ],
242
+ "responses": {
243
+ "200": {
244
+ "description": "Paginated contact points",
245
+ "content": {
246
+ "application/json": {
247
+ "schema": {
248
+ "type": "object",
249
+ "properties": {
250
+ "data": {
251
+ "type": "array",
252
+ "items": {
253
+ "type": "object",
254
+ "properties": {
255
+ "id": {
256
+ "type": "string"
257
+ },
258
+ "entityType": {
259
+ "type": "string"
260
+ },
261
+ "entityId": {
262
+ "type": "string"
263
+ },
264
+ "kind": {
265
+ "type": "string",
266
+ "enum": [
267
+ "email",
268
+ "phone",
269
+ "mobile",
270
+ "whatsapp",
271
+ "website",
272
+ "sms",
273
+ "fax",
274
+ "social",
275
+ "other"
276
+ ]
277
+ },
278
+ "label": {
279
+ "type": [
280
+ "string",
281
+ "null"
282
+ ]
283
+ },
284
+ "value": {
285
+ "type": "string"
286
+ },
287
+ "normalizedValue": {
288
+ "type": [
289
+ "string",
290
+ "null"
291
+ ]
292
+ },
293
+ "isPrimary": {
294
+ "type": "boolean"
295
+ },
296
+ "notes": {
297
+ "type": [
298
+ "string",
299
+ "null"
300
+ ]
301
+ },
302
+ "metadata": {
303
+ "type": [
304
+ "object",
305
+ "null"
306
+ ],
307
+ "additionalProperties": {}
308
+ },
309
+ "createdAt": {
310
+ "type": "string"
311
+ },
312
+ "updatedAt": {
313
+ "type": "string"
314
+ }
315
+ },
316
+ "required": [
317
+ "id",
318
+ "entityType",
319
+ "entityId",
320
+ "kind",
321
+ "label",
322
+ "value",
323
+ "normalizedValue",
324
+ "isPrimary",
325
+ "notes",
326
+ "metadata",
327
+ "createdAt",
328
+ "updatedAt"
329
+ ]
330
+ }
331
+ },
332
+ "total": {
333
+ "type": "integer"
334
+ },
335
+ "limit": {
336
+ "type": "integer"
337
+ },
338
+ "offset": {
339
+ "type": "integer"
340
+ }
341
+ },
342
+ "required": [
343
+ "data",
344
+ "total",
345
+ "limit",
346
+ "offset"
347
+ ]
348
+ }
349
+ }
350
+ }
351
+ }
352
+ }
353
+ },
354
+ "post": {
355
+ "tags": [
356
+ "Identity"
357
+ ],
358
+ "summary": "Create a contact point",
359
+ "requestBody": {
360
+ "required": true,
361
+ "content": {
362
+ "application/json": {
363
+ "schema": {
364
+ "type": "object",
365
+ "properties": {
366
+ "entityType": {
367
+ "type": "string",
368
+ "minLength": 1,
369
+ "maxLength": 100
370
+ },
371
+ "entityId": {
372
+ "type": "string",
373
+ "minLength": 1,
374
+ "maxLength": 100
375
+ },
376
+ "kind": {
377
+ "type": "string",
378
+ "enum": [
379
+ "email",
380
+ "phone",
381
+ "mobile",
382
+ "whatsapp",
383
+ "website",
384
+ "sms",
385
+ "fax",
386
+ "social",
387
+ "other"
388
+ ]
389
+ },
390
+ "label": {
391
+ "type": [
392
+ "string",
393
+ "null"
394
+ ],
395
+ "maxLength": 100
396
+ },
397
+ "value": {
398
+ "type": "string",
399
+ "minLength": 1,
400
+ "maxLength": 500
401
+ },
402
+ "normalizedValue": {
403
+ "type": [
404
+ "string",
405
+ "null"
406
+ ],
407
+ "maxLength": 500
408
+ },
409
+ "isPrimary": {
410
+ "type": "boolean",
411
+ "default": false
412
+ },
413
+ "notes": {
414
+ "type": [
415
+ "string",
416
+ "null"
417
+ ]
418
+ },
419
+ "metadata": {
420
+ "type": [
421
+ "object",
422
+ "null"
423
+ ],
424
+ "additionalProperties": {}
425
+ }
426
+ },
427
+ "required": [
428
+ "entityType",
429
+ "entityId",
430
+ "kind",
431
+ "value"
432
+ ]
433
+ }
434
+ }
435
+ }
436
+ },
437
+ "responses": {
438
+ "201": {
439
+ "description": "The created contact point",
440
+ "content": {
441
+ "application/json": {
442
+ "schema": {
443
+ "type": "object",
444
+ "properties": {
445
+ "data": {
446
+ "type": "object",
447
+ "properties": {
448
+ "id": {
449
+ "type": "string"
450
+ },
451
+ "entityType": {
452
+ "type": "string"
453
+ },
454
+ "entityId": {
455
+ "type": "string"
456
+ },
457
+ "kind": {
458
+ "type": "string",
459
+ "enum": [
460
+ "email",
461
+ "phone",
462
+ "mobile",
463
+ "whatsapp",
464
+ "website",
465
+ "sms",
466
+ "fax",
467
+ "social",
468
+ "other"
469
+ ]
470
+ },
471
+ "label": {
472
+ "type": [
473
+ "string",
474
+ "null"
475
+ ]
476
+ },
477
+ "value": {
478
+ "type": "string"
479
+ },
480
+ "normalizedValue": {
481
+ "type": [
482
+ "string",
483
+ "null"
484
+ ]
485
+ },
486
+ "isPrimary": {
487
+ "type": "boolean"
488
+ },
489
+ "notes": {
490
+ "type": [
491
+ "string",
492
+ "null"
493
+ ]
494
+ },
495
+ "metadata": {
496
+ "type": [
497
+ "object",
498
+ "null"
499
+ ],
500
+ "additionalProperties": {}
501
+ },
502
+ "createdAt": {
503
+ "type": "string"
504
+ },
505
+ "updatedAt": {
506
+ "type": "string"
507
+ }
508
+ },
509
+ "required": [
510
+ "id",
511
+ "entityType",
512
+ "entityId",
513
+ "kind",
514
+ "label",
515
+ "value",
516
+ "normalizedValue",
517
+ "isPrimary",
518
+ "notes",
519
+ "metadata",
520
+ "createdAt",
521
+ "updatedAt"
522
+ ]
523
+ }
524
+ },
525
+ "required": [
526
+ "data"
527
+ ]
528
+ }
529
+ }
530
+ }
531
+ },
532
+ "400": {
533
+ "description": "invalid_request",
534
+ "content": {
535
+ "application/json": {
536
+ "schema": {
537
+ "type": "object",
538
+ "properties": {
539
+ "error": {
540
+ "type": "string"
541
+ }
542
+ },
543
+ "required": [
544
+ "error"
545
+ ]
546
+ }
547
+ }
548
+ }
549
+ }
550
+ }
551
+ }
552
+ },
553
+ "/v1/admin/identity/contact-points/{id}": {
554
+ "get": {
555
+ "tags": [
556
+ "Identity"
557
+ ],
558
+ "summary": "Get a contact point by id",
559
+ "parameters": [
560
+ {
561
+ "schema": {
562
+ "type": "string"
563
+ },
564
+ "required": true,
565
+ "name": "id",
566
+ "in": "path"
567
+ }
568
+ ],
569
+ "responses": {
570
+ "200": {
571
+ "description": "A contact point by id",
572
+ "content": {
573
+ "application/json": {
574
+ "schema": {
575
+ "type": "object",
576
+ "properties": {
577
+ "data": {
578
+ "type": "object",
579
+ "properties": {
580
+ "id": {
581
+ "type": "string"
582
+ },
583
+ "entityType": {
584
+ "type": "string"
585
+ },
586
+ "entityId": {
587
+ "type": "string"
588
+ },
589
+ "kind": {
590
+ "type": "string",
591
+ "enum": [
592
+ "email",
593
+ "phone",
594
+ "mobile",
595
+ "whatsapp",
596
+ "website",
597
+ "sms",
598
+ "fax",
599
+ "social",
600
+ "other"
601
+ ]
602
+ },
603
+ "label": {
604
+ "type": [
605
+ "string",
606
+ "null"
607
+ ]
608
+ },
609
+ "value": {
610
+ "type": "string"
611
+ },
612
+ "normalizedValue": {
613
+ "type": [
614
+ "string",
615
+ "null"
616
+ ]
617
+ },
618
+ "isPrimary": {
619
+ "type": "boolean"
620
+ },
621
+ "notes": {
622
+ "type": [
623
+ "string",
624
+ "null"
625
+ ]
626
+ },
627
+ "metadata": {
628
+ "type": [
629
+ "object",
630
+ "null"
631
+ ],
632
+ "additionalProperties": {}
633
+ },
634
+ "createdAt": {
635
+ "type": "string"
636
+ },
637
+ "updatedAt": {
638
+ "type": "string"
639
+ }
640
+ },
641
+ "required": [
642
+ "id",
643
+ "entityType",
644
+ "entityId",
645
+ "kind",
646
+ "label",
647
+ "value",
648
+ "normalizedValue",
649
+ "isPrimary",
650
+ "notes",
651
+ "metadata",
652
+ "createdAt",
653
+ "updatedAt"
654
+ ]
655
+ }
656
+ },
657
+ "required": [
658
+ "data"
659
+ ]
660
+ }
661
+ }
662
+ }
663
+ },
664
+ "404": {
665
+ "description": "Contact point not found",
666
+ "content": {
667
+ "application/json": {
668
+ "schema": {
669
+ "type": "object",
670
+ "properties": {
671
+ "error": {
672
+ "type": "string"
673
+ }
674
+ },
675
+ "required": [
676
+ "error"
677
+ ]
678
+ }
679
+ }
680
+ }
681
+ }
682
+ }
683
+ },
684
+ "patch": {
685
+ "tags": [
686
+ "Identity"
687
+ ],
688
+ "summary": "Update a contact point",
689
+ "parameters": [
690
+ {
691
+ "schema": {
692
+ "type": "string"
693
+ },
694
+ "required": true,
695
+ "name": "id",
696
+ "in": "path"
697
+ }
698
+ ],
699
+ "requestBody": {
700
+ "required": true,
701
+ "content": {
702
+ "application/json": {
703
+ "schema": {
704
+ "type": "object",
705
+ "properties": {
706
+ "entityType": {
707
+ "type": "string",
708
+ "minLength": 1,
709
+ "maxLength": 100
710
+ },
711
+ "entityId": {
712
+ "type": "string",
713
+ "minLength": 1,
714
+ "maxLength": 100
715
+ },
716
+ "kind": {
717
+ "type": "string",
718
+ "enum": [
719
+ "email",
720
+ "phone",
721
+ "mobile",
722
+ "whatsapp",
723
+ "website",
724
+ "sms",
725
+ "fax",
726
+ "social",
727
+ "other"
728
+ ]
729
+ },
730
+ "label": {
731
+ "type": [
732
+ "string",
733
+ "null"
734
+ ],
735
+ "maxLength": 100
736
+ },
737
+ "value": {
738
+ "type": "string",
739
+ "minLength": 1,
740
+ "maxLength": 500
741
+ },
742
+ "normalizedValue": {
743
+ "type": [
744
+ "string",
745
+ "null"
746
+ ],
747
+ "maxLength": 500
748
+ },
749
+ "isPrimary": {
750
+ "type": "boolean",
751
+ "default": false
752
+ },
753
+ "notes": {
754
+ "type": [
755
+ "string",
756
+ "null"
757
+ ]
758
+ },
759
+ "metadata": {
760
+ "type": [
761
+ "object",
762
+ "null"
763
+ ],
764
+ "additionalProperties": {}
765
+ }
766
+ }
767
+ }
768
+ }
769
+ }
770
+ },
771
+ "responses": {
772
+ "200": {
773
+ "description": "The updated contact point",
774
+ "content": {
775
+ "application/json": {
776
+ "schema": {
777
+ "type": "object",
778
+ "properties": {
779
+ "data": {
780
+ "type": "object",
781
+ "properties": {
782
+ "id": {
783
+ "type": "string"
784
+ },
785
+ "entityType": {
786
+ "type": "string"
787
+ },
788
+ "entityId": {
789
+ "type": "string"
790
+ },
791
+ "kind": {
792
+ "type": "string",
793
+ "enum": [
794
+ "email",
795
+ "phone",
796
+ "mobile",
797
+ "whatsapp",
798
+ "website",
799
+ "sms",
800
+ "fax",
801
+ "social",
802
+ "other"
803
+ ]
804
+ },
805
+ "label": {
806
+ "type": [
807
+ "string",
808
+ "null"
809
+ ]
810
+ },
811
+ "value": {
812
+ "type": "string"
813
+ },
814
+ "normalizedValue": {
815
+ "type": [
816
+ "string",
817
+ "null"
818
+ ]
819
+ },
820
+ "isPrimary": {
821
+ "type": "boolean"
822
+ },
823
+ "notes": {
824
+ "type": [
825
+ "string",
826
+ "null"
827
+ ]
828
+ },
829
+ "metadata": {
830
+ "type": [
831
+ "object",
832
+ "null"
833
+ ],
834
+ "additionalProperties": {}
835
+ },
836
+ "createdAt": {
837
+ "type": "string"
838
+ },
839
+ "updatedAt": {
840
+ "type": "string"
841
+ }
842
+ },
843
+ "required": [
844
+ "id",
845
+ "entityType",
846
+ "entityId",
847
+ "kind",
848
+ "label",
849
+ "value",
850
+ "normalizedValue",
851
+ "isPrimary",
852
+ "notes",
853
+ "metadata",
854
+ "createdAt",
855
+ "updatedAt"
856
+ ]
857
+ }
858
+ },
859
+ "required": [
860
+ "data"
861
+ ]
862
+ }
863
+ }
864
+ }
865
+ },
866
+ "400": {
867
+ "description": "invalid_request",
868
+ "content": {
869
+ "application/json": {
870
+ "schema": {
871
+ "type": "object",
872
+ "properties": {
873
+ "error": {
874
+ "type": "string"
875
+ }
876
+ },
877
+ "required": [
878
+ "error"
879
+ ]
880
+ }
881
+ }
882
+ }
883
+ },
884
+ "404": {
885
+ "description": "Contact point not found",
886
+ "content": {
887
+ "application/json": {
888
+ "schema": {
889
+ "type": "object",
890
+ "properties": {
891
+ "error": {
892
+ "type": "string"
893
+ }
894
+ },
895
+ "required": [
896
+ "error"
897
+ ]
898
+ }
899
+ }
900
+ }
901
+ }
902
+ }
903
+ },
904
+ "delete": {
905
+ "tags": [
906
+ "Identity"
907
+ ],
908
+ "summary": "Delete a contact point",
909
+ "parameters": [
910
+ {
911
+ "schema": {
912
+ "type": "string"
913
+ },
914
+ "required": true,
915
+ "name": "id",
916
+ "in": "path"
917
+ }
918
+ ],
919
+ "responses": {
920
+ "200": {
921
+ "description": "Contact point deleted",
922
+ "content": {
923
+ "application/json": {
924
+ "schema": {
925
+ "type": "object",
926
+ "properties": {
927
+ "success": {
928
+ "type": "boolean",
929
+ "enum": [
930
+ true
931
+ ]
932
+ }
933
+ },
934
+ "required": [
935
+ "success"
936
+ ]
937
+ }
938
+ }
939
+ }
940
+ },
941
+ "404": {
942
+ "description": "Contact point not found",
943
+ "content": {
944
+ "application/json": {
945
+ "schema": {
946
+ "type": "object",
947
+ "properties": {
948
+ "error": {
949
+ "type": "string"
950
+ }
951
+ },
952
+ "required": [
953
+ "error"
954
+ ]
955
+ }
956
+ }
957
+ }
958
+ }
959
+ }
960
+ }
961
+ },
962
+ "/v1/admin/identity/addresses": {
963
+ "get": {
964
+ "tags": [
965
+ "Identity"
966
+ ],
967
+ "summary": "List addresses",
968
+ "parameters": [
969
+ {
970
+ "schema": {
971
+ "type": "integer",
972
+ "minimum": 1,
973
+ "maximum": 200,
974
+ "default": 50
975
+ },
976
+ "required": false,
977
+ "name": "limit",
978
+ "in": "query"
979
+ },
980
+ {
981
+ "schema": {
982
+ "type": [
983
+ "integer",
984
+ "null"
985
+ ],
986
+ "minimum": 0,
987
+ "default": 0
988
+ },
989
+ "required": false,
990
+ "name": "offset",
991
+ "in": "query"
992
+ },
993
+ {
994
+ "schema": {
995
+ "type": "string",
996
+ "maxLength": 100
997
+ },
998
+ "required": false,
999
+ "name": "entityType",
1000
+ "in": "query"
1001
+ },
1002
+ {
1003
+ "schema": {
1004
+ "type": "string",
1005
+ "maxLength": 100
1006
+ },
1007
+ "required": false,
1008
+ "name": "entityId",
1009
+ "in": "query"
1010
+ },
1011
+ {
1012
+ "schema": {
1013
+ "type": "string",
1014
+ "enum": [
1015
+ "primary",
1016
+ "billing",
1017
+ "shipping",
1018
+ "mailing",
1019
+ "meeting",
1020
+ "service",
1021
+ "legal",
1022
+ "other"
1023
+ ]
1024
+ },
1025
+ "required": false,
1026
+ "name": "label",
1027
+ "in": "query"
1028
+ },
1029
+ {
1030
+ "schema": {
1031
+ "type": "string",
1032
+ "enum": [
1033
+ "0",
1034
+ "1",
1035
+ "true",
1036
+ "false"
1037
+ ]
1038
+ },
1039
+ "required": false,
1040
+ "name": "isPrimary",
1041
+ "in": "query"
1042
+ },
1043
+ {
1044
+ "schema": {
1045
+ "type": "string"
1046
+ },
1047
+ "required": false,
1048
+ "name": "search",
1049
+ "in": "query"
1050
+ }
1051
+ ],
1052
+ "responses": {
1053
+ "200": {
1054
+ "description": "Paginated addresses",
1055
+ "content": {
1056
+ "application/json": {
1057
+ "schema": {
1058
+ "type": "object",
1059
+ "properties": {
1060
+ "data": {
1061
+ "type": "array",
1062
+ "items": {
1063
+ "type": "object",
1064
+ "properties": {
1065
+ "id": {
1066
+ "type": "string"
1067
+ },
1068
+ "entityType": {
1069
+ "type": "string"
1070
+ },
1071
+ "entityId": {
1072
+ "type": "string"
1073
+ },
1074
+ "label": {
1075
+ "type": "string",
1076
+ "enum": [
1077
+ "primary",
1078
+ "billing",
1079
+ "shipping",
1080
+ "mailing",
1081
+ "meeting",
1082
+ "service",
1083
+ "legal",
1084
+ "other"
1085
+ ]
1086
+ },
1087
+ "fullText": {
1088
+ "type": [
1089
+ "string",
1090
+ "null"
1091
+ ]
1092
+ },
1093
+ "line1": {
1094
+ "type": [
1095
+ "string",
1096
+ "null"
1097
+ ]
1098
+ },
1099
+ "line2": {
1100
+ "type": [
1101
+ "string",
1102
+ "null"
1103
+ ]
1104
+ },
1105
+ "city": {
1106
+ "type": [
1107
+ "string",
1108
+ "null"
1109
+ ]
1110
+ },
1111
+ "region": {
1112
+ "type": [
1113
+ "string",
1114
+ "null"
1115
+ ]
1116
+ },
1117
+ "postalCode": {
1118
+ "type": [
1119
+ "string",
1120
+ "null"
1121
+ ]
1122
+ },
1123
+ "country": {
1124
+ "type": [
1125
+ "string",
1126
+ "null"
1127
+ ]
1128
+ },
1129
+ "latitude": {
1130
+ "type": [
1131
+ "number",
1132
+ "null"
1133
+ ]
1134
+ },
1135
+ "longitude": {
1136
+ "type": [
1137
+ "number",
1138
+ "null"
1139
+ ]
1140
+ },
1141
+ "timezone": {
1142
+ "type": [
1143
+ "string",
1144
+ "null"
1145
+ ]
1146
+ },
1147
+ "isPrimary": {
1148
+ "type": "boolean"
1149
+ },
1150
+ "notes": {
1151
+ "type": [
1152
+ "string",
1153
+ "null"
1154
+ ]
1155
+ },
1156
+ "metadata": {
1157
+ "type": [
1158
+ "object",
1159
+ "null"
1160
+ ],
1161
+ "additionalProperties": {}
1162
+ },
1163
+ "createdAt": {
1164
+ "type": "string"
1165
+ },
1166
+ "updatedAt": {
1167
+ "type": "string"
1168
+ }
1169
+ },
1170
+ "required": [
1171
+ "id",
1172
+ "entityType",
1173
+ "entityId",
1174
+ "label",
1175
+ "fullText",
1176
+ "line1",
1177
+ "line2",
1178
+ "city",
1179
+ "region",
1180
+ "postalCode",
1181
+ "country",
1182
+ "latitude",
1183
+ "longitude",
1184
+ "timezone",
1185
+ "isPrimary",
1186
+ "notes",
1187
+ "metadata",
1188
+ "createdAt",
1189
+ "updatedAt"
1190
+ ]
1191
+ }
1192
+ },
1193
+ "total": {
1194
+ "type": "integer"
1195
+ },
1196
+ "limit": {
1197
+ "type": "integer"
1198
+ },
1199
+ "offset": {
1200
+ "type": "integer"
1201
+ }
1202
+ },
1203
+ "required": [
1204
+ "data",
1205
+ "total",
1206
+ "limit",
1207
+ "offset"
1208
+ ]
1209
+ }
1210
+ }
1211
+ }
1212
+ }
1213
+ }
1214
+ },
1215
+ "post": {
1216
+ "tags": [
1217
+ "Identity"
1218
+ ],
1219
+ "summary": "Create an address",
1220
+ "requestBody": {
1221
+ "required": true,
1222
+ "content": {
1223
+ "application/json": {
1224
+ "schema": {
1225
+ "type": "object",
1226
+ "properties": {
1227
+ "entityType": {
1228
+ "type": "string",
1229
+ "minLength": 1,
1230
+ "maxLength": 100
1231
+ },
1232
+ "entityId": {
1233
+ "type": "string",
1234
+ "minLength": 1,
1235
+ "maxLength": 100
1236
+ },
1237
+ "label": {
1238
+ "type": "string",
1239
+ "enum": [
1240
+ "primary",
1241
+ "billing",
1242
+ "shipping",
1243
+ "mailing",
1244
+ "meeting",
1245
+ "service",
1246
+ "legal",
1247
+ "other"
1248
+ ],
1249
+ "default": "other"
1250
+ },
1251
+ "fullText": {
1252
+ "type": [
1253
+ "string",
1254
+ "null"
1255
+ ]
1256
+ },
1257
+ "line1": {
1258
+ "type": [
1259
+ "string",
1260
+ "null"
1261
+ ]
1262
+ },
1263
+ "line2": {
1264
+ "type": [
1265
+ "string",
1266
+ "null"
1267
+ ]
1268
+ },
1269
+ "city": {
1270
+ "type": [
1271
+ "string",
1272
+ "null"
1273
+ ]
1274
+ },
1275
+ "region": {
1276
+ "type": [
1277
+ "string",
1278
+ "null"
1279
+ ]
1280
+ },
1281
+ "postalCode": {
1282
+ "type": [
1283
+ "string",
1284
+ "null"
1285
+ ]
1286
+ },
1287
+ "country": {
1288
+ "type": [
1289
+ "string",
1290
+ "null"
1291
+ ]
1292
+ },
1293
+ "latitude": {
1294
+ "type": [
1295
+ "number",
1296
+ "null"
1297
+ ]
1298
+ },
1299
+ "longitude": {
1300
+ "type": [
1301
+ "number",
1302
+ "null"
1303
+ ]
1304
+ },
1305
+ "timezone": {
1306
+ "type": [
1307
+ "string",
1308
+ "null"
1309
+ ],
1310
+ "maxLength": 100
1311
+ },
1312
+ "isPrimary": {
1313
+ "type": "boolean",
1314
+ "default": false
1315
+ },
1316
+ "notes": {
1317
+ "type": [
1318
+ "string",
1319
+ "null"
1320
+ ]
1321
+ },
1322
+ "metadata": {
1323
+ "type": [
1324
+ "object",
1325
+ "null"
1326
+ ],
1327
+ "additionalProperties": {}
1328
+ }
1329
+ },
1330
+ "required": [
1331
+ "entityType",
1332
+ "entityId"
1333
+ ]
1334
+ }
1335
+ }
1336
+ }
1337
+ },
1338
+ "responses": {
1339
+ "201": {
1340
+ "description": "The created address",
1341
+ "content": {
1342
+ "application/json": {
1343
+ "schema": {
1344
+ "type": "object",
1345
+ "properties": {
1346
+ "data": {
1347
+ "type": "object",
1348
+ "properties": {
1349
+ "id": {
1350
+ "type": "string"
1351
+ },
1352
+ "entityType": {
1353
+ "type": "string"
1354
+ },
1355
+ "entityId": {
1356
+ "type": "string"
1357
+ },
1358
+ "label": {
1359
+ "type": "string",
1360
+ "enum": [
1361
+ "primary",
1362
+ "billing",
1363
+ "shipping",
1364
+ "mailing",
1365
+ "meeting",
1366
+ "service",
1367
+ "legal",
1368
+ "other"
1369
+ ]
1370
+ },
1371
+ "fullText": {
1372
+ "type": [
1373
+ "string",
1374
+ "null"
1375
+ ]
1376
+ },
1377
+ "line1": {
1378
+ "type": [
1379
+ "string",
1380
+ "null"
1381
+ ]
1382
+ },
1383
+ "line2": {
1384
+ "type": [
1385
+ "string",
1386
+ "null"
1387
+ ]
1388
+ },
1389
+ "city": {
1390
+ "type": [
1391
+ "string",
1392
+ "null"
1393
+ ]
1394
+ },
1395
+ "region": {
1396
+ "type": [
1397
+ "string",
1398
+ "null"
1399
+ ]
1400
+ },
1401
+ "postalCode": {
1402
+ "type": [
1403
+ "string",
1404
+ "null"
1405
+ ]
1406
+ },
1407
+ "country": {
1408
+ "type": [
1409
+ "string",
1410
+ "null"
1411
+ ]
1412
+ },
1413
+ "latitude": {
1414
+ "type": [
1415
+ "number",
1416
+ "null"
1417
+ ]
1418
+ },
1419
+ "longitude": {
1420
+ "type": [
1421
+ "number",
1422
+ "null"
1423
+ ]
1424
+ },
1425
+ "timezone": {
1426
+ "type": [
1427
+ "string",
1428
+ "null"
1429
+ ]
1430
+ },
1431
+ "isPrimary": {
1432
+ "type": "boolean"
1433
+ },
1434
+ "notes": {
1435
+ "type": [
1436
+ "string",
1437
+ "null"
1438
+ ]
1439
+ },
1440
+ "metadata": {
1441
+ "type": [
1442
+ "object",
1443
+ "null"
1444
+ ],
1445
+ "additionalProperties": {}
1446
+ },
1447
+ "createdAt": {
1448
+ "type": "string"
1449
+ },
1450
+ "updatedAt": {
1451
+ "type": "string"
1452
+ }
1453
+ },
1454
+ "required": [
1455
+ "id",
1456
+ "entityType",
1457
+ "entityId",
1458
+ "label",
1459
+ "fullText",
1460
+ "line1",
1461
+ "line2",
1462
+ "city",
1463
+ "region",
1464
+ "postalCode",
1465
+ "country",
1466
+ "latitude",
1467
+ "longitude",
1468
+ "timezone",
1469
+ "isPrimary",
1470
+ "notes",
1471
+ "metadata",
1472
+ "createdAt",
1473
+ "updatedAt"
1474
+ ]
1475
+ }
1476
+ },
1477
+ "required": [
1478
+ "data"
1479
+ ]
1480
+ }
1481
+ }
1482
+ }
1483
+ },
1484
+ "400": {
1485
+ "description": "invalid_request",
1486
+ "content": {
1487
+ "application/json": {
1488
+ "schema": {
1489
+ "type": "object",
1490
+ "properties": {
1491
+ "error": {
1492
+ "type": "string"
1493
+ }
1494
+ },
1495
+ "required": [
1496
+ "error"
1497
+ ]
1498
+ }
1499
+ }
1500
+ }
1501
+ }
1502
+ }
1503
+ }
1504
+ },
1505
+ "/v1/admin/identity/addresses/{id}": {
1506
+ "get": {
1507
+ "tags": [
1508
+ "Identity"
1509
+ ],
1510
+ "summary": "Get an address by id",
1511
+ "parameters": [
1512
+ {
1513
+ "schema": {
1514
+ "type": "string"
1515
+ },
1516
+ "required": true,
1517
+ "name": "id",
1518
+ "in": "path"
1519
+ }
1520
+ ],
1521
+ "responses": {
1522
+ "200": {
1523
+ "description": "An address by id",
1524
+ "content": {
1525
+ "application/json": {
1526
+ "schema": {
1527
+ "type": "object",
1528
+ "properties": {
1529
+ "data": {
1530
+ "type": "object",
1531
+ "properties": {
1532
+ "id": {
1533
+ "type": "string"
1534
+ },
1535
+ "entityType": {
1536
+ "type": "string"
1537
+ },
1538
+ "entityId": {
1539
+ "type": "string"
1540
+ },
1541
+ "label": {
1542
+ "type": "string",
1543
+ "enum": [
1544
+ "primary",
1545
+ "billing",
1546
+ "shipping",
1547
+ "mailing",
1548
+ "meeting",
1549
+ "service",
1550
+ "legal",
1551
+ "other"
1552
+ ]
1553
+ },
1554
+ "fullText": {
1555
+ "type": [
1556
+ "string",
1557
+ "null"
1558
+ ]
1559
+ },
1560
+ "line1": {
1561
+ "type": [
1562
+ "string",
1563
+ "null"
1564
+ ]
1565
+ },
1566
+ "line2": {
1567
+ "type": [
1568
+ "string",
1569
+ "null"
1570
+ ]
1571
+ },
1572
+ "city": {
1573
+ "type": [
1574
+ "string",
1575
+ "null"
1576
+ ]
1577
+ },
1578
+ "region": {
1579
+ "type": [
1580
+ "string",
1581
+ "null"
1582
+ ]
1583
+ },
1584
+ "postalCode": {
1585
+ "type": [
1586
+ "string",
1587
+ "null"
1588
+ ]
1589
+ },
1590
+ "country": {
1591
+ "type": [
1592
+ "string",
1593
+ "null"
1594
+ ]
1595
+ },
1596
+ "latitude": {
1597
+ "type": [
1598
+ "number",
1599
+ "null"
1600
+ ]
1601
+ },
1602
+ "longitude": {
1603
+ "type": [
1604
+ "number",
1605
+ "null"
1606
+ ]
1607
+ },
1608
+ "timezone": {
1609
+ "type": [
1610
+ "string",
1611
+ "null"
1612
+ ]
1613
+ },
1614
+ "isPrimary": {
1615
+ "type": "boolean"
1616
+ },
1617
+ "notes": {
1618
+ "type": [
1619
+ "string",
1620
+ "null"
1621
+ ]
1622
+ },
1623
+ "metadata": {
1624
+ "type": [
1625
+ "object",
1626
+ "null"
1627
+ ],
1628
+ "additionalProperties": {}
1629
+ },
1630
+ "createdAt": {
1631
+ "type": "string"
1632
+ },
1633
+ "updatedAt": {
1634
+ "type": "string"
1635
+ }
1636
+ },
1637
+ "required": [
1638
+ "id",
1639
+ "entityType",
1640
+ "entityId",
1641
+ "label",
1642
+ "fullText",
1643
+ "line1",
1644
+ "line2",
1645
+ "city",
1646
+ "region",
1647
+ "postalCode",
1648
+ "country",
1649
+ "latitude",
1650
+ "longitude",
1651
+ "timezone",
1652
+ "isPrimary",
1653
+ "notes",
1654
+ "metadata",
1655
+ "createdAt",
1656
+ "updatedAt"
1657
+ ]
1658
+ }
1659
+ },
1660
+ "required": [
1661
+ "data"
1662
+ ]
1663
+ }
1664
+ }
1665
+ }
1666
+ },
1667
+ "404": {
1668
+ "description": "Address not found",
1669
+ "content": {
1670
+ "application/json": {
1671
+ "schema": {
1672
+ "type": "object",
1673
+ "properties": {
1674
+ "error": {
1675
+ "type": "string"
1676
+ }
1677
+ },
1678
+ "required": [
1679
+ "error"
1680
+ ]
1681
+ }
1682
+ }
1683
+ }
1684
+ }
1685
+ }
1686
+ },
1687
+ "patch": {
1688
+ "tags": [
1689
+ "Identity"
1690
+ ],
1691
+ "summary": "Update an address",
1692
+ "parameters": [
1693
+ {
1694
+ "schema": {
1695
+ "type": "string"
1696
+ },
1697
+ "required": true,
1698
+ "name": "id",
1699
+ "in": "path"
1700
+ }
1701
+ ],
1702
+ "requestBody": {
1703
+ "required": true,
1704
+ "content": {
1705
+ "application/json": {
1706
+ "schema": {
1707
+ "type": "object",
1708
+ "properties": {
1709
+ "entityType": {
1710
+ "type": "string",
1711
+ "minLength": 1,
1712
+ "maxLength": 100
1713
+ },
1714
+ "entityId": {
1715
+ "type": "string",
1716
+ "minLength": 1,
1717
+ "maxLength": 100
1718
+ },
1719
+ "label": {
1720
+ "type": "string",
1721
+ "enum": [
1722
+ "primary",
1723
+ "billing",
1724
+ "shipping",
1725
+ "mailing",
1726
+ "meeting",
1727
+ "service",
1728
+ "legal",
1729
+ "other"
1730
+ ],
1731
+ "default": "other"
1732
+ },
1733
+ "fullText": {
1734
+ "type": [
1735
+ "string",
1736
+ "null"
1737
+ ]
1738
+ },
1739
+ "line1": {
1740
+ "type": [
1741
+ "string",
1742
+ "null"
1743
+ ]
1744
+ },
1745
+ "line2": {
1746
+ "type": [
1747
+ "string",
1748
+ "null"
1749
+ ]
1750
+ },
1751
+ "city": {
1752
+ "type": [
1753
+ "string",
1754
+ "null"
1755
+ ]
1756
+ },
1757
+ "region": {
1758
+ "type": [
1759
+ "string",
1760
+ "null"
1761
+ ]
1762
+ },
1763
+ "postalCode": {
1764
+ "type": [
1765
+ "string",
1766
+ "null"
1767
+ ]
1768
+ },
1769
+ "country": {
1770
+ "type": [
1771
+ "string",
1772
+ "null"
1773
+ ]
1774
+ },
1775
+ "latitude": {
1776
+ "type": [
1777
+ "number",
1778
+ "null"
1779
+ ]
1780
+ },
1781
+ "longitude": {
1782
+ "type": [
1783
+ "number",
1784
+ "null"
1785
+ ]
1786
+ },
1787
+ "timezone": {
1788
+ "type": [
1789
+ "string",
1790
+ "null"
1791
+ ],
1792
+ "maxLength": 100
1793
+ },
1794
+ "isPrimary": {
1795
+ "type": "boolean",
1796
+ "default": false
1797
+ },
1798
+ "notes": {
1799
+ "type": [
1800
+ "string",
1801
+ "null"
1802
+ ]
1803
+ },
1804
+ "metadata": {
1805
+ "type": [
1806
+ "object",
1807
+ "null"
1808
+ ],
1809
+ "additionalProperties": {}
1810
+ }
1811
+ }
1812
+ }
1813
+ }
1814
+ }
1815
+ },
1816
+ "responses": {
1817
+ "200": {
1818
+ "description": "The updated address",
1819
+ "content": {
1820
+ "application/json": {
1821
+ "schema": {
1822
+ "type": "object",
1823
+ "properties": {
1824
+ "data": {
1825
+ "type": "object",
1826
+ "properties": {
1827
+ "id": {
1828
+ "type": "string"
1829
+ },
1830
+ "entityType": {
1831
+ "type": "string"
1832
+ },
1833
+ "entityId": {
1834
+ "type": "string"
1835
+ },
1836
+ "label": {
1837
+ "type": "string",
1838
+ "enum": [
1839
+ "primary",
1840
+ "billing",
1841
+ "shipping",
1842
+ "mailing",
1843
+ "meeting",
1844
+ "service",
1845
+ "legal",
1846
+ "other"
1847
+ ]
1848
+ },
1849
+ "fullText": {
1850
+ "type": [
1851
+ "string",
1852
+ "null"
1853
+ ]
1854
+ },
1855
+ "line1": {
1856
+ "type": [
1857
+ "string",
1858
+ "null"
1859
+ ]
1860
+ },
1861
+ "line2": {
1862
+ "type": [
1863
+ "string",
1864
+ "null"
1865
+ ]
1866
+ },
1867
+ "city": {
1868
+ "type": [
1869
+ "string",
1870
+ "null"
1871
+ ]
1872
+ },
1873
+ "region": {
1874
+ "type": [
1875
+ "string",
1876
+ "null"
1877
+ ]
1878
+ },
1879
+ "postalCode": {
1880
+ "type": [
1881
+ "string",
1882
+ "null"
1883
+ ]
1884
+ },
1885
+ "country": {
1886
+ "type": [
1887
+ "string",
1888
+ "null"
1889
+ ]
1890
+ },
1891
+ "latitude": {
1892
+ "type": [
1893
+ "number",
1894
+ "null"
1895
+ ]
1896
+ },
1897
+ "longitude": {
1898
+ "type": [
1899
+ "number",
1900
+ "null"
1901
+ ]
1902
+ },
1903
+ "timezone": {
1904
+ "type": [
1905
+ "string",
1906
+ "null"
1907
+ ]
1908
+ },
1909
+ "isPrimary": {
1910
+ "type": "boolean"
1911
+ },
1912
+ "notes": {
1913
+ "type": [
1914
+ "string",
1915
+ "null"
1916
+ ]
1917
+ },
1918
+ "metadata": {
1919
+ "type": [
1920
+ "object",
1921
+ "null"
1922
+ ],
1923
+ "additionalProperties": {}
1924
+ },
1925
+ "createdAt": {
1926
+ "type": "string"
1927
+ },
1928
+ "updatedAt": {
1929
+ "type": "string"
1930
+ }
1931
+ },
1932
+ "required": [
1933
+ "id",
1934
+ "entityType",
1935
+ "entityId",
1936
+ "label",
1937
+ "fullText",
1938
+ "line1",
1939
+ "line2",
1940
+ "city",
1941
+ "region",
1942
+ "postalCode",
1943
+ "country",
1944
+ "latitude",
1945
+ "longitude",
1946
+ "timezone",
1947
+ "isPrimary",
1948
+ "notes",
1949
+ "metadata",
1950
+ "createdAt",
1951
+ "updatedAt"
1952
+ ]
1953
+ }
1954
+ },
1955
+ "required": [
1956
+ "data"
1957
+ ]
1958
+ }
1959
+ }
1960
+ }
1961
+ },
1962
+ "400": {
1963
+ "description": "invalid_request",
1964
+ "content": {
1965
+ "application/json": {
1966
+ "schema": {
1967
+ "type": "object",
1968
+ "properties": {
1969
+ "error": {
1970
+ "type": "string"
1971
+ }
1972
+ },
1973
+ "required": [
1974
+ "error"
1975
+ ]
1976
+ }
1977
+ }
1978
+ }
1979
+ },
1980
+ "404": {
1981
+ "description": "Address not found",
1982
+ "content": {
1983
+ "application/json": {
1984
+ "schema": {
1985
+ "type": "object",
1986
+ "properties": {
1987
+ "error": {
1988
+ "type": "string"
1989
+ }
1990
+ },
1991
+ "required": [
1992
+ "error"
1993
+ ]
1994
+ }
1995
+ }
1996
+ }
1997
+ }
1998
+ }
1999
+ },
2000
+ "delete": {
2001
+ "tags": [
2002
+ "Identity"
2003
+ ],
2004
+ "summary": "Delete an address",
2005
+ "parameters": [
2006
+ {
2007
+ "schema": {
2008
+ "type": "string"
2009
+ },
2010
+ "required": true,
2011
+ "name": "id",
2012
+ "in": "path"
2013
+ }
2014
+ ],
2015
+ "responses": {
2016
+ "200": {
2017
+ "description": "Address deleted",
2018
+ "content": {
2019
+ "application/json": {
2020
+ "schema": {
2021
+ "type": "object",
2022
+ "properties": {
2023
+ "success": {
2024
+ "type": "boolean",
2025
+ "enum": [
2026
+ true
2027
+ ]
2028
+ }
2029
+ },
2030
+ "required": [
2031
+ "success"
2032
+ ]
2033
+ }
2034
+ }
2035
+ }
2036
+ },
2037
+ "404": {
2038
+ "description": "Address not found",
2039
+ "content": {
2040
+ "application/json": {
2041
+ "schema": {
2042
+ "type": "object",
2043
+ "properties": {
2044
+ "error": {
2045
+ "type": "string"
2046
+ }
2047
+ },
2048
+ "required": [
2049
+ "error"
2050
+ ]
2051
+ }
2052
+ }
2053
+ }
2054
+ }
2055
+ }
2056
+ }
2057
+ },
2058
+ "/v1/admin/identity/named-contacts": {
2059
+ "get": {
2060
+ "tags": [
2061
+ "Identity"
2062
+ ],
2063
+ "summary": "List named contacts",
2064
+ "parameters": [
2065
+ {
2066
+ "schema": {
2067
+ "type": "integer",
2068
+ "minimum": 1,
2069
+ "maximum": 200,
2070
+ "default": 50
2071
+ },
2072
+ "required": false,
2073
+ "name": "limit",
2074
+ "in": "query"
2075
+ },
2076
+ {
2077
+ "schema": {
2078
+ "type": [
2079
+ "integer",
2080
+ "null"
2081
+ ],
2082
+ "minimum": 0,
2083
+ "default": 0
2084
+ },
2085
+ "required": false,
2086
+ "name": "offset",
2087
+ "in": "query"
2088
+ },
2089
+ {
2090
+ "schema": {
2091
+ "type": "string",
2092
+ "maxLength": 100
2093
+ },
2094
+ "required": false,
2095
+ "name": "entityType",
2096
+ "in": "query"
2097
+ },
2098
+ {
2099
+ "schema": {
2100
+ "type": "string",
2101
+ "maxLength": 100
2102
+ },
2103
+ "required": false,
2104
+ "name": "entityId",
2105
+ "in": "query"
2106
+ },
2107
+ {
2108
+ "schema": {
2109
+ "type": "string",
2110
+ "enum": [
2111
+ "general",
2112
+ "primary",
2113
+ "reservations",
2114
+ "operations",
2115
+ "front_desk",
2116
+ "sales",
2117
+ "emergency",
2118
+ "accounting",
2119
+ "legal",
2120
+ "other"
2121
+ ]
2122
+ },
2123
+ "required": false,
2124
+ "name": "role",
2125
+ "in": "query"
2126
+ },
2127
+ {
2128
+ "schema": {
2129
+ "type": "string",
2130
+ "enum": [
2131
+ "0",
2132
+ "1",
2133
+ "true",
2134
+ "false"
2135
+ ]
2136
+ },
2137
+ "required": false,
2138
+ "name": "isPrimary",
2139
+ "in": "query"
2140
+ },
2141
+ {
2142
+ "schema": {
2143
+ "type": "string"
2144
+ },
2145
+ "required": false,
2146
+ "name": "search",
2147
+ "in": "query"
2148
+ }
2149
+ ],
2150
+ "responses": {
2151
+ "200": {
2152
+ "description": "Paginated named contacts",
2153
+ "content": {
2154
+ "application/json": {
2155
+ "schema": {
2156
+ "type": "object",
2157
+ "properties": {
2158
+ "data": {
2159
+ "type": "array",
2160
+ "items": {
2161
+ "type": "object",
2162
+ "properties": {
2163
+ "id": {
2164
+ "type": "string"
2165
+ },
2166
+ "entityType": {
2167
+ "type": "string"
2168
+ },
2169
+ "entityId": {
2170
+ "type": "string"
2171
+ },
2172
+ "role": {
2173
+ "type": "string",
2174
+ "enum": [
2175
+ "general",
2176
+ "primary",
2177
+ "reservations",
2178
+ "operations",
2179
+ "front_desk",
2180
+ "sales",
2181
+ "emergency",
2182
+ "accounting",
2183
+ "legal",
2184
+ "other"
2185
+ ]
2186
+ },
2187
+ "name": {
2188
+ "type": "string"
2189
+ },
2190
+ "title": {
2191
+ "type": [
2192
+ "string",
2193
+ "null"
2194
+ ]
2195
+ },
2196
+ "email": {
2197
+ "type": [
2198
+ "string",
2199
+ "null"
2200
+ ]
2201
+ },
2202
+ "phone": {
2203
+ "type": [
2204
+ "string",
2205
+ "null"
2206
+ ]
2207
+ },
2208
+ "isPrimary": {
2209
+ "type": "boolean"
2210
+ },
2211
+ "notes": {
2212
+ "type": [
2213
+ "string",
2214
+ "null"
2215
+ ]
2216
+ },
2217
+ "metadata": {
2218
+ "type": [
2219
+ "object",
2220
+ "null"
2221
+ ],
2222
+ "additionalProperties": {}
2223
+ },
2224
+ "createdAt": {
2225
+ "type": "string"
2226
+ },
2227
+ "updatedAt": {
2228
+ "type": "string"
2229
+ }
2230
+ },
2231
+ "required": [
2232
+ "id",
2233
+ "entityType",
2234
+ "entityId",
2235
+ "role",
2236
+ "name",
2237
+ "title",
2238
+ "email",
2239
+ "phone",
2240
+ "isPrimary",
2241
+ "notes",
2242
+ "metadata",
2243
+ "createdAt",
2244
+ "updatedAt"
2245
+ ]
2246
+ }
2247
+ },
2248
+ "total": {
2249
+ "type": "integer"
2250
+ },
2251
+ "limit": {
2252
+ "type": "integer"
2253
+ },
2254
+ "offset": {
2255
+ "type": "integer"
2256
+ }
2257
+ },
2258
+ "required": [
2259
+ "data",
2260
+ "total",
2261
+ "limit",
2262
+ "offset"
2263
+ ]
2264
+ }
2265
+ }
2266
+ }
2267
+ }
2268
+ }
2269
+ },
2270
+ "post": {
2271
+ "tags": [
2272
+ "Identity"
2273
+ ],
2274
+ "summary": "Create a named contact",
2275
+ "requestBody": {
2276
+ "required": true,
2277
+ "content": {
2278
+ "application/json": {
2279
+ "schema": {
2280
+ "type": "object",
2281
+ "properties": {
2282
+ "entityType": {
2283
+ "type": "string",
2284
+ "minLength": 1,
2285
+ "maxLength": 100
2286
+ },
2287
+ "entityId": {
2288
+ "type": "string",
2289
+ "minLength": 1,
2290
+ "maxLength": 100
2291
+ },
2292
+ "role": {
2293
+ "type": "string",
2294
+ "enum": [
2295
+ "general",
2296
+ "primary",
2297
+ "reservations",
2298
+ "operations",
2299
+ "front_desk",
2300
+ "sales",
2301
+ "emergency",
2302
+ "accounting",
2303
+ "legal",
2304
+ "other"
2305
+ ],
2306
+ "default": "general"
2307
+ },
2308
+ "name": {
2309
+ "type": "string",
2310
+ "minLength": 1,
2311
+ "maxLength": 255
2312
+ },
2313
+ "title": {
2314
+ "type": [
2315
+ "string",
2316
+ "null"
2317
+ ],
2318
+ "maxLength": 255
2319
+ },
2320
+ "email": {
2321
+ "type": [
2322
+ "string",
2323
+ "null"
2324
+ ],
2325
+ "format": "email"
2326
+ },
2327
+ "phone": {
2328
+ "type": [
2329
+ "string",
2330
+ "null"
2331
+ ],
2332
+ "maxLength": 50
2333
+ },
2334
+ "isPrimary": {
2335
+ "type": "boolean",
2336
+ "default": false
2337
+ },
2338
+ "notes": {
2339
+ "type": [
2340
+ "string",
2341
+ "null"
2342
+ ]
2343
+ },
2344
+ "metadata": {
2345
+ "type": [
2346
+ "object",
2347
+ "null"
2348
+ ],
2349
+ "additionalProperties": {}
2350
+ }
2351
+ },
2352
+ "required": [
2353
+ "entityType",
2354
+ "entityId",
2355
+ "name"
2356
+ ]
2357
+ }
2358
+ }
2359
+ }
2360
+ },
2361
+ "responses": {
2362
+ "201": {
2363
+ "description": "The created named contact",
2364
+ "content": {
2365
+ "application/json": {
2366
+ "schema": {
2367
+ "type": "object",
2368
+ "properties": {
2369
+ "data": {
2370
+ "type": "object",
2371
+ "properties": {
2372
+ "id": {
2373
+ "type": "string"
2374
+ },
2375
+ "entityType": {
2376
+ "type": "string"
2377
+ },
2378
+ "entityId": {
2379
+ "type": "string"
2380
+ },
2381
+ "role": {
2382
+ "type": "string",
2383
+ "enum": [
2384
+ "general",
2385
+ "primary",
2386
+ "reservations",
2387
+ "operations",
2388
+ "front_desk",
2389
+ "sales",
2390
+ "emergency",
2391
+ "accounting",
2392
+ "legal",
2393
+ "other"
2394
+ ]
2395
+ },
2396
+ "name": {
2397
+ "type": "string"
2398
+ },
2399
+ "title": {
2400
+ "type": [
2401
+ "string",
2402
+ "null"
2403
+ ]
2404
+ },
2405
+ "email": {
2406
+ "type": [
2407
+ "string",
2408
+ "null"
2409
+ ]
2410
+ },
2411
+ "phone": {
2412
+ "type": [
2413
+ "string",
2414
+ "null"
2415
+ ]
2416
+ },
2417
+ "isPrimary": {
2418
+ "type": "boolean"
2419
+ },
2420
+ "notes": {
2421
+ "type": [
2422
+ "string",
2423
+ "null"
2424
+ ]
2425
+ },
2426
+ "metadata": {
2427
+ "type": [
2428
+ "object",
2429
+ "null"
2430
+ ],
2431
+ "additionalProperties": {}
2432
+ },
2433
+ "createdAt": {
2434
+ "type": "string"
2435
+ },
2436
+ "updatedAt": {
2437
+ "type": "string"
2438
+ }
2439
+ },
2440
+ "required": [
2441
+ "id",
2442
+ "entityType",
2443
+ "entityId",
2444
+ "role",
2445
+ "name",
2446
+ "title",
2447
+ "email",
2448
+ "phone",
2449
+ "isPrimary",
2450
+ "notes",
2451
+ "metadata",
2452
+ "createdAt",
2453
+ "updatedAt"
2454
+ ]
2455
+ }
2456
+ },
2457
+ "required": [
2458
+ "data"
2459
+ ]
2460
+ }
2461
+ }
2462
+ }
2463
+ },
2464
+ "400": {
2465
+ "description": "invalid_request",
2466
+ "content": {
2467
+ "application/json": {
2468
+ "schema": {
2469
+ "type": "object",
2470
+ "properties": {
2471
+ "error": {
2472
+ "type": "string"
2473
+ }
2474
+ },
2475
+ "required": [
2476
+ "error"
2477
+ ]
2478
+ }
2479
+ }
2480
+ }
2481
+ }
2482
+ }
2483
+ }
2484
+ },
2485
+ "/v1/admin/identity/named-contacts/{id}": {
2486
+ "get": {
2487
+ "tags": [
2488
+ "Identity"
2489
+ ],
2490
+ "summary": "Get a named contact by id",
2491
+ "parameters": [
2492
+ {
2493
+ "schema": {
2494
+ "type": "string"
2495
+ },
2496
+ "required": true,
2497
+ "name": "id",
2498
+ "in": "path"
2499
+ }
2500
+ ],
2501
+ "responses": {
2502
+ "200": {
2503
+ "description": "A named contact by id",
2504
+ "content": {
2505
+ "application/json": {
2506
+ "schema": {
2507
+ "type": "object",
2508
+ "properties": {
2509
+ "data": {
2510
+ "type": "object",
2511
+ "properties": {
2512
+ "id": {
2513
+ "type": "string"
2514
+ },
2515
+ "entityType": {
2516
+ "type": "string"
2517
+ },
2518
+ "entityId": {
2519
+ "type": "string"
2520
+ },
2521
+ "role": {
2522
+ "type": "string",
2523
+ "enum": [
2524
+ "general",
2525
+ "primary",
2526
+ "reservations",
2527
+ "operations",
2528
+ "front_desk",
2529
+ "sales",
2530
+ "emergency",
2531
+ "accounting",
2532
+ "legal",
2533
+ "other"
2534
+ ]
2535
+ },
2536
+ "name": {
2537
+ "type": "string"
2538
+ },
2539
+ "title": {
2540
+ "type": [
2541
+ "string",
2542
+ "null"
2543
+ ]
2544
+ },
2545
+ "email": {
2546
+ "type": [
2547
+ "string",
2548
+ "null"
2549
+ ]
2550
+ },
2551
+ "phone": {
2552
+ "type": [
2553
+ "string",
2554
+ "null"
2555
+ ]
2556
+ },
2557
+ "isPrimary": {
2558
+ "type": "boolean"
2559
+ },
2560
+ "notes": {
2561
+ "type": [
2562
+ "string",
2563
+ "null"
2564
+ ]
2565
+ },
2566
+ "metadata": {
2567
+ "type": [
2568
+ "object",
2569
+ "null"
2570
+ ],
2571
+ "additionalProperties": {}
2572
+ },
2573
+ "createdAt": {
2574
+ "type": "string"
2575
+ },
2576
+ "updatedAt": {
2577
+ "type": "string"
2578
+ }
2579
+ },
2580
+ "required": [
2581
+ "id",
2582
+ "entityType",
2583
+ "entityId",
2584
+ "role",
2585
+ "name",
2586
+ "title",
2587
+ "email",
2588
+ "phone",
2589
+ "isPrimary",
2590
+ "notes",
2591
+ "metadata",
2592
+ "createdAt",
2593
+ "updatedAt"
2594
+ ]
2595
+ }
2596
+ },
2597
+ "required": [
2598
+ "data"
2599
+ ]
2600
+ }
2601
+ }
2602
+ }
2603
+ },
2604
+ "404": {
2605
+ "description": "Named contact not found",
2606
+ "content": {
2607
+ "application/json": {
2608
+ "schema": {
2609
+ "type": "object",
2610
+ "properties": {
2611
+ "error": {
2612
+ "type": "string"
2613
+ }
2614
+ },
2615
+ "required": [
2616
+ "error"
2617
+ ]
2618
+ }
2619
+ }
2620
+ }
2621
+ }
2622
+ }
2623
+ },
2624
+ "patch": {
2625
+ "tags": [
2626
+ "Identity"
2627
+ ],
2628
+ "summary": "Update a named contact",
2629
+ "parameters": [
2630
+ {
2631
+ "schema": {
2632
+ "type": "string"
2633
+ },
2634
+ "required": true,
2635
+ "name": "id",
2636
+ "in": "path"
2637
+ }
2638
+ ],
2639
+ "requestBody": {
2640
+ "required": true,
2641
+ "content": {
2642
+ "application/json": {
2643
+ "schema": {
2644
+ "type": "object",
2645
+ "properties": {
2646
+ "entityType": {
2647
+ "type": "string",
2648
+ "minLength": 1,
2649
+ "maxLength": 100
2650
+ },
2651
+ "entityId": {
2652
+ "type": "string",
2653
+ "minLength": 1,
2654
+ "maxLength": 100
2655
+ },
2656
+ "role": {
2657
+ "type": "string",
2658
+ "enum": [
2659
+ "general",
2660
+ "primary",
2661
+ "reservations",
2662
+ "operations",
2663
+ "front_desk",
2664
+ "sales",
2665
+ "emergency",
2666
+ "accounting",
2667
+ "legal",
2668
+ "other"
2669
+ ],
2670
+ "default": "general"
2671
+ },
2672
+ "name": {
2673
+ "type": "string",
2674
+ "minLength": 1,
2675
+ "maxLength": 255
2676
+ },
2677
+ "title": {
2678
+ "type": [
2679
+ "string",
2680
+ "null"
2681
+ ],
2682
+ "maxLength": 255
2683
+ },
2684
+ "email": {
2685
+ "type": [
2686
+ "string",
2687
+ "null"
2688
+ ],
2689
+ "format": "email"
2690
+ },
2691
+ "phone": {
2692
+ "type": [
2693
+ "string",
2694
+ "null"
2695
+ ],
2696
+ "maxLength": 50
2697
+ },
2698
+ "isPrimary": {
2699
+ "type": "boolean",
2700
+ "default": false
2701
+ },
2702
+ "notes": {
2703
+ "type": [
2704
+ "string",
2705
+ "null"
2706
+ ]
2707
+ },
2708
+ "metadata": {
2709
+ "type": [
2710
+ "object",
2711
+ "null"
2712
+ ],
2713
+ "additionalProperties": {}
2714
+ }
2715
+ }
2716
+ }
2717
+ }
2718
+ }
2719
+ },
2720
+ "responses": {
2721
+ "200": {
2722
+ "description": "The updated named contact",
2723
+ "content": {
2724
+ "application/json": {
2725
+ "schema": {
2726
+ "type": "object",
2727
+ "properties": {
2728
+ "data": {
2729
+ "type": "object",
2730
+ "properties": {
2731
+ "id": {
2732
+ "type": "string"
2733
+ },
2734
+ "entityType": {
2735
+ "type": "string"
2736
+ },
2737
+ "entityId": {
2738
+ "type": "string"
2739
+ },
2740
+ "role": {
2741
+ "type": "string",
2742
+ "enum": [
2743
+ "general",
2744
+ "primary",
2745
+ "reservations",
2746
+ "operations",
2747
+ "front_desk",
2748
+ "sales",
2749
+ "emergency",
2750
+ "accounting",
2751
+ "legal",
2752
+ "other"
2753
+ ]
2754
+ },
2755
+ "name": {
2756
+ "type": "string"
2757
+ },
2758
+ "title": {
2759
+ "type": [
2760
+ "string",
2761
+ "null"
2762
+ ]
2763
+ },
2764
+ "email": {
2765
+ "type": [
2766
+ "string",
2767
+ "null"
2768
+ ]
2769
+ },
2770
+ "phone": {
2771
+ "type": [
2772
+ "string",
2773
+ "null"
2774
+ ]
2775
+ },
2776
+ "isPrimary": {
2777
+ "type": "boolean"
2778
+ },
2779
+ "notes": {
2780
+ "type": [
2781
+ "string",
2782
+ "null"
2783
+ ]
2784
+ },
2785
+ "metadata": {
2786
+ "type": [
2787
+ "object",
2788
+ "null"
2789
+ ],
2790
+ "additionalProperties": {}
2791
+ },
2792
+ "createdAt": {
2793
+ "type": "string"
2794
+ },
2795
+ "updatedAt": {
2796
+ "type": "string"
2797
+ }
2798
+ },
2799
+ "required": [
2800
+ "id",
2801
+ "entityType",
2802
+ "entityId",
2803
+ "role",
2804
+ "name",
2805
+ "title",
2806
+ "email",
2807
+ "phone",
2808
+ "isPrimary",
2809
+ "notes",
2810
+ "metadata",
2811
+ "createdAt",
2812
+ "updatedAt"
2813
+ ]
2814
+ }
2815
+ },
2816
+ "required": [
2817
+ "data"
2818
+ ]
2819
+ }
2820
+ }
2821
+ }
2822
+ },
2823
+ "400": {
2824
+ "description": "invalid_request",
2825
+ "content": {
2826
+ "application/json": {
2827
+ "schema": {
2828
+ "type": "object",
2829
+ "properties": {
2830
+ "error": {
2831
+ "type": "string"
2832
+ }
2833
+ },
2834
+ "required": [
2835
+ "error"
2836
+ ]
2837
+ }
2838
+ }
2839
+ }
2840
+ },
2841
+ "404": {
2842
+ "description": "Named contact not found",
2843
+ "content": {
2844
+ "application/json": {
2845
+ "schema": {
2846
+ "type": "object",
2847
+ "properties": {
2848
+ "error": {
2849
+ "type": "string"
2850
+ }
2851
+ },
2852
+ "required": [
2853
+ "error"
2854
+ ]
2855
+ }
2856
+ }
2857
+ }
2858
+ }
2859
+ }
2860
+ },
2861
+ "delete": {
2862
+ "tags": [
2863
+ "Identity"
2864
+ ],
2865
+ "summary": "Delete a named contact",
2866
+ "parameters": [
2867
+ {
2868
+ "schema": {
2869
+ "type": "string"
2870
+ },
2871
+ "required": true,
2872
+ "name": "id",
2873
+ "in": "path"
2874
+ }
2875
+ ],
2876
+ "responses": {
2877
+ "200": {
2878
+ "description": "Named contact deleted",
2879
+ "content": {
2880
+ "application/json": {
2881
+ "schema": {
2882
+ "type": "object",
2883
+ "properties": {
2884
+ "success": {
2885
+ "type": "boolean",
2886
+ "enum": [
2887
+ true
2888
+ ]
2889
+ }
2890
+ },
2891
+ "required": [
2892
+ "success"
2893
+ ]
2894
+ }
2895
+ }
2896
+ }
2897
+ },
2898
+ "404": {
2899
+ "description": "Named contact not found",
2900
+ "content": {
2901
+ "application/json": {
2902
+ "schema": {
2903
+ "type": "object",
2904
+ "properties": {
2905
+ "error": {
2906
+ "type": "string"
2907
+ }
2908
+ },
2909
+ "required": [
2910
+ "error"
2911
+ ]
2912
+ }
2913
+ }
2914
+ }
2915
+ }
2916
+ }
2917
+ }
2918
+ },
2919
+ "/v1/admin/identity/entities/{entityType}/{entityId}/contact-points": {
2920
+ "get": {
2921
+ "tags": [
2922
+ "Identity"
2923
+ ],
2924
+ "summary": "List contact points for an entity",
2925
+ "parameters": [
2926
+ {
2927
+ "schema": {
2928
+ "type": "string"
2929
+ },
2930
+ "required": true,
2931
+ "name": "entityType",
2932
+ "in": "path"
2933
+ },
2934
+ {
2935
+ "schema": {
2936
+ "type": "string"
2937
+ },
2938
+ "required": true,
2939
+ "name": "entityId",
2940
+ "in": "path"
2941
+ }
2942
+ ],
2943
+ "responses": {
2944
+ "200": {
2945
+ "description": "Contact points for an entity",
2946
+ "content": {
2947
+ "application/json": {
2948
+ "schema": {
2949
+ "type": "object",
2950
+ "properties": {
2951
+ "data": {
2952
+ "type": "array",
2953
+ "items": {
2954
+ "type": "object",
2955
+ "properties": {
2956
+ "id": {
2957
+ "type": "string"
2958
+ },
2959
+ "entityType": {
2960
+ "type": "string"
2961
+ },
2962
+ "entityId": {
2963
+ "type": "string"
2964
+ },
2965
+ "kind": {
2966
+ "type": "string",
2967
+ "enum": [
2968
+ "email",
2969
+ "phone",
2970
+ "mobile",
2971
+ "whatsapp",
2972
+ "website",
2973
+ "sms",
2974
+ "fax",
2975
+ "social",
2976
+ "other"
2977
+ ]
2978
+ },
2979
+ "label": {
2980
+ "type": [
2981
+ "string",
2982
+ "null"
2983
+ ]
2984
+ },
2985
+ "value": {
2986
+ "type": "string"
2987
+ },
2988
+ "normalizedValue": {
2989
+ "type": [
2990
+ "string",
2991
+ "null"
2992
+ ]
2993
+ },
2994
+ "isPrimary": {
2995
+ "type": "boolean"
2996
+ },
2997
+ "notes": {
2998
+ "type": [
2999
+ "string",
3000
+ "null"
3001
+ ]
3002
+ },
3003
+ "metadata": {
3004
+ "type": [
3005
+ "object",
3006
+ "null"
3007
+ ],
3008
+ "additionalProperties": {}
3009
+ },
3010
+ "createdAt": {
3011
+ "type": "string"
3012
+ },
3013
+ "updatedAt": {
3014
+ "type": "string"
3015
+ }
3016
+ },
3017
+ "required": [
3018
+ "id",
3019
+ "entityType",
3020
+ "entityId",
3021
+ "kind",
3022
+ "label",
3023
+ "value",
3024
+ "normalizedValue",
3025
+ "isPrimary",
3026
+ "notes",
3027
+ "metadata",
3028
+ "createdAt",
3029
+ "updatedAt"
3030
+ ]
3031
+ }
3032
+ }
3033
+ },
3034
+ "required": [
3035
+ "data"
3036
+ ]
3037
+ }
3038
+ }
3039
+ }
3040
+ }
3041
+ }
3042
+ },
3043
+ "post": {
3044
+ "tags": [
3045
+ "Identity"
3046
+ ],
3047
+ "summary": "Create a contact point for an entity",
3048
+ "parameters": [
3049
+ {
3050
+ "schema": {
3051
+ "type": "string"
3052
+ },
3053
+ "required": true,
3054
+ "name": "entityType",
3055
+ "in": "path"
3056
+ },
3057
+ {
3058
+ "schema": {
3059
+ "type": "string"
3060
+ },
3061
+ "required": true,
3062
+ "name": "entityId",
3063
+ "in": "path"
3064
+ }
3065
+ ],
3066
+ "requestBody": {
3067
+ "required": true,
3068
+ "content": {
3069
+ "application/json": {
3070
+ "schema": {
3071
+ "type": "object",
3072
+ "properties": {
3073
+ "kind": {
3074
+ "type": "string",
3075
+ "enum": [
3076
+ "email",
3077
+ "phone",
3078
+ "mobile",
3079
+ "whatsapp",
3080
+ "website",
3081
+ "sms",
3082
+ "fax",
3083
+ "social",
3084
+ "other"
3085
+ ]
3086
+ },
3087
+ "label": {
3088
+ "type": [
3089
+ "string",
3090
+ "null"
3091
+ ],
3092
+ "maxLength": 100
3093
+ },
3094
+ "value": {
3095
+ "type": "string",
3096
+ "minLength": 1,
3097
+ "maxLength": 500
3098
+ },
3099
+ "normalizedValue": {
3100
+ "type": [
3101
+ "string",
3102
+ "null"
3103
+ ],
3104
+ "maxLength": 500
3105
+ },
3106
+ "isPrimary": {
3107
+ "type": "boolean",
3108
+ "default": false
3109
+ },
3110
+ "notes": {
3111
+ "type": [
3112
+ "string",
3113
+ "null"
3114
+ ]
3115
+ },
3116
+ "metadata": {
3117
+ "type": [
3118
+ "object",
3119
+ "null"
3120
+ ],
3121
+ "additionalProperties": {}
3122
+ }
3123
+ },
3124
+ "required": [
3125
+ "kind",
3126
+ "value"
3127
+ ]
3128
+ }
3129
+ }
3130
+ }
3131
+ },
3132
+ "responses": {
3133
+ "201": {
3134
+ "description": "The created contact point",
3135
+ "content": {
3136
+ "application/json": {
3137
+ "schema": {
3138
+ "type": "object",
3139
+ "properties": {
3140
+ "data": {
3141
+ "type": "object",
3142
+ "properties": {
3143
+ "id": {
3144
+ "type": "string"
3145
+ },
3146
+ "entityType": {
3147
+ "type": "string"
3148
+ },
3149
+ "entityId": {
3150
+ "type": "string"
3151
+ },
3152
+ "kind": {
3153
+ "type": "string",
3154
+ "enum": [
3155
+ "email",
3156
+ "phone",
3157
+ "mobile",
3158
+ "whatsapp",
3159
+ "website",
3160
+ "sms",
3161
+ "fax",
3162
+ "social",
3163
+ "other"
3164
+ ]
3165
+ },
3166
+ "label": {
3167
+ "type": [
3168
+ "string",
3169
+ "null"
3170
+ ]
3171
+ },
3172
+ "value": {
3173
+ "type": "string"
3174
+ },
3175
+ "normalizedValue": {
3176
+ "type": [
3177
+ "string",
3178
+ "null"
3179
+ ]
3180
+ },
3181
+ "isPrimary": {
3182
+ "type": "boolean"
3183
+ },
3184
+ "notes": {
3185
+ "type": [
3186
+ "string",
3187
+ "null"
3188
+ ]
3189
+ },
3190
+ "metadata": {
3191
+ "type": [
3192
+ "object",
3193
+ "null"
3194
+ ],
3195
+ "additionalProperties": {}
3196
+ },
3197
+ "createdAt": {
3198
+ "type": "string"
3199
+ },
3200
+ "updatedAt": {
3201
+ "type": "string"
3202
+ }
3203
+ },
3204
+ "required": [
3205
+ "id",
3206
+ "entityType",
3207
+ "entityId",
3208
+ "kind",
3209
+ "label",
3210
+ "value",
3211
+ "normalizedValue",
3212
+ "isPrimary",
3213
+ "notes",
3214
+ "metadata",
3215
+ "createdAt",
3216
+ "updatedAt"
3217
+ ]
3218
+ }
3219
+ },
3220
+ "required": [
3221
+ "data"
3222
+ ]
3223
+ }
3224
+ }
3225
+ }
3226
+ },
3227
+ "400": {
3228
+ "description": "invalid_request",
3229
+ "content": {
3230
+ "application/json": {
3231
+ "schema": {
3232
+ "type": "object",
3233
+ "properties": {
3234
+ "error": {
3235
+ "type": "string"
3236
+ }
3237
+ },
3238
+ "required": [
3239
+ "error"
3240
+ ]
3241
+ }
3242
+ }
3243
+ }
3244
+ }
3245
+ }
3246
+ }
3247
+ },
3248
+ "/v1/admin/identity/entities/{entityType}/{entityId}/addresses": {
3249
+ "get": {
3250
+ "tags": [
3251
+ "Identity"
3252
+ ],
3253
+ "summary": "List addresses for an entity",
3254
+ "parameters": [
3255
+ {
3256
+ "schema": {
3257
+ "type": "string"
3258
+ },
3259
+ "required": true,
3260
+ "name": "entityType",
3261
+ "in": "path"
3262
+ },
3263
+ {
3264
+ "schema": {
3265
+ "type": "string"
3266
+ },
3267
+ "required": true,
3268
+ "name": "entityId",
3269
+ "in": "path"
3270
+ }
3271
+ ],
3272
+ "responses": {
3273
+ "200": {
3274
+ "description": "Addresses for an entity",
3275
+ "content": {
3276
+ "application/json": {
3277
+ "schema": {
3278
+ "type": "object",
3279
+ "properties": {
3280
+ "data": {
3281
+ "type": "array",
3282
+ "items": {
3283
+ "type": "object",
3284
+ "properties": {
3285
+ "id": {
3286
+ "type": "string"
3287
+ },
3288
+ "entityType": {
3289
+ "type": "string"
3290
+ },
3291
+ "entityId": {
3292
+ "type": "string"
3293
+ },
3294
+ "label": {
3295
+ "type": "string",
3296
+ "enum": [
3297
+ "primary",
3298
+ "billing",
3299
+ "shipping",
3300
+ "mailing",
3301
+ "meeting",
3302
+ "service",
3303
+ "legal",
3304
+ "other"
3305
+ ]
3306
+ },
3307
+ "fullText": {
3308
+ "type": [
3309
+ "string",
3310
+ "null"
3311
+ ]
3312
+ },
3313
+ "line1": {
3314
+ "type": [
3315
+ "string",
3316
+ "null"
3317
+ ]
3318
+ },
3319
+ "line2": {
3320
+ "type": [
3321
+ "string",
3322
+ "null"
3323
+ ]
3324
+ },
3325
+ "city": {
3326
+ "type": [
3327
+ "string",
3328
+ "null"
3329
+ ]
3330
+ },
3331
+ "region": {
3332
+ "type": [
3333
+ "string",
3334
+ "null"
3335
+ ]
3336
+ },
3337
+ "postalCode": {
3338
+ "type": [
3339
+ "string",
3340
+ "null"
3341
+ ]
3342
+ },
3343
+ "country": {
3344
+ "type": [
3345
+ "string",
3346
+ "null"
3347
+ ]
3348
+ },
3349
+ "latitude": {
3350
+ "type": [
3351
+ "number",
3352
+ "null"
3353
+ ]
3354
+ },
3355
+ "longitude": {
3356
+ "type": [
3357
+ "number",
3358
+ "null"
3359
+ ]
3360
+ },
3361
+ "timezone": {
3362
+ "type": [
3363
+ "string",
3364
+ "null"
3365
+ ]
3366
+ },
3367
+ "isPrimary": {
3368
+ "type": "boolean"
3369
+ },
3370
+ "notes": {
3371
+ "type": [
3372
+ "string",
3373
+ "null"
3374
+ ]
3375
+ },
3376
+ "metadata": {
3377
+ "type": [
3378
+ "object",
3379
+ "null"
3380
+ ],
3381
+ "additionalProperties": {}
3382
+ },
3383
+ "createdAt": {
3384
+ "type": "string"
3385
+ },
3386
+ "updatedAt": {
3387
+ "type": "string"
3388
+ }
3389
+ },
3390
+ "required": [
3391
+ "id",
3392
+ "entityType",
3393
+ "entityId",
3394
+ "label",
3395
+ "fullText",
3396
+ "line1",
3397
+ "line2",
3398
+ "city",
3399
+ "region",
3400
+ "postalCode",
3401
+ "country",
3402
+ "latitude",
3403
+ "longitude",
3404
+ "timezone",
3405
+ "isPrimary",
3406
+ "notes",
3407
+ "metadata",
3408
+ "createdAt",
3409
+ "updatedAt"
3410
+ ]
3411
+ }
3412
+ }
3413
+ },
3414
+ "required": [
3415
+ "data"
3416
+ ]
3417
+ }
3418
+ }
3419
+ }
3420
+ }
3421
+ }
3422
+ },
3423
+ "post": {
3424
+ "tags": [
3425
+ "Identity"
3426
+ ],
3427
+ "summary": "Create an address for an entity",
3428
+ "parameters": [
3429
+ {
3430
+ "schema": {
3431
+ "type": "string"
3432
+ },
3433
+ "required": true,
3434
+ "name": "entityType",
3435
+ "in": "path"
3436
+ },
3437
+ {
3438
+ "schema": {
3439
+ "type": "string"
3440
+ },
3441
+ "required": true,
3442
+ "name": "entityId",
3443
+ "in": "path"
3444
+ }
3445
+ ],
3446
+ "requestBody": {
3447
+ "required": true,
3448
+ "content": {
3449
+ "application/json": {
3450
+ "schema": {
3451
+ "type": "object",
3452
+ "properties": {
3453
+ "label": {
3454
+ "type": "string",
3455
+ "enum": [
3456
+ "primary",
3457
+ "billing",
3458
+ "shipping",
3459
+ "mailing",
3460
+ "meeting",
3461
+ "service",
3462
+ "legal",
3463
+ "other"
3464
+ ],
3465
+ "default": "other"
3466
+ },
3467
+ "fullText": {
3468
+ "type": [
3469
+ "string",
3470
+ "null"
3471
+ ]
3472
+ },
3473
+ "line1": {
3474
+ "type": [
3475
+ "string",
3476
+ "null"
3477
+ ]
3478
+ },
3479
+ "line2": {
3480
+ "type": [
3481
+ "string",
3482
+ "null"
3483
+ ]
3484
+ },
3485
+ "city": {
3486
+ "type": [
3487
+ "string",
3488
+ "null"
3489
+ ]
3490
+ },
3491
+ "region": {
3492
+ "type": [
3493
+ "string",
3494
+ "null"
3495
+ ]
3496
+ },
3497
+ "postalCode": {
3498
+ "type": [
3499
+ "string",
3500
+ "null"
3501
+ ]
3502
+ },
3503
+ "country": {
3504
+ "type": [
3505
+ "string",
3506
+ "null"
3507
+ ]
3508
+ },
3509
+ "latitude": {
3510
+ "type": [
3511
+ "number",
3512
+ "null"
3513
+ ]
3514
+ },
3515
+ "longitude": {
3516
+ "type": [
3517
+ "number",
3518
+ "null"
3519
+ ]
3520
+ },
3521
+ "timezone": {
3522
+ "type": [
3523
+ "string",
3524
+ "null"
3525
+ ],
3526
+ "maxLength": 100
3527
+ },
3528
+ "isPrimary": {
3529
+ "type": "boolean",
3530
+ "default": false
3531
+ },
3532
+ "notes": {
3533
+ "type": [
3534
+ "string",
3535
+ "null"
3536
+ ]
3537
+ },
3538
+ "metadata": {
3539
+ "type": [
3540
+ "object",
3541
+ "null"
3542
+ ],
3543
+ "additionalProperties": {}
3544
+ }
3545
+ }
3546
+ }
3547
+ }
3548
+ }
3549
+ },
3550
+ "responses": {
3551
+ "201": {
3552
+ "description": "The created address",
3553
+ "content": {
3554
+ "application/json": {
3555
+ "schema": {
3556
+ "type": "object",
3557
+ "properties": {
3558
+ "data": {
3559
+ "type": "object",
3560
+ "properties": {
3561
+ "id": {
3562
+ "type": "string"
3563
+ },
3564
+ "entityType": {
3565
+ "type": "string"
3566
+ },
3567
+ "entityId": {
3568
+ "type": "string"
3569
+ },
3570
+ "label": {
3571
+ "type": "string",
3572
+ "enum": [
3573
+ "primary",
3574
+ "billing",
3575
+ "shipping",
3576
+ "mailing",
3577
+ "meeting",
3578
+ "service",
3579
+ "legal",
3580
+ "other"
3581
+ ]
3582
+ },
3583
+ "fullText": {
3584
+ "type": [
3585
+ "string",
3586
+ "null"
3587
+ ]
3588
+ },
3589
+ "line1": {
3590
+ "type": [
3591
+ "string",
3592
+ "null"
3593
+ ]
3594
+ },
3595
+ "line2": {
3596
+ "type": [
3597
+ "string",
3598
+ "null"
3599
+ ]
3600
+ },
3601
+ "city": {
3602
+ "type": [
3603
+ "string",
3604
+ "null"
3605
+ ]
3606
+ },
3607
+ "region": {
3608
+ "type": [
3609
+ "string",
3610
+ "null"
3611
+ ]
3612
+ },
3613
+ "postalCode": {
3614
+ "type": [
3615
+ "string",
3616
+ "null"
3617
+ ]
3618
+ },
3619
+ "country": {
3620
+ "type": [
3621
+ "string",
3622
+ "null"
3623
+ ]
3624
+ },
3625
+ "latitude": {
3626
+ "type": [
3627
+ "number",
3628
+ "null"
3629
+ ]
3630
+ },
3631
+ "longitude": {
3632
+ "type": [
3633
+ "number",
3634
+ "null"
3635
+ ]
3636
+ },
3637
+ "timezone": {
3638
+ "type": [
3639
+ "string",
3640
+ "null"
3641
+ ]
3642
+ },
3643
+ "isPrimary": {
3644
+ "type": "boolean"
3645
+ },
3646
+ "notes": {
3647
+ "type": [
3648
+ "string",
3649
+ "null"
3650
+ ]
3651
+ },
3652
+ "metadata": {
3653
+ "type": [
3654
+ "object",
3655
+ "null"
3656
+ ],
3657
+ "additionalProperties": {}
3658
+ },
3659
+ "createdAt": {
3660
+ "type": "string"
3661
+ },
3662
+ "updatedAt": {
3663
+ "type": "string"
3664
+ }
3665
+ },
3666
+ "required": [
3667
+ "id",
3668
+ "entityType",
3669
+ "entityId",
3670
+ "label",
3671
+ "fullText",
3672
+ "line1",
3673
+ "line2",
3674
+ "city",
3675
+ "region",
3676
+ "postalCode",
3677
+ "country",
3678
+ "latitude",
3679
+ "longitude",
3680
+ "timezone",
3681
+ "isPrimary",
3682
+ "notes",
3683
+ "metadata",
3684
+ "createdAt",
3685
+ "updatedAt"
3686
+ ]
3687
+ }
3688
+ },
3689
+ "required": [
3690
+ "data"
3691
+ ]
3692
+ }
3693
+ }
3694
+ }
3695
+ },
3696
+ "400": {
3697
+ "description": "invalid_request",
3698
+ "content": {
3699
+ "application/json": {
3700
+ "schema": {
3701
+ "type": "object",
3702
+ "properties": {
3703
+ "error": {
3704
+ "type": "string"
3705
+ }
3706
+ },
3707
+ "required": [
3708
+ "error"
3709
+ ]
3710
+ }
3711
+ }
3712
+ }
3713
+ }
3714
+ }
3715
+ }
3716
+ },
3717
+ "/v1/admin/identity/entities/{entityType}/{entityId}/named-contacts": {
3718
+ "get": {
3719
+ "tags": [
3720
+ "Identity"
3721
+ ],
3722
+ "summary": "List named contacts for an entity",
3723
+ "parameters": [
3724
+ {
3725
+ "schema": {
3726
+ "type": "string"
3727
+ },
3728
+ "required": true,
3729
+ "name": "entityType",
3730
+ "in": "path"
3731
+ },
3732
+ {
3733
+ "schema": {
3734
+ "type": "string"
3735
+ },
3736
+ "required": true,
3737
+ "name": "entityId",
3738
+ "in": "path"
3739
+ }
3740
+ ],
3741
+ "responses": {
3742
+ "200": {
3743
+ "description": "Named contacts for an entity",
3744
+ "content": {
3745
+ "application/json": {
3746
+ "schema": {
3747
+ "type": "object",
3748
+ "properties": {
3749
+ "data": {
3750
+ "type": "array",
3751
+ "items": {
3752
+ "type": "object",
3753
+ "properties": {
3754
+ "id": {
3755
+ "type": "string"
3756
+ },
3757
+ "entityType": {
3758
+ "type": "string"
3759
+ },
3760
+ "entityId": {
3761
+ "type": "string"
3762
+ },
3763
+ "role": {
3764
+ "type": "string",
3765
+ "enum": [
3766
+ "general",
3767
+ "primary",
3768
+ "reservations",
3769
+ "operations",
3770
+ "front_desk",
3771
+ "sales",
3772
+ "emergency",
3773
+ "accounting",
3774
+ "legal",
3775
+ "other"
3776
+ ]
3777
+ },
3778
+ "name": {
3779
+ "type": "string"
3780
+ },
3781
+ "title": {
3782
+ "type": [
3783
+ "string",
3784
+ "null"
3785
+ ]
3786
+ },
3787
+ "email": {
3788
+ "type": [
3789
+ "string",
3790
+ "null"
3791
+ ]
3792
+ },
3793
+ "phone": {
3794
+ "type": [
3795
+ "string",
3796
+ "null"
3797
+ ]
3798
+ },
3799
+ "isPrimary": {
3800
+ "type": "boolean"
3801
+ },
3802
+ "notes": {
3803
+ "type": [
3804
+ "string",
3805
+ "null"
3806
+ ]
3807
+ },
3808
+ "metadata": {
3809
+ "type": [
3810
+ "object",
3811
+ "null"
3812
+ ],
3813
+ "additionalProperties": {}
3814
+ },
3815
+ "createdAt": {
3816
+ "type": "string"
3817
+ },
3818
+ "updatedAt": {
3819
+ "type": "string"
3820
+ }
3821
+ },
3822
+ "required": [
3823
+ "id",
3824
+ "entityType",
3825
+ "entityId",
3826
+ "role",
3827
+ "name",
3828
+ "title",
3829
+ "email",
3830
+ "phone",
3831
+ "isPrimary",
3832
+ "notes",
3833
+ "metadata",
3834
+ "createdAt",
3835
+ "updatedAt"
3836
+ ]
3837
+ }
3838
+ }
3839
+ },
3840
+ "required": [
3841
+ "data"
3842
+ ]
3843
+ }
3844
+ }
3845
+ }
3846
+ }
3847
+ }
3848
+ },
3849
+ "post": {
3850
+ "tags": [
3851
+ "Identity"
3852
+ ],
3853
+ "summary": "Create a named contact for an entity",
3854
+ "parameters": [
3855
+ {
3856
+ "schema": {
3857
+ "type": "string"
3858
+ },
3859
+ "required": true,
3860
+ "name": "entityType",
3861
+ "in": "path"
3862
+ },
3863
+ {
3864
+ "schema": {
3865
+ "type": "string"
3866
+ },
3867
+ "required": true,
3868
+ "name": "entityId",
3869
+ "in": "path"
3870
+ }
3871
+ ],
3872
+ "requestBody": {
3873
+ "required": true,
3874
+ "content": {
3875
+ "application/json": {
3876
+ "schema": {
3877
+ "type": "object",
3878
+ "properties": {
3879
+ "role": {
3880
+ "type": "string",
3881
+ "enum": [
3882
+ "general",
3883
+ "primary",
3884
+ "reservations",
3885
+ "operations",
3886
+ "front_desk",
3887
+ "sales",
3888
+ "emergency",
3889
+ "accounting",
3890
+ "legal",
3891
+ "other"
3892
+ ],
3893
+ "default": "general"
3894
+ },
3895
+ "name": {
3896
+ "type": "string",
3897
+ "minLength": 1,
3898
+ "maxLength": 255
3899
+ },
3900
+ "title": {
3901
+ "type": [
3902
+ "string",
3903
+ "null"
3904
+ ],
3905
+ "maxLength": 255
3906
+ },
3907
+ "email": {
3908
+ "type": [
3909
+ "string",
3910
+ "null"
3911
+ ],
3912
+ "format": "email"
3913
+ },
3914
+ "phone": {
3915
+ "type": [
3916
+ "string",
3917
+ "null"
3918
+ ],
3919
+ "maxLength": 50
3920
+ },
3921
+ "isPrimary": {
3922
+ "type": "boolean",
3923
+ "default": false
3924
+ },
3925
+ "notes": {
3926
+ "type": [
3927
+ "string",
3928
+ "null"
3929
+ ]
3930
+ },
3931
+ "metadata": {
3932
+ "type": [
3933
+ "object",
3934
+ "null"
3935
+ ],
3936
+ "additionalProperties": {}
3937
+ }
3938
+ },
3939
+ "required": [
3940
+ "name"
3941
+ ]
3942
+ }
3943
+ }
3944
+ }
3945
+ },
3946
+ "responses": {
3947
+ "201": {
3948
+ "description": "The created named contact",
3949
+ "content": {
3950
+ "application/json": {
3951
+ "schema": {
3952
+ "type": "object",
3953
+ "properties": {
3954
+ "data": {
3955
+ "type": "object",
3956
+ "properties": {
3957
+ "id": {
3958
+ "type": "string"
3959
+ },
3960
+ "entityType": {
3961
+ "type": "string"
3962
+ },
3963
+ "entityId": {
3964
+ "type": "string"
3965
+ },
3966
+ "role": {
3967
+ "type": "string",
3968
+ "enum": [
3969
+ "general",
3970
+ "primary",
3971
+ "reservations",
3972
+ "operations",
3973
+ "front_desk",
3974
+ "sales",
3975
+ "emergency",
3976
+ "accounting",
3977
+ "legal",
3978
+ "other"
3979
+ ]
3980
+ },
3981
+ "name": {
3982
+ "type": "string"
3983
+ },
3984
+ "title": {
3985
+ "type": [
3986
+ "string",
3987
+ "null"
3988
+ ]
3989
+ },
3990
+ "email": {
3991
+ "type": [
3992
+ "string",
3993
+ "null"
3994
+ ]
3995
+ },
3996
+ "phone": {
3997
+ "type": [
3998
+ "string",
3999
+ "null"
4000
+ ]
4001
+ },
4002
+ "isPrimary": {
4003
+ "type": "boolean"
4004
+ },
4005
+ "notes": {
4006
+ "type": [
4007
+ "string",
4008
+ "null"
4009
+ ]
4010
+ },
4011
+ "metadata": {
4012
+ "type": [
4013
+ "object",
4014
+ "null"
4015
+ ],
4016
+ "additionalProperties": {}
4017
+ },
4018
+ "createdAt": {
4019
+ "type": "string"
4020
+ },
4021
+ "updatedAt": {
4022
+ "type": "string"
4023
+ }
4024
+ },
4025
+ "required": [
4026
+ "id",
4027
+ "entityType",
4028
+ "entityId",
4029
+ "role",
4030
+ "name",
4031
+ "title",
4032
+ "email",
4033
+ "phone",
4034
+ "isPrimary",
4035
+ "notes",
4036
+ "metadata",
4037
+ "createdAt",
4038
+ "updatedAt"
4039
+ ]
4040
+ }
4041
+ },
4042
+ "required": [
4043
+ "data"
4044
+ ]
4045
+ }
4046
+ }
4047
+ }
4048
+ },
4049
+ "400": {
4050
+ "description": "invalid_request",
4051
+ "content": {
4052
+ "application/json": {
4053
+ "schema": {
4054
+ "type": "object",
4055
+ "properties": {
4056
+ "error": {
4057
+ "type": "string"
4058
+ }
4059
+ },
4060
+ "required": [
4061
+ "error"
4062
+ ]
4063
+ }
4064
+ }
4065
+ }
4066
+ }
4067
+ }
4068
+ }
4069
+ }
4070
+ },
4071
+ "webhooks": {}
4072
+ }