@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,4914 @@
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/finance/vouchers/validate": {
158
+ "post": {
159
+ "requestBody": {
160
+ "required": true,
161
+ "content": {
162
+ "application/json": {
163
+ "schema": {
164
+ "type": "object",
165
+ "properties": {
166
+ "code": {
167
+ "type": "string",
168
+ "minLength": 1,
169
+ "maxLength": 255
170
+ },
171
+ "provider": {
172
+ "type": [
173
+ "string",
174
+ "null"
175
+ ],
176
+ "maxLength": 255
177
+ },
178
+ "bookingId": {
179
+ "type": [
180
+ "string",
181
+ "null"
182
+ ]
183
+ },
184
+ "currency": {
185
+ "type": [
186
+ "string",
187
+ "null"
188
+ ],
189
+ "minLength": 3,
190
+ "maxLength": 3
191
+ },
192
+ "amountCents": {
193
+ "type": [
194
+ "integer",
195
+ "null"
196
+ ],
197
+ "minimum": 1
198
+ }
199
+ },
200
+ "required": [
201
+ "code"
202
+ ]
203
+ }
204
+ }
205
+ }
206
+ },
207
+ "responses": {
208
+ "200": {
209
+ "description": "Voucher validity result",
210
+ "content": {
211
+ "application/json": {
212
+ "schema": {
213
+ "type": "object",
214
+ "properties": {
215
+ "data": {
216
+ "type": "object",
217
+ "properties": {
218
+ "valid": {
219
+ "type": "boolean"
220
+ },
221
+ "reason": {
222
+ "type": [
223
+ "string",
224
+ "null"
225
+ ],
226
+ "enum": [
227
+ "not_found",
228
+ "inactive",
229
+ "not_started",
230
+ "expired",
231
+ "booking_mismatch",
232
+ "currency_mismatch",
233
+ "insufficient_balance",
234
+ null
235
+ ]
236
+ },
237
+ "voucher": {
238
+ "type": [
239
+ "object",
240
+ "null"
241
+ ],
242
+ "properties": {
243
+ "id": {
244
+ "type": "string"
245
+ },
246
+ "code": {
247
+ "type": "string"
248
+ },
249
+ "label": {
250
+ "type": [
251
+ "string",
252
+ "null"
253
+ ]
254
+ },
255
+ "provider": {
256
+ "type": [
257
+ "string",
258
+ "null"
259
+ ]
260
+ },
261
+ "currency": {
262
+ "type": [
263
+ "string",
264
+ "null"
265
+ ]
266
+ },
267
+ "amountCents": {
268
+ "type": [
269
+ "integer",
270
+ "null"
271
+ ]
272
+ },
273
+ "remainingAmountCents": {
274
+ "type": [
275
+ "integer",
276
+ "null"
277
+ ]
278
+ },
279
+ "expiresAt": {
280
+ "type": [
281
+ "string",
282
+ "null"
283
+ ]
284
+ }
285
+ },
286
+ "required": [
287
+ "id",
288
+ "code",
289
+ "label",
290
+ "provider",
291
+ "currency",
292
+ "amountCents",
293
+ "remainingAmountCents",
294
+ "expiresAt"
295
+ ]
296
+ }
297
+ },
298
+ "required": [
299
+ "valid",
300
+ "reason",
301
+ "voucher"
302
+ ]
303
+ }
304
+ },
305
+ "required": [
306
+ "data"
307
+ ]
308
+ }
309
+ }
310
+ }
311
+ }
312
+ },
313
+ "operationId": "postPublicFinanceVouchersValidate",
314
+ "summary": "POST /v1/public/finance/vouchers/validate",
315
+ "tags": [
316
+ "finance"
317
+ ],
318
+ "x-voyant-module": "finance",
319
+ "x-voyant-surface": "storefront"
320
+ }
321
+ },
322
+ "/v1/public/finance/documents/by-reference": {
323
+ "get": {
324
+ "parameters": [
325
+ {
326
+ "schema": {
327
+ "type": "string",
328
+ "minLength": 1,
329
+ "maxLength": 255
330
+ },
331
+ "required": true,
332
+ "name": "reference",
333
+ "in": "query"
334
+ },
335
+ {
336
+ "schema": {
337
+ "type": "string",
338
+ "enum": [
339
+ "invoice",
340
+ "proforma",
341
+ "credit_note"
342
+ ]
343
+ },
344
+ "required": false,
345
+ "name": "invoiceType",
346
+ "in": "query"
347
+ }
348
+ ],
349
+ "responses": {
350
+ "200": {
351
+ "description": "Finance document resolved by external reference",
352
+ "content": {
353
+ "application/json": {
354
+ "schema": {
355
+ "type": "object",
356
+ "properties": {
357
+ "data": {
358
+ "type": "object",
359
+ "properties": {
360
+ "invoiceId": {
361
+ "type": "string"
362
+ },
363
+ "invoiceNumber": {
364
+ "type": "string"
365
+ },
366
+ "invoiceType": {
367
+ "type": "string",
368
+ "enum": [
369
+ "invoice",
370
+ "proforma",
371
+ "credit_note"
372
+ ]
373
+ },
374
+ "invoiceStatus": {
375
+ "type": "string",
376
+ "enum": [
377
+ "draft",
378
+ "pending_external_allocation",
379
+ "issued",
380
+ "partially_paid",
381
+ "paid",
382
+ "overdue",
383
+ "void"
384
+ ]
385
+ },
386
+ "currency": {
387
+ "type": "string"
388
+ },
389
+ "totalCents": {
390
+ "type": "integer"
391
+ },
392
+ "paidCents": {
393
+ "type": "integer"
394
+ },
395
+ "balanceDueCents": {
396
+ "type": "integer"
397
+ },
398
+ "issueDate": {
399
+ "type": "string"
400
+ },
401
+ "dueDate": {
402
+ "type": "string"
403
+ },
404
+ "renditionId": {
405
+ "type": [
406
+ "string",
407
+ "null"
408
+ ]
409
+ },
410
+ "documentStatus": {
411
+ "type": "string",
412
+ "enum": [
413
+ "missing",
414
+ "pending",
415
+ "ready",
416
+ "failed",
417
+ "stale"
418
+ ]
419
+ },
420
+ "format": {
421
+ "type": [
422
+ "string",
423
+ "null"
424
+ ],
425
+ "enum": [
426
+ "html",
427
+ "pdf",
428
+ "xml",
429
+ "json",
430
+ null
431
+ ]
432
+ },
433
+ "language": {
434
+ "type": [
435
+ "string",
436
+ "null"
437
+ ]
438
+ },
439
+ "generatedAt": {
440
+ "type": [
441
+ "string",
442
+ "null"
443
+ ]
444
+ },
445
+ "fileSize": {
446
+ "type": [
447
+ "integer",
448
+ "null"
449
+ ]
450
+ },
451
+ "checksum": {
452
+ "type": [
453
+ "string",
454
+ "null"
455
+ ]
456
+ },
457
+ "downloadUrl": {
458
+ "type": [
459
+ "string",
460
+ "null"
461
+ ]
462
+ },
463
+ "bookingId": {
464
+ "type": "string"
465
+ }
466
+ },
467
+ "required": [
468
+ "invoiceId",
469
+ "invoiceNumber",
470
+ "invoiceType",
471
+ "invoiceStatus",
472
+ "currency",
473
+ "totalCents",
474
+ "paidCents",
475
+ "balanceDueCents",
476
+ "issueDate",
477
+ "dueDate",
478
+ "renditionId",
479
+ "documentStatus",
480
+ "format",
481
+ "language",
482
+ "generatedAt",
483
+ "fileSize",
484
+ "checksum",
485
+ "downloadUrl",
486
+ "bookingId"
487
+ ]
488
+ }
489
+ },
490
+ "required": [
491
+ "data"
492
+ ]
493
+ }
494
+ }
495
+ }
496
+ },
497
+ "404": {
498
+ "description": "Finance document not found",
499
+ "content": {
500
+ "application/json": {
501
+ "schema": {
502
+ "type": "object",
503
+ "properties": {
504
+ "error": {
505
+ "type": "string"
506
+ }
507
+ },
508
+ "required": [
509
+ "error"
510
+ ]
511
+ }
512
+ }
513
+ }
514
+ }
515
+ },
516
+ "operationId": "getPublicFinanceDocumentsByReference",
517
+ "summary": "GET /v1/public/finance/documents/by-reference",
518
+ "tags": [
519
+ "finance"
520
+ ],
521
+ "x-voyant-module": "finance",
522
+ "x-voyant-surface": "storefront"
523
+ }
524
+ },
525
+ "/v1/public/finance/bookings/{bookingId}/documents": {
526
+ "get": {
527
+ "parameters": [
528
+ {
529
+ "schema": {
530
+ "type": "string"
531
+ },
532
+ "required": true,
533
+ "name": "bookingId",
534
+ "in": "path"
535
+ }
536
+ ],
537
+ "responses": {
538
+ "200": {
539
+ "description": "Finance documents for a booking",
540
+ "content": {
541
+ "application/json": {
542
+ "schema": {
543
+ "type": "object",
544
+ "properties": {
545
+ "data": {
546
+ "type": "object",
547
+ "properties": {
548
+ "bookingId": {
549
+ "type": "string"
550
+ },
551
+ "documents": {
552
+ "type": "array",
553
+ "items": {
554
+ "type": "object",
555
+ "properties": {
556
+ "invoiceId": {
557
+ "type": "string"
558
+ },
559
+ "invoiceNumber": {
560
+ "type": "string"
561
+ },
562
+ "invoiceType": {
563
+ "type": "string",
564
+ "enum": [
565
+ "invoice",
566
+ "proforma",
567
+ "credit_note"
568
+ ]
569
+ },
570
+ "invoiceStatus": {
571
+ "type": "string",
572
+ "enum": [
573
+ "draft",
574
+ "pending_external_allocation",
575
+ "issued",
576
+ "partially_paid",
577
+ "paid",
578
+ "overdue",
579
+ "void"
580
+ ]
581
+ },
582
+ "currency": {
583
+ "type": "string"
584
+ },
585
+ "totalCents": {
586
+ "type": "integer"
587
+ },
588
+ "paidCents": {
589
+ "type": "integer"
590
+ },
591
+ "balanceDueCents": {
592
+ "type": "integer"
593
+ },
594
+ "issueDate": {
595
+ "type": "string"
596
+ },
597
+ "dueDate": {
598
+ "type": "string"
599
+ },
600
+ "renditionId": {
601
+ "type": [
602
+ "string",
603
+ "null"
604
+ ]
605
+ },
606
+ "documentStatus": {
607
+ "type": "string",
608
+ "enum": [
609
+ "missing",
610
+ "pending",
611
+ "ready",
612
+ "failed",
613
+ "stale"
614
+ ]
615
+ },
616
+ "format": {
617
+ "type": [
618
+ "string",
619
+ "null"
620
+ ],
621
+ "enum": [
622
+ "html",
623
+ "pdf",
624
+ "xml",
625
+ "json",
626
+ null
627
+ ]
628
+ },
629
+ "language": {
630
+ "type": [
631
+ "string",
632
+ "null"
633
+ ]
634
+ },
635
+ "generatedAt": {
636
+ "type": [
637
+ "string",
638
+ "null"
639
+ ]
640
+ },
641
+ "fileSize": {
642
+ "type": [
643
+ "integer",
644
+ "null"
645
+ ]
646
+ },
647
+ "checksum": {
648
+ "type": [
649
+ "string",
650
+ "null"
651
+ ]
652
+ },
653
+ "downloadUrl": {
654
+ "type": [
655
+ "string",
656
+ "null"
657
+ ]
658
+ }
659
+ },
660
+ "required": [
661
+ "invoiceId",
662
+ "invoiceNumber",
663
+ "invoiceType",
664
+ "invoiceStatus",
665
+ "currency",
666
+ "totalCents",
667
+ "paidCents",
668
+ "balanceDueCents",
669
+ "issueDate",
670
+ "dueDate",
671
+ "renditionId",
672
+ "documentStatus",
673
+ "format",
674
+ "language",
675
+ "generatedAt",
676
+ "fileSize",
677
+ "checksum",
678
+ "downloadUrl"
679
+ ]
680
+ }
681
+ }
682
+ },
683
+ "required": [
684
+ "bookingId",
685
+ "documents"
686
+ ]
687
+ }
688
+ },
689
+ "required": [
690
+ "data"
691
+ ]
692
+ }
693
+ }
694
+ }
695
+ },
696
+ "404": {
697
+ "description": "Booking documents not found",
698
+ "content": {
699
+ "application/json": {
700
+ "schema": {
701
+ "type": "object",
702
+ "properties": {
703
+ "error": {
704
+ "type": "string"
705
+ }
706
+ },
707
+ "required": [
708
+ "error"
709
+ ]
710
+ }
711
+ }
712
+ }
713
+ }
714
+ },
715
+ "operationId": "getPublicFinanceBookingsByBookingIdDocuments",
716
+ "summary": "GET /v1/public/finance/bookings/{bookingId}/documents",
717
+ "tags": [
718
+ "finance"
719
+ ],
720
+ "x-voyant-module": "finance",
721
+ "x-voyant-surface": "storefront"
722
+ }
723
+ },
724
+ "/v1/public/finance/bookings/{bookingId}/documents/by-reference": {
725
+ "get": {
726
+ "parameters": [
727
+ {
728
+ "schema": {
729
+ "type": "string"
730
+ },
731
+ "required": true,
732
+ "name": "bookingId",
733
+ "in": "path"
734
+ },
735
+ {
736
+ "schema": {
737
+ "type": "string",
738
+ "minLength": 1,
739
+ "maxLength": 255
740
+ },
741
+ "required": true,
742
+ "name": "reference",
743
+ "in": "query"
744
+ },
745
+ {
746
+ "schema": {
747
+ "type": "string",
748
+ "enum": [
749
+ "invoice",
750
+ "proforma",
751
+ "credit_note"
752
+ ]
753
+ },
754
+ "required": false,
755
+ "name": "invoiceType",
756
+ "in": "query"
757
+ }
758
+ ],
759
+ "responses": {
760
+ "200": {
761
+ "description": "Finance document for a booking resolved by external reference",
762
+ "content": {
763
+ "application/json": {
764
+ "schema": {
765
+ "type": "object",
766
+ "properties": {
767
+ "data": {
768
+ "type": "object",
769
+ "properties": {
770
+ "invoiceId": {
771
+ "type": "string"
772
+ },
773
+ "invoiceNumber": {
774
+ "type": "string"
775
+ },
776
+ "invoiceType": {
777
+ "type": "string",
778
+ "enum": [
779
+ "invoice",
780
+ "proforma",
781
+ "credit_note"
782
+ ]
783
+ },
784
+ "invoiceStatus": {
785
+ "type": "string",
786
+ "enum": [
787
+ "draft",
788
+ "pending_external_allocation",
789
+ "issued",
790
+ "partially_paid",
791
+ "paid",
792
+ "overdue",
793
+ "void"
794
+ ]
795
+ },
796
+ "currency": {
797
+ "type": "string"
798
+ },
799
+ "totalCents": {
800
+ "type": "integer"
801
+ },
802
+ "paidCents": {
803
+ "type": "integer"
804
+ },
805
+ "balanceDueCents": {
806
+ "type": "integer"
807
+ },
808
+ "issueDate": {
809
+ "type": "string"
810
+ },
811
+ "dueDate": {
812
+ "type": "string"
813
+ },
814
+ "renditionId": {
815
+ "type": [
816
+ "string",
817
+ "null"
818
+ ]
819
+ },
820
+ "documentStatus": {
821
+ "type": "string",
822
+ "enum": [
823
+ "missing",
824
+ "pending",
825
+ "ready",
826
+ "failed",
827
+ "stale"
828
+ ]
829
+ },
830
+ "format": {
831
+ "type": [
832
+ "string",
833
+ "null"
834
+ ],
835
+ "enum": [
836
+ "html",
837
+ "pdf",
838
+ "xml",
839
+ "json",
840
+ null
841
+ ]
842
+ },
843
+ "language": {
844
+ "type": [
845
+ "string",
846
+ "null"
847
+ ]
848
+ },
849
+ "generatedAt": {
850
+ "type": [
851
+ "string",
852
+ "null"
853
+ ]
854
+ },
855
+ "fileSize": {
856
+ "type": [
857
+ "integer",
858
+ "null"
859
+ ]
860
+ },
861
+ "checksum": {
862
+ "type": [
863
+ "string",
864
+ "null"
865
+ ]
866
+ },
867
+ "downloadUrl": {
868
+ "type": [
869
+ "string",
870
+ "null"
871
+ ]
872
+ },
873
+ "bookingId": {
874
+ "type": "string"
875
+ }
876
+ },
877
+ "required": [
878
+ "invoiceId",
879
+ "invoiceNumber",
880
+ "invoiceType",
881
+ "invoiceStatus",
882
+ "currency",
883
+ "totalCents",
884
+ "paidCents",
885
+ "balanceDueCents",
886
+ "issueDate",
887
+ "dueDate",
888
+ "renditionId",
889
+ "documentStatus",
890
+ "format",
891
+ "language",
892
+ "generatedAt",
893
+ "fileSize",
894
+ "checksum",
895
+ "downloadUrl",
896
+ "bookingId"
897
+ ]
898
+ }
899
+ },
900
+ "required": [
901
+ "data"
902
+ ]
903
+ }
904
+ }
905
+ }
906
+ },
907
+ "404": {
908
+ "description": "Finance document not found",
909
+ "content": {
910
+ "application/json": {
911
+ "schema": {
912
+ "type": "object",
913
+ "properties": {
914
+ "error": {
915
+ "type": "string"
916
+ }
917
+ },
918
+ "required": [
919
+ "error"
920
+ ]
921
+ }
922
+ }
923
+ }
924
+ }
925
+ },
926
+ "operationId": "getPublicFinanceBookingsByBookingIdDocumentsByReference",
927
+ "summary": "GET /v1/public/finance/bookings/{bookingId}/documents/by-reference",
928
+ "tags": [
929
+ "finance"
930
+ ],
931
+ "x-voyant-module": "finance",
932
+ "x-voyant-surface": "storefront"
933
+ }
934
+ },
935
+ "/v1/public/finance/bookings/{bookingId}/payments": {
936
+ "get": {
937
+ "parameters": [
938
+ {
939
+ "schema": {
940
+ "type": "string"
941
+ },
942
+ "required": true,
943
+ "name": "bookingId",
944
+ "in": "path"
945
+ }
946
+ ],
947
+ "responses": {
948
+ "200": {
949
+ "description": "Payments recorded against a booking",
950
+ "content": {
951
+ "application/json": {
952
+ "schema": {
953
+ "type": "object",
954
+ "properties": {
955
+ "data": {
956
+ "type": "object",
957
+ "properties": {
958
+ "bookingId": {
959
+ "type": "string"
960
+ },
961
+ "payments": {
962
+ "type": "array",
963
+ "items": {
964
+ "type": "object",
965
+ "properties": {
966
+ "id": {
967
+ "type": "string"
968
+ },
969
+ "source": {
970
+ "type": "string",
971
+ "enum": [
972
+ "payment",
973
+ "voucher_redemption"
974
+ ],
975
+ "default": "payment"
976
+ },
977
+ "invoiceId": {
978
+ "type": [
979
+ "string",
980
+ "null"
981
+ ]
982
+ },
983
+ "invoiceNumber": {
984
+ "type": [
985
+ "string",
986
+ "null"
987
+ ]
988
+ },
989
+ "invoiceType": {
990
+ "type": [
991
+ "string",
992
+ "null"
993
+ ],
994
+ "enum": [
995
+ "invoice",
996
+ "proforma",
997
+ "credit_note",
998
+ null
999
+ ]
1000
+ },
1001
+ "status": {
1002
+ "type": "string",
1003
+ "enum": [
1004
+ "pending",
1005
+ "completed",
1006
+ "failed",
1007
+ "refunded"
1008
+ ]
1009
+ },
1010
+ "paymentMethod": {
1011
+ "type": "string",
1012
+ "enum": [
1013
+ "bank_transfer",
1014
+ "credit_card",
1015
+ "debit_card",
1016
+ "cash",
1017
+ "cheque",
1018
+ "wallet",
1019
+ "direct_bill",
1020
+ "voucher",
1021
+ "other"
1022
+ ]
1023
+ },
1024
+ "amountCents": {
1025
+ "type": "integer"
1026
+ },
1027
+ "currency": {
1028
+ "type": "string"
1029
+ },
1030
+ "baseCurrency": {
1031
+ "type": [
1032
+ "string",
1033
+ "null"
1034
+ ]
1035
+ },
1036
+ "baseAmountCents": {
1037
+ "type": [
1038
+ "integer",
1039
+ "null"
1040
+ ]
1041
+ },
1042
+ "paymentDate": {
1043
+ "type": "string"
1044
+ },
1045
+ "referenceNumber": {
1046
+ "type": [
1047
+ "string",
1048
+ "null"
1049
+ ]
1050
+ },
1051
+ "notes": {
1052
+ "type": [
1053
+ "string",
1054
+ "null"
1055
+ ]
1056
+ }
1057
+ },
1058
+ "required": [
1059
+ "id",
1060
+ "invoiceId",
1061
+ "invoiceNumber",
1062
+ "invoiceType",
1063
+ "status",
1064
+ "paymentMethod",
1065
+ "amountCents",
1066
+ "currency",
1067
+ "baseCurrency",
1068
+ "baseAmountCents",
1069
+ "paymentDate",
1070
+ "referenceNumber",
1071
+ "notes"
1072
+ ]
1073
+ }
1074
+ }
1075
+ },
1076
+ "required": [
1077
+ "bookingId",
1078
+ "payments"
1079
+ ]
1080
+ }
1081
+ },
1082
+ "required": [
1083
+ "data"
1084
+ ]
1085
+ }
1086
+ }
1087
+ }
1088
+ },
1089
+ "404": {
1090
+ "description": "Booking payments not found",
1091
+ "content": {
1092
+ "application/json": {
1093
+ "schema": {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "error": {
1097
+ "type": "string"
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "error"
1102
+ ]
1103
+ }
1104
+ }
1105
+ }
1106
+ }
1107
+ },
1108
+ "operationId": "getPublicFinanceBookingsByBookingIdPayments",
1109
+ "summary": "GET /v1/public/finance/bookings/{bookingId}/payments",
1110
+ "tags": [
1111
+ "finance"
1112
+ ],
1113
+ "x-voyant-module": "finance",
1114
+ "x-voyant-surface": "storefront"
1115
+ }
1116
+ },
1117
+ "/v1/public/finance/bookings/{bookingId}/payment-options": {
1118
+ "get": {
1119
+ "parameters": [
1120
+ {
1121
+ "schema": {
1122
+ "type": "string"
1123
+ },
1124
+ "required": true,
1125
+ "name": "bookingId",
1126
+ "in": "path"
1127
+ },
1128
+ {
1129
+ "schema": {
1130
+ "type": "string"
1131
+ },
1132
+ "required": false,
1133
+ "name": "personId",
1134
+ "in": "query"
1135
+ },
1136
+ {
1137
+ "schema": {
1138
+ "type": "string"
1139
+ },
1140
+ "required": false,
1141
+ "name": "organizationId",
1142
+ "in": "query"
1143
+ },
1144
+ {
1145
+ "schema": {
1146
+ "type": "string"
1147
+ },
1148
+ "required": false,
1149
+ "name": "provider",
1150
+ "in": "query"
1151
+ },
1152
+ {
1153
+ "schema": {
1154
+ "type": "string",
1155
+ "enum": [
1156
+ "credit_card",
1157
+ "debit_card",
1158
+ "bank_account",
1159
+ "wallet",
1160
+ "voucher",
1161
+ "direct_bill",
1162
+ "cash",
1163
+ "other"
1164
+ ]
1165
+ },
1166
+ "required": false,
1167
+ "name": "instrumentType",
1168
+ "in": "query"
1169
+ },
1170
+ {
1171
+ "schema": {
1172
+ "type": [
1173
+ "boolean",
1174
+ "null"
1175
+ ],
1176
+ "default": false
1177
+ },
1178
+ "required": false,
1179
+ "name": "includeInactive",
1180
+ "in": "query"
1181
+ }
1182
+ ],
1183
+ "responses": {
1184
+ "200": {
1185
+ "description": "Payment options (instruments, schedules, guarantees) for a booking",
1186
+ "content": {
1187
+ "application/json": {
1188
+ "schema": {
1189
+ "type": "object",
1190
+ "properties": {
1191
+ "data": {
1192
+ "type": "object",
1193
+ "properties": {
1194
+ "bookingId": {
1195
+ "type": "string"
1196
+ },
1197
+ "accounts": {
1198
+ "type": "array",
1199
+ "items": {
1200
+ "type": "object",
1201
+ "properties": {
1202
+ "id": {
1203
+ "type": "string"
1204
+ },
1205
+ "label": {
1206
+ "type": "string"
1207
+ },
1208
+ "provider": {
1209
+ "type": [
1210
+ "string",
1211
+ "null"
1212
+ ]
1213
+ },
1214
+ "instrumentType": {
1215
+ "type": "string",
1216
+ "enum": [
1217
+ "credit_card",
1218
+ "debit_card",
1219
+ "bank_account",
1220
+ "wallet",
1221
+ "voucher",
1222
+ "direct_bill",
1223
+ "cash",
1224
+ "other"
1225
+ ]
1226
+ },
1227
+ "status": {
1228
+ "type": "string",
1229
+ "enum": [
1230
+ "active",
1231
+ "inactive",
1232
+ "expired",
1233
+ "revoked",
1234
+ "failed_verification"
1235
+ ]
1236
+ },
1237
+ "brand": {
1238
+ "type": [
1239
+ "string",
1240
+ "null"
1241
+ ]
1242
+ },
1243
+ "last4": {
1244
+ "type": [
1245
+ "string",
1246
+ "null"
1247
+ ]
1248
+ },
1249
+ "expiryMonth": {
1250
+ "type": [
1251
+ "integer",
1252
+ "null"
1253
+ ]
1254
+ },
1255
+ "expiryYear": {
1256
+ "type": [
1257
+ "integer",
1258
+ "null"
1259
+ ]
1260
+ },
1261
+ "isDefault": {
1262
+ "type": "boolean"
1263
+ }
1264
+ },
1265
+ "required": [
1266
+ "id",
1267
+ "label",
1268
+ "provider",
1269
+ "instrumentType",
1270
+ "status",
1271
+ "brand",
1272
+ "last4",
1273
+ "expiryMonth",
1274
+ "expiryYear",
1275
+ "isDefault"
1276
+ ]
1277
+ }
1278
+ },
1279
+ "schedules": {
1280
+ "type": "array",
1281
+ "items": {
1282
+ "type": "object",
1283
+ "properties": {
1284
+ "id": {
1285
+ "type": "string"
1286
+ },
1287
+ "scheduleType": {
1288
+ "type": "string",
1289
+ "enum": [
1290
+ "deposit",
1291
+ "installment",
1292
+ "balance",
1293
+ "hold",
1294
+ "other"
1295
+ ]
1296
+ },
1297
+ "status": {
1298
+ "type": "string",
1299
+ "enum": [
1300
+ "pending",
1301
+ "due",
1302
+ "paid",
1303
+ "waived",
1304
+ "cancelled",
1305
+ "expired"
1306
+ ]
1307
+ },
1308
+ "dueDate": {
1309
+ "type": "string"
1310
+ },
1311
+ "currency": {
1312
+ "type": "string"
1313
+ },
1314
+ "amountCents": {
1315
+ "type": "integer"
1316
+ },
1317
+ "notes": {
1318
+ "type": [
1319
+ "string",
1320
+ "null"
1321
+ ]
1322
+ }
1323
+ },
1324
+ "required": [
1325
+ "id",
1326
+ "scheduleType",
1327
+ "status",
1328
+ "dueDate",
1329
+ "currency",
1330
+ "amountCents",
1331
+ "notes"
1332
+ ]
1333
+ }
1334
+ },
1335
+ "guarantees": {
1336
+ "type": "array",
1337
+ "items": {
1338
+ "type": "object",
1339
+ "properties": {
1340
+ "id": {
1341
+ "type": "string"
1342
+ },
1343
+ "bookingPaymentScheduleId": {
1344
+ "type": [
1345
+ "string",
1346
+ "null"
1347
+ ]
1348
+ },
1349
+ "guaranteeType": {
1350
+ "type": "string"
1351
+ },
1352
+ "status": {
1353
+ "type": "string"
1354
+ },
1355
+ "currency": {
1356
+ "type": [
1357
+ "string",
1358
+ "null"
1359
+ ]
1360
+ },
1361
+ "amountCents": {
1362
+ "type": [
1363
+ "integer",
1364
+ "null"
1365
+ ]
1366
+ },
1367
+ "provider": {
1368
+ "type": [
1369
+ "string",
1370
+ "null"
1371
+ ]
1372
+ },
1373
+ "referenceNumber": {
1374
+ "type": [
1375
+ "string",
1376
+ "null"
1377
+ ]
1378
+ },
1379
+ "expiresAt": {
1380
+ "type": [
1381
+ "string",
1382
+ "null"
1383
+ ]
1384
+ },
1385
+ "notes": {
1386
+ "type": [
1387
+ "string",
1388
+ "null"
1389
+ ]
1390
+ }
1391
+ },
1392
+ "required": [
1393
+ "id",
1394
+ "bookingPaymentScheduleId",
1395
+ "guaranteeType",
1396
+ "status",
1397
+ "currency",
1398
+ "amountCents",
1399
+ "provider",
1400
+ "referenceNumber",
1401
+ "expiresAt",
1402
+ "notes"
1403
+ ]
1404
+ }
1405
+ },
1406
+ "recommendedTarget": {
1407
+ "type": [
1408
+ "object",
1409
+ "null"
1410
+ ],
1411
+ "properties": {
1412
+ "targetType": {
1413
+ "type": [
1414
+ "string",
1415
+ "null"
1416
+ ],
1417
+ "enum": [
1418
+ "booking_payment_schedule",
1419
+ "booking_guarantee",
1420
+ null
1421
+ ]
1422
+ },
1423
+ "targetId": {
1424
+ "type": [
1425
+ "string",
1426
+ "null"
1427
+ ]
1428
+ }
1429
+ },
1430
+ "required": [
1431
+ "targetType",
1432
+ "targetId"
1433
+ ]
1434
+ }
1435
+ },
1436
+ "required": [
1437
+ "bookingId",
1438
+ "accounts",
1439
+ "schedules",
1440
+ "guarantees",
1441
+ "recommendedTarget"
1442
+ ]
1443
+ }
1444
+ },
1445
+ "required": [
1446
+ "data"
1447
+ ]
1448
+ }
1449
+ }
1450
+ }
1451
+ },
1452
+ "404": {
1453
+ "description": "Booking payment options not found",
1454
+ "content": {
1455
+ "application/json": {
1456
+ "schema": {
1457
+ "type": "object",
1458
+ "properties": {
1459
+ "error": {
1460
+ "type": "string"
1461
+ }
1462
+ },
1463
+ "required": [
1464
+ "error"
1465
+ ]
1466
+ }
1467
+ }
1468
+ }
1469
+ }
1470
+ },
1471
+ "operationId": "getPublicFinanceBookingsByBookingIdPaymentOptions",
1472
+ "summary": "GET /v1/public/finance/bookings/{bookingId}/payment-options",
1473
+ "tags": [
1474
+ "finance"
1475
+ ],
1476
+ "x-voyant-module": "finance",
1477
+ "x-voyant-surface": "storefront"
1478
+ }
1479
+ },
1480
+ "/v1/public/finance/payment-sessions/{sessionId}": {
1481
+ "get": {
1482
+ "parameters": [
1483
+ {
1484
+ "schema": {
1485
+ "type": "string"
1486
+ },
1487
+ "required": true,
1488
+ "name": "sessionId",
1489
+ "in": "path"
1490
+ }
1491
+ ],
1492
+ "responses": {
1493
+ "200": {
1494
+ "description": "A redacted public payment-session projection",
1495
+ "content": {
1496
+ "application/json": {
1497
+ "schema": {
1498
+ "type": "object",
1499
+ "properties": {
1500
+ "data": {
1501
+ "type": "object",
1502
+ "properties": {
1503
+ "id": {
1504
+ "type": "string"
1505
+ },
1506
+ "target": {
1507
+ "oneOf": [
1508
+ {
1509
+ "type": "object",
1510
+ "properties": {
1511
+ "type": {
1512
+ "type": "string",
1513
+ "enum": [
1514
+ "booking"
1515
+ ]
1516
+ },
1517
+ "bookingId": {
1518
+ "type": "string",
1519
+ "minLength": 1
1520
+ }
1521
+ },
1522
+ "required": [
1523
+ "type",
1524
+ "bookingId"
1525
+ ]
1526
+ },
1527
+ {
1528
+ "type": "object",
1529
+ "properties": {
1530
+ "type": {
1531
+ "type": "string",
1532
+ "enum": [
1533
+ "invoice"
1534
+ ]
1535
+ },
1536
+ "invoiceId": {
1537
+ "type": "string",
1538
+ "minLength": 1
1539
+ }
1540
+ },
1541
+ "required": [
1542
+ "type",
1543
+ "invoiceId"
1544
+ ]
1545
+ },
1546
+ {
1547
+ "type": "object",
1548
+ "properties": {
1549
+ "type": {
1550
+ "type": "string",
1551
+ "enum": [
1552
+ "booking_payment_schedule"
1553
+ ]
1554
+ },
1555
+ "bookingPaymentScheduleId": {
1556
+ "type": "string",
1557
+ "minLength": 1
1558
+ }
1559
+ },
1560
+ "required": [
1561
+ "type",
1562
+ "bookingPaymentScheduleId"
1563
+ ]
1564
+ },
1565
+ {
1566
+ "type": "object",
1567
+ "properties": {
1568
+ "type": {
1569
+ "type": "string",
1570
+ "enum": [
1571
+ "booking_guarantee"
1572
+ ]
1573
+ },
1574
+ "bookingGuaranteeId": {
1575
+ "type": "string",
1576
+ "minLength": 1
1577
+ }
1578
+ },
1579
+ "required": [
1580
+ "type",
1581
+ "bookingGuaranteeId"
1582
+ ]
1583
+ },
1584
+ {
1585
+ "type": "object",
1586
+ "properties": {
1587
+ "type": {
1588
+ "type": "string",
1589
+ "enum": [
1590
+ "flight_order"
1591
+ ]
1592
+ },
1593
+ "flightOrderId": {
1594
+ "type": "string",
1595
+ "minLength": 1
1596
+ }
1597
+ },
1598
+ "required": [
1599
+ "type",
1600
+ "flightOrderId"
1601
+ ]
1602
+ },
1603
+ {
1604
+ "type": "object",
1605
+ "properties": {
1606
+ "type": {
1607
+ "type": "string",
1608
+ "enum": [
1609
+ "program"
1610
+ ]
1611
+ },
1612
+ "programId": {
1613
+ "type": "string",
1614
+ "minLength": 1
1615
+ }
1616
+ },
1617
+ "required": [
1618
+ "type",
1619
+ "programId"
1620
+ ]
1621
+ },
1622
+ {
1623
+ "type": "object",
1624
+ "properties": {
1625
+ "type": {
1626
+ "type": "string",
1627
+ "enum": [
1628
+ "supplier_settlement"
1629
+ ]
1630
+ },
1631
+ "supplierSettlementId": {
1632
+ "type": "string",
1633
+ "minLength": 1
1634
+ }
1635
+ },
1636
+ "required": [
1637
+ "type",
1638
+ "supplierSettlementId"
1639
+ ]
1640
+ },
1641
+ {
1642
+ "type": "object",
1643
+ "properties": {
1644
+ "type": {
1645
+ "type": "string",
1646
+ "enum": [
1647
+ "channel_settlement"
1648
+ ]
1649
+ },
1650
+ "channelSettlementId": {
1651
+ "type": "string",
1652
+ "minLength": 1
1653
+ }
1654
+ },
1655
+ "required": [
1656
+ "type",
1657
+ "channelSettlementId"
1658
+ ]
1659
+ },
1660
+ {
1661
+ "type": "object",
1662
+ "properties": {
1663
+ "type": {
1664
+ "type": "string",
1665
+ "enum": [
1666
+ "provider_reference"
1667
+ ]
1668
+ },
1669
+ "provider": {
1670
+ "type": "string",
1671
+ "minLength": 1,
1672
+ "maxLength": 255
1673
+ },
1674
+ "reference": {
1675
+ "type": "string",
1676
+ "minLength": 1,
1677
+ "maxLength": 255
1678
+ }
1679
+ },
1680
+ "required": [
1681
+ "type",
1682
+ "provider",
1683
+ "reference"
1684
+ ]
1685
+ },
1686
+ {
1687
+ "type": "object",
1688
+ "properties": {
1689
+ "type": {
1690
+ "type": "string",
1691
+ "enum": [
1692
+ "legacy_order"
1693
+ ]
1694
+ },
1695
+ "legacyOrderId": {
1696
+ "type": "string",
1697
+ "minLength": 1
1698
+ }
1699
+ },
1700
+ "required": [
1701
+ "type",
1702
+ "legacyOrderId"
1703
+ ]
1704
+ },
1705
+ {
1706
+ "type": "null"
1707
+ }
1708
+ ]
1709
+ },
1710
+ "provenance": {
1711
+ "type": [
1712
+ "object",
1713
+ "null"
1714
+ ],
1715
+ "properties": {
1716
+ "source": {
1717
+ "type": "string",
1718
+ "enum": [
1719
+ "operator",
1720
+ "storefront",
1721
+ "customer_portal",
1722
+ "payment_provider",
1723
+ "supplier_channel",
1724
+ "migration",
1725
+ "other"
1726
+ ],
1727
+ "default": "operator"
1728
+ },
1729
+ "provider": {
1730
+ "type": [
1731
+ "string",
1732
+ "null"
1733
+ ],
1734
+ "maxLength": 255
1735
+ },
1736
+ "reference": {
1737
+ "type": [
1738
+ "string",
1739
+ "null"
1740
+ ],
1741
+ "maxLength": 255
1742
+ },
1743
+ "idempotencyKey": {
1744
+ "type": [
1745
+ "string",
1746
+ "null"
1747
+ ],
1748
+ "maxLength": 255
1749
+ }
1750
+ }
1751
+ },
1752
+ "targetType": {
1753
+ "type": "string",
1754
+ "enum": [
1755
+ "booking",
1756
+ "order",
1757
+ "invoice",
1758
+ "booking_payment_schedule",
1759
+ "booking_guarantee",
1760
+ "flight_order",
1761
+ "other"
1762
+ ]
1763
+ },
1764
+ "targetId": {
1765
+ "type": [
1766
+ "string",
1767
+ "null"
1768
+ ]
1769
+ },
1770
+ "bookingId": {
1771
+ "type": [
1772
+ "string",
1773
+ "null"
1774
+ ]
1775
+ },
1776
+ "legacyOrderId": {
1777
+ "type": [
1778
+ "string",
1779
+ "null"
1780
+ ]
1781
+ },
1782
+ "invoiceId": {
1783
+ "type": [
1784
+ "string",
1785
+ "null"
1786
+ ]
1787
+ },
1788
+ "bookingPaymentScheduleId": {
1789
+ "type": [
1790
+ "string",
1791
+ "null"
1792
+ ]
1793
+ },
1794
+ "bookingGuaranteeId": {
1795
+ "type": [
1796
+ "string",
1797
+ "null"
1798
+ ]
1799
+ },
1800
+ "status": {
1801
+ "type": "string",
1802
+ "enum": [
1803
+ "pending",
1804
+ "requires_redirect",
1805
+ "processing",
1806
+ "authorized",
1807
+ "paid",
1808
+ "failed",
1809
+ "cancelled",
1810
+ "expired"
1811
+ ]
1812
+ },
1813
+ "provider": {
1814
+ "type": [
1815
+ "string",
1816
+ "null"
1817
+ ]
1818
+ },
1819
+ "providerSessionId": {
1820
+ "type": [
1821
+ "string",
1822
+ "null"
1823
+ ]
1824
+ },
1825
+ "providerPaymentId": {
1826
+ "type": [
1827
+ "string",
1828
+ "null"
1829
+ ]
1830
+ },
1831
+ "externalReference": {
1832
+ "type": [
1833
+ "string",
1834
+ "null"
1835
+ ]
1836
+ },
1837
+ "clientReference": {
1838
+ "type": [
1839
+ "string",
1840
+ "null"
1841
+ ]
1842
+ },
1843
+ "currency": {
1844
+ "type": "string"
1845
+ },
1846
+ "amountCents": {
1847
+ "type": "integer"
1848
+ },
1849
+ "paymentMethod": {
1850
+ "type": [
1851
+ "string",
1852
+ "null"
1853
+ ],
1854
+ "enum": [
1855
+ "bank_transfer",
1856
+ "credit_card",
1857
+ "debit_card",
1858
+ "cash",
1859
+ "cheque",
1860
+ "wallet",
1861
+ "direct_bill",
1862
+ "voucher",
1863
+ "other",
1864
+ null
1865
+ ]
1866
+ },
1867
+ "payerEmail": {
1868
+ "type": [
1869
+ "string",
1870
+ "null"
1871
+ ]
1872
+ },
1873
+ "payerName": {
1874
+ "type": [
1875
+ "string",
1876
+ "null"
1877
+ ]
1878
+ },
1879
+ "redirectUrl": {
1880
+ "type": [
1881
+ "string",
1882
+ "null"
1883
+ ]
1884
+ },
1885
+ "returnUrl": {
1886
+ "type": [
1887
+ "string",
1888
+ "null"
1889
+ ]
1890
+ },
1891
+ "cancelUrl": {
1892
+ "type": [
1893
+ "string",
1894
+ "null"
1895
+ ]
1896
+ },
1897
+ "expiresAt": {
1898
+ "type": [
1899
+ "string",
1900
+ "null"
1901
+ ]
1902
+ },
1903
+ "completedAt": {
1904
+ "type": [
1905
+ "string",
1906
+ "null"
1907
+ ]
1908
+ },
1909
+ "failureCode": {
1910
+ "type": [
1911
+ "string",
1912
+ "null"
1913
+ ]
1914
+ },
1915
+ "failureMessage": {
1916
+ "type": [
1917
+ "string",
1918
+ "null"
1919
+ ]
1920
+ },
1921
+ "notes": {
1922
+ "type": [
1923
+ "string",
1924
+ "null"
1925
+ ]
1926
+ }
1927
+ },
1928
+ "required": [
1929
+ "id",
1930
+ "targetType",
1931
+ "targetId",
1932
+ "bookingId",
1933
+ "invoiceId",
1934
+ "bookingPaymentScheduleId",
1935
+ "bookingGuaranteeId",
1936
+ "status",
1937
+ "provider",
1938
+ "providerSessionId",
1939
+ "providerPaymentId",
1940
+ "externalReference",
1941
+ "clientReference",
1942
+ "currency",
1943
+ "amountCents",
1944
+ "paymentMethod",
1945
+ "payerEmail",
1946
+ "payerName",
1947
+ "redirectUrl",
1948
+ "returnUrl",
1949
+ "cancelUrl",
1950
+ "expiresAt",
1951
+ "completedAt",
1952
+ "failureCode",
1953
+ "failureMessage",
1954
+ "notes"
1955
+ ]
1956
+ }
1957
+ },
1958
+ "required": [
1959
+ "data"
1960
+ ]
1961
+ }
1962
+ }
1963
+ }
1964
+ },
1965
+ "404": {
1966
+ "description": "Payment session not found",
1967
+ "content": {
1968
+ "application/json": {
1969
+ "schema": {
1970
+ "type": "object",
1971
+ "properties": {
1972
+ "error": {
1973
+ "type": "string"
1974
+ }
1975
+ },
1976
+ "required": [
1977
+ "error"
1978
+ ]
1979
+ }
1980
+ }
1981
+ }
1982
+ }
1983
+ },
1984
+ "operationId": "getPublicFinancePaymentSessionsBySessionId",
1985
+ "summary": "GET /v1/public/finance/payment-sessions/{sessionId}",
1986
+ "tags": [
1987
+ "finance"
1988
+ ],
1989
+ "x-voyant-module": "finance",
1990
+ "x-voyant-surface": "storefront"
1991
+ }
1992
+ },
1993
+ "/v1/public/finance/bookings/{bookingId}/payment-schedules/{scheduleId}/payment-session": {
1994
+ "post": {
1995
+ "parameters": [
1996
+ {
1997
+ "schema": {
1998
+ "type": "string"
1999
+ },
2000
+ "required": true,
2001
+ "name": "bookingId",
2002
+ "in": "path"
2003
+ },
2004
+ {
2005
+ "schema": {
2006
+ "type": "string"
2007
+ },
2008
+ "required": true,
2009
+ "name": "scheduleId",
2010
+ "in": "path"
2011
+ }
2012
+ ],
2013
+ "requestBody": {
2014
+ "required": true,
2015
+ "content": {
2016
+ "application/json": {
2017
+ "schema": {
2018
+ "type": "object",
2019
+ "properties": {
2020
+ "target": {
2021
+ "oneOf": [
2022
+ {
2023
+ "type": "object",
2024
+ "properties": {
2025
+ "type": {
2026
+ "type": "string",
2027
+ "enum": [
2028
+ "booking"
2029
+ ]
2030
+ },
2031
+ "bookingId": {
2032
+ "type": "string",
2033
+ "minLength": 1
2034
+ }
2035
+ },
2036
+ "required": [
2037
+ "type",
2038
+ "bookingId"
2039
+ ]
2040
+ },
2041
+ {
2042
+ "type": "object",
2043
+ "properties": {
2044
+ "type": {
2045
+ "type": "string",
2046
+ "enum": [
2047
+ "invoice"
2048
+ ]
2049
+ },
2050
+ "invoiceId": {
2051
+ "type": "string",
2052
+ "minLength": 1
2053
+ }
2054
+ },
2055
+ "required": [
2056
+ "type",
2057
+ "invoiceId"
2058
+ ]
2059
+ },
2060
+ {
2061
+ "type": "object",
2062
+ "properties": {
2063
+ "type": {
2064
+ "type": "string",
2065
+ "enum": [
2066
+ "booking_payment_schedule"
2067
+ ]
2068
+ },
2069
+ "bookingPaymentScheduleId": {
2070
+ "type": "string",
2071
+ "minLength": 1
2072
+ }
2073
+ },
2074
+ "required": [
2075
+ "type",
2076
+ "bookingPaymentScheduleId"
2077
+ ]
2078
+ },
2079
+ {
2080
+ "type": "object",
2081
+ "properties": {
2082
+ "type": {
2083
+ "type": "string",
2084
+ "enum": [
2085
+ "booking_guarantee"
2086
+ ]
2087
+ },
2088
+ "bookingGuaranteeId": {
2089
+ "type": "string",
2090
+ "minLength": 1
2091
+ }
2092
+ },
2093
+ "required": [
2094
+ "type",
2095
+ "bookingGuaranteeId"
2096
+ ]
2097
+ },
2098
+ {
2099
+ "type": "object",
2100
+ "properties": {
2101
+ "type": {
2102
+ "type": "string",
2103
+ "enum": [
2104
+ "flight_order"
2105
+ ]
2106
+ },
2107
+ "flightOrderId": {
2108
+ "type": "string",
2109
+ "minLength": 1
2110
+ }
2111
+ },
2112
+ "required": [
2113
+ "type",
2114
+ "flightOrderId"
2115
+ ]
2116
+ },
2117
+ {
2118
+ "type": "object",
2119
+ "properties": {
2120
+ "type": {
2121
+ "type": "string",
2122
+ "enum": [
2123
+ "program"
2124
+ ]
2125
+ },
2126
+ "programId": {
2127
+ "type": "string",
2128
+ "minLength": 1
2129
+ }
2130
+ },
2131
+ "required": [
2132
+ "type",
2133
+ "programId"
2134
+ ]
2135
+ },
2136
+ {
2137
+ "type": "object",
2138
+ "properties": {
2139
+ "type": {
2140
+ "type": "string",
2141
+ "enum": [
2142
+ "supplier_settlement"
2143
+ ]
2144
+ },
2145
+ "supplierSettlementId": {
2146
+ "type": "string",
2147
+ "minLength": 1
2148
+ }
2149
+ },
2150
+ "required": [
2151
+ "type",
2152
+ "supplierSettlementId"
2153
+ ]
2154
+ },
2155
+ {
2156
+ "type": "object",
2157
+ "properties": {
2158
+ "type": {
2159
+ "type": "string",
2160
+ "enum": [
2161
+ "channel_settlement"
2162
+ ]
2163
+ },
2164
+ "channelSettlementId": {
2165
+ "type": "string",
2166
+ "minLength": 1
2167
+ }
2168
+ },
2169
+ "required": [
2170
+ "type",
2171
+ "channelSettlementId"
2172
+ ]
2173
+ },
2174
+ {
2175
+ "type": "object",
2176
+ "properties": {
2177
+ "type": {
2178
+ "type": "string",
2179
+ "enum": [
2180
+ "provider_reference"
2181
+ ]
2182
+ },
2183
+ "provider": {
2184
+ "type": "string",
2185
+ "minLength": 1,
2186
+ "maxLength": 255
2187
+ },
2188
+ "reference": {
2189
+ "type": "string",
2190
+ "minLength": 1,
2191
+ "maxLength": 255
2192
+ }
2193
+ },
2194
+ "required": [
2195
+ "type",
2196
+ "provider",
2197
+ "reference"
2198
+ ]
2199
+ },
2200
+ {
2201
+ "type": "object",
2202
+ "properties": {
2203
+ "type": {
2204
+ "type": "string",
2205
+ "enum": [
2206
+ "legacy_order"
2207
+ ]
2208
+ },
2209
+ "legacyOrderId": {
2210
+ "type": "string",
2211
+ "minLength": 1
2212
+ }
2213
+ },
2214
+ "required": [
2215
+ "type",
2216
+ "legacyOrderId"
2217
+ ]
2218
+ }
2219
+ ]
2220
+ },
2221
+ "provenance": {
2222
+ "type": "object",
2223
+ "properties": {
2224
+ "source": {
2225
+ "type": "string",
2226
+ "enum": [
2227
+ "operator",
2228
+ "storefront",
2229
+ "customer_portal",
2230
+ "payment_provider",
2231
+ "supplier_channel",
2232
+ "migration",
2233
+ "other"
2234
+ ],
2235
+ "default": "operator"
2236
+ },
2237
+ "provider": {
2238
+ "type": [
2239
+ "string",
2240
+ "null"
2241
+ ],
2242
+ "maxLength": 255
2243
+ },
2244
+ "reference": {
2245
+ "type": [
2246
+ "string",
2247
+ "null"
2248
+ ],
2249
+ "maxLength": 255
2250
+ },
2251
+ "idempotencyKey": {
2252
+ "type": [
2253
+ "string",
2254
+ "null"
2255
+ ],
2256
+ "maxLength": 255
2257
+ }
2258
+ }
2259
+ },
2260
+ "provider": {
2261
+ "type": [
2262
+ "string",
2263
+ "null"
2264
+ ],
2265
+ "maxLength": 255
2266
+ },
2267
+ "paymentMethod": {
2268
+ "type": [
2269
+ "string",
2270
+ "null"
2271
+ ],
2272
+ "enum": [
2273
+ "bank_transfer",
2274
+ "credit_card",
2275
+ "debit_card",
2276
+ "cash",
2277
+ "cheque",
2278
+ "wallet",
2279
+ "direct_bill",
2280
+ "voucher",
2281
+ "other",
2282
+ null
2283
+ ]
2284
+ },
2285
+ "paymentInstrumentId": {
2286
+ "type": [
2287
+ "string",
2288
+ "null"
2289
+ ]
2290
+ },
2291
+ "payerPersonId": {
2292
+ "type": [
2293
+ "string",
2294
+ "null"
2295
+ ]
2296
+ },
2297
+ "payerOrganizationId": {
2298
+ "type": [
2299
+ "string",
2300
+ "null"
2301
+ ]
2302
+ },
2303
+ "payerEmail": {
2304
+ "type": [
2305
+ "string",
2306
+ "null"
2307
+ ],
2308
+ "format": "email"
2309
+ },
2310
+ "payerName": {
2311
+ "type": [
2312
+ "string",
2313
+ "null"
2314
+ ],
2315
+ "maxLength": 255
2316
+ },
2317
+ "externalReference": {
2318
+ "type": [
2319
+ "string",
2320
+ "null"
2321
+ ],
2322
+ "maxLength": 255
2323
+ },
2324
+ "idempotencyKey": {
2325
+ "type": [
2326
+ "string",
2327
+ "null"
2328
+ ],
2329
+ "maxLength": 255
2330
+ },
2331
+ "clientReference": {
2332
+ "type": [
2333
+ "string",
2334
+ "null"
2335
+ ],
2336
+ "maxLength": 255
2337
+ },
2338
+ "returnUrl": {
2339
+ "type": [
2340
+ "string",
2341
+ "null"
2342
+ ],
2343
+ "format": "uri"
2344
+ },
2345
+ "cancelUrl": {
2346
+ "type": [
2347
+ "string",
2348
+ "null"
2349
+ ],
2350
+ "format": "uri"
2351
+ },
2352
+ "callbackUrl": {
2353
+ "type": [
2354
+ "string",
2355
+ "null"
2356
+ ],
2357
+ "format": "uri"
2358
+ },
2359
+ "expiresAt": {
2360
+ "type": [
2361
+ "string",
2362
+ "null"
2363
+ ]
2364
+ },
2365
+ "notes": {
2366
+ "type": [
2367
+ "string",
2368
+ "null"
2369
+ ]
2370
+ },
2371
+ "providerPayload": {
2372
+ "type": [
2373
+ "object",
2374
+ "null"
2375
+ ],
2376
+ "additionalProperties": {}
2377
+ },
2378
+ "metadata": {
2379
+ "type": [
2380
+ "object",
2381
+ "null"
2382
+ ],
2383
+ "additionalProperties": {}
2384
+ }
2385
+ }
2386
+ }
2387
+ }
2388
+ }
2389
+ },
2390
+ "responses": {
2391
+ "201": {
2392
+ "description": "Started payment session for a booking payment schedule",
2393
+ "content": {
2394
+ "application/json": {
2395
+ "schema": {
2396
+ "type": "object",
2397
+ "properties": {
2398
+ "data": {
2399
+ "type": "object",
2400
+ "properties": {
2401
+ "id": {
2402
+ "type": "string"
2403
+ },
2404
+ "target": {
2405
+ "oneOf": [
2406
+ {
2407
+ "type": "object",
2408
+ "properties": {
2409
+ "type": {
2410
+ "type": "string",
2411
+ "enum": [
2412
+ "booking"
2413
+ ]
2414
+ },
2415
+ "bookingId": {
2416
+ "type": "string",
2417
+ "minLength": 1
2418
+ }
2419
+ },
2420
+ "required": [
2421
+ "type",
2422
+ "bookingId"
2423
+ ]
2424
+ },
2425
+ {
2426
+ "type": "object",
2427
+ "properties": {
2428
+ "type": {
2429
+ "type": "string",
2430
+ "enum": [
2431
+ "invoice"
2432
+ ]
2433
+ },
2434
+ "invoiceId": {
2435
+ "type": "string",
2436
+ "minLength": 1
2437
+ }
2438
+ },
2439
+ "required": [
2440
+ "type",
2441
+ "invoiceId"
2442
+ ]
2443
+ },
2444
+ {
2445
+ "type": "object",
2446
+ "properties": {
2447
+ "type": {
2448
+ "type": "string",
2449
+ "enum": [
2450
+ "booking_payment_schedule"
2451
+ ]
2452
+ },
2453
+ "bookingPaymentScheduleId": {
2454
+ "type": "string",
2455
+ "minLength": 1
2456
+ }
2457
+ },
2458
+ "required": [
2459
+ "type",
2460
+ "bookingPaymentScheduleId"
2461
+ ]
2462
+ },
2463
+ {
2464
+ "type": "object",
2465
+ "properties": {
2466
+ "type": {
2467
+ "type": "string",
2468
+ "enum": [
2469
+ "booking_guarantee"
2470
+ ]
2471
+ },
2472
+ "bookingGuaranteeId": {
2473
+ "type": "string",
2474
+ "minLength": 1
2475
+ }
2476
+ },
2477
+ "required": [
2478
+ "type",
2479
+ "bookingGuaranteeId"
2480
+ ]
2481
+ },
2482
+ {
2483
+ "type": "object",
2484
+ "properties": {
2485
+ "type": {
2486
+ "type": "string",
2487
+ "enum": [
2488
+ "flight_order"
2489
+ ]
2490
+ },
2491
+ "flightOrderId": {
2492
+ "type": "string",
2493
+ "minLength": 1
2494
+ }
2495
+ },
2496
+ "required": [
2497
+ "type",
2498
+ "flightOrderId"
2499
+ ]
2500
+ },
2501
+ {
2502
+ "type": "object",
2503
+ "properties": {
2504
+ "type": {
2505
+ "type": "string",
2506
+ "enum": [
2507
+ "program"
2508
+ ]
2509
+ },
2510
+ "programId": {
2511
+ "type": "string",
2512
+ "minLength": 1
2513
+ }
2514
+ },
2515
+ "required": [
2516
+ "type",
2517
+ "programId"
2518
+ ]
2519
+ },
2520
+ {
2521
+ "type": "object",
2522
+ "properties": {
2523
+ "type": {
2524
+ "type": "string",
2525
+ "enum": [
2526
+ "supplier_settlement"
2527
+ ]
2528
+ },
2529
+ "supplierSettlementId": {
2530
+ "type": "string",
2531
+ "minLength": 1
2532
+ }
2533
+ },
2534
+ "required": [
2535
+ "type",
2536
+ "supplierSettlementId"
2537
+ ]
2538
+ },
2539
+ {
2540
+ "type": "object",
2541
+ "properties": {
2542
+ "type": {
2543
+ "type": "string",
2544
+ "enum": [
2545
+ "channel_settlement"
2546
+ ]
2547
+ },
2548
+ "channelSettlementId": {
2549
+ "type": "string",
2550
+ "minLength": 1
2551
+ }
2552
+ },
2553
+ "required": [
2554
+ "type",
2555
+ "channelSettlementId"
2556
+ ]
2557
+ },
2558
+ {
2559
+ "type": "object",
2560
+ "properties": {
2561
+ "type": {
2562
+ "type": "string",
2563
+ "enum": [
2564
+ "provider_reference"
2565
+ ]
2566
+ },
2567
+ "provider": {
2568
+ "type": "string",
2569
+ "minLength": 1,
2570
+ "maxLength": 255
2571
+ },
2572
+ "reference": {
2573
+ "type": "string",
2574
+ "minLength": 1,
2575
+ "maxLength": 255
2576
+ }
2577
+ },
2578
+ "required": [
2579
+ "type",
2580
+ "provider",
2581
+ "reference"
2582
+ ]
2583
+ },
2584
+ {
2585
+ "type": "object",
2586
+ "properties": {
2587
+ "type": {
2588
+ "type": "string",
2589
+ "enum": [
2590
+ "legacy_order"
2591
+ ]
2592
+ },
2593
+ "legacyOrderId": {
2594
+ "type": "string",
2595
+ "minLength": 1
2596
+ }
2597
+ },
2598
+ "required": [
2599
+ "type",
2600
+ "legacyOrderId"
2601
+ ]
2602
+ },
2603
+ {
2604
+ "type": "null"
2605
+ }
2606
+ ]
2607
+ },
2608
+ "provenance": {
2609
+ "type": [
2610
+ "object",
2611
+ "null"
2612
+ ],
2613
+ "properties": {
2614
+ "source": {
2615
+ "type": "string",
2616
+ "enum": [
2617
+ "operator",
2618
+ "storefront",
2619
+ "customer_portal",
2620
+ "payment_provider",
2621
+ "supplier_channel",
2622
+ "migration",
2623
+ "other"
2624
+ ],
2625
+ "default": "operator"
2626
+ },
2627
+ "provider": {
2628
+ "type": [
2629
+ "string",
2630
+ "null"
2631
+ ],
2632
+ "maxLength": 255
2633
+ },
2634
+ "reference": {
2635
+ "type": [
2636
+ "string",
2637
+ "null"
2638
+ ],
2639
+ "maxLength": 255
2640
+ },
2641
+ "idempotencyKey": {
2642
+ "type": [
2643
+ "string",
2644
+ "null"
2645
+ ],
2646
+ "maxLength": 255
2647
+ }
2648
+ }
2649
+ },
2650
+ "targetType": {
2651
+ "type": "string",
2652
+ "enum": [
2653
+ "booking",
2654
+ "order",
2655
+ "invoice",
2656
+ "booking_payment_schedule",
2657
+ "booking_guarantee",
2658
+ "flight_order",
2659
+ "other"
2660
+ ]
2661
+ },
2662
+ "targetId": {
2663
+ "type": [
2664
+ "string",
2665
+ "null"
2666
+ ]
2667
+ },
2668
+ "bookingId": {
2669
+ "type": [
2670
+ "string",
2671
+ "null"
2672
+ ]
2673
+ },
2674
+ "legacyOrderId": {
2675
+ "type": [
2676
+ "string",
2677
+ "null"
2678
+ ]
2679
+ },
2680
+ "invoiceId": {
2681
+ "type": [
2682
+ "string",
2683
+ "null"
2684
+ ]
2685
+ },
2686
+ "bookingPaymentScheduleId": {
2687
+ "type": [
2688
+ "string",
2689
+ "null"
2690
+ ]
2691
+ },
2692
+ "bookingGuaranteeId": {
2693
+ "type": [
2694
+ "string",
2695
+ "null"
2696
+ ]
2697
+ },
2698
+ "status": {
2699
+ "type": "string",
2700
+ "enum": [
2701
+ "pending",
2702
+ "requires_redirect",
2703
+ "processing",
2704
+ "authorized",
2705
+ "paid",
2706
+ "failed",
2707
+ "cancelled",
2708
+ "expired"
2709
+ ]
2710
+ },
2711
+ "provider": {
2712
+ "type": [
2713
+ "string",
2714
+ "null"
2715
+ ]
2716
+ },
2717
+ "providerSessionId": {
2718
+ "type": [
2719
+ "string",
2720
+ "null"
2721
+ ]
2722
+ },
2723
+ "providerPaymentId": {
2724
+ "type": [
2725
+ "string",
2726
+ "null"
2727
+ ]
2728
+ },
2729
+ "externalReference": {
2730
+ "type": [
2731
+ "string",
2732
+ "null"
2733
+ ]
2734
+ },
2735
+ "clientReference": {
2736
+ "type": [
2737
+ "string",
2738
+ "null"
2739
+ ]
2740
+ },
2741
+ "currency": {
2742
+ "type": "string"
2743
+ },
2744
+ "amountCents": {
2745
+ "type": "integer"
2746
+ },
2747
+ "paymentMethod": {
2748
+ "type": [
2749
+ "string",
2750
+ "null"
2751
+ ],
2752
+ "enum": [
2753
+ "bank_transfer",
2754
+ "credit_card",
2755
+ "debit_card",
2756
+ "cash",
2757
+ "cheque",
2758
+ "wallet",
2759
+ "direct_bill",
2760
+ "voucher",
2761
+ "other",
2762
+ null
2763
+ ]
2764
+ },
2765
+ "payerEmail": {
2766
+ "type": [
2767
+ "string",
2768
+ "null"
2769
+ ]
2770
+ },
2771
+ "payerName": {
2772
+ "type": [
2773
+ "string",
2774
+ "null"
2775
+ ]
2776
+ },
2777
+ "redirectUrl": {
2778
+ "type": [
2779
+ "string",
2780
+ "null"
2781
+ ]
2782
+ },
2783
+ "returnUrl": {
2784
+ "type": [
2785
+ "string",
2786
+ "null"
2787
+ ]
2788
+ },
2789
+ "cancelUrl": {
2790
+ "type": [
2791
+ "string",
2792
+ "null"
2793
+ ]
2794
+ },
2795
+ "expiresAt": {
2796
+ "type": [
2797
+ "string",
2798
+ "null"
2799
+ ]
2800
+ },
2801
+ "completedAt": {
2802
+ "type": [
2803
+ "string",
2804
+ "null"
2805
+ ]
2806
+ },
2807
+ "failureCode": {
2808
+ "type": [
2809
+ "string",
2810
+ "null"
2811
+ ]
2812
+ },
2813
+ "failureMessage": {
2814
+ "type": [
2815
+ "string",
2816
+ "null"
2817
+ ]
2818
+ },
2819
+ "notes": {
2820
+ "type": [
2821
+ "string",
2822
+ "null"
2823
+ ]
2824
+ }
2825
+ },
2826
+ "required": [
2827
+ "id",
2828
+ "targetType",
2829
+ "targetId",
2830
+ "bookingId",
2831
+ "invoiceId",
2832
+ "bookingPaymentScheduleId",
2833
+ "bookingGuaranteeId",
2834
+ "status",
2835
+ "provider",
2836
+ "providerSessionId",
2837
+ "providerPaymentId",
2838
+ "externalReference",
2839
+ "clientReference",
2840
+ "currency",
2841
+ "amountCents",
2842
+ "paymentMethod",
2843
+ "payerEmail",
2844
+ "payerName",
2845
+ "redirectUrl",
2846
+ "returnUrl",
2847
+ "cancelUrl",
2848
+ "expiresAt",
2849
+ "completedAt",
2850
+ "failureCode",
2851
+ "failureMessage",
2852
+ "notes"
2853
+ ]
2854
+ }
2855
+ },
2856
+ "required": [
2857
+ "data"
2858
+ ]
2859
+ }
2860
+ }
2861
+ }
2862
+ },
2863
+ "404": {
2864
+ "description": "Booking payment schedule not found",
2865
+ "content": {
2866
+ "application/json": {
2867
+ "schema": {
2868
+ "type": "object",
2869
+ "properties": {
2870
+ "error": {
2871
+ "type": "string"
2872
+ }
2873
+ },
2874
+ "required": [
2875
+ "error"
2876
+ ]
2877
+ }
2878
+ }
2879
+ }
2880
+ },
2881
+ "409": {
2882
+ "description": "Payment session could not be started",
2883
+ "content": {
2884
+ "application/json": {
2885
+ "schema": {
2886
+ "type": "object",
2887
+ "properties": {
2888
+ "error": {
2889
+ "type": "string"
2890
+ }
2891
+ },
2892
+ "required": [
2893
+ "error"
2894
+ ]
2895
+ }
2896
+ }
2897
+ }
2898
+ }
2899
+ },
2900
+ "operationId": "postPublicFinanceBookingsByBookingIdPaymentSchedulesByScheduleIdPaymentSession",
2901
+ "summary": "POST /v1/public/finance/bookings/{bookingId}/payment-schedules/{scheduleId}/payment-session",
2902
+ "tags": [
2903
+ "finance"
2904
+ ],
2905
+ "x-voyant-module": "finance",
2906
+ "x-voyant-surface": "storefront"
2907
+ }
2908
+ },
2909
+ "/v1/public/finance/bookings/{bookingId}/guarantees/{guaranteeId}/payment-session": {
2910
+ "post": {
2911
+ "parameters": [
2912
+ {
2913
+ "schema": {
2914
+ "type": "string"
2915
+ },
2916
+ "required": true,
2917
+ "name": "bookingId",
2918
+ "in": "path"
2919
+ },
2920
+ {
2921
+ "schema": {
2922
+ "type": "string"
2923
+ },
2924
+ "required": true,
2925
+ "name": "guaranteeId",
2926
+ "in": "path"
2927
+ }
2928
+ ],
2929
+ "requestBody": {
2930
+ "required": true,
2931
+ "content": {
2932
+ "application/json": {
2933
+ "schema": {
2934
+ "type": "object",
2935
+ "properties": {
2936
+ "target": {
2937
+ "oneOf": [
2938
+ {
2939
+ "type": "object",
2940
+ "properties": {
2941
+ "type": {
2942
+ "type": "string",
2943
+ "enum": [
2944
+ "booking"
2945
+ ]
2946
+ },
2947
+ "bookingId": {
2948
+ "type": "string",
2949
+ "minLength": 1
2950
+ }
2951
+ },
2952
+ "required": [
2953
+ "type",
2954
+ "bookingId"
2955
+ ]
2956
+ },
2957
+ {
2958
+ "type": "object",
2959
+ "properties": {
2960
+ "type": {
2961
+ "type": "string",
2962
+ "enum": [
2963
+ "invoice"
2964
+ ]
2965
+ },
2966
+ "invoiceId": {
2967
+ "type": "string",
2968
+ "minLength": 1
2969
+ }
2970
+ },
2971
+ "required": [
2972
+ "type",
2973
+ "invoiceId"
2974
+ ]
2975
+ },
2976
+ {
2977
+ "type": "object",
2978
+ "properties": {
2979
+ "type": {
2980
+ "type": "string",
2981
+ "enum": [
2982
+ "booking_payment_schedule"
2983
+ ]
2984
+ },
2985
+ "bookingPaymentScheduleId": {
2986
+ "type": "string",
2987
+ "minLength": 1
2988
+ }
2989
+ },
2990
+ "required": [
2991
+ "type",
2992
+ "bookingPaymentScheduleId"
2993
+ ]
2994
+ },
2995
+ {
2996
+ "type": "object",
2997
+ "properties": {
2998
+ "type": {
2999
+ "type": "string",
3000
+ "enum": [
3001
+ "booking_guarantee"
3002
+ ]
3003
+ },
3004
+ "bookingGuaranteeId": {
3005
+ "type": "string",
3006
+ "minLength": 1
3007
+ }
3008
+ },
3009
+ "required": [
3010
+ "type",
3011
+ "bookingGuaranteeId"
3012
+ ]
3013
+ },
3014
+ {
3015
+ "type": "object",
3016
+ "properties": {
3017
+ "type": {
3018
+ "type": "string",
3019
+ "enum": [
3020
+ "flight_order"
3021
+ ]
3022
+ },
3023
+ "flightOrderId": {
3024
+ "type": "string",
3025
+ "minLength": 1
3026
+ }
3027
+ },
3028
+ "required": [
3029
+ "type",
3030
+ "flightOrderId"
3031
+ ]
3032
+ },
3033
+ {
3034
+ "type": "object",
3035
+ "properties": {
3036
+ "type": {
3037
+ "type": "string",
3038
+ "enum": [
3039
+ "program"
3040
+ ]
3041
+ },
3042
+ "programId": {
3043
+ "type": "string",
3044
+ "minLength": 1
3045
+ }
3046
+ },
3047
+ "required": [
3048
+ "type",
3049
+ "programId"
3050
+ ]
3051
+ },
3052
+ {
3053
+ "type": "object",
3054
+ "properties": {
3055
+ "type": {
3056
+ "type": "string",
3057
+ "enum": [
3058
+ "supplier_settlement"
3059
+ ]
3060
+ },
3061
+ "supplierSettlementId": {
3062
+ "type": "string",
3063
+ "minLength": 1
3064
+ }
3065
+ },
3066
+ "required": [
3067
+ "type",
3068
+ "supplierSettlementId"
3069
+ ]
3070
+ },
3071
+ {
3072
+ "type": "object",
3073
+ "properties": {
3074
+ "type": {
3075
+ "type": "string",
3076
+ "enum": [
3077
+ "channel_settlement"
3078
+ ]
3079
+ },
3080
+ "channelSettlementId": {
3081
+ "type": "string",
3082
+ "minLength": 1
3083
+ }
3084
+ },
3085
+ "required": [
3086
+ "type",
3087
+ "channelSettlementId"
3088
+ ]
3089
+ },
3090
+ {
3091
+ "type": "object",
3092
+ "properties": {
3093
+ "type": {
3094
+ "type": "string",
3095
+ "enum": [
3096
+ "provider_reference"
3097
+ ]
3098
+ },
3099
+ "provider": {
3100
+ "type": "string",
3101
+ "minLength": 1,
3102
+ "maxLength": 255
3103
+ },
3104
+ "reference": {
3105
+ "type": "string",
3106
+ "minLength": 1,
3107
+ "maxLength": 255
3108
+ }
3109
+ },
3110
+ "required": [
3111
+ "type",
3112
+ "provider",
3113
+ "reference"
3114
+ ]
3115
+ },
3116
+ {
3117
+ "type": "object",
3118
+ "properties": {
3119
+ "type": {
3120
+ "type": "string",
3121
+ "enum": [
3122
+ "legacy_order"
3123
+ ]
3124
+ },
3125
+ "legacyOrderId": {
3126
+ "type": "string",
3127
+ "minLength": 1
3128
+ }
3129
+ },
3130
+ "required": [
3131
+ "type",
3132
+ "legacyOrderId"
3133
+ ]
3134
+ }
3135
+ ]
3136
+ },
3137
+ "provenance": {
3138
+ "type": "object",
3139
+ "properties": {
3140
+ "source": {
3141
+ "type": "string",
3142
+ "enum": [
3143
+ "operator",
3144
+ "storefront",
3145
+ "customer_portal",
3146
+ "payment_provider",
3147
+ "supplier_channel",
3148
+ "migration",
3149
+ "other"
3150
+ ],
3151
+ "default": "operator"
3152
+ },
3153
+ "provider": {
3154
+ "type": [
3155
+ "string",
3156
+ "null"
3157
+ ],
3158
+ "maxLength": 255
3159
+ },
3160
+ "reference": {
3161
+ "type": [
3162
+ "string",
3163
+ "null"
3164
+ ],
3165
+ "maxLength": 255
3166
+ },
3167
+ "idempotencyKey": {
3168
+ "type": [
3169
+ "string",
3170
+ "null"
3171
+ ],
3172
+ "maxLength": 255
3173
+ }
3174
+ }
3175
+ },
3176
+ "provider": {
3177
+ "type": [
3178
+ "string",
3179
+ "null"
3180
+ ],
3181
+ "maxLength": 255
3182
+ },
3183
+ "paymentMethod": {
3184
+ "type": [
3185
+ "string",
3186
+ "null"
3187
+ ],
3188
+ "enum": [
3189
+ "bank_transfer",
3190
+ "credit_card",
3191
+ "debit_card",
3192
+ "cash",
3193
+ "cheque",
3194
+ "wallet",
3195
+ "direct_bill",
3196
+ "voucher",
3197
+ "other",
3198
+ null
3199
+ ]
3200
+ },
3201
+ "paymentInstrumentId": {
3202
+ "type": [
3203
+ "string",
3204
+ "null"
3205
+ ]
3206
+ },
3207
+ "payerPersonId": {
3208
+ "type": [
3209
+ "string",
3210
+ "null"
3211
+ ]
3212
+ },
3213
+ "payerOrganizationId": {
3214
+ "type": [
3215
+ "string",
3216
+ "null"
3217
+ ]
3218
+ },
3219
+ "payerEmail": {
3220
+ "type": [
3221
+ "string",
3222
+ "null"
3223
+ ],
3224
+ "format": "email"
3225
+ },
3226
+ "payerName": {
3227
+ "type": [
3228
+ "string",
3229
+ "null"
3230
+ ],
3231
+ "maxLength": 255
3232
+ },
3233
+ "externalReference": {
3234
+ "type": [
3235
+ "string",
3236
+ "null"
3237
+ ],
3238
+ "maxLength": 255
3239
+ },
3240
+ "idempotencyKey": {
3241
+ "type": [
3242
+ "string",
3243
+ "null"
3244
+ ],
3245
+ "maxLength": 255
3246
+ },
3247
+ "clientReference": {
3248
+ "type": [
3249
+ "string",
3250
+ "null"
3251
+ ],
3252
+ "maxLength": 255
3253
+ },
3254
+ "returnUrl": {
3255
+ "type": [
3256
+ "string",
3257
+ "null"
3258
+ ],
3259
+ "format": "uri"
3260
+ },
3261
+ "cancelUrl": {
3262
+ "type": [
3263
+ "string",
3264
+ "null"
3265
+ ],
3266
+ "format": "uri"
3267
+ },
3268
+ "callbackUrl": {
3269
+ "type": [
3270
+ "string",
3271
+ "null"
3272
+ ],
3273
+ "format": "uri"
3274
+ },
3275
+ "expiresAt": {
3276
+ "type": [
3277
+ "string",
3278
+ "null"
3279
+ ]
3280
+ },
3281
+ "notes": {
3282
+ "type": [
3283
+ "string",
3284
+ "null"
3285
+ ]
3286
+ },
3287
+ "providerPayload": {
3288
+ "type": [
3289
+ "object",
3290
+ "null"
3291
+ ],
3292
+ "additionalProperties": {}
3293
+ },
3294
+ "metadata": {
3295
+ "type": [
3296
+ "object",
3297
+ "null"
3298
+ ],
3299
+ "additionalProperties": {}
3300
+ }
3301
+ }
3302
+ }
3303
+ }
3304
+ }
3305
+ },
3306
+ "responses": {
3307
+ "201": {
3308
+ "description": "Started payment session for a booking guarantee",
3309
+ "content": {
3310
+ "application/json": {
3311
+ "schema": {
3312
+ "type": "object",
3313
+ "properties": {
3314
+ "data": {
3315
+ "type": "object",
3316
+ "properties": {
3317
+ "id": {
3318
+ "type": "string"
3319
+ },
3320
+ "target": {
3321
+ "oneOf": [
3322
+ {
3323
+ "type": "object",
3324
+ "properties": {
3325
+ "type": {
3326
+ "type": "string",
3327
+ "enum": [
3328
+ "booking"
3329
+ ]
3330
+ },
3331
+ "bookingId": {
3332
+ "type": "string",
3333
+ "minLength": 1
3334
+ }
3335
+ },
3336
+ "required": [
3337
+ "type",
3338
+ "bookingId"
3339
+ ]
3340
+ },
3341
+ {
3342
+ "type": "object",
3343
+ "properties": {
3344
+ "type": {
3345
+ "type": "string",
3346
+ "enum": [
3347
+ "invoice"
3348
+ ]
3349
+ },
3350
+ "invoiceId": {
3351
+ "type": "string",
3352
+ "minLength": 1
3353
+ }
3354
+ },
3355
+ "required": [
3356
+ "type",
3357
+ "invoiceId"
3358
+ ]
3359
+ },
3360
+ {
3361
+ "type": "object",
3362
+ "properties": {
3363
+ "type": {
3364
+ "type": "string",
3365
+ "enum": [
3366
+ "booking_payment_schedule"
3367
+ ]
3368
+ },
3369
+ "bookingPaymentScheduleId": {
3370
+ "type": "string",
3371
+ "minLength": 1
3372
+ }
3373
+ },
3374
+ "required": [
3375
+ "type",
3376
+ "bookingPaymentScheduleId"
3377
+ ]
3378
+ },
3379
+ {
3380
+ "type": "object",
3381
+ "properties": {
3382
+ "type": {
3383
+ "type": "string",
3384
+ "enum": [
3385
+ "booking_guarantee"
3386
+ ]
3387
+ },
3388
+ "bookingGuaranteeId": {
3389
+ "type": "string",
3390
+ "minLength": 1
3391
+ }
3392
+ },
3393
+ "required": [
3394
+ "type",
3395
+ "bookingGuaranteeId"
3396
+ ]
3397
+ },
3398
+ {
3399
+ "type": "object",
3400
+ "properties": {
3401
+ "type": {
3402
+ "type": "string",
3403
+ "enum": [
3404
+ "flight_order"
3405
+ ]
3406
+ },
3407
+ "flightOrderId": {
3408
+ "type": "string",
3409
+ "minLength": 1
3410
+ }
3411
+ },
3412
+ "required": [
3413
+ "type",
3414
+ "flightOrderId"
3415
+ ]
3416
+ },
3417
+ {
3418
+ "type": "object",
3419
+ "properties": {
3420
+ "type": {
3421
+ "type": "string",
3422
+ "enum": [
3423
+ "program"
3424
+ ]
3425
+ },
3426
+ "programId": {
3427
+ "type": "string",
3428
+ "minLength": 1
3429
+ }
3430
+ },
3431
+ "required": [
3432
+ "type",
3433
+ "programId"
3434
+ ]
3435
+ },
3436
+ {
3437
+ "type": "object",
3438
+ "properties": {
3439
+ "type": {
3440
+ "type": "string",
3441
+ "enum": [
3442
+ "supplier_settlement"
3443
+ ]
3444
+ },
3445
+ "supplierSettlementId": {
3446
+ "type": "string",
3447
+ "minLength": 1
3448
+ }
3449
+ },
3450
+ "required": [
3451
+ "type",
3452
+ "supplierSettlementId"
3453
+ ]
3454
+ },
3455
+ {
3456
+ "type": "object",
3457
+ "properties": {
3458
+ "type": {
3459
+ "type": "string",
3460
+ "enum": [
3461
+ "channel_settlement"
3462
+ ]
3463
+ },
3464
+ "channelSettlementId": {
3465
+ "type": "string",
3466
+ "minLength": 1
3467
+ }
3468
+ },
3469
+ "required": [
3470
+ "type",
3471
+ "channelSettlementId"
3472
+ ]
3473
+ },
3474
+ {
3475
+ "type": "object",
3476
+ "properties": {
3477
+ "type": {
3478
+ "type": "string",
3479
+ "enum": [
3480
+ "provider_reference"
3481
+ ]
3482
+ },
3483
+ "provider": {
3484
+ "type": "string",
3485
+ "minLength": 1,
3486
+ "maxLength": 255
3487
+ },
3488
+ "reference": {
3489
+ "type": "string",
3490
+ "minLength": 1,
3491
+ "maxLength": 255
3492
+ }
3493
+ },
3494
+ "required": [
3495
+ "type",
3496
+ "provider",
3497
+ "reference"
3498
+ ]
3499
+ },
3500
+ {
3501
+ "type": "object",
3502
+ "properties": {
3503
+ "type": {
3504
+ "type": "string",
3505
+ "enum": [
3506
+ "legacy_order"
3507
+ ]
3508
+ },
3509
+ "legacyOrderId": {
3510
+ "type": "string",
3511
+ "minLength": 1
3512
+ }
3513
+ },
3514
+ "required": [
3515
+ "type",
3516
+ "legacyOrderId"
3517
+ ]
3518
+ },
3519
+ {
3520
+ "type": "null"
3521
+ }
3522
+ ]
3523
+ },
3524
+ "provenance": {
3525
+ "type": [
3526
+ "object",
3527
+ "null"
3528
+ ],
3529
+ "properties": {
3530
+ "source": {
3531
+ "type": "string",
3532
+ "enum": [
3533
+ "operator",
3534
+ "storefront",
3535
+ "customer_portal",
3536
+ "payment_provider",
3537
+ "supplier_channel",
3538
+ "migration",
3539
+ "other"
3540
+ ],
3541
+ "default": "operator"
3542
+ },
3543
+ "provider": {
3544
+ "type": [
3545
+ "string",
3546
+ "null"
3547
+ ],
3548
+ "maxLength": 255
3549
+ },
3550
+ "reference": {
3551
+ "type": [
3552
+ "string",
3553
+ "null"
3554
+ ],
3555
+ "maxLength": 255
3556
+ },
3557
+ "idempotencyKey": {
3558
+ "type": [
3559
+ "string",
3560
+ "null"
3561
+ ],
3562
+ "maxLength": 255
3563
+ }
3564
+ }
3565
+ },
3566
+ "targetType": {
3567
+ "type": "string",
3568
+ "enum": [
3569
+ "booking",
3570
+ "order",
3571
+ "invoice",
3572
+ "booking_payment_schedule",
3573
+ "booking_guarantee",
3574
+ "flight_order",
3575
+ "other"
3576
+ ]
3577
+ },
3578
+ "targetId": {
3579
+ "type": [
3580
+ "string",
3581
+ "null"
3582
+ ]
3583
+ },
3584
+ "bookingId": {
3585
+ "type": [
3586
+ "string",
3587
+ "null"
3588
+ ]
3589
+ },
3590
+ "legacyOrderId": {
3591
+ "type": [
3592
+ "string",
3593
+ "null"
3594
+ ]
3595
+ },
3596
+ "invoiceId": {
3597
+ "type": [
3598
+ "string",
3599
+ "null"
3600
+ ]
3601
+ },
3602
+ "bookingPaymentScheduleId": {
3603
+ "type": [
3604
+ "string",
3605
+ "null"
3606
+ ]
3607
+ },
3608
+ "bookingGuaranteeId": {
3609
+ "type": [
3610
+ "string",
3611
+ "null"
3612
+ ]
3613
+ },
3614
+ "status": {
3615
+ "type": "string",
3616
+ "enum": [
3617
+ "pending",
3618
+ "requires_redirect",
3619
+ "processing",
3620
+ "authorized",
3621
+ "paid",
3622
+ "failed",
3623
+ "cancelled",
3624
+ "expired"
3625
+ ]
3626
+ },
3627
+ "provider": {
3628
+ "type": [
3629
+ "string",
3630
+ "null"
3631
+ ]
3632
+ },
3633
+ "providerSessionId": {
3634
+ "type": [
3635
+ "string",
3636
+ "null"
3637
+ ]
3638
+ },
3639
+ "providerPaymentId": {
3640
+ "type": [
3641
+ "string",
3642
+ "null"
3643
+ ]
3644
+ },
3645
+ "externalReference": {
3646
+ "type": [
3647
+ "string",
3648
+ "null"
3649
+ ]
3650
+ },
3651
+ "clientReference": {
3652
+ "type": [
3653
+ "string",
3654
+ "null"
3655
+ ]
3656
+ },
3657
+ "currency": {
3658
+ "type": "string"
3659
+ },
3660
+ "amountCents": {
3661
+ "type": "integer"
3662
+ },
3663
+ "paymentMethod": {
3664
+ "type": [
3665
+ "string",
3666
+ "null"
3667
+ ],
3668
+ "enum": [
3669
+ "bank_transfer",
3670
+ "credit_card",
3671
+ "debit_card",
3672
+ "cash",
3673
+ "cheque",
3674
+ "wallet",
3675
+ "direct_bill",
3676
+ "voucher",
3677
+ "other",
3678
+ null
3679
+ ]
3680
+ },
3681
+ "payerEmail": {
3682
+ "type": [
3683
+ "string",
3684
+ "null"
3685
+ ]
3686
+ },
3687
+ "payerName": {
3688
+ "type": [
3689
+ "string",
3690
+ "null"
3691
+ ]
3692
+ },
3693
+ "redirectUrl": {
3694
+ "type": [
3695
+ "string",
3696
+ "null"
3697
+ ]
3698
+ },
3699
+ "returnUrl": {
3700
+ "type": [
3701
+ "string",
3702
+ "null"
3703
+ ]
3704
+ },
3705
+ "cancelUrl": {
3706
+ "type": [
3707
+ "string",
3708
+ "null"
3709
+ ]
3710
+ },
3711
+ "expiresAt": {
3712
+ "type": [
3713
+ "string",
3714
+ "null"
3715
+ ]
3716
+ },
3717
+ "completedAt": {
3718
+ "type": [
3719
+ "string",
3720
+ "null"
3721
+ ]
3722
+ },
3723
+ "failureCode": {
3724
+ "type": [
3725
+ "string",
3726
+ "null"
3727
+ ]
3728
+ },
3729
+ "failureMessage": {
3730
+ "type": [
3731
+ "string",
3732
+ "null"
3733
+ ]
3734
+ },
3735
+ "notes": {
3736
+ "type": [
3737
+ "string",
3738
+ "null"
3739
+ ]
3740
+ }
3741
+ },
3742
+ "required": [
3743
+ "id",
3744
+ "targetType",
3745
+ "targetId",
3746
+ "bookingId",
3747
+ "invoiceId",
3748
+ "bookingPaymentScheduleId",
3749
+ "bookingGuaranteeId",
3750
+ "status",
3751
+ "provider",
3752
+ "providerSessionId",
3753
+ "providerPaymentId",
3754
+ "externalReference",
3755
+ "clientReference",
3756
+ "currency",
3757
+ "amountCents",
3758
+ "paymentMethod",
3759
+ "payerEmail",
3760
+ "payerName",
3761
+ "redirectUrl",
3762
+ "returnUrl",
3763
+ "cancelUrl",
3764
+ "expiresAt",
3765
+ "completedAt",
3766
+ "failureCode",
3767
+ "failureMessage",
3768
+ "notes"
3769
+ ]
3770
+ }
3771
+ },
3772
+ "required": [
3773
+ "data"
3774
+ ]
3775
+ }
3776
+ }
3777
+ }
3778
+ },
3779
+ "404": {
3780
+ "description": "Booking guarantee not found",
3781
+ "content": {
3782
+ "application/json": {
3783
+ "schema": {
3784
+ "type": "object",
3785
+ "properties": {
3786
+ "error": {
3787
+ "type": "string"
3788
+ }
3789
+ },
3790
+ "required": [
3791
+ "error"
3792
+ ]
3793
+ }
3794
+ }
3795
+ }
3796
+ },
3797
+ "409": {
3798
+ "description": "Payment session could not be started",
3799
+ "content": {
3800
+ "application/json": {
3801
+ "schema": {
3802
+ "type": "object",
3803
+ "properties": {
3804
+ "error": {
3805
+ "type": "string"
3806
+ }
3807
+ },
3808
+ "required": [
3809
+ "error"
3810
+ ]
3811
+ }
3812
+ }
3813
+ }
3814
+ }
3815
+ },
3816
+ "operationId": "postPublicFinanceBookingsByBookingIdGuaranteesByGuaranteeIdPaymentSession",
3817
+ "summary": "POST /v1/public/finance/bookings/{bookingId}/guarantees/{guaranteeId}/payment-session",
3818
+ "tags": [
3819
+ "finance"
3820
+ ],
3821
+ "x-voyant-module": "finance",
3822
+ "x-voyant-surface": "storefront"
3823
+ }
3824
+ },
3825
+ "/v1/public/finance/invoices/{invoiceId}/payment-session": {
3826
+ "post": {
3827
+ "parameters": [
3828
+ {
3829
+ "schema": {
3830
+ "type": "string"
3831
+ },
3832
+ "required": true,
3833
+ "name": "invoiceId",
3834
+ "in": "path"
3835
+ }
3836
+ ],
3837
+ "requestBody": {
3838
+ "required": true,
3839
+ "content": {
3840
+ "application/json": {
3841
+ "schema": {
3842
+ "type": "object",
3843
+ "properties": {
3844
+ "target": {
3845
+ "oneOf": [
3846
+ {
3847
+ "type": "object",
3848
+ "properties": {
3849
+ "type": {
3850
+ "type": "string",
3851
+ "enum": [
3852
+ "booking"
3853
+ ]
3854
+ },
3855
+ "bookingId": {
3856
+ "type": "string",
3857
+ "minLength": 1
3858
+ }
3859
+ },
3860
+ "required": [
3861
+ "type",
3862
+ "bookingId"
3863
+ ]
3864
+ },
3865
+ {
3866
+ "type": "object",
3867
+ "properties": {
3868
+ "type": {
3869
+ "type": "string",
3870
+ "enum": [
3871
+ "invoice"
3872
+ ]
3873
+ },
3874
+ "invoiceId": {
3875
+ "type": "string",
3876
+ "minLength": 1
3877
+ }
3878
+ },
3879
+ "required": [
3880
+ "type",
3881
+ "invoiceId"
3882
+ ]
3883
+ },
3884
+ {
3885
+ "type": "object",
3886
+ "properties": {
3887
+ "type": {
3888
+ "type": "string",
3889
+ "enum": [
3890
+ "booking_payment_schedule"
3891
+ ]
3892
+ },
3893
+ "bookingPaymentScheduleId": {
3894
+ "type": "string",
3895
+ "minLength": 1
3896
+ }
3897
+ },
3898
+ "required": [
3899
+ "type",
3900
+ "bookingPaymentScheduleId"
3901
+ ]
3902
+ },
3903
+ {
3904
+ "type": "object",
3905
+ "properties": {
3906
+ "type": {
3907
+ "type": "string",
3908
+ "enum": [
3909
+ "booking_guarantee"
3910
+ ]
3911
+ },
3912
+ "bookingGuaranteeId": {
3913
+ "type": "string",
3914
+ "minLength": 1
3915
+ }
3916
+ },
3917
+ "required": [
3918
+ "type",
3919
+ "bookingGuaranteeId"
3920
+ ]
3921
+ },
3922
+ {
3923
+ "type": "object",
3924
+ "properties": {
3925
+ "type": {
3926
+ "type": "string",
3927
+ "enum": [
3928
+ "flight_order"
3929
+ ]
3930
+ },
3931
+ "flightOrderId": {
3932
+ "type": "string",
3933
+ "minLength": 1
3934
+ }
3935
+ },
3936
+ "required": [
3937
+ "type",
3938
+ "flightOrderId"
3939
+ ]
3940
+ },
3941
+ {
3942
+ "type": "object",
3943
+ "properties": {
3944
+ "type": {
3945
+ "type": "string",
3946
+ "enum": [
3947
+ "program"
3948
+ ]
3949
+ },
3950
+ "programId": {
3951
+ "type": "string",
3952
+ "minLength": 1
3953
+ }
3954
+ },
3955
+ "required": [
3956
+ "type",
3957
+ "programId"
3958
+ ]
3959
+ },
3960
+ {
3961
+ "type": "object",
3962
+ "properties": {
3963
+ "type": {
3964
+ "type": "string",
3965
+ "enum": [
3966
+ "supplier_settlement"
3967
+ ]
3968
+ },
3969
+ "supplierSettlementId": {
3970
+ "type": "string",
3971
+ "minLength": 1
3972
+ }
3973
+ },
3974
+ "required": [
3975
+ "type",
3976
+ "supplierSettlementId"
3977
+ ]
3978
+ },
3979
+ {
3980
+ "type": "object",
3981
+ "properties": {
3982
+ "type": {
3983
+ "type": "string",
3984
+ "enum": [
3985
+ "channel_settlement"
3986
+ ]
3987
+ },
3988
+ "channelSettlementId": {
3989
+ "type": "string",
3990
+ "minLength": 1
3991
+ }
3992
+ },
3993
+ "required": [
3994
+ "type",
3995
+ "channelSettlementId"
3996
+ ]
3997
+ },
3998
+ {
3999
+ "type": "object",
4000
+ "properties": {
4001
+ "type": {
4002
+ "type": "string",
4003
+ "enum": [
4004
+ "provider_reference"
4005
+ ]
4006
+ },
4007
+ "provider": {
4008
+ "type": "string",
4009
+ "minLength": 1,
4010
+ "maxLength": 255
4011
+ },
4012
+ "reference": {
4013
+ "type": "string",
4014
+ "minLength": 1,
4015
+ "maxLength": 255
4016
+ }
4017
+ },
4018
+ "required": [
4019
+ "type",
4020
+ "provider",
4021
+ "reference"
4022
+ ]
4023
+ },
4024
+ {
4025
+ "type": "object",
4026
+ "properties": {
4027
+ "type": {
4028
+ "type": "string",
4029
+ "enum": [
4030
+ "legacy_order"
4031
+ ]
4032
+ },
4033
+ "legacyOrderId": {
4034
+ "type": "string",
4035
+ "minLength": 1
4036
+ }
4037
+ },
4038
+ "required": [
4039
+ "type",
4040
+ "legacyOrderId"
4041
+ ]
4042
+ }
4043
+ ]
4044
+ },
4045
+ "provenance": {
4046
+ "type": "object",
4047
+ "properties": {
4048
+ "source": {
4049
+ "type": "string",
4050
+ "enum": [
4051
+ "operator",
4052
+ "storefront",
4053
+ "customer_portal",
4054
+ "payment_provider",
4055
+ "supplier_channel",
4056
+ "migration",
4057
+ "other"
4058
+ ],
4059
+ "default": "operator"
4060
+ },
4061
+ "provider": {
4062
+ "type": [
4063
+ "string",
4064
+ "null"
4065
+ ],
4066
+ "maxLength": 255
4067
+ },
4068
+ "reference": {
4069
+ "type": [
4070
+ "string",
4071
+ "null"
4072
+ ],
4073
+ "maxLength": 255
4074
+ },
4075
+ "idempotencyKey": {
4076
+ "type": [
4077
+ "string",
4078
+ "null"
4079
+ ],
4080
+ "maxLength": 255
4081
+ }
4082
+ }
4083
+ },
4084
+ "provider": {
4085
+ "type": [
4086
+ "string",
4087
+ "null"
4088
+ ],
4089
+ "maxLength": 255
4090
+ },
4091
+ "paymentMethod": {
4092
+ "type": [
4093
+ "string",
4094
+ "null"
4095
+ ],
4096
+ "enum": [
4097
+ "bank_transfer",
4098
+ "credit_card",
4099
+ "debit_card",
4100
+ "cash",
4101
+ "cheque",
4102
+ "wallet",
4103
+ "direct_bill",
4104
+ "voucher",
4105
+ "other",
4106
+ null
4107
+ ]
4108
+ },
4109
+ "paymentInstrumentId": {
4110
+ "type": [
4111
+ "string",
4112
+ "null"
4113
+ ]
4114
+ },
4115
+ "payerPersonId": {
4116
+ "type": [
4117
+ "string",
4118
+ "null"
4119
+ ]
4120
+ },
4121
+ "payerOrganizationId": {
4122
+ "type": [
4123
+ "string",
4124
+ "null"
4125
+ ]
4126
+ },
4127
+ "payerEmail": {
4128
+ "type": [
4129
+ "string",
4130
+ "null"
4131
+ ],
4132
+ "format": "email"
4133
+ },
4134
+ "payerName": {
4135
+ "type": [
4136
+ "string",
4137
+ "null"
4138
+ ],
4139
+ "maxLength": 255
4140
+ },
4141
+ "externalReference": {
4142
+ "type": [
4143
+ "string",
4144
+ "null"
4145
+ ],
4146
+ "maxLength": 255
4147
+ },
4148
+ "idempotencyKey": {
4149
+ "type": [
4150
+ "string",
4151
+ "null"
4152
+ ],
4153
+ "maxLength": 255
4154
+ },
4155
+ "clientReference": {
4156
+ "type": [
4157
+ "string",
4158
+ "null"
4159
+ ],
4160
+ "maxLength": 255
4161
+ },
4162
+ "returnUrl": {
4163
+ "type": [
4164
+ "string",
4165
+ "null"
4166
+ ],
4167
+ "format": "uri"
4168
+ },
4169
+ "cancelUrl": {
4170
+ "type": [
4171
+ "string",
4172
+ "null"
4173
+ ],
4174
+ "format": "uri"
4175
+ },
4176
+ "callbackUrl": {
4177
+ "type": [
4178
+ "string",
4179
+ "null"
4180
+ ],
4181
+ "format": "uri"
4182
+ },
4183
+ "expiresAt": {
4184
+ "type": [
4185
+ "string",
4186
+ "null"
4187
+ ]
4188
+ },
4189
+ "notes": {
4190
+ "type": [
4191
+ "string",
4192
+ "null"
4193
+ ]
4194
+ },
4195
+ "providerPayload": {
4196
+ "type": [
4197
+ "object",
4198
+ "null"
4199
+ ],
4200
+ "additionalProperties": {}
4201
+ },
4202
+ "metadata": {
4203
+ "type": [
4204
+ "object",
4205
+ "null"
4206
+ ],
4207
+ "additionalProperties": {}
4208
+ }
4209
+ }
4210
+ }
4211
+ }
4212
+ }
4213
+ },
4214
+ "responses": {
4215
+ "201": {
4216
+ "description": "Started payment session for an invoice",
4217
+ "content": {
4218
+ "application/json": {
4219
+ "schema": {
4220
+ "type": "object",
4221
+ "properties": {
4222
+ "data": {
4223
+ "type": "object",
4224
+ "properties": {
4225
+ "id": {
4226
+ "type": "string"
4227
+ },
4228
+ "target": {
4229
+ "oneOf": [
4230
+ {
4231
+ "type": "object",
4232
+ "properties": {
4233
+ "type": {
4234
+ "type": "string",
4235
+ "enum": [
4236
+ "booking"
4237
+ ]
4238
+ },
4239
+ "bookingId": {
4240
+ "type": "string",
4241
+ "minLength": 1
4242
+ }
4243
+ },
4244
+ "required": [
4245
+ "type",
4246
+ "bookingId"
4247
+ ]
4248
+ },
4249
+ {
4250
+ "type": "object",
4251
+ "properties": {
4252
+ "type": {
4253
+ "type": "string",
4254
+ "enum": [
4255
+ "invoice"
4256
+ ]
4257
+ },
4258
+ "invoiceId": {
4259
+ "type": "string",
4260
+ "minLength": 1
4261
+ }
4262
+ },
4263
+ "required": [
4264
+ "type",
4265
+ "invoiceId"
4266
+ ]
4267
+ },
4268
+ {
4269
+ "type": "object",
4270
+ "properties": {
4271
+ "type": {
4272
+ "type": "string",
4273
+ "enum": [
4274
+ "booking_payment_schedule"
4275
+ ]
4276
+ },
4277
+ "bookingPaymentScheduleId": {
4278
+ "type": "string",
4279
+ "minLength": 1
4280
+ }
4281
+ },
4282
+ "required": [
4283
+ "type",
4284
+ "bookingPaymentScheduleId"
4285
+ ]
4286
+ },
4287
+ {
4288
+ "type": "object",
4289
+ "properties": {
4290
+ "type": {
4291
+ "type": "string",
4292
+ "enum": [
4293
+ "booking_guarantee"
4294
+ ]
4295
+ },
4296
+ "bookingGuaranteeId": {
4297
+ "type": "string",
4298
+ "minLength": 1
4299
+ }
4300
+ },
4301
+ "required": [
4302
+ "type",
4303
+ "bookingGuaranteeId"
4304
+ ]
4305
+ },
4306
+ {
4307
+ "type": "object",
4308
+ "properties": {
4309
+ "type": {
4310
+ "type": "string",
4311
+ "enum": [
4312
+ "flight_order"
4313
+ ]
4314
+ },
4315
+ "flightOrderId": {
4316
+ "type": "string",
4317
+ "minLength": 1
4318
+ }
4319
+ },
4320
+ "required": [
4321
+ "type",
4322
+ "flightOrderId"
4323
+ ]
4324
+ },
4325
+ {
4326
+ "type": "object",
4327
+ "properties": {
4328
+ "type": {
4329
+ "type": "string",
4330
+ "enum": [
4331
+ "program"
4332
+ ]
4333
+ },
4334
+ "programId": {
4335
+ "type": "string",
4336
+ "minLength": 1
4337
+ }
4338
+ },
4339
+ "required": [
4340
+ "type",
4341
+ "programId"
4342
+ ]
4343
+ },
4344
+ {
4345
+ "type": "object",
4346
+ "properties": {
4347
+ "type": {
4348
+ "type": "string",
4349
+ "enum": [
4350
+ "supplier_settlement"
4351
+ ]
4352
+ },
4353
+ "supplierSettlementId": {
4354
+ "type": "string",
4355
+ "minLength": 1
4356
+ }
4357
+ },
4358
+ "required": [
4359
+ "type",
4360
+ "supplierSettlementId"
4361
+ ]
4362
+ },
4363
+ {
4364
+ "type": "object",
4365
+ "properties": {
4366
+ "type": {
4367
+ "type": "string",
4368
+ "enum": [
4369
+ "channel_settlement"
4370
+ ]
4371
+ },
4372
+ "channelSettlementId": {
4373
+ "type": "string",
4374
+ "minLength": 1
4375
+ }
4376
+ },
4377
+ "required": [
4378
+ "type",
4379
+ "channelSettlementId"
4380
+ ]
4381
+ },
4382
+ {
4383
+ "type": "object",
4384
+ "properties": {
4385
+ "type": {
4386
+ "type": "string",
4387
+ "enum": [
4388
+ "provider_reference"
4389
+ ]
4390
+ },
4391
+ "provider": {
4392
+ "type": "string",
4393
+ "minLength": 1,
4394
+ "maxLength": 255
4395
+ },
4396
+ "reference": {
4397
+ "type": "string",
4398
+ "minLength": 1,
4399
+ "maxLength": 255
4400
+ }
4401
+ },
4402
+ "required": [
4403
+ "type",
4404
+ "provider",
4405
+ "reference"
4406
+ ]
4407
+ },
4408
+ {
4409
+ "type": "object",
4410
+ "properties": {
4411
+ "type": {
4412
+ "type": "string",
4413
+ "enum": [
4414
+ "legacy_order"
4415
+ ]
4416
+ },
4417
+ "legacyOrderId": {
4418
+ "type": "string",
4419
+ "minLength": 1
4420
+ }
4421
+ },
4422
+ "required": [
4423
+ "type",
4424
+ "legacyOrderId"
4425
+ ]
4426
+ },
4427
+ {
4428
+ "type": "null"
4429
+ }
4430
+ ]
4431
+ },
4432
+ "provenance": {
4433
+ "type": [
4434
+ "object",
4435
+ "null"
4436
+ ],
4437
+ "properties": {
4438
+ "source": {
4439
+ "type": "string",
4440
+ "enum": [
4441
+ "operator",
4442
+ "storefront",
4443
+ "customer_portal",
4444
+ "payment_provider",
4445
+ "supplier_channel",
4446
+ "migration",
4447
+ "other"
4448
+ ],
4449
+ "default": "operator"
4450
+ },
4451
+ "provider": {
4452
+ "type": [
4453
+ "string",
4454
+ "null"
4455
+ ],
4456
+ "maxLength": 255
4457
+ },
4458
+ "reference": {
4459
+ "type": [
4460
+ "string",
4461
+ "null"
4462
+ ],
4463
+ "maxLength": 255
4464
+ },
4465
+ "idempotencyKey": {
4466
+ "type": [
4467
+ "string",
4468
+ "null"
4469
+ ],
4470
+ "maxLength": 255
4471
+ }
4472
+ }
4473
+ },
4474
+ "targetType": {
4475
+ "type": "string",
4476
+ "enum": [
4477
+ "booking",
4478
+ "order",
4479
+ "invoice",
4480
+ "booking_payment_schedule",
4481
+ "booking_guarantee",
4482
+ "flight_order",
4483
+ "other"
4484
+ ]
4485
+ },
4486
+ "targetId": {
4487
+ "type": [
4488
+ "string",
4489
+ "null"
4490
+ ]
4491
+ },
4492
+ "bookingId": {
4493
+ "type": [
4494
+ "string",
4495
+ "null"
4496
+ ]
4497
+ },
4498
+ "legacyOrderId": {
4499
+ "type": [
4500
+ "string",
4501
+ "null"
4502
+ ]
4503
+ },
4504
+ "invoiceId": {
4505
+ "type": [
4506
+ "string",
4507
+ "null"
4508
+ ]
4509
+ },
4510
+ "bookingPaymentScheduleId": {
4511
+ "type": [
4512
+ "string",
4513
+ "null"
4514
+ ]
4515
+ },
4516
+ "bookingGuaranteeId": {
4517
+ "type": [
4518
+ "string",
4519
+ "null"
4520
+ ]
4521
+ },
4522
+ "status": {
4523
+ "type": "string",
4524
+ "enum": [
4525
+ "pending",
4526
+ "requires_redirect",
4527
+ "processing",
4528
+ "authorized",
4529
+ "paid",
4530
+ "failed",
4531
+ "cancelled",
4532
+ "expired"
4533
+ ]
4534
+ },
4535
+ "provider": {
4536
+ "type": [
4537
+ "string",
4538
+ "null"
4539
+ ]
4540
+ },
4541
+ "providerSessionId": {
4542
+ "type": [
4543
+ "string",
4544
+ "null"
4545
+ ]
4546
+ },
4547
+ "providerPaymentId": {
4548
+ "type": [
4549
+ "string",
4550
+ "null"
4551
+ ]
4552
+ },
4553
+ "externalReference": {
4554
+ "type": [
4555
+ "string",
4556
+ "null"
4557
+ ]
4558
+ },
4559
+ "clientReference": {
4560
+ "type": [
4561
+ "string",
4562
+ "null"
4563
+ ]
4564
+ },
4565
+ "currency": {
4566
+ "type": "string"
4567
+ },
4568
+ "amountCents": {
4569
+ "type": "integer"
4570
+ },
4571
+ "paymentMethod": {
4572
+ "type": [
4573
+ "string",
4574
+ "null"
4575
+ ],
4576
+ "enum": [
4577
+ "bank_transfer",
4578
+ "credit_card",
4579
+ "debit_card",
4580
+ "cash",
4581
+ "cheque",
4582
+ "wallet",
4583
+ "direct_bill",
4584
+ "voucher",
4585
+ "other",
4586
+ null
4587
+ ]
4588
+ },
4589
+ "payerEmail": {
4590
+ "type": [
4591
+ "string",
4592
+ "null"
4593
+ ]
4594
+ },
4595
+ "payerName": {
4596
+ "type": [
4597
+ "string",
4598
+ "null"
4599
+ ]
4600
+ },
4601
+ "redirectUrl": {
4602
+ "type": [
4603
+ "string",
4604
+ "null"
4605
+ ]
4606
+ },
4607
+ "returnUrl": {
4608
+ "type": [
4609
+ "string",
4610
+ "null"
4611
+ ]
4612
+ },
4613
+ "cancelUrl": {
4614
+ "type": [
4615
+ "string",
4616
+ "null"
4617
+ ]
4618
+ },
4619
+ "expiresAt": {
4620
+ "type": [
4621
+ "string",
4622
+ "null"
4623
+ ]
4624
+ },
4625
+ "completedAt": {
4626
+ "type": [
4627
+ "string",
4628
+ "null"
4629
+ ]
4630
+ },
4631
+ "failureCode": {
4632
+ "type": [
4633
+ "string",
4634
+ "null"
4635
+ ]
4636
+ },
4637
+ "failureMessage": {
4638
+ "type": [
4639
+ "string",
4640
+ "null"
4641
+ ]
4642
+ },
4643
+ "notes": {
4644
+ "type": [
4645
+ "string",
4646
+ "null"
4647
+ ]
4648
+ }
4649
+ },
4650
+ "required": [
4651
+ "id",
4652
+ "targetType",
4653
+ "targetId",
4654
+ "bookingId",
4655
+ "invoiceId",
4656
+ "bookingPaymentScheduleId",
4657
+ "bookingGuaranteeId",
4658
+ "status",
4659
+ "provider",
4660
+ "providerSessionId",
4661
+ "providerPaymentId",
4662
+ "externalReference",
4663
+ "clientReference",
4664
+ "currency",
4665
+ "amountCents",
4666
+ "paymentMethod",
4667
+ "payerEmail",
4668
+ "payerName",
4669
+ "redirectUrl",
4670
+ "returnUrl",
4671
+ "cancelUrl",
4672
+ "expiresAt",
4673
+ "completedAt",
4674
+ "failureCode",
4675
+ "failureMessage",
4676
+ "notes"
4677
+ ]
4678
+ }
4679
+ },
4680
+ "required": [
4681
+ "data"
4682
+ ]
4683
+ }
4684
+ }
4685
+ }
4686
+ },
4687
+ "404": {
4688
+ "description": "Invoice not found",
4689
+ "content": {
4690
+ "application/json": {
4691
+ "schema": {
4692
+ "type": "object",
4693
+ "properties": {
4694
+ "error": {
4695
+ "type": "string"
4696
+ }
4697
+ },
4698
+ "required": [
4699
+ "error"
4700
+ ]
4701
+ }
4702
+ }
4703
+ }
4704
+ },
4705
+ "409": {
4706
+ "description": "Payment session could not be started",
4707
+ "content": {
4708
+ "application/json": {
4709
+ "schema": {
4710
+ "type": "object",
4711
+ "properties": {
4712
+ "error": {
4713
+ "type": "string"
4714
+ }
4715
+ },
4716
+ "required": [
4717
+ "error"
4718
+ ]
4719
+ }
4720
+ }
4721
+ }
4722
+ }
4723
+ },
4724
+ "operationId": "postPublicFinanceInvoicesByInvoiceIdPaymentSession",
4725
+ "summary": "POST /v1/public/finance/invoices/{invoiceId}/payment-session",
4726
+ "tags": [
4727
+ "finance"
4728
+ ],
4729
+ "x-voyant-module": "finance",
4730
+ "x-voyant-surface": "storefront"
4731
+ }
4732
+ },
4733
+ "/v1/public/finance/accountant/{token}/summary": {
4734
+ "get": {
4735
+ "parameters": [
4736
+ {
4737
+ "schema": {
4738
+ "type": "string"
4739
+ },
4740
+ "required": true,
4741
+ "name": "token",
4742
+ "in": "path"
4743
+ }
4744
+ ],
4745
+ "responses": {
4746
+ "200": {
4747
+ "description": "Accountant share profitability summary (scope + departure/product rollups)",
4748
+ "content": {
4749
+ "application/json": {
4750
+ "schema": {
4751
+ "type": "object",
4752
+ "properties": {
4753
+ "data": {
4754
+ "type": "object",
4755
+ "properties": {
4756
+ "scope": {
4757
+ "type": "object",
4758
+ "properties": {
4759
+ "from": {
4760
+ "type": [
4761
+ "string",
4762
+ "null"
4763
+ ]
4764
+ },
4765
+ "to": {
4766
+ "type": [
4767
+ "string",
4768
+ "null"
4769
+ ]
4770
+ }
4771
+ }
4772
+ },
4773
+ "departures": {},
4774
+ "products": {}
4775
+ },
4776
+ "required": [
4777
+ "scope"
4778
+ ]
4779
+ }
4780
+ },
4781
+ "required": [
4782
+ "data"
4783
+ ]
4784
+ }
4785
+ }
4786
+ }
4787
+ },
4788
+ "404": {
4789
+ "description": "Share not found",
4790
+ "content": {
4791
+ "application/json": {
4792
+ "schema": {
4793
+ "type": "object",
4794
+ "properties": {
4795
+ "error": {
4796
+ "type": "string"
4797
+ }
4798
+ },
4799
+ "required": [
4800
+ "error"
4801
+ ]
4802
+ }
4803
+ }
4804
+ }
4805
+ },
4806
+ "410": {
4807
+ "description": "Share expired or revoked",
4808
+ "content": {
4809
+ "application/json": {
4810
+ "schema": {
4811
+ "type": "object",
4812
+ "properties": {
4813
+ "error": {
4814
+ "type": "string"
4815
+ }
4816
+ },
4817
+ "required": [
4818
+ "error"
4819
+ ]
4820
+ }
4821
+ }
4822
+ }
4823
+ }
4824
+ },
4825
+ "operationId": "getPublicFinanceAccountantByTokenSummary",
4826
+ "summary": "GET /v1/public/finance/accountant/{token}/summary",
4827
+ "tags": [
4828
+ "finance"
4829
+ ],
4830
+ "x-voyant-module": "finance",
4831
+ "x-voyant-surface": "storefront"
4832
+ }
4833
+ },
4834
+ "/v1/public/finance/accountant/{token}/invoices": {
4835
+ "get": {
4836
+ "parameters": [
4837
+ {
4838
+ "schema": {
4839
+ "type": "string"
4840
+ },
4841
+ "required": true,
4842
+ "name": "token",
4843
+ "in": "path"
4844
+ }
4845
+ ],
4846
+ "responses": {
4847
+ "200": {
4848
+ "description": "Invoices (with attachments) visible to an accountant share",
4849
+ "content": {
4850
+ "application/json": {
4851
+ "schema": {
4852
+ "type": "object",
4853
+ "properties": {
4854
+ "data": {
4855
+ "type": "array",
4856
+ "items": {}
4857
+ }
4858
+ },
4859
+ "required": [
4860
+ "data"
4861
+ ]
4862
+ }
4863
+ }
4864
+ }
4865
+ },
4866
+ "404": {
4867
+ "description": "Share not found",
4868
+ "content": {
4869
+ "application/json": {
4870
+ "schema": {
4871
+ "type": "object",
4872
+ "properties": {
4873
+ "error": {
4874
+ "type": "string"
4875
+ }
4876
+ },
4877
+ "required": [
4878
+ "error"
4879
+ ]
4880
+ }
4881
+ }
4882
+ }
4883
+ },
4884
+ "410": {
4885
+ "description": "Share expired or revoked",
4886
+ "content": {
4887
+ "application/json": {
4888
+ "schema": {
4889
+ "type": "object",
4890
+ "properties": {
4891
+ "error": {
4892
+ "type": "string"
4893
+ }
4894
+ },
4895
+ "required": [
4896
+ "error"
4897
+ ]
4898
+ }
4899
+ }
4900
+ }
4901
+ }
4902
+ },
4903
+ "operationId": "getPublicFinanceAccountantByTokenInvoices",
4904
+ "summary": "GET /v1/public/finance/accountant/{token}/invoices",
4905
+ "tags": [
4906
+ "finance"
4907
+ ],
4908
+ "x-voyant-module": "finance",
4909
+ "x-voyant-surface": "storefront"
4910
+ }
4911
+ }
4912
+ },
4913
+ "webhooks": {}
4914
+ }