@voyant-travel/openapi 0.2.6 → 0.4.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 +1443 -0
  3. package/spec/admin/action-ledger.json +6285 -0
  4. package/spec/admin/booking-requirements.json +5975 -0
  5. package/spec/admin/bookings.json +19276 -0
  6. package/spec/admin/catalog.json +703 -0
  7. package/spec/admin/distribution.json +20434 -0
  8. package/spec/admin/external-refs.json +1437 -0
  9. package/spec/admin/extras.json +4787 -0
  10. package/spec/admin/finance.json +36583 -0
  11. package/spec/admin/identity.json +4141 -0
  12. package/spec/admin/legal.json +14821 -0
  13. package/spec/admin/markets.json +5551 -0
  14. package/spec/admin/notifications.json +8667 -0
  15. package/spec/admin/operations.json +41627 -0
  16. package/spec/admin/operator-settings.json +1451 -0
  17. package/spec/admin/pricing.json +11136 -0
  18. package/spec/admin/products.json +23257 -0
  19. package/spec/admin/promotions.json +2778 -0
  20. package/spec/admin/quotes.json +7333 -0
  21. package/spec/admin/relationships.json +14512 -0
  22. package/spec/admin/sellability.json +5056 -0
  23. package/spec/admin/storefront.json +1973 -0
  24. package/spec/admin/suppliers.json +6094 -0
  25. package/spec/admin/trips.json +9531 -0
  26. package/spec/framework-admin.json +12715 -1375
  27. package/spec/framework-openapi.json +13731 -1482
  28. package/spec/framework-storefront.json +1022 -107
  29. package/spec/storefront/booking-requirements.json +380 -0
  30. package/spec/storefront/bookings.json +6213 -0
  31. package/spec/storefront/catalog.json +703 -0
  32. package/spec/storefront/customer-portal.json +6177 -0
  33. package/spec/storefront/finance.json +4914 -0
  34. package/spec/storefront/legal.json +2165 -0
  35. package/spec/storefront/markets.json +269 -0
  36. package/spec/storefront/operator-settings.json +329 -0
  37. package/spec/storefront/pricing.json +598 -0
  38. package/spec/storefront/products.json +2965 -0
  39. package/spec/storefront/storefront-verification.json +943 -0
  40. package/spec/storefront/storefront.json +4157 -0
  41. package/spec/storefront/trips.json +9531 -0
@@ -0,0 +1,2165 @@
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
+ "servers": [
9
+ {
10
+ "url": "/",
11
+ "description": "This deployment (same origin)"
12
+ }
13
+ ],
14
+ "components": {
15
+ "schemas": {
16
+ "CatalogSearchFilter": {
17
+ "anyOf": [
18
+ {
19
+ "type": "object",
20
+ "properties": {
21
+ "kind": {
22
+ "type": "string",
23
+ "enum": [
24
+ "eq"
25
+ ]
26
+ },
27
+ "field": {
28
+ "type": "string",
29
+ "minLength": 1
30
+ },
31
+ "value": {
32
+ "anyOf": [
33
+ {
34
+ "type": "string"
35
+ },
36
+ {
37
+ "type": "number"
38
+ },
39
+ {
40
+ "type": "boolean"
41
+ }
42
+ ]
43
+ }
44
+ },
45
+ "required": [
46
+ "kind",
47
+ "field",
48
+ "value"
49
+ ]
50
+ },
51
+ {
52
+ "type": "object",
53
+ "properties": {
54
+ "kind": {
55
+ "type": "string",
56
+ "enum": [
57
+ "in"
58
+ ]
59
+ },
60
+ "field": {
61
+ "type": "string",
62
+ "minLength": 1
63
+ },
64
+ "values": {
65
+ "type": "array",
66
+ "items": {
67
+ "anyOf": [
68
+ {
69
+ "type": "string"
70
+ },
71
+ {
72
+ "type": "number"
73
+ }
74
+ ]
75
+ }
76
+ }
77
+ },
78
+ "required": [
79
+ "kind",
80
+ "field",
81
+ "values"
82
+ ]
83
+ },
84
+ {
85
+ "type": "object",
86
+ "properties": {
87
+ "kind": {
88
+ "type": "string",
89
+ "enum": [
90
+ "range"
91
+ ]
92
+ },
93
+ "field": {
94
+ "type": "string",
95
+ "minLength": 1
96
+ },
97
+ "gte": {
98
+ "type": "number"
99
+ },
100
+ "lte": {
101
+ "type": "number"
102
+ }
103
+ },
104
+ "required": [
105
+ "kind",
106
+ "field"
107
+ ]
108
+ },
109
+ {
110
+ "type": "object",
111
+ "properties": {
112
+ "kind": {
113
+ "type": "string",
114
+ "enum": [
115
+ "and"
116
+ ]
117
+ },
118
+ "clauses": {
119
+ "type": "array",
120
+ "items": {
121
+ "$ref": "#/components/schemas/CatalogSearchFilter"
122
+ }
123
+ }
124
+ },
125
+ "required": [
126
+ "kind",
127
+ "clauses"
128
+ ]
129
+ },
130
+ {
131
+ "type": "object",
132
+ "properties": {
133
+ "kind": {
134
+ "type": "string",
135
+ "enum": [
136
+ "or"
137
+ ]
138
+ },
139
+ "clauses": {
140
+ "type": "array",
141
+ "items": {
142
+ "$ref": "#/components/schemas/CatalogSearchFilter"
143
+ }
144
+ }
145
+ },
146
+ "required": [
147
+ "kind",
148
+ "clauses"
149
+ ]
150
+ }
151
+ ]
152
+ }
153
+ },
154
+ "parameters": {}
155
+ },
156
+ "paths": {
157
+ "/v1/public/legal/contracts/templates/default": {
158
+ "get": {
159
+ "parameters": [
160
+ {
161
+ "schema": {
162
+ "type": "string",
163
+ "enum": [
164
+ "customer",
165
+ "supplier",
166
+ "partner",
167
+ "channel",
168
+ "other"
169
+ ],
170
+ "default": "customer"
171
+ },
172
+ "required": false,
173
+ "name": "scope",
174
+ "in": "query"
175
+ },
176
+ {
177
+ "schema": {
178
+ "type": "string"
179
+ },
180
+ "required": false,
181
+ "name": "channelId",
182
+ "in": "query"
183
+ },
184
+ {
185
+ "schema": {
186
+ "type": "string",
187
+ "minLength": 2,
188
+ "maxLength": 10
189
+ },
190
+ "required": false,
191
+ "name": "language",
192
+ "in": "query"
193
+ },
194
+ {
195
+ "schema": {
196
+ "type": "string"
197
+ },
198
+ "required": false,
199
+ "name": "fallbackLanguages",
200
+ "in": "query"
201
+ }
202
+ ],
203
+ "responses": {
204
+ "200": {
205
+ "description": "The resolved default contract template for the scope/language",
206
+ "content": {
207
+ "application/json": {
208
+ "schema": {
209
+ "type": "object",
210
+ "properties": {
211
+ "data": {
212
+ "type": "object",
213
+ "properties": {
214
+ "id": {
215
+ "type": "string"
216
+ },
217
+ "name": {
218
+ "type": "string"
219
+ },
220
+ "slug": {
221
+ "type": "string"
222
+ },
223
+ "scope": {
224
+ "type": "string",
225
+ "enum": [
226
+ "customer",
227
+ "supplier",
228
+ "partner",
229
+ "channel",
230
+ "other"
231
+ ]
232
+ },
233
+ "language": {
234
+ "type": "string"
235
+ },
236
+ "description": {
237
+ "type": [
238
+ "string",
239
+ "null"
240
+ ]
241
+ },
242
+ "body": {
243
+ "type": "string"
244
+ },
245
+ "variableSchema": {},
246
+ "currentVersionId": {
247
+ "type": [
248
+ "string",
249
+ "null"
250
+ ]
251
+ },
252
+ "channelId": {
253
+ "type": [
254
+ "string",
255
+ "null"
256
+ ]
257
+ },
258
+ "isDefault": {
259
+ "type": "boolean"
260
+ },
261
+ "active": {
262
+ "type": "boolean"
263
+ },
264
+ "createdAt": {
265
+ "type": "string"
266
+ },
267
+ "updatedAt": {
268
+ "type": "string"
269
+ }
270
+ },
271
+ "required": [
272
+ "id",
273
+ "name",
274
+ "slug",
275
+ "scope",
276
+ "language",
277
+ "description",
278
+ "body",
279
+ "currentVersionId",
280
+ "channelId",
281
+ "isDefault",
282
+ "active",
283
+ "createdAt",
284
+ "updatedAt"
285
+ ]
286
+ }
287
+ },
288
+ "required": [
289
+ "data"
290
+ ]
291
+ }
292
+ }
293
+ }
294
+ },
295
+ "404": {
296
+ "description": "Template not found",
297
+ "content": {
298
+ "application/json": {
299
+ "schema": {
300
+ "type": "object",
301
+ "properties": {
302
+ "error": {
303
+ "type": "string"
304
+ }
305
+ },
306
+ "required": [
307
+ "error"
308
+ ]
309
+ }
310
+ }
311
+ }
312
+ }
313
+ },
314
+ "operationId": "getPublicLegalContractsTemplatesDefault",
315
+ "summary": "GET /v1/public/legal/contracts/templates/default",
316
+ "tags": [
317
+ "legal"
318
+ ],
319
+ "x-voyant-module": "legal",
320
+ "x-voyant-surface": "storefront"
321
+ }
322
+ },
323
+ "/v1/public/legal/contracts/templates/{id}/preview": {
324
+ "post": {
325
+ "parameters": [
326
+ {
327
+ "schema": {
328
+ "type": "string"
329
+ },
330
+ "required": true,
331
+ "name": "id",
332
+ "in": "path"
333
+ }
334
+ ],
335
+ "requestBody": {
336
+ "required": true,
337
+ "content": {
338
+ "application/json": {
339
+ "schema": {
340
+ "type": "object",
341
+ "properties": {
342
+ "variables": {
343
+ "type": "object",
344
+ "additionalProperties": {}
345
+ }
346
+ },
347
+ "required": [
348
+ "variables"
349
+ ]
350
+ }
351
+ }
352
+ }
353
+ },
354
+ "responses": {
355
+ "200": {
356
+ "description": "The rendered template preview",
357
+ "content": {
358
+ "application/json": {
359
+ "schema": {
360
+ "type": "object",
361
+ "properties": {
362
+ "data": {
363
+ "type": "object",
364
+ "additionalProperties": {}
365
+ }
366
+ },
367
+ "required": [
368
+ "data"
369
+ ]
370
+ }
371
+ }
372
+ }
373
+ },
374
+ "400": {
375
+ "description": "invalid_request: request body failed validation",
376
+ "content": {
377
+ "application/json": {
378
+ "schema": {
379
+ "type": "object",
380
+ "properties": {
381
+ "error": {
382
+ "type": "string"
383
+ }
384
+ },
385
+ "required": [
386
+ "error"
387
+ ]
388
+ }
389
+ }
390
+ }
391
+ },
392
+ "404": {
393
+ "description": "Template not found",
394
+ "content": {
395
+ "application/json": {
396
+ "schema": {
397
+ "type": "object",
398
+ "properties": {
399
+ "error": {
400
+ "type": "string"
401
+ }
402
+ },
403
+ "required": [
404
+ "error"
405
+ ]
406
+ }
407
+ }
408
+ }
409
+ }
410
+ },
411
+ "operationId": "postPublicLegalContractsTemplatesByIdPreview",
412
+ "summary": "POST /v1/public/legal/contracts/templates/{id}/preview",
413
+ "tags": [
414
+ "legal"
415
+ ],
416
+ "x-voyant-module": "legal",
417
+ "x-voyant-surface": "storefront"
418
+ }
419
+ },
420
+ "/v1/public/legal/contracts/templates/{id}/render-preview": {
421
+ "post": {
422
+ "parameters": [
423
+ {
424
+ "schema": {
425
+ "type": "string"
426
+ },
427
+ "required": true,
428
+ "name": "id",
429
+ "in": "path"
430
+ }
431
+ ],
432
+ "requestBody": {
433
+ "required": true,
434
+ "content": {
435
+ "application/json": {
436
+ "schema": {
437
+ "type": "object",
438
+ "properties": {
439
+ "variables": {
440
+ "type": "object",
441
+ "additionalProperties": {}
442
+ }
443
+ },
444
+ "required": [
445
+ "variables"
446
+ ]
447
+ }
448
+ }
449
+ }
450
+ },
451
+ "responses": {
452
+ "200": {
453
+ "description": "The rendered template preview",
454
+ "content": {
455
+ "application/json": {
456
+ "schema": {
457
+ "type": "object",
458
+ "properties": {
459
+ "data": {
460
+ "type": "object",
461
+ "additionalProperties": {}
462
+ }
463
+ },
464
+ "required": [
465
+ "data"
466
+ ]
467
+ }
468
+ }
469
+ }
470
+ },
471
+ "400": {
472
+ "description": "invalid_request: request body failed validation",
473
+ "content": {
474
+ "application/json": {
475
+ "schema": {
476
+ "type": "object",
477
+ "properties": {
478
+ "error": {
479
+ "type": "string"
480
+ }
481
+ },
482
+ "required": [
483
+ "error"
484
+ ]
485
+ }
486
+ }
487
+ }
488
+ },
489
+ "404": {
490
+ "description": "Template not found",
491
+ "content": {
492
+ "application/json": {
493
+ "schema": {
494
+ "type": "object",
495
+ "properties": {
496
+ "error": {
497
+ "type": "string"
498
+ }
499
+ },
500
+ "required": [
501
+ "error"
502
+ ]
503
+ }
504
+ }
505
+ }
506
+ }
507
+ },
508
+ "operationId": "postPublicLegalContractsTemplatesByIdRenderPreview",
509
+ "summary": "POST /v1/public/legal/contracts/templates/{id}/render-preview",
510
+ "tags": [
511
+ "legal"
512
+ ],
513
+ "x-voyant-module": "legal",
514
+ "x-voyant-surface": "storefront"
515
+ }
516
+ },
517
+ "/v1/public/legal/contracts/templates/by-slug/{slug}/preview": {
518
+ "post": {
519
+ "parameters": [
520
+ {
521
+ "schema": {
522
+ "type": "string"
523
+ },
524
+ "required": true,
525
+ "name": "slug",
526
+ "in": "path"
527
+ }
528
+ ],
529
+ "requestBody": {
530
+ "required": true,
531
+ "content": {
532
+ "application/json": {
533
+ "schema": {
534
+ "type": "object",
535
+ "properties": {
536
+ "variables": {
537
+ "type": "object",
538
+ "additionalProperties": {}
539
+ }
540
+ },
541
+ "required": [
542
+ "variables"
543
+ ]
544
+ }
545
+ }
546
+ }
547
+ },
548
+ "responses": {
549
+ "200": {
550
+ "description": "The rendered template preview (with template descriptor)",
551
+ "content": {
552
+ "application/json": {
553
+ "schema": {
554
+ "type": "object",
555
+ "properties": {
556
+ "data": {
557
+ "type": "object",
558
+ "additionalProperties": {}
559
+ }
560
+ },
561
+ "required": [
562
+ "data"
563
+ ]
564
+ }
565
+ }
566
+ }
567
+ },
568
+ "400": {
569
+ "description": "invalid_request: request body failed validation",
570
+ "content": {
571
+ "application/json": {
572
+ "schema": {
573
+ "type": "object",
574
+ "properties": {
575
+ "error": {
576
+ "type": "string"
577
+ }
578
+ },
579
+ "required": [
580
+ "error"
581
+ ]
582
+ }
583
+ }
584
+ }
585
+ },
586
+ "404": {
587
+ "description": "Template not found",
588
+ "content": {
589
+ "application/json": {
590
+ "schema": {
591
+ "type": "object",
592
+ "properties": {
593
+ "error": {
594
+ "type": "string"
595
+ }
596
+ },
597
+ "required": [
598
+ "error"
599
+ ]
600
+ }
601
+ }
602
+ }
603
+ }
604
+ },
605
+ "operationId": "postPublicLegalContractsTemplatesBySlugBySlugPreview",
606
+ "summary": "POST /v1/public/legal/contracts/templates/by-slug/{slug}/preview",
607
+ "tags": [
608
+ "legal"
609
+ ],
610
+ "x-voyant-module": "legal",
611
+ "x-voyant-surface": "storefront"
612
+ }
613
+ },
614
+ "/v1/public/legal/contracts/templates/by-slug/{slug}/render-preview": {
615
+ "post": {
616
+ "parameters": [
617
+ {
618
+ "schema": {
619
+ "type": "string"
620
+ },
621
+ "required": true,
622
+ "name": "slug",
623
+ "in": "path"
624
+ }
625
+ ],
626
+ "requestBody": {
627
+ "required": true,
628
+ "content": {
629
+ "application/json": {
630
+ "schema": {
631
+ "type": "object",
632
+ "properties": {
633
+ "variables": {
634
+ "type": "object",
635
+ "additionalProperties": {}
636
+ }
637
+ },
638
+ "required": [
639
+ "variables"
640
+ ]
641
+ }
642
+ }
643
+ }
644
+ },
645
+ "responses": {
646
+ "200": {
647
+ "description": "The rendered template preview (with template descriptor)",
648
+ "content": {
649
+ "application/json": {
650
+ "schema": {
651
+ "type": "object",
652
+ "properties": {
653
+ "data": {
654
+ "type": "object",
655
+ "additionalProperties": {}
656
+ }
657
+ },
658
+ "required": [
659
+ "data"
660
+ ]
661
+ }
662
+ }
663
+ }
664
+ },
665
+ "400": {
666
+ "description": "invalid_request: request body failed validation",
667
+ "content": {
668
+ "application/json": {
669
+ "schema": {
670
+ "type": "object",
671
+ "properties": {
672
+ "error": {
673
+ "type": "string"
674
+ }
675
+ },
676
+ "required": [
677
+ "error"
678
+ ]
679
+ }
680
+ }
681
+ }
682
+ },
683
+ "404": {
684
+ "description": "Template not found",
685
+ "content": {
686
+ "application/json": {
687
+ "schema": {
688
+ "type": "object",
689
+ "properties": {
690
+ "error": {
691
+ "type": "string"
692
+ }
693
+ },
694
+ "required": [
695
+ "error"
696
+ ]
697
+ }
698
+ }
699
+ }
700
+ }
701
+ },
702
+ "operationId": "postPublicLegalContractsTemplatesBySlugBySlugRenderPreview",
703
+ "summary": "POST /v1/public/legal/contracts/templates/by-slug/{slug}/render-preview",
704
+ "tags": [
705
+ "legal"
706
+ ],
707
+ "x-voyant-module": "legal",
708
+ "x-voyant-surface": "storefront"
709
+ }
710
+ },
711
+ "/v1/public/legal/contracts/{id}": {
712
+ "get": {
713
+ "parameters": [
714
+ {
715
+ "schema": {
716
+ "type": "string"
717
+ },
718
+ "required": true,
719
+ "name": "id",
720
+ "in": "path"
721
+ },
722
+ {
723
+ "schema": {
724
+ "type": "string"
725
+ },
726
+ "required": false,
727
+ "name": "token",
728
+ "in": "query"
729
+ }
730
+ ],
731
+ "responses": {
732
+ "200": {
733
+ "description": "A token-authorized public-safe contract",
734
+ "content": {
735
+ "application/json": {
736
+ "schema": {
737
+ "type": "object",
738
+ "properties": {
739
+ "data": {
740
+ "type": "object",
741
+ "properties": {
742
+ "contractNumber": {
743
+ "type": [
744
+ "string",
745
+ "null"
746
+ ]
747
+ },
748
+ "scope": {
749
+ "type": "string",
750
+ "enum": [
751
+ "customer",
752
+ "supplier",
753
+ "partner",
754
+ "channel",
755
+ "other"
756
+ ]
757
+ },
758
+ "status": {
759
+ "type": "string",
760
+ "enum": [
761
+ "draft",
762
+ "issued",
763
+ "sent",
764
+ "signed",
765
+ "executed",
766
+ "expired",
767
+ "void"
768
+ ]
769
+ },
770
+ "title": {
771
+ "type": "string"
772
+ },
773
+ "issuedAt": {
774
+ "type": [
775
+ "string",
776
+ "null"
777
+ ]
778
+ },
779
+ "sentAt": {
780
+ "type": [
781
+ "string",
782
+ "null"
783
+ ]
784
+ },
785
+ "executedAt": {
786
+ "type": [
787
+ "string",
788
+ "null"
789
+ ]
790
+ },
791
+ "expiresAt": {
792
+ "type": [
793
+ "string",
794
+ "null"
795
+ ]
796
+ },
797
+ "voidedAt": {
798
+ "type": [
799
+ "string",
800
+ "null"
801
+ ]
802
+ },
803
+ "language": {
804
+ "type": "string"
805
+ },
806
+ "renderedBodyFormat": {
807
+ "type": "string",
808
+ "enum": [
809
+ "markdown",
810
+ "html",
811
+ "lexical_json"
812
+ ]
813
+ },
814
+ "renderedBody": {
815
+ "type": [
816
+ "string",
817
+ "null"
818
+ ]
819
+ }
820
+ },
821
+ "required": [
822
+ "contractNumber",
823
+ "scope",
824
+ "status",
825
+ "title",
826
+ "issuedAt",
827
+ "sentAt",
828
+ "executedAt",
829
+ "expiresAt",
830
+ "voidedAt",
831
+ "language",
832
+ "renderedBodyFormat",
833
+ "renderedBody"
834
+ ]
835
+ }
836
+ },
837
+ "required": [
838
+ "data"
839
+ ]
840
+ }
841
+ }
842
+ }
843
+ },
844
+ "404": {
845
+ "description": "Contract not found",
846
+ "content": {
847
+ "application/json": {
848
+ "schema": {
849
+ "type": "object",
850
+ "properties": {
851
+ "error": {
852
+ "type": "string"
853
+ }
854
+ },
855
+ "required": [
856
+ "error"
857
+ ]
858
+ }
859
+ }
860
+ }
861
+ },
862
+ "410": {
863
+ "description": "Contract access grant is no longer available",
864
+ "content": {
865
+ "application/json": {
866
+ "schema": {
867
+ "type": "object",
868
+ "properties": {
869
+ "error": {
870
+ "type": "string"
871
+ }
872
+ },
873
+ "required": [
874
+ "error"
875
+ ]
876
+ }
877
+ }
878
+ }
879
+ }
880
+ },
881
+ "operationId": "getPublicLegalContractsById",
882
+ "summary": "GET /v1/public/legal/contracts/{id}",
883
+ "tags": [
884
+ "legal"
885
+ ],
886
+ "x-voyant-module": "legal",
887
+ "x-voyant-surface": "storefront"
888
+ }
889
+ },
890
+ "/v1/public/legal/contracts/{id}/sign": {
891
+ "post": {
892
+ "parameters": [
893
+ {
894
+ "schema": {
895
+ "type": "string"
896
+ },
897
+ "required": true,
898
+ "name": "id",
899
+ "in": "path"
900
+ },
901
+ {
902
+ "schema": {
903
+ "type": "string"
904
+ },
905
+ "required": false,
906
+ "name": "token",
907
+ "in": "query"
908
+ }
909
+ ],
910
+ "requestBody": {
911
+ "required": true,
912
+ "content": {
913
+ "application/json": {
914
+ "schema": {
915
+ "type": "object",
916
+ "properties": {
917
+ "signerName": {
918
+ "type": "string",
919
+ "minLength": 1,
920
+ "maxLength": 255
921
+ },
922
+ "signerEmail": {
923
+ "type": [
924
+ "string",
925
+ "null"
926
+ ],
927
+ "format": "email"
928
+ },
929
+ "signerRole": {
930
+ "type": [
931
+ "string",
932
+ "null"
933
+ ],
934
+ "maxLength": 255
935
+ },
936
+ "method": {
937
+ "type": "string",
938
+ "enum": [
939
+ "manual",
940
+ "electronic",
941
+ "docusign",
942
+ "other"
943
+ ],
944
+ "default": "manual"
945
+ },
946
+ "signatureData": {
947
+ "type": [
948
+ "string",
949
+ "null"
950
+ ]
951
+ }
952
+ },
953
+ "required": [
954
+ "signerName"
955
+ ]
956
+ }
957
+ }
958
+ }
959
+ },
960
+ "responses": {
961
+ "200": {
962
+ "description": "The recorded signature",
963
+ "content": {
964
+ "application/json": {
965
+ "schema": {
966
+ "type": "object",
967
+ "properties": {
968
+ "data": {
969
+ "type": "object",
970
+ "properties": {
971
+ "signature": {
972
+ "type": "object",
973
+ "properties": {
974
+ "signerName": {
975
+ "type": "string"
976
+ },
977
+ "signerEmail": {
978
+ "type": [
979
+ "string",
980
+ "null"
981
+ ]
982
+ },
983
+ "signerRole": {
984
+ "type": [
985
+ "string",
986
+ "null"
987
+ ]
988
+ },
989
+ "method": {
990
+ "type": "string",
991
+ "enum": [
992
+ "manual",
993
+ "electronic",
994
+ "docusign",
995
+ "other"
996
+ ]
997
+ },
998
+ "signedAt": {
999
+ "type": "string"
1000
+ }
1001
+ },
1002
+ "required": [
1003
+ "signerName",
1004
+ "signerEmail",
1005
+ "signerRole",
1006
+ "method",
1007
+ "signedAt"
1008
+ ]
1009
+ }
1010
+ },
1011
+ "required": [
1012
+ "signature"
1013
+ ]
1014
+ }
1015
+ },
1016
+ "required": [
1017
+ "data"
1018
+ ]
1019
+ }
1020
+ }
1021
+ }
1022
+ },
1023
+ "400": {
1024
+ "description": "invalid_request: request body failed validation",
1025
+ "content": {
1026
+ "application/json": {
1027
+ "schema": {
1028
+ "type": "object",
1029
+ "properties": {
1030
+ "error": {
1031
+ "type": "string"
1032
+ }
1033
+ },
1034
+ "required": [
1035
+ "error"
1036
+ ]
1037
+ }
1038
+ }
1039
+ }
1040
+ },
1041
+ "404": {
1042
+ "description": "Contract not found",
1043
+ "content": {
1044
+ "application/json": {
1045
+ "schema": {
1046
+ "type": "object",
1047
+ "properties": {
1048
+ "error": {
1049
+ "type": "string"
1050
+ }
1051
+ },
1052
+ "required": [
1053
+ "error"
1054
+ ]
1055
+ }
1056
+ }
1057
+ }
1058
+ },
1059
+ "409": {
1060
+ "description": "Contract is not in a signable state",
1061
+ "content": {
1062
+ "application/json": {
1063
+ "schema": {
1064
+ "type": "object",
1065
+ "properties": {
1066
+ "error": {
1067
+ "type": "string"
1068
+ }
1069
+ },
1070
+ "required": [
1071
+ "error"
1072
+ ]
1073
+ }
1074
+ }
1075
+ }
1076
+ },
1077
+ "410": {
1078
+ "description": "Contract access grant is no longer available",
1079
+ "content": {
1080
+ "application/json": {
1081
+ "schema": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "error": {
1085
+ "type": "string"
1086
+ }
1087
+ },
1088
+ "required": [
1089
+ "error"
1090
+ ]
1091
+ }
1092
+ }
1093
+ }
1094
+ }
1095
+ },
1096
+ "operationId": "postPublicLegalContractsByIdSign",
1097
+ "summary": "POST /v1/public/legal/contracts/{id}/sign",
1098
+ "tags": [
1099
+ "legal"
1100
+ ],
1101
+ "x-voyant-module": "legal",
1102
+ "x-voyant-surface": "storefront"
1103
+ }
1104
+ },
1105
+ "/v1/public/legal/policies/{slug}": {
1106
+ "get": {
1107
+ "parameters": [
1108
+ {
1109
+ "schema": {
1110
+ "type": "string"
1111
+ },
1112
+ "required": true,
1113
+ "name": "slug",
1114
+ "in": "path"
1115
+ }
1116
+ ],
1117
+ "responses": {
1118
+ "200": {
1119
+ "description": "A policy and its current published version, by slug",
1120
+ "content": {
1121
+ "application/json": {
1122
+ "schema": {
1123
+ "type": "object",
1124
+ "properties": {
1125
+ "data": {
1126
+ "type": "object",
1127
+ "properties": {
1128
+ "policy": {
1129
+ "type": "object",
1130
+ "properties": {
1131
+ "id": {
1132
+ "type": "string"
1133
+ },
1134
+ "kind": {
1135
+ "type": "string",
1136
+ "enum": [
1137
+ "cancellation",
1138
+ "payment",
1139
+ "terms_and_conditions",
1140
+ "privacy",
1141
+ "refund",
1142
+ "commission",
1143
+ "guarantee",
1144
+ "other"
1145
+ ]
1146
+ },
1147
+ "name": {
1148
+ "type": "string"
1149
+ },
1150
+ "slug": {
1151
+ "type": "string"
1152
+ },
1153
+ "description": {
1154
+ "type": [
1155
+ "string",
1156
+ "null"
1157
+ ]
1158
+ },
1159
+ "language": {
1160
+ "type": "string"
1161
+ },
1162
+ "currentVersionId": {
1163
+ "type": [
1164
+ "string",
1165
+ "null"
1166
+ ]
1167
+ },
1168
+ "metadata": {},
1169
+ "createdAt": {
1170
+ "type": "string"
1171
+ },
1172
+ "updatedAt": {
1173
+ "type": "string"
1174
+ }
1175
+ },
1176
+ "required": [
1177
+ "id",
1178
+ "kind",
1179
+ "name",
1180
+ "slug",
1181
+ "description",
1182
+ "language",
1183
+ "currentVersionId",
1184
+ "createdAt",
1185
+ "updatedAt"
1186
+ ]
1187
+ },
1188
+ "version": {
1189
+ "type": "object",
1190
+ "properties": {
1191
+ "id": {
1192
+ "type": "string"
1193
+ },
1194
+ "policyId": {
1195
+ "type": "string"
1196
+ },
1197
+ "version": {
1198
+ "type": "integer"
1199
+ },
1200
+ "status": {
1201
+ "type": "string",
1202
+ "enum": [
1203
+ "draft",
1204
+ "published",
1205
+ "retired"
1206
+ ]
1207
+ },
1208
+ "title": {
1209
+ "type": "string"
1210
+ },
1211
+ "body": {
1212
+ "type": [
1213
+ "string",
1214
+ "null"
1215
+ ]
1216
+ },
1217
+ "publishedAt": {
1218
+ "type": [
1219
+ "string",
1220
+ "null"
1221
+ ]
1222
+ },
1223
+ "publishedBy": {
1224
+ "type": [
1225
+ "string",
1226
+ "null"
1227
+ ]
1228
+ },
1229
+ "retiredAt": {
1230
+ "type": [
1231
+ "string",
1232
+ "null"
1233
+ ]
1234
+ },
1235
+ "metadata": {},
1236
+ "createdAt": {
1237
+ "type": "string"
1238
+ },
1239
+ "updatedAt": {
1240
+ "type": "string"
1241
+ }
1242
+ },
1243
+ "required": [
1244
+ "id",
1245
+ "policyId",
1246
+ "version",
1247
+ "status",
1248
+ "title",
1249
+ "body",
1250
+ "publishedAt",
1251
+ "publishedBy",
1252
+ "retiredAt",
1253
+ "createdAt",
1254
+ "updatedAt"
1255
+ ]
1256
+ }
1257
+ },
1258
+ "required": [
1259
+ "policy",
1260
+ "version"
1261
+ ]
1262
+ }
1263
+ },
1264
+ "required": [
1265
+ "data"
1266
+ ]
1267
+ }
1268
+ }
1269
+ }
1270
+ },
1271
+ "404": {
1272
+ "description": "Policy not found or has no published version",
1273
+ "content": {
1274
+ "application/json": {
1275
+ "schema": {
1276
+ "type": "object",
1277
+ "properties": {
1278
+ "error": {
1279
+ "type": "string"
1280
+ }
1281
+ },
1282
+ "required": [
1283
+ "error"
1284
+ ]
1285
+ }
1286
+ }
1287
+ }
1288
+ }
1289
+ },
1290
+ "operationId": "getPublicLegalPoliciesBySlug",
1291
+ "summary": "GET /v1/public/legal/policies/{slug}",
1292
+ "tags": [
1293
+ "legal"
1294
+ ],
1295
+ "x-voyant-module": "legal",
1296
+ "x-voyant-surface": "storefront"
1297
+ }
1298
+ },
1299
+ "/v1/public/legal/policies/{id}/accept": {
1300
+ "post": {
1301
+ "parameters": [
1302
+ {
1303
+ "schema": {
1304
+ "type": "string"
1305
+ },
1306
+ "required": true,
1307
+ "name": "id",
1308
+ "in": "path"
1309
+ }
1310
+ ],
1311
+ "requestBody": {
1312
+ "required": true,
1313
+ "content": {
1314
+ "application/json": {
1315
+ "schema": {
1316
+ "type": "object",
1317
+ "properties": {
1318
+ "policyVersionId": {
1319
+ "type": "string"
1320
+ },
1321
+ "personId": {
1322
+ "type": [
1323
+ "string",
1324
+ "null"
1325
+ ]
1326
+ },
1327
+ "bookingId": {
1328
+ "type": [
1329
+ "string",
1330
+ "null"
1331
+ ]
1332
+ },
1333
+ "targetKind": {
1334
+ "type": [
1335
+ "string",
1336
+ "null"
1337
+ ],
1338
+ "enum": [
1339
+ "booking",
1340
+ "quote_version",
1341
+ "program",
1342
+ "product",
1343
+ "inventory_item",
1344
+ "supplier_channel_relationship",
1345
+ "provider_source_ref",
1346
+ null
1347
+ ]
1348
+ },
1349
+ "targetId": {
1350
+ "anyOf": [
1351
+ {
1352
+ "type": "string",
1353
+ "enum": [
1354
+ ""
1355
+ ]
1356
+ },
1357
+ {
1358
+ "type": "string"
1359
+ },
1360
+ {
1361
+ "type": "null"
1362
+ }
1363
+ ]
1364
+ },
1365
+ "targetProvider": {
1366
+ "anyOf": [
1367
+ {
1368
+ "type": "string",
1369
+ "enum": [
1370
+ ""
1371
+ ]
1372
+ },
1373
+ {
1374
+ "type": "string",
1375
+ "minLength": 1,
1376
+ "maxLength": 100
1377
+ },
1378
+ {
1379
+ "type": "null"
1380
+ }
1381
+ ]
1382
+ },
1383
+ "targetSourceRef": {
1384
+ "anyOf": [
1385
+ {
1386
+ "type": "string",
1387
+ "enum": [
1388
+ ""
1389
+ ]
1390
+ },
1391
+ {
1392
+ "type": "string",
1393
+ "minLength": 1,
1394
+ "maxLength": 500
1395
+ },
1396
+ {
1397
+ "type": "null"
1398
+ }
1399
+ ]
1400
+ },
1401
+ "legacyTransactionOfferId": {
1402
+ "anyOf": [
1403
+ {
1404
+ "type": "string",
1405
+ "enum": [
1406
+ ""
1407
+ ]
1408
+ },
1409
+ {
1410
+ "type": "string"
1411
+ },
1412
+ {
1413
+ "type": "null"
1414
+ }
1415
+ ]
1416
+ },
1417
+ "legacyTransactionOrderId": {
1418
+ "anyOf": [
1419
+ {
1420
+ "type": "string",
1421
+ "enum": [
1422
+ ""
1423
+ ]
1424
+ },
1425
+ {
1426
+ "type": "string"
1427
+ },
1428
+ {
1429
+ "type": "null"
1430
+ }
1431
+ ]
1432
+ },
1433
+ "acceptedBy": {
1434
+ "type": [
1435
+ "string",
1436
+ "null"
1437
+ ],
1438
+ "maxLength": 255
1439
+ },
1440
+ "method": {
1441
+ "type": "string",
1442
+ "enum": [
1443
+ "implicit",
1444
+ "explicit_checkbox",
1445
+ "signature"
1446
+ ],
1447
+ "default": "implicit"
1448
+ },
1449
+ "ipAddress": {
1450
+ "type": [
1451
+ "string",
1452
+ "null"
1453
+ ],
1454
+ "maxLength": 64
1455
+ },
1456
+ "userAgent": {
1457
+ "type": [
1458
+ "string",
1459
+ "null"
1460
+ ],
1461
+ "maxLength": 500
1462
+ },
1463
+ "metadata": {
1464
+ "type": [
1465
+ "object",
1466
+ "null"
1467
+ ],
1468
+ "additionalProperties": {}
1469
+ }
1470
+ },
1471
+ "required": [
1472
+ "policyVersionId"
1473
+ ]
1474
+ }
1475
+ }
1476
+ }
1477
+ },
1478
+ "responses": {
1479
+ "201": {
1480
+ "description": "The recorded policy acceptance",
1481
+ "content": {
1482
+ "application/json": {
1483
+ "schema": {
1484
+ "type": "object",
1485
+ "properties": {
1486
+ "data": {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "id": {
1490
+ "type": "string"
1491
+ },
1492
+ "policyVersionId": {
1493
+ "type": "string"
1494
+ },
1495
+ "personId": {
1496
+ "type": [
1497
+ "string",
1498
+ "null"
1499
+ ]
1500
+ },
1501
+ "bookingId": {
1502
+ "type": [
1503
+ "string",
1504
+ "null"
1505
+ ]
1506
+ },
1507
+ "targetKind": {
1508
+ "type": [
1509
+ "string",
1510
+ "null"
1511
+ ],
1512
+ "enum": [
1513
+ "booking",
1514
+ "quote_version",
1515
+ "program",
1516
+ "product",
1517
+ "inventory_item",
1518
+ "supplier_channel_relationship",
1519
+ "provider_source_ref",
1520
+ null
1521
+ ]
1522
+ },
1523
+ "targetId": {
1524
+ "type": [
1525
+ "string",
1526
+ "null"
1527
+ ]
1528
+ },
1529
+ "targetProvider": {
1530
+ "type": [
1531
+ "string",
1532
+ "null"
1533
+ ]
1534
+ },
1535
+ "targetSourceRef": {
1536
+ "type": [
1537
+ "string",
1538
+ "null"
1539
+ ]
1540
+ },
1541
+ "legacyTransactionOfferId": {
1542
+ "type": [
1543
+ "string",
1544
+ "null"
1545
+ ]
1546
+ },
1547
+ "legacyTransactionOrderId": {
1548
+ "type": [
1549
+ "string",
1550
+ "null"
1551
+ ]
1552
+ },
1553
+ "acceptedAt": {
1554
+ "type": "string"
1555
+ },
1556
+ "acceptedBy": {
1557
+ "type": [
1558
+ "string",
1559
+ "null"
1560
+ ]
1561
+ },
1562
+ "method": {
1563
+ "type": "string",
1564
+ "enum": [
1565
+ "implicit",
1566
+ "explicit_checkbox",
1567
+ "signature"
1568
+ ]
1569
+ },
1570
+ "ipAddress": {
1571
+ "type": [
1572
+ "string",
1573
+ "null"
1574
+ ]
1575
+ },
1576
+ "userAgent": {
1577
+ "type": [
1578
+ "string",
1579
+ "null"
1580
+ ]
1581
+ },
1582
+ "metadata": {},
1583
+ "createdAt": {
1584
+ "type": "string"
1585
+ }
1586
+ },
1587
+ "required": [
1588
+ "id",
1589
+ "policyVersionId",
1590
+ "personId",
1591
+ "bookingId",
1592
+ "targetKind",
1593
+ "targetId",
1594
+ "targetProvider",
1595
+ "targetSourceRef",
1596
+ "legacyTransactionOfferId",
1597
+ "legacyTransactionOrderId",
1598
+ "acceptedAt",
1599
+ "acceptedBy",
1600
+ "method",
1601
+ "ipAddress",
1602
+ "userAgent",
1603
+ "createdAt"
1604
+ ]
1605
+ }
1606
+ },
1607
+ "required": [
1608
+ "data"
1609
+ ]
1610
+ }
1611
+ }
1612
+ }
1613
+ },
1614
+ "400": {
1615
+ "description": "Invalid request body",
1616
+ "content": {
1617
+ "application/json": {
1618
+ "schema": {
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "error": {
1622
+ "type": "string"
1623
+ }
1624
+ },
1625
+ "required": [
1626
+ "error"
1627
+ ]
1628
+ }
1629
+ }
1630
+ }
1631
+ }
1632
+ },
1633
+ "operationId": "postPublicLegalPoliciesByIdAccept",
1634
+ "summary": "POST /v1/public/legal/policies/{id}/accept",
1635
+ "tags": [
1636
+ "legal"
1637
+ ],
1638
+ "x-voyant-module": "legal",
1639
+ "x-voyant-surface": "storefront"
1640
+ }
1641
+ },
1642
+ "/v1/public/legal/terms": {
1643
+ "get": {
1644
+ "parameters": [
1645
+ {
1646
+ "schema": {
1647
+ "type": "integer",
1648
+ "minimum": 1,
1649
+ "maximum": 200,
1650
+ "default": 50
1651
+ },
1652
+ "required": false,
1653
+ "name": "limit",
1654
+ "in": "query"
1655
+ },
1656
+ {
1657
+ "schema": {
1658
+ "type": [
1659
+ "integer",
1660
+ "null"
1661
+ ],
1662
+ "minimum": 0,
1663
+ "default": 0
1664
+ },
1665
+ "required": false,
1666
+ "name": "offset",
1667
+ "in": "query"
1668
+ },
1669
+ {
1670
+ "schema": {
1671
+ "type": "string"
1672
+ },
1673
+ "required": false,
1674
+ "name": "contractId",
1675
+ "in": "query"
1676
+ },
1677
+ {
1678
+ "schema": {
1679
+ "type": "string"
1680
+ },
1681
+ "required": false,
1682
+ "name": "policyVersionId",
1683
+ "in": "query"
1684
+ },
1685
+ {
1686
+ "schema": {
1687
+ "type": "string",
1688
+ "enum": [
1689
+ "booking",
1690
+ "quote_version",
1691
+ "program",
1692
+ "product",
1693
+ "inventory_item",
1694
+ "supplier_channel_relationship",
1695
+ "provider_source_ref"
1696
+ ]
1697
+ },
1698
+ "required": false,
1699
+ "name": "targetKind",
1700
+ "in": "query"
1701
+ },
1702
+ {
1703
+ "schema": {
1704
+ "type": "string"
1705
+ },
1706
+ "required": false,
1707
+ "name": "targetId",
1708
+ "in": "query"
1709
+ },
1710
+ {
1711
+ "schema": {
1712
+ "type": "string"
1713
+ },
1714
+ "required": false,
1715
+ "name": "targetProvider",
1716
+ "in": "query"
1717
+ },
1718
+ {
1719
+ "schema": {
1720
+ "type": "string"
1721
+ },
1722
+ "required": false,
1723
+ "name": "targetSourceRef",
1724
+ "in": "query"
1725
+ },
1726
+ {
1727
+ "schema": {
1728
+ "type": "string"
1729
+ },
1730
+ "required": false,
1731
+ "name": "legacyTransactionOfferId",
1732
+ "in": "query"
1733
+ },
1734
+ {
1735
+ "schema": {
1736
+ "type": "string"
1737
+ },
1738
+ "required": false,
1739
+ "name": "legacyTransactionOrderId",
1740
+ "in": "query"
1741
+ },
1742
+ {
1743
+ "schema": {
1744
+ "type": "string",
1745
+ "enum": [
1746
+ "terms_and_conditions",
1747
+ "cancellation",
1748
+ "guarantee",
1749
+ "payment",
1750
+ "pricing",
1751
+ "commission",
1752
+ "other"
1753
+ ]
1754
+ },
1755
+ "required": false,
1756
+ "name": "termType",
1757
+ "in": "query"
1758
+ },
1759
+ {
1760
+ "schema": {
1761
+ "type": "string",
1762
+ "enum": [
1763
+ "not_required",
1764
+ "pending",
1765
+ "accepted",
1766
+ "declined"
1767
+ ]
1768
+ },
1769
+ "required": false,
1770
+ "name": "acceptanceStatus",
1771
+ "in": "query"
1772
+ }
1773
+ ],
1774
+ "responses": {
1775
+ "200": {
1776
+ "description": "Paginated list of legal terms (public read)",
1777
+ "content": {
1778
+ "application/json": {
1779
+ "schema": {
1780
+ "type": "object",
1781
+ "properties": {
1782
+ "data": {
1783
+ "type": "array",
1784
+ "items": {
1785
+ "type": "object",
1786
+ "properties": {
1787
+ "id": {
1788
+ "type": "string"
1789
+ },
1790
+ "contractId": {
1791
+ "type": [
1792
+ "string",
1793
+ "null"
1794
+ ]
1795
+ },
1796
+ "policyVersionId": {
1797
+ "type": [
1798
+ "string",
1799
+ "null"
1800
+ ]
1801
+ },
1802
+ "targetKind": {
1803
+ "type": [
1804
+ "string",
1805
+ "null"
1806
+ ],
1807
+ "enum": [
1808
+ "booking",
1809
+ "quote_version",
1810
+ "program",
1811
+ "product",
1812
+ "inventory_item",
1813
+ "supplier_channel_relationship",
1814
+ "provider_source_ref",
1815
+ null
1816
+ ]
1817
+ },
1818
+ "targetId": {
1819
+ "type": [
1820
+ "string",
1821
+ "null"
1822
+ ]
1823
+ },
1824
+ "targetProvider": {
1825
+ "type": [
1826
+ "string",
1827
+ "null"
1828
+ ]
1829
+ },
1830
+ "targetSourceRef": {
1831
+ "type": [
1832
+ "string",
1833
+ "null"
1834
+ ]
1835
+ },
1836
+ "legacyTransactionOfferId": {
1837
+ "type": [
1838
+ "string",
1839
+ "null"
1840
+ ]
1841
+ },
1842
+ "legacyTransactionOrderId": {
1843
+ "type": [
1844
+ "string",
1845
+ "null"
1846
+ ]
1847
+ },
1848
+ "termType": {
1849
+ "type": "string",
1850
+ "enum": [
1851
+ "terms_and_conditions",
1852
+ "cancellation",
1853
+ "guarantee",
1854
+ "payment",
1855
+ "pricing",
1856
+ "commission",
1857
+ "other"
1858
+ ]
1859
+ },
1860
+ "title": {
1861
+ "type": "string"
1862
+ },
1863
+ "body": {
1864
+ "type": "string"
1865
+ },
1866
+ "language": {
1867
+ "type": [
1868
+ "string",
1869
+ "null"
1870
+ ]
1871
+ },
1872
+ "required": {
1873
+ "type": "boolean"
1874
+ },
1875
+ "sortOrder": {
1876
+ "type": "integer"
1877
+ },
1878
+ "acceptanceStatus": {
1879
+ "type": "string",
1880
+ "enum": [
1881
+ "not_required",
1882
+ "pending",
1883
+ "accepted",
1884
+ "declined"
1885
+ ]
1886
+ },
1887
+ "acceptedAt": {
1888
+ "type": [
1889
+ "string",
1890
+ "null"
1891
+ ]
1892
+ },
1893
+ "acceptedBy": {
1894
+ "type": [
1895
+ "string",
1896
+ "null"
1897
+ ]
1898
+ },
1899
+ "metadata": {},
1900
+ "createdAt": {
1901
+ "type": "string"
1902
+ },
1903
+ "updatedAt": {
1904
+ "type": "string"
1905
+ }
1906
+ },
1907
+ "required": [
1908
+ "id",
1909
+ "contractId",
1910
+ "policyVersionId",
1911
+ "targetKind",
1912
+ "targetId",
1913
+ "targetProvider",
1914
+ "targetSourceRef",
1915
+ "legacyTransactionOfferId",
1916
+ "legacyTransactionOrderId",
1917
+ "termType",
1918
+ "title",
1919
+ "body",
1920
+ "language",
1921
+ "required",
1922
+ "sortOrder",
1923
+ "acceptanceStatus",
1924
+ "acceptedAt",
1925
+ "acceptedBy",
1926
+ "createdAt",
1927
+ "updatedAt"
1928
+ ]
1929
+ }
1930
+ },
1931
+ "total": {
1932
+ "type": "integer"
1933
+ },
1934
+ "limit": {
1935
+ "type": "integer"
1936
+ },
1937
+ "offset": {
1938
+ "type": "integer"
1939
+ }
1940
+ },
1941
+ "required": [
1942
+ "data",
1943
+ "total",
1944
+ "limit",
1945
+ "offset"
1946
+ ]
1947
+ }
1948
+ }
1949
+ }
1950
+ }
1951
+ },
1952
+ "operationId": "getPublicLegalTerms",
1953
+ "summary": "GET /v1/public/legal/terms",
1954
+ "tags": [
1955
+ "legal"
1956
+ ],
1957
+ "x-voyant-module": "legal",
1958
+ "x-voyant-surface": "storefront"
1959
+ }
1960
+ },
1961
+ "/v1/public/legal/terms/{id}": {
1962
+ "get": {
1963
+ "parameters": [
1964
+ {
1965
+ "schema": {
1966
+ "type": "string"
1967
+ },
1968
+ "required": true,
1969
+ "name": "id",
1970
+ "in": "path"
1971
+ }
1972
+ ],
1973
+ "responses": {
1974
+ "200": {
1975
+ "description": "A legal term by id (public read)",
1976
+ "content": {
1977
+ "application/json": {
1978
+ "schema": {
1979
+ "type": "object",
1980
+ "properties": {
1981
+ "data": {
1982
+ "type": "object",
1983
+ "properties": {
1984
+ "id": {
1985
+ "type": "string"
1986
+ },
1987
+ "contractId": {
1988
+ "type": [
1989
+ "string",
1990
+ "null"
1991
+ ]
1992
+ },
1993
+ "policyVersionId": {
1994
+ "type": [
1995
+ "string",
1996
+ "null"
1997
+ ]
1998
+ },
1999
+ "targetKind": {
2000
+ "type": [
2001
+ "string",
2002
+ "null"
2003
+ ],
2004
+ "enum": [
2005
+ "booking",
2006
+ "quote_version",
2007
+ "program",
2008
+ "product",
2009
+ "inventory_item",
2010
+ "supplier_channel_relationship",
2011
+ "provider_source_ref",
2012
+ null
2013
+ ]
2014
+ },
2015
+ "targetId": {
2016
+ "type": [
2017
+ "string",
2018
+ "null"
2019
+ ]
2020
+ },
2021
+ "targetProvider": {
2022
+ "type": [
2023
+ "string",
2024
+ "null"
2025
+ ]
2026
+ },
2027
+ "targetSourceRef": {
2028
+ "type": [
2029
+ "string",
2030
+ "null"
2031
+ ]
2032
+ },
2033
+ "legacyTransactionOfferId": {
2034
+ "type": [
2035
+ "string",
2036
+ "null"
2037
+ ]
2038
+ },
2039
+ "legacyTransactionOrderId": {
2040
+ "type": [
2041
+ "string",
2042
+ "null"
2043
+ ]
2044
+ },
2045
+ "termType": {
2046
+ "type": "string",
2047
+ "enum": [
2048
+ "terms_and_conditions",
2049
+ "cancellation",
2050
+ "guarantee",
2051
+ "payment",
2052
+ "pricing",
2053
+ "commission",
2054
+ "other"
2055
+ ]
2056
+ },
2057
+ "title": {
2058
+ "type": "string"
2059
+ },
2060
+ "body": {
2061
+ "type": "string"
2062
+ },
2063
+ "language": {
2064
+ "type": [
2065
+ "string",
2066
+ "null"
2067
+ ]
2068
+ },
2069
+ "required": {
2070
+ "type": "boolean"
2071
+ },
2072
+ "sortOrder": {
2073
+ "type": "integer"
2074
+ },
2075
+ "acceptanceStatus": {
2076
+ "type": "string",
2077
+ "enum": [
2078
+ "not_required",
2079
+ "pending",
2080
+ "accepted",
2081
+ "declined"
2082
+ ]
2083
+ },
2084
+ "acceptedAt": {
2085
+ "type": [
2086
+ "string",
2087
+ "null"
2088
+ ]
2089
+ },
2090
+ "acceptedBy": {
2091
+ "type": [
2092
+ "string",
2093
+ "null"
2094
+ ]
2095
+ },
2096
+ "metadata": {},
2097
+ "createdAt": {
2098
+ "type": "string"
2099
+ },
2100
+ "updatedAt": {
2101
+ "type": "string"
2102
+ }
2103
+ },
2104
+ "required": [
2105
+ "id",
2106
+ "contractId",
2107
+ "policyVersionId",
2108
+ "targetKind",
2109
+ "targetId",
2110
+ "targetProvider",
2111
+ "targetSourceRef",
2112
+ "legacyTransactionOfferId",
2113
+ "legacyTransactionOrderId",
2114
+ "termType",
2115
+ "title",
2116
+ "body",
2117
+ "language",
2118
+ "required",
2119
+ "sortOrder",
2120
+ "acceptanceStatus",
2121
+ "acceptedAt",
2122
+ "acceptedBy",
2123
+ "createdAt",
2124
+ "updatedAt"
2125
+ ]
2126
+ }
2127
+ },
2128
+ "required": [
2129
+ "data"
2130
+ ]
2131
+ }
2132
+ }
2133
+ }
2134
+ },
2135
+ "404": {
2136
+ "description": "Legal term not found",
2137
+ "content": {
2138
+ "application/json": {
2139
+ "schema": {
2140
+ "type": "object",
2141
+ "properties": {
2142
+ "error": {
2143
+ "type": "string"
2144
+ }
2145
+ },
2146
+ "required": [
2147
+ "error"
2148
+ ]
2149
+ }
2150
+ }
2151
+ }
2152
+ }
2153
+ },
2154
+ "operationId": "getPublicLegalTermsById",
2155
+ "summary": "GET /v1/public/legal/terms/{id}",
2156
+ "tags": [
2157
+ "legal"
2158
+ ],
2159
+ "x-voyant-module": "legal",
2160
+ "x-voyant-surface": "storefront"
2161
+ }
2162
+ }
2163
+ },
2164
+ "webhooks": {}
2165
+ }