@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,2965 @@
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/products/tags": {
158
+ "get": {
159
+ "parameters": [
160
+ {
161
+ "schema": {
162
+ "type": "string"
163
+ },
164
+ "required": false,
165
+ "name": "search",
166
+ "in": "query"
167
+ },
168
+ {
169
+ "schema": {
170
+ "type": "integer",
171
+ "example": 100
172
+ },
173
+ "required": false,
174
+ "name": "limit",
175
+ "in": "query"
176
+ },
177
+ {
178
+ "schema": {
179
+ "type": [
180
+ "integer",
181
+ "null"
182
+ ],
183
+ "minimum": 0,
184
+ "default": 0
185
+ },
186
+ "required": false,
187
+ "name": "offset",
188
+ "in": "query"
189
+ }
190
+ ],
191
+ "responses": {
192
+ "200": {
193
+ "description": "Paginated list of public catalog tags",
194
+ "content": {
195
+ "application/json": {
196
+ "schema": {
197
+ "type": "object",
198
+ "properties": {
199
+ "data": {
200
+ "type": "array",
201
+ "items": {
202
+ "type": "object",
203
+ "properties": {
204
+ "id": {
205
+ "type": "string"
206
+ },
207
+ "name": {
208
+ "type": "string"
209
+ }
210
+ },
211
+ "required": [
212
+ "id",
213
+ "name"
214
+ ]
215
+ }
216
+ },
217
+ "total": {
218
+ "type": "integer"
219
+ },
220
+ "limit": {
221
+ "type": "integer"
222
+ },
223
+ "offset": {
224
+ "type": "integer"
225
+ }
226
+ },
227
+ "required": [
228
+ "data",
229
+ "total",
230
+ "limit",
231
+ "offset"
232
+ ]
233
+ }
234
+ }
235
+ }
236
+ }
237
+ },
238
+ "operationId": "getPublicProductsTags",
239
+ "summary": "GET /v1/public/products/tags",
240
+ "tags": [
241
+ "products"
242
+ ],
243
+ "x-voyant-module": "products",
244
+ "x-voyant-surface": "storefront"
245
+ }
246
+ },
247
+ "/v1/public/products/categories": {
248
+ "get": {
249
+ "parameters": [
250
+ {
251
+ "schema": {
252
+ "type": "string"
253
+ },
254
+ "required": false,
255
+ "name": "search",
256
+ "in": "query"
257
+ },
258
+ {
259
+ "schema": {
260
+ "type": "string"
261
+ },
262
+ "required": false,
263
+ "name": "parentId",
264
+ "in": "query"
265
+ },
266
+ {
267
+ "schema": {
268
+ "type": "integer",
269
+ "example": 100
270
+ },
271
+ "required": false,
272
+ "name": "limit",
273
+ "in": "query"
274
+ },
275
+ {
276
+ "schema": {
277
+ "type": [
278
+ "integer",
279
+ "null"
280
+ ],
281
+ "minimum": 0,
282
+ "default": 0
283
+ },
284
+ "required": false,
285
+ "name": "offset",
286
+ "in": "query"
287
+ }
288
+ ],
289
+ "responses": {
290
+ "200": {
291
+ "description": "Paginated list of public catalog categories",
292
+ "content": {
293
+ "application/json": {
294
+ "schema": {
295
+ "type": "object",
296
+ "properties": {
297
+ "data": {
298
+ "type": "array",
299
+ "items": {
300
+ "type": "object",
301
+ "properties": {
302
+ "id": {
303
+ "type": "string"
304
+ },
305
+ "parentId": {
306
+ "type": [
307
+ "string",
308
+ "null"
309
+ ]
310
+ },
311
+ "name": {
312
+ "type": "string"
313
+ },
314
+ "slug": {
315
+ "type": "string"
316
+ },
317
+ "description": {
318
+ "type": [
319
+ "string",
320
+ "null"
321
+ ]
322
+ },
323
+ "sortOrder": {
324
+ "type": "integer"
325
+ }
326
+ },
327
+ "required": [
328
+ "id",
329
+ "parentId",
330
+ "name",
331
+ "slug",
332
+ "description",
333
+ "sortOrder"
334
+ ]
335
+ }
336
+ },
337
+ "total": {
338
+ "type": "integer"
339
+ },
340
+ "limit": {
341
+ "type": "integer"
342
+ },
343
+ "offset": {
344
+ "type": "integer"
345
+ }
346
+ },
347
+ "required": [
348
+ "data",
349
+ "total",
350
+ "limit",
351
+ "offset"
352
+ ]
353
+ }
354
+ }
355
+ }
356
+ }
357
+ },
358
+ "operationId": "getPublicProductsCategories",
359
+ "summary": "GET /v1/public/products/categories",
360
+ "tags": [
361
+ "products"
362
+ ],
363
+ "x-voyant-module": "products",
364
+ "x-voyant-surface": "storefront"
365
+ }
366
+ },
367
+ "/v1/public/products/destinations": {
368
+ "get": {
369
+ "parameters": [
370
+ {
371
+ "schema": {
372
+ "type": "string"
373
+ },
374
+ "required": false,
375
+ "name": "search",
376
+ "in": "query"
377
+ },
378
+ {
379
+ "schema": {
380
+ "type": "string"
381
+ },
382
+ "required": false,
383
+ "name": "parentId",
384
+ "in": "query"
385
+ },
386
+ {
387
+ "schema": {
388
+ "type": "string",
389
+ "enum": [
390
+ "0",
391
+ "1",
392
+ "true",
393
+ "false"
394
+ ]
395
+ },
396
+ "required": false,
397
+ "name": "active",
398
+ "in": "query"
399
+ },
400
+ {
401
+ "schema": {
402
+ "type": "string",
403
+ "minLength": 2,
404
+ "maxLength": 35,
405
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
406
+ },
407
+ "required": false,
408
+ "name": "languageTag",
409
+ "in": "query"
410
+ },
411
+ {
412
+ "schema": {
413
+ "type": "string",
414
+ "enum": [
415
+ "destination",
416
+ "region",
417
+ "country",
418
+ "city",
419
+ "port",
420
+ "river",
421
+ "sea",
422
+ "ocean",
423
+ "canal",
424
+ "lake"
425
+ ]
426
+ },
427
+ "required": false,
428
+ "name": "destinationType",
429
+ "in": "query"
430
+ },
431
+ {
432
+ "schema": {
433
+ "type": "string",
434
+ "minLength": 1,
435
+ "maxLength": 255
436
+ },
437
+ "required": false,
438
+ "name": "canonicalPlaceId",
439
+ "in": "query"
440
+ },
441
+ {
442
+ "schema": {
443
+ "type": "integer",
444
+ "example": 100
445
+ },
446
+ "required": false,
447
+ "name": "limit",
448
+ "in": "query"
449
+ },
450
+ {
451
+ "schema": {
452
+ "type": [
453
+ "integer",
454
+ "null"
455
+ ],
456
+ "minimum": 0,
457
+ "default": 0
458
+ },
459
+ "required": false,
460
+ "name": "offset",
461
+ "in": "query"
462
+ }
463
+ ],
464
+ "responses": {
465
+ "200": {
466
+ "description": "Paginated list of public catalog destinations",
467
+ "content": {
468
+ "application/json": {
469
+ "schema": {
470
+ "type": "object",
471
+ "properties": {
472
+ "data": {
473
+ "type": "array",
474
+ "items": {
475
+ "type": "object",
476
+ "properties": {
477
+ "id": {
478
+ "type": "string"
479
+ },
480
+ "parentId": {
481
+ "type": [
482
+ "string",
483
+ "null"
484
+ ]
485
+ },
486
+ "slug": {
487
+ "type": "string"
488
+ },
489
+ "canonicalPlaceId": {
490
+ "type": [
491
+ "string",
492
+ "null"
493
+ ]
494
+ },
495
+ "name": {
496
+ "type": "string"
497
+ },
498
+ "description": {
499
+ "type": [
500
+ "string",
501
+ "null"
502
+ ]
503
+ },
504
+ "seoTitle": {
505
+ "type": [
506
+ "string",
507
+ "null"
508
+ ]
509
+ },
510
+ "seoDescription": {
511
+ "type": [
512
+ "string",
513
+ "null"
514
+ ]
515
+ },
516
+ "destinationType": {
517
+ "type": "string"
518
+ },
519
+ "latitude": {
520
+ "type": [
521
+ "number",
522
+ "null"
523
+ ]
524
+ },
525
+ "longitude": {
526
+ "type": [
527
+ "number",
528
+ "null"
529
+ ]
530
+ },
531
+ "sortOrder": {
532
+ "type": "integer"
533
+ }
534
+ },
535
+ "required": [
536
+ "id",
537
+ "parentId",
538
+ "slug",
539
+ "canonicalPlaceId",
540
+ "name",
541
+ "description",
542
+ "seoTitle",
543
+ "seoDescription",
544
+ "destinationType",
545
+ "latitude",
546
+ "longitude",
547
+ "sortOrder"
548
+ ]
549
+ }
550
+ },
551
+ "total": {
552
+ "type": "integer"
553
+ },
554
+ "limit": {
555
+ "type": "integer"
556
+ },
557
+ "offset": {
558
+ "type": "integer"
559
+ }
560
+ },
561
+ "required": [
562
+ "data",
563
+ "total",
564
+ "limit",
565
+ "offset"
566
+ ]
567
+ }
568
+ }
569
+ }
570
+ }
571
+ },
572
+ "operationId": "getPublicProductsDestinations",
573
+ "summary": "GET /v1/public/products/destinations",
574
+ "tags": [
575
+ "products"
576
+ ],
577
+ "x-voyant-module": "products",
578
+ "x-voyant-surface": "storefront"
579
+ }
580
+ },
581
+ "/v1/public/products": {
582
+ "get": {
583
+ "parameters": [
584
+ {
585
+ "schema": {
586
+ "type": "string"
587
+ },
588
+ "required": false,
589
+ "name": "search",
590
+ "in": "query"
591
+ },
592
+ {
593
+ "schema": {
594
+ "type": "string",
595
+ "minLength": 2,
596
+ "maxLength": 35,
597
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
598
+ },
599
+ "required": false,
600
+ "name": "languageTag",
601
+ "in": "query"
602
+ },
603
+ {
604
+ "schema": {
605
+ "type": "string",
606
+ "enum": [
607
+ "date",
608
+ "date_time",
609
+ "open",
610
+ "stay",
611
+ "transfer",
612
+ "itinerary",
613
+ "other"
614
+ ]
615
+ },
616
+ "required": false,
617
+ "name": "bookingMode",
618
+ "in": "query"
619
+ },
620
+ {
621
+ "schema": {
622
+ "type": "string",
623
+ "enum": [
624
+ "free_sale",
625
+ "limited",
626
+ "on_request"
627
+ ]
628
+ },
629
+ "required": false,
630
+ "name": "capacityMode",
631
+ "in": "query"
632
+ },
633
+ {
634
+ "schema": {
635
+ "type": "string"
636
+ },
637
+ "required": false,
638
+ "name": "productTypeId",
639
+ "in": "query"
640
+ },
641
+ {
642
+ "schema": {
643
+ "type": "string"
644
+ },
645
+ "required": false,
646
+ "name": "categoryId",
647
+ "in": "query"
648
+ },
649
+ {
650
+ "schema": {
651
+ "type": "string"
652
+ },
653
+ "required": false,
654
+ "name": "tagId",
655
+ "in": "query"
656
+ },
657
+ {
658
+ "schema": {
659
+ "type": "string"
660
+ },
661
+ "required": false,
662
+ "name": "destinationId",
663
+ "in": "query"
664
+ },
665
+ {
666
+ "schema": {
667
+ "type": "string",
668
+ "minLength": 1
669
+ },
670
+ "required": false,
671
+ "name": "destinationSlug",
672
+ "in": "query"
673
+ },
674
+ {
675
+ "schema": {
676
+ "type": "string",
677
+ "minLength": 1
678
+ },
679
+ "required": false,
680
+ "name": "locationTitle",
681
+ "in": "query"
682
+ },
683
+ {
684
+ "schema": {
685
+ "type": "string",
686
+ "minLength": 1
687
+ },
688
+ "required": false,
689
+ "name": "locationCity",
690
+ "in": "query"
691
+ },
692
+ {
693
+ "schema": {
694
+ "type": "string",
695
+ "minLength": 2,
696
+ "maxLength": 3
697
+ },
698
+ "required": false,
699
+ "name": "locationCountryCode",
700
+ "in": "query"
701
+ },
702
+ {
703
+ "schema": {
704
+ "type": "string",
705
+ "enum": [
706
+ "start",
707
+ "end",
708
+ "meeting_point",
709
+ "pickup",
710
+ "dropoff",
711
+ "point_of_interest",
712
+ "other"
713
+ ]
714
+ },
715
+ "required": false,
716
+ "name": "locationType",
717
+ "in": "query"
718
+ },
719
+ {
720
+ "schema": {
721
+ "type": "string",
722
+ "enum": [
723
+ "0",
724
+ "1",
725
+ "true",
726
+ "false"
727
+ ]
728
+ },
729
+ "required": false,
730
+ "name": "featured",
731
+ "in": "query"
732
+ },
733
+ {
734
+ "schema": {
735
+ "type": "string",
736
+ "enum": [
737
+ "name",
738
+ "createdAt",
739
+ "startDate",
740
+ "price"
741
+ ],
742
+ "default": "name"
743
+ },
744
+ "required": false,
745
+ "name": "sort",
746
+ "in": "query"
747
+ },
748
+ {
749
+ "schema": {
750
+ "type": "string",
751
+ "enum": [
752
+ "asc",
753
+ "desc"
754
+ ],
755
+ "default": "asc"
756
+ },
757
+ "required": false,
758
+ "name": "direction",
759
+ "in": "query"
760
+ },
761
+ {
762
+ "schema": {
763
+ "type": "integer",
764
+ "example": 20
765
+ },
766
+ "required": false,
767
+ "name": "limit",
768
+ "in": "query"
769
+ },
770
+ {
771
+ "schema": {
772
+ "type": [
773
+ "integer",
774
+ "null"
775
+ ],
776
+ "minimum": 0,
777
+ "default": 0
778
+ },
779
+ "required": false,
780
+ "name": "offset",
781
+ "in": "query"
782
+ },
783
+ {
784
+ "schema": {
785
+ "type": "string",
786
+ "enum": [
787
+ "0",
788
+ "1",
789
+ "true",
790
+ "false"
791
+ ]
792
+ },
793
+ "required": false,
794
+ "name": "includeContent",
795
+ "in": "query"
796
+ }
797
+ ],
798
+ "responses": {
799
+ "200": {
800
+ "description": "Paginated list of public catalog products",
801
+ "content": {
802
+ "application/json": {
803
+ "schema": {
804
+ "type": "object",
805
+ "properties": {
806
+ "data": {
807
+ "type": "array",
808
+ "items": {
809
+ "type": "object",
810
+ "properties": {
811
+ "id": {
812
+ "type": "string"
813
+ },
814
+ "name": {
815
+ "type": "string"
816
+ },
817
+ "description": {
818
+ "type": [
819
+ "string",
820
+ "null"
821
+ ]
822
+ },
823
+ "inclusionsHtml": {
824
+ "type": [
825
+ "string",
826
+ "null"
827
+ ]
828
+ },
829
+ "exclusionsHtml": {
830
+ "type": [
831
+ "string",
832
+ "null"
833
+ ]
834
+ },
835
+ "termsHtml": {
836
+ "type": [
837
+ "string",
838
+ "null"
839
+ ]
840
+ },
841
+ "contentLanguageTag": {
842
+ "type": [
843
+ "string",
844
+ "null"
845
+ ]
846
+ },
847
+ "slug": {
848
+ "type": [
849
+ "string",
850
+ "null"
851
+ ]
852
+ },
853
+ "shortDescription": {
854
+ "type": [
855
+ "string",
856
+ "null"
857
+ ]
858
+ },
859
+ "seoTitle": {
860
+ "type": [
861
+ "string",
862
+ "null"
863
+ ]
864
+ },
865
+ "seoDescription": {
866
+ "type": [
867
+ "string",
868
+ "null"
869
+ ]
870
+ },
871
+ "bookingMode": {
872
+ "type": "string"
873
+ },
874
+ "capacityMode": {
875
+ "type": "string"
876
+ },
877
+ "visibility": {
878
+ "type": "string"
879
+ },
880
+ "sellCurrency": {
881
+ "type": "string"
882
+ },
883
+ "sellAmountCents": {
884
+ "type": [
885
+ "integer",
886
+ "null"
887
+ ]
888
+ },
889
+ "startDate": {
890
+ "type": [
891
+ "string",
892
+ "null"
893
+ ]
894
+ },
895
+ "endDate": {
896
+ "type": [
897
+ "string",
898
+ "null"
899
+ ]
900
+ },
901
+ "pax": {
902
+ "type": [
903
+ "integer",
904
+ "null"
905
+ ]
906
+ },
907
+ "contractTemplateId": {
908
+ "type": [
909
+ "string",
910
+ "null"
911
+ ]
912
+ },
913
+ "productType": {
914
+ "type": [
915
+ "object",
916
+ "null"
917
+ ],
918
+ "properties": {
919
+ "id": {
920
+ "type": "string"
921
+ },
922
+ "code": {
923
+ "type": "string"
924
+ },
925
+ "name": {
926
+ "type": "string"
927
+ },
928
+ "description": {
929
+ "type": [
930
+ "string",
931
+ "null"
932
+ ]
933
+ }
934
+ },
935
+ "required": [
936
+ "id",
937
+ "code",
938
+ "name",
939
+ "description"
940
+ ]
941
+ },
942
+ "categories": {
943
+ "type": "array",
944
+ "items": {
945
+ "type": "object",
946
+ "properties": {
947
+ "id": {
948
+ "type": "string"
949
+ },
950
+ "parentId": {
951
+ "type": [
952
+ "string",
953
+ "null"
954
+ ]
955
+ },
956
+ "name": {
957
+ "type": "string"
958
+ },
959
+ "slug": {
960
+ "type": "string"
961
+ },
962
+ "description": {
963
+ "type": [
964
+ "string",
965
+ "null"
966
+ ]
967
+ },
968
+ "sortOrder": {
969
+ "type": "integer"
970
+ }
971
+ },
972
+ "required": [
973
+ "id",
974
+ "parentId",
975
+ "name",
976
+ "slug",
977
+ "description",
978
+ "sortOrder"
979
+ ]
980
+ }
981
+ },
982
+ "tags": {
983
+ "type": "array",
984
+ "items": {
985
+ "type": "object",
986
+ "properties": {
987
+ "id": {
988
+ "type": "string"
989
+ },
990
+ "name": {
991
+ "type": "string"
992
+ }
993
+ },
994
+ "required": [
995
+ "id",
996
+ "name"
997
+ ]
998
+ }
999
+ },
1000
+ "destinations": {
1001
+ "type": "array",
1002
+ "items": {
1003
+ "type": "object",
1004
+ "properties": {
1005
+ "id": {
1006
+ "type": "string"
1007
+ },
1008
+ "parentId": {
1009
+ "type": [
1010
+ "string",
1011
+ "null"
1012
+ ]
1013
+ },
1014
+ "slug": {
1015
+ "type": "string"
1016
+ },
1017
+ "canonicalPlaceId": {
1018
+ "type": [
1019
+ "string",
1020
+ "null"
1021
+ ]
1022
+ },
1023
+ "name": {
1024
+ "type": "string"
1025
+ },
1026
+ "description": {
1027
+ "type": [
1028
+ "string",
1029
+ "null"
1030
+ ]
1031
+ },
1032
+ "seoTitle": {
1033
+ "type": [
1034
+ "string",
1035
+ "null"
1036
+ ]
1037
+ },
1038
+ "seoDescription": {
1039
+ "type": [
1040
+ "string",
1041
+ "null"
1042
+ ]
1043
+ },
1044
+ "destinationType": {
1045
+ "type": "string"
1046
+ },
1047
+ "latitude": {
1048
+ "type": [
1049
+ "number",
1050
+ "null"
1051
+ ]
1052
+ },
1053
+ "longitude": {
1054
+ "type": [
1055
+ "number",
1056
+ "null"
1057
+ ]
1058
+ },
1059
+ "sortOrder": {
1060
+ "type": "integer"
1061
+ }
1062
+ },
1063
+ "required": [
1064
+ "id",
1065
+ "parentId",
1066
+ "slug",
1067
+ "canonicalPlaceId",
1068
+ "name",
1069
+ "description",
1070
+ "seoTitle",
1071
+ "seoDescription",
1072
+ "destinationType",
1073
+ "latitude",
1074
+ "longitude",
1075
+ "sortOrder"
1076
+ ]
1077
+ }
1078
+ },
1079
+ "locations": {
1080
+ "type": "array",
1081
+ "items": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "id": {
1085
+ "type": "string"
1086
+ },
1087
+ "locationType": {
1088
+ "type": "string"
1089
+ },
1090
+ "title": {
1091
+ "type": "string"
1092
+ },
1093
+ "address": {
1094
+ "type": [
1095
+ "string",
1096
+ "null"
1097
+ ]
1098
+ },
1099
+ "city": {
1100
+ "type": [
1101
+ "string",
1102
+ "null"
1103
+ ]
1104
+ },
1105
+ "countryCode": {
1106
+ "type": [
1107
+ "string",
1108
+ "null"
1109
+ ]
1110
+ },
1111
+ "latitude": {
1112
+ "type": [
1113
+ "number",
1114
+ "null"
1115
+ ]
1116
+ },
1117
+ "longitude": {
1118
+ "type": [
1119
+ "number",
1120
+ "null"
1121
+ ]
1122
+ },
1123
+ "sortOrder": {
1124
+ "type": "integer"
1125
+ }
1126
+ },
1127
+ "required": [
1128
+ "id",
1129
+ "locationType",
1130
+ "title",
1131
+ "address",
1132
+ "city",
1133
+ "countryCode",
1134
+ "latitude",
1135
+ "longitude",
1136
+ "sortOrder"
1137
+ ]
1138
+ }
1139
+ },
1140
+ "capabilities": {
1141
+ "type": "array",
1142
+ "items": {
1143
+ "type": "string"
1144
+ }
1145
+ },
1146
+ "coverMedia": {
1147
+ "type": [
1148
+ "object",
1149
+ "null"
1150
+ ],
1151
+ "properties": {
1152
+ "id": {
1153
+ "type": "string"
1154
+ },
1155
+ "mediaType": {
1156
+ "type": "string"
1157
+ },
1158
+ "name": {
1159
+ "type": "string"
1160
+ },
1161
+ "url": {
1162
+ "type": "string"
1163
+ },
1164
+ "mimeType": {
1165
+ "type": [
1166
+ "string",
1167
+ "null"
1168
+ ]
1169
+ },
1170
+ "altText": {
1171
+ "type": [
1172
+ "string",
1173
+ "null"
1174
+ ]
1175
+ },
1176
+ "sortOrder": {
1177
+ "type": "integer"
1178
+ },
1179
+ "isCover": {
1180
+ "type": "boolean"
1181
+ },
1182
+ "isBrochure": {
1183
+ "type": "boolean"
1184
+ },
1185
+ "isBrochureCurrent": {
1186
+ "type": "boolean"
1187
+ },
1188
+ "brochureVersion": {
1189
+ "type": [
1190
+ "integer",
1191
+ "null"
1192
+ ]
1193
+ }
1194
+ },
1195
+ "required": [
1196
+ "id",
1197
+ "mediaType",
1198
+ "name",
1199
+ "url",
1200
+ "mimeType",
1201
+ "altText",
1202
+ "sortOrder",
1203
+ "isCover",
1204
+ "isBrochure",
1205
+ "isBrochureCurrent",
1206
+ "brochureVersion"
1207
+ ]
1208
+ },
1209
+ "isFeatured": {
1210
+ "type": "boolean"
1211
+ },
1212
+ "media": {
1213
+ "type": "array",
1214
+ "items": {
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "id": {
1218
+ "type": "string"
1219
+ },
1220
+ "mediaType": {
1221
+ "type": "string"
1222
+ },
1223
+ "name": {
1224
+ "type": "string"
1225
+ },
1226
+ "url": {
1227
+ "type": "string"
1228
+ },
1229
+ "mimeType": {
1230
+ "type": [
1231
+ "string",
1232
+ "null"
1233
+ ]
1234
+ },
1235
+ "altText": {
1236
+ "type": [
1237
+ "string",
1238
+ "null"
1239
+ ]
1240
+ },
1241
+ "sortOrder": {
1242
+ "type": "integer"
1243
+ },
1244
+ "isCover": {
1245
+ "type": "boolean"
1246
+ },
1247
+ "isBrochure": {
1248
+ "type": "boolean"
1249
+ },
1250
+ "isBrochureCurrent": {
1251
+ "type": "boolean"
1252
+ },
1253
+ "brochureVersion": {
1254
+ "type": [
1255
+ "integer",
1256
+ "null"
1257
+ ]
1258
+ }
1259
+ },
1260
+ "required": [
1261
+ "id",
1262
+ "mediaType",
1263
+ "name",
1264
+ "url",
1265
+ "mimeType",
1266
+ "altText",
1267
+ "sortOrder",
1268
+ "isCover",
1269
+ "isBrochure",
1270
+ "isBrochureCurrent",
1271
+ "brochureVersion"
1272
+ ]
1273
+ }
1274
+ },
1275
+ "brochure": {
1276
+ "type": [
1277
+ "object",
1278
+ "null"
1279
+ ],
1280
+ "properties": {
1281
+ "id": {
1282
+ "type": "string"
1283
+ },
1284
+ "mediaType": {
1285
+ "type": "string"
1286
+ },
1287
+ "name": {
1288
+ "type": "string"
1289
+ },
1290
+ "url": {
1291
+ "type": "string"
1292
+ },
1293
+ "mimeType": {
1294
+ "type": [
1295
+ "string",
1296
+ "null"
1297
+ ]
1298
+ },
1299
+ "altText": {
1300
+ "type": [
1301
+ "string",
1302
+ "null"
1303
+ ]
1304
+ },
1305
+ "sortOrder": {
1306
+ "type": "integer"
1307
+ },
1308
+ "isCover": {
1309
+ "type": "boolean"
1310
+ },
1311
+ "isBrochure": {
1312
+ "type": "boolean"
1313
+ },
1314
+ "isBrochureCurrent": {
1315
+ "type": "boolean"
1316
+ },
1317
+ "brochureVersion": {
1318
+ "type": [
1319
+ "integer",
1320
+ "null"
1321
+ ]
1322
+ }
1323
+ },
1324
+ "required": [
1325
+ "id",
1326
+ "mediaType",
1327
+ "name",
1328
+ "url",
1329
+ "mimeType",
1330
+ "altText",
1331
+ "sortOrder",
1332
+ "isCover",
1333
+ "isBrochure",
1334
+ "isBrochureCurrent",
1335
+ "brochureVersion"
1336
+ ]
1337
+ },
1338
+ "features": {
1339
+ "type": "array",
1340
+ "items": {
1341
+ "type": "object",
1342
+ "properties": {
1343
+ "id": {
1344
+ "type": "string"
1345
+ },
1346
+ "featureType": {
1347
+ "type": "string"
1348
+ },
1349
+ "title": {
1350
+ "type": "string"
1351
+ },
1352
+ "description": {
1353
+ "type": [
1354
+ "string",
1355
+ "null"
1356
+ ]
1357
+ },
1358
+ "sortOrder": {
1359
+ "type": "integer"
1360
+ }
1361
+ },
1362
+ "required": [
1363
+ "id",
1364
+ "featureType",
1365
+ "title",
1366
+ "description",
1367
+ "sortOrder"
1368
+ ]
1369
+ }
1370
+ },
1371
+ "faqs": {
1372
+ "type": "array",
1373
+ "items": {
1374
+ "type": "object",
1375
+ "properties": {
1376
+ "id": {
1377
+ "type": "string"
1378
+ },
1379
+ "question": {
1380
+ "type": "string"
1381
+ },
1382
+ "answer": {
1383
+ "type": "string"
1384
+ },
1385
+ "sortOrder": {
1386
+ "type": "integer"
1387
+ }
1388
+ },
1389
+ "required": [
1390
+ "id",
1391
+ "question",
1392
+ "answer",
1393
+ "sortOrder"
1394
+ ]
1395
+ }
1396
+ }
1397
+ },
1398
+ "required": [
1399
+ "id",
1400
+ "name",
1401
+ "description",
1402
+ "inclusionsHtml",
1403
+ "exclusionsHtml",
1404
+ "termsHtml",
1405
+ "contentLanguageTag",
1406
+ "slug",
1407
+ "shortDescription",
1408
+ "seoTitle",
1409
+ "seoDescription",
1410
+ "bookingMode",
1411
+ "capacityMode",
1412
+ "visibility",
1413
+ "sellCurrency",
1414
+ "sellAmountCents",
1415
+ "startDate",
1416
+ "endDate",
1417
+ "pax",
1418
+ "contractTemplateId",
1419
+ "productType",
1420
+ "categories",
1421
+ "tags",
1422
+ "destinations",
1423
+ "locations",
1424
+ "capabilities",
1425
+ "coverMedia",
1426
+ "isFeatured"
1427
+ ]
1428
+ }
1429
+ },
1430
+ "total": {
1431
+ "type": "integer"
1432
+ },
1433
+ "limit": {
1434
+ "type": "integer"
1435
+ },
1436
+ "offset": {
1437
+ "type": "integer"
1438
+ }
1439
+ },
1440
+ "required": [
1441
+ "data",
1442
+ "total",
1443
+ "limit",
1444
+ "offset"
1445
+ ]
1446
+ }
1447
+ }
1448
+ }
1449
+ }
1450
+ },
1451
+ "operationId": "getPublicProducts",
1452
+ "summary": "GET /v1/public/products",
1453
+ "tags": [
1454
+ "products"
1455
+ ],
1456
+ "x-voyant-module": "products",
1457
+ "x-voyant-surface": "storefront"
1458
+ }
1459
+ },
1460
+ "/v1/public/products/slug/{slug}": {
1461
+ "get": {
1462
+ "parameters": [
1463
+ {
1464
+ "schema": {
1465
+ "type": "string"
1466
+ },
1467
+ "required": true,
1468
+ "name": "slug",
1469
+ "in": "path"
1470
+ },
1471
+ {
1472
+ "schema": {
1473
+ "type": "string",
1474
+ "minLength": 2,
1475
+ "maxLength": 35,
1476
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
1477
+ },
1478
+ "required": false,
1479
+ "name": "languageTag",
1480
+ "in": "query"
1481
+ }
1482
+ ],
1483
+ "responses": {
1484
+ "200": {
1485
+ "description": "A public catalog product by slug",
1486
+ "content": {
1487
+ "application/json": {
1488
+ "schema": {
1489
+ "type": "object",
1490
+ "properties": {
1491
+ "data": {
1492
+ "type": "object",
1493
+ "properties": {
1494
+ "id": {
1495
+ "type": "string"
1496
+ },
1497
+ "name": {
1498
+ "type": "string"
1499
+ },
1500
+ "description": {
1501
+ "type": [
1502
+ "string",
1503
+ "null"
1504
+ ]
1505
+ },
1506
+ "inclusionsHtml": {
1507
+ "type": [
1508
+ "string",
1509
+ "null"
1510
+ ]
1511
+ },
1512
+ "exclusionsHtml": {
1513
+ "type": [
1514
+ "string",
1515
+ "null"
1516
+ ]
1517
+ },
1518
+ "termsHtml": {
1519
+ "type": [
1520
+ "string",
1521
+ "null"
1522
+ ]
1523
+ },
1524
+ "contentLanguageTag": {
1525
+ "type": [
1526
+ "string",
1527
+ "null"
1528
+ ]
1529
+ },
1530
+ "slug": {
1531
+ "type": [
1532
+ "string",
1533
+ "null"
1534
+ ]
1535
+ },
1536
+ "shortDescription": {
1537
+ "type": [
1538
+ "string",
1539
+ "null"
1540
+ ]
1541
+ },
1542
+ "seoTitle": {
1543
+ "type": [
1544
+ "string",
1545
+ "null"
1546
+ ]
1547
+ },
1548
+ "seoDescription": {
1549
+ "type": [
1550
+ "string",
1551
+ "null"
1552
+ ]
1553
+ },
1554
+ "bookingMode": {
1555
+ "type": "string"
1556
+ },
1557
+ "capacityMode": {
1558
+ "type": "string"
1559
+ },
1560
+ "visibility": {
1561
+ "type": "string"
1562
+ },
1563
+ "sellCurrency": {
1564
+ "type": "string"
1565
+ },
1566
+ "sellAmountCents": {
1567
+ "type": [
1568
+ "integer",
1569
+ "null"
1570
+ ]
1571
+ },
1572
+ "startDate": {
1573
+ "type": [
1574
+ "string",
1575
+ "null"
1576
+ ]
1577
+ },
1578
+ "endDate": {
1579
+ "type": [
1580
+ "string",
1581
+ "null"
1582
+ ]
1583
+ },
1584
+ "pax": {
1585
+ "type": [
1586
+ "integer",
1587
+ "null"
1588
+ ]
1589
+ },
1590
+ "contractTemplateId": {
1591
+ "type": [
1592
+ "string",
1593
+ "null"
1594
+ ]
1595
+ },
1596
+ "productType": {
1597
+ "type": [
1598
+ "object",
1599
+ "null"
1600
+ ],
1601
+ "properties": {
1602
+ "id": {
1603
+ "type": "string"
1604
+ },
1605
+ "code": {
1606
+ "type": "string"
1607
+ },
1608
+ "name": {
1609
+ "type": "string"
1610
+ },
1611
+ "description": {
1612
+ "type": [
1613
+ "string",
1614
+ "null"
1615
+ ]
1616
+ }
1617
+ },
1618
+ "required": [
1619
+ "id",
1620
+ "code",
1621
+ "name",
1622
+ "description"
1623
+ ]
1624
+ },
1625
+ "categories": {
1626
+ "type": "array",
1627
+ "items": {
1628
+ "type": "object",
1629
+ "properties": {
1630
+ "id": {
1631
+ "type": "string"
1632
+ },
1633
+ "parentId": {
1634
+ "type": [
1635
+ "string",
1636
+ "null"
1637
+ ]
1638
+ },
1639
+ "name": {
1640
+ "type": "string"
1641
+ },
1642
+ "slug": {
1643
+ "type": "string"
1644
+ },
1645
+ "description": {
1646
+ "type": [
1647
+ "string",
1648
+ "null"
1649
+ ]
1650
+ },
1651
+ "sortOrder": {
1652
+ "type": "integer"
1653
+ }
1654
+ },
1655
+ "required": [
1656
+ "id",
1657
+ "parentId",
1658
+ "name",
1659
+ "slug",
1660
+ "description",
1661
+ "sortOrder"
1662
+ ]
1663
+ }
1664
+ },
1665
+ "tags": {
1666
+ "type": "array",
1667
+ "items": {
1668
+ "type": "object",
1669
+ "properties": {
1670
+ "id": {
1671
+ "type": "string"
1672
+ },
1673
+ "name": {
1674
+ "type": "string"
1675
+ }
1676
+ },
1677
+ "required": [
1678
+ "id",
1679
+ "name"
1680
+ ]
1681
+ }
1682
+ },
1683
+ "destinations": {
1684
+ "type": "array",
1685
+ "items": {
1686
+ "type": "object",
1687
+ "properties": {
1688
+ "id": {
1689
+ "type": "string"
1690
+ },
1691
+ "parentId": {
1692
+ "type": [
1693
+ "string",
1694
+ "null"
1695
+ ]
1696
+ },
1697
+ "slug": {
1698
+ "type": "string"
1699
+ },
1700
+ "canonicalPlaceId": {
1701
+ "type": [
1702
+ "string",
1703
+ "null"
1704
+ ]
1705
+ },
1706
+ "name": {
1707
+ "type": "string"
1708
+ },
1709
+ "description": {
1710
+ "type": [
1711
+ "string",
1712
+ "null"
1713
+ ]
1714
+ },
1715
+ "seoTitle": {
1716
+ "type": [
1717
+ "string",
1718
+ "null"
1719
+ ]
1720
+ },
1721
+ "seoDescription": {
1722
+ "type": [
1723
+ "string",
1724
+ "null"
1725
+ ]
1726
+ },
1727
+ "destinationType": {
1728
+ "type": "string"
1729
+ },
1730
+ "latitude": {
1731
+ "type": [
1732
+ "number",
1733
+ "null"
1734
+ ]
1735
+ },
1736
+ "longitude": {
1737
+ "type": [
1738
+ "number",
1739
+ "null"
1740
+ ]
1741
+ },
1742
+ "sortOrder": {
1743
+ "type": "integer"
1744
+ }
1745
+ },
1746
+ "required": [
1747
+ "id",
1748
+ "parentId",
1749
+ "slug",
1750
+ "canonicalPlaceId",
1751
+ "name",
1752
+ "description",
1753
+ "seoTitle",
1754
+ "seoDescription",
1755
+ "destinationType",
1756
+ "latitude",
1757
+ "longitude",
1758
+ "sortOrder"
1759
+ ]
1760
+ }
1761
+ },
1762
+ "locations": {
1763
+ "type": "array",
1764
+ "items": {
1765
+ "type": "object",
1766
+ "properties": {
1767
+ "id": {
1768
+ "type": "string"
1769
+ },
1770
+ "locationType": {
1771
+ "type": "string"
1772
+ },
1773
+ "title": {
1774
+ "type": "string"
1775
+ },
1776
+ "address": {
1777
+ "type": [
1778
+ "string",
1779
+ "null"
1780
+ ]
1781
+ },
1782
+ "city": {
1783
+ "type": [
1784
+ "string",
1785
+ "null"
1786
+ ]
1787
+ },
1788
+ "countryCode": {
1789
+ "type": [
1790
+ "string",
1791
+ "null"
1792
+ ]
1793
+ },
1794
+ "latitude": {
1795
+ "type": [
1796
+ "number",
1797
+ "null"
1798
+ ]
1799
+ },
1800
+ "longitude": {
1801
+ "type": [
1802
+ "number",
1803
+ "null"
1804
+ ]
1805
+ },
1806
+ "sortOrder": {
1807
+ "type": "integer"
1808
+ }
1809
+ },
1810
+ "required": [
1811
+ "id",
1812
+ "locationType",
1813
+ "title",
1814
+ "address",
1815
+ "city",
1816
+ "countryCode",
1817
+ "latitude",
1818
+ "longitude",
1819
+ "sortOrder"
1820
+ ]
1821
+ }
1822
+ },
1823
+ "capabilities": {
1824
+ "type": "array",
1825
+ "items": {
1826
+ "type": "string"
1827
+ }
1828
+ },
1829
+ "coverMedia": {
1830
+ "type": [
1831
+ "object",
1832
+ "null"
1833
+ ],
1834
+ "properties": {
1835
+ "id": {
1836
+ "type": "string"
1837
+ },
1838
+ "mediaType": {
1839
+ "type": "string"
1840
+ },
1841
+ "name": {
1842
+ "type": "string"
1843
+ },
1844
+ "url": {
1845
+ "type": "string"
1846
+ },
1847
+ "mimeType": {
1848
+ "type": [
1849
+ "string",
1850
+ "null"
1851
+ ]
1852
+ },
1853
+ "altText": {
1854
+ "type": [
1855
+ "string",
1856
+ "null"
1857
+ ]
1858
+ },
1859
+ "sortOrder": {
1860
+ "type": "integer"
1861
+ },
1862
+ "isCover": {
1863
+ "type": "boolean"
1864
+ },
1865
+ "isBrochure": {
1866
+ "type": "boolean"
1867
+ },
1868
+ "isBrochureCurrent": {
1869
+ "type": "boolean"
1870
+ },
1871
+ "brochureVersion": {
1872
+ "type": [
1873
+ "integer",
1874
+ "null"
1875
+ ]
1876
+ }
1877
+ },
1878
+ "required": [
1879
+ "id",
1880
+ "mediaType",
1881
+ "name",
1882
+ "url",
1883
+ "mimeType",
1884
+ "altText",
1885
+ "sortOrder",
1886
+ "isCover",
1887
+ "isBrochure",
1888
+ "isBrochureCurrent",
1889
+ "brochureVersion"
1890
+ ]
1891
+ },
1892
+ "isFeatured": {
1893
+ "type": "boolean"
1894
+ },
1895
+ "media": {
1896
+ "type": "array",
1897
+ "items": {
1898
+ "type": "object",
1899
+ "properties": {
1900
+ "id": {
1901
+ "type": "string"
1902
+ },
1903
+ "mediaType": {
1904
+ "type": "string"
1905
+ },
1906
+ "name": {
1907
+ "type": "string"
1908
+ },
1909
+ "url": {
1910
+ "type": "string"
1911
+ },
1912
+ "mimeType": {
1913
+ "type": [
1914
+ "string",
1915
+ "null"
1916
+ ]
1917
+ },
1918
+ "altText": {
1919
+ "type": [
1920
+ "string",
1921
+ "null"
1922
+ ]
1923
+ },
1924
+ "sortOrder": {
1925
+ "type": "integer"
1926
+ },
1927
+ "isCover": {
1928
+ "type": "boolean"
1929
+ },
1930
+ "isBrochure": {
1931
+ "type": "boolean"
1932
+ },
1933
+ "isBrochureCurrent": {
1934
+ "type": "boolean"
1935
+ },
1936
+ "brochureVersion": {
1937
+ "type": [
1938
+ "integer",
1939
+ "null"
1940
+ ]
1941
+ }
1942
+ },
1943
+ "required": [
1944
+ "id",
1945
+ "mediaType",
1946
+ "name",
1947
+ "url",
1948
+ "mimeType",
1949
+ "altText",
1950
+ "sortOrder",
1951
+ "isCover",
1952
+ "isBrochure",
1953
+ "isBrochureCurrent",
1954
+ "brochureVersion"
1955
+ ]
1956
+ }
1957
+ },
1958
+ "brochure": {
1959
+ "type": [
1960
+ "object",
1961
+ "null"
1962
+ ],
1963
+ "properties": {
1964
+ "id": {
1965
+ "type": "string"
1966
+ },
1967
+ "mediaType": {
1968
+ "type": "string"
1969
+ },
1970
+ "name": {
1971
+ "type": "string"
1972
+ },
1973
+ "url": {
1974
+ "type": "string"
1975
+ },
1976
+ "mimeType": {
1977
+ "type": [
1978
+ "string",
1979
+ "null"
1980
+ ]
1981
+ },
1982
+ "altText": {
1983
+ "type": [
1984
+ "string",
1985
+ "null"
1986
+ ]
1987
+ },
1988
+ "sortOrder": {
1989
+ "type": "integer"
1990
+ },
1991
+ "isCover": {
1992
+ "type": "boolean"
1993
+ },
1994
+ "isBrochure": {
1995
+ "type": "boolean"
1996
+ },
1997
+ "isBrochureCurrent": {
1998
+ "type": "boolean"
1999
+ },
2000
+ "brochureVersion": {
2001
+ "type": [
2002
+ "integer",
2003
+ "null"
2004
+ ]
2005
+ }
2006
+ },
2007
+ "required": [
2008
+ "id",
2009
+ "mediaType",
2010
+ "name",
2011
+ "url",
2012
+ "mimeType",
2013
+ "altText",
2014
+ "sortOrder",
2015
+ "isCover",
2016
+ "isBrochure",
2017
+ "isBrochureCurrent",
2018
+ "brochureVersion"
2019
+ ]
2020
+ },
2021
+ "features": {
2022
+ "type": "array",
2023
+ "items": {
2024
+ "type": "object",
2025
+ "properties": {
2026
+ "id": {
2027
+ "type": "string"
2028
+ },
2029
+ "featureType": {
2030
+ "type": "string"
2031
+ },
2032
+ "title": {
2033
+ "type": "string"
2034
+ },
2035
+ "description": {
2036
+ "type": [
2037
+ "string",
2038
+ "null"
2039
+ ]
2040
+ },
2041
+ "sortOrder": {
2042
+ "type": "integer"
2043
+ }
2044
+ },
2045
+ "required": [
2046
+ "id",
2047
+ "featureType",
2048
+ "title",
2049
+ "description",
2050
+ "sortOrder"
2051
+ ]
2052
+ }
2053
+ },
2054
+ "faqs": {
2055
+ "type": "array",
2056
+ "items": {
2057
+ "type": "object",
2058
+ "properties": {
2059
+ "id": {
2060
+ "type": "string"
2061
+ },
2062
+ "question": {
2063
+ "type": "string"
2064
+ },
2065
+ "answer": {
2066
+ "type": "string"
2067
+ },
2068
+ "sortOrder": {
2069
+ "type": "integer"
2070
+ }
2071
+ },
2072
+ "required": [
2073
+ "id",
2074
+ "question",
2075
+ "answer",
2076
+ "sortOrder"
2077
+ ]
2078
+ }
2079
+ }
2080
+ },
2081
+ "required": [
2082
+ "id",
2083
+ "name",
2084
+ "description",
2085
+ "inclusionsHtml",
2086
+ "exclusionsHtml",
2087
+ "termsHtml",
2088
+ "contentLanguageTag",
2089
+ "slug",
2090
+ "shortDescription",
2091
+ "seoTitle",
2092
+ "seoDescription",
2093
+ "bookingMode",
2094
+ "capacityMode",
2095
+ "visibility",
2096
+ "sellCurrency",
2097
+ "sellAmountCents",
2098
+ "startDate",
2099
+ "endDate",
2100
+ "pax",
2101
+ "contractTemplateId",
2102
+ "productType",
2103
+ "categories",
2104
+ "tags",
2105
+ "destinations",
2106
+ "locations",
2107
+ "capabilities",
2108
+ "coverMedia",
2109
+ "isFeatured"
2110
+ ]
2111
+ }
2112
+ },
2113
+ "required": [
2114
+ "data"
2115
+ ]
2116
+ }
2117
+ }
2118
+ }
2119
+ },
2120
+ "404": {
2121
+ "description": "Catalog product not found",
2122
+ "content": {
2123
+ "application/json": {
2124
+ "schema": {
2125
+ "type": "object",
2126
+ "properties": {
2127
+ "error": {
2128
+ "type": "string"
2129
+ }
2130
+ },
2131
+ "required": [
2132
+ "error"
2133
+ ]
2134
+ }
2135
+ }
2136
+ }
2137
+ }
2138
+ },
2139
+ "operationId": "getPublicProductsSlugBySlug",
2140
+ "summary": "GET /v1/public/products/slug/{slug}",
2141
+ "tags": [
2142
+ "products"
2143
+ ],
2144
+ "x-voyant-module": "products",
2145
+ "x-voyant-surface": "storefront"
2146
+ }
2147
+ },
2148
+ "/v1/public/products/{id}": {
2149
+ "get": {
2150
+ "parameters": [
2151
+ {
2152
+ "schema": {
2153
+ "type": "string"
2154
+ },
2155
+ "required": true,
2156
+ "name": "id",
2157
+ "in": "path"
2158
+ },
2159
+ {
2160
+ "schema": {
2161
+ "type": "string",
2162
+ "minLength": 2,
2163
+ "maxLength": 35,
2164
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
2165
+ },
2166
+ "required": false,
2167
+ "name": "languageTag",
2168
+ "in": "query"
2169
+ }
2170
+ ],
2171
+ "responses": {
2172
+ "200": {
2173
+ "description": "A public catalog product by id",
2174
+ "content": {
2175
+ "application/json": {
2176
+ "schema": {
2177
+ "type": "object",
2178
+ "properties": {
2179
+ "data": {
2180
+ "type": "object",
2181
+ "properties": {
2182
+ "id": {
2183
+ "type": "string"
2184
+ },
2185
+ "name": {
2186
+ "type": "string"
2187
+ },
2188
+ "description": {
2189
+ "type": [
2190
+ "string",
2191
+ "null"
2192
+ ]
2193
+ },
2194
+ "inclusionsHtml": {
2195
+ "type": [
2196
+ "string",
2197
+ "null"
2198
+ ]
2199
+ },
2200
+ "exclusionsHtml": {
2201
+ "type": [
2202
+ "string",
2203
+ "null"
2204
+ ]
2205
+ },
2206
+ "termsHtml": {
2207
+ "type": [
2208
+ "string",
2209
+ "null"
2210
+ ]
2211
+ },
2212
+ "contentLanguageTag": {
2213
+ "type": [
2214
+ "string",
2215
+ "null"
2216
+ ]
2217
+ },
2218
+ "slug": {
2219
+ "type": [
2220
+ "string",
2221
+ "null"
2222
+ ]
2223
+ },
2224
+ "shortDescription": {
2225
+ "type": [
2226
+ "string",
2227
+ "null"
2228
+ ]
2229
+ },
2230
+ "seoTitle": {
2231
+ "type": [
2232
+ "string",
2233
+ "null"
2234
+ ]
2235
+ },
2236
+ "seoDescription": {
2237
+ "type": [
2238
+ "string",
2239
+ "null"
2240
+ ]
2241
+ },
2242
+ "bookingMode": {
2243
+ "type": "string"
2244
+ },
2245
+ "capacityMode": {
2246
+ "type": "string"
2247
+ },
2248
+ "visibility": {
2249
+ "type": "string"
2250
+ },
2251
+ "sellCurrency": {
2252
+ "type": "string"
2253
+ },
2254
+ "sellAmountCents": {
2255
+ "type": [
2256
+ "integer",
2257
+ "null"
2258
+ ]
2259
+ },
2260
+ "startDate": {
2261
+ "type": [
2262
+ "string",
2263
+ "null"
2264
+ ]
2265
+ },
2266
+ "endDate": {
2267
+ "type": [
2268
+ "string",
2269
+ "null"
2270
+ ]
2271
+ },
2272
+ "pax": {
2273
+ "type": [
2274
+ "integer",
2275
+ "null"
2276
+ ]
2277
+ },
2278
+ "contractTemplateId": {
2279
+ "type": [
2280
+ "string",
2281
+ "null"
2282
+ ]
2283
+ },
2284
+ "productType": {
2285
+ "type": [
2286
+ "object",
2287
+ "null"
2288
+ ],
2289
+ "properties": {
2290
+ "id": {
2291
+ "type": "string"
2292
+ },
2293
+ "code": {
2294
+ "type": "string"
2295
+ },
2296
+ "name": {
2297
+ "type": "string"
2298
+ },
2299
+ "description": {
2300
+ "type": [
2301
+ "string",
2302
+ "null"
2303
+ ]
2304
+ }
2305
+ },
2306
+ "required": [
2307
+ "id",
2308
+ "code",
2309
+ "name",
2310
+ "description"
2311
+ ]
2312
+ },
2313
+ "categories": {
2314
+ "type": "array",
2315
+ "items": {
2316
+ "type": "object",
2317
+ "properties": {
2318
+ "id": {
2319
+ "type": "string"
2320
+ },
2321
+ "parentId": {
2322
+ "type": [
2323
+ "string",
2324
+ "null"
2325
+ ]
2326
+ },
2327
+ "name": {
2328
+ "type": "string"
2329
+ },
2330
+ "slug": {
2331
+ "type": "string"
2332
+ },
2333
+ "description": {
2334
+ "type": [
2335
+ "string",
2336
+ "null"
2337
+ ]
2338
+ },
2339
+ "sortOrder": {
2340
+ "type": "integer"
2341
+ }
2342
+ },
2343
+ "required": [
2344
+ "id",
2345
+ "parentId",
2346
+ "name",
2347
+ "slug",
2348
+ "description",
2349
+ "sortOrder"
2350
+ ]
2351
+ }
2352
+ },
2353
+ "tags": {
2354
+ "type": "array",
2355
+ "items": {
2356
+ "type": "object",
2357
+ "properties": {
2358
+ "id": {
2359
+ "type": "string"
2360
+ },
2361
+ "name": {
2362
+ "type": "string"
2363
+ }
2364
+ },
2365
+ "required": [
2366
+ "id",
2367
+ "name"
2368
+ ]
2369
+ }
2370
+ },
2371
+ "destinations": {
2372
+ "type": "array",
2373
+ "items": {
2374
+ "type": "object",
2375
+ "properties": {
2376
+ "id": {
2377
+ "type": "string"
2378
+ },
2379
+ "parentId": {
2380
+ "type": [
2381
+ "string",
2382
+ "null"
2383
+ ]
2384
+ },
2385
+ "slug": {
2386
+ "type": "string"
2387
+ },
2388
+ "canonicalPlaceId": {
2389
+ "type": [
2390
+ "string",
2391
+ "null"
2392
+ ]
2393
+ },
2394
+ "name": {
2395
+ "type": "string"
2396
+ },
2397
+ "description": {
2398
+ "type": [
2399
+ "string",
2400
+ "null"
2401
+ ]
2402
+ },
2403
+ "seoTitle": {
2404
+ "type": [
2405
+ "string",
2406
+ "null"
2407
+ ]
2408
+ },
2409
+ "seoDescription": {
2410
+ "type": [
2411
+ "string",
2412
+ "null"
2413
+ ]
2414
+ },
2415
+ "destinationType": {
2416
+ "type": "string"
2417
+ },
2418
+ "latitude": {
2419
+ "type": [
2420
+ "number",
2421
+ "null"
2422
+ ]
2423
+ },
2424
+ "longitude": {
2425
+ "type": [
2426
+ "number",
2427
+ "null"
2428
+ ]
2429
+ },
2430
+ "sortOrder": {
2431
+ "type": "integer"
2432
+ }
2433
+ },
2434
+ "required": [
2435
+ "id",
2436
+ "parentId",
2437
+ "slug",
2438
+ "canonicalPlaceId",
2439
+ "name",
2440
+ "description",
2441
+ "seoTitle",
2442
+ "seoDescription",
2443
+ "destinationType",
2444
+ "latitude",
2445
+ "longitude",
2446
+ "sortOrder"
2447
+ ]
2448
+ }
2449
+ },
2450
+ "locations": {
2451
+ "type": "array",
2452
+ "items": {
2453
+ "type": "object",
2454
+ "properties": {
2455
+ "id": {
2456
+ "type": "string"
2457
+ },
2458
+ "locationType": {
2459
+ "type": "string"
2460
+ },
2461
+ "title": {
2462
+ "type": "string"
2463
+ },
2464
+ "address": {
2465
+ "type": [
2466
+ "string",
2467
+ "null"
2468
+ ]
2469
+ },
2470
+ "city": {
2471
+ "type": [
2472
+ "string",
2473
+ "null"
2474
+ ]
2475
+ },
2476
+ "countryCode": {
2477
+ "type": [
2478
+ "string",
2479
+ "null"
2480
+ ]
2481
+ },
2482
+ "latitude": {
2483
+ "type": [
2484
+ "number",
2485
+ "null"
2486
+ ]
2487
+ },
2488
+ "longitude": {
2489
+ "type": [
2490
+ "number",
2491
+ "null"
2492
+ ]
2493
+ },
2494
+ "sortOrder": {
2495
+ "type": "integer"
2496
+ }
2497
+ },
2498
+ "required": [
2499
+ "id",
2500
+ "locationType",
2501
+ "title",
2502
+ "address",
2503
+ "city",
2504
+ "countryCode",
2505
+ "latitude",
2506
+ "longitude",
2507
+ "sortOrder"
2508
+ ]
2509
+ }
2510
+ },
2511
+ "capabilities": {
2512
+ "type": "array",
2513
+ "items": {
2514
+ "type": "string"
2515
+ }
2516
+ },
2517
+ "coverMedia": {
2518
+ "type": [
2519
+ "object",
2520
+ "null"
2521
+ ],
2522
+ "properties": {
2523
+ "id": {
2524
+ "type": "string"
2525
+ },
2526
+ "mediaType": {
2527
+ "type": "string"
2528
+ },
2529
+ "name": {
2530
+ "type": "string"
2531
+ },
2532
+ "url": {
2533
+ "type": "string"
2534
+ },
2535
+ "mimeType": {
2536
+ "type": [
2537
+ "string",
2538
+ "null"
2539
+ ]
2540
+ },
2541
+ "altText": {
2542
+ "type": [
2543
+ "string",
2544
+ "null"
2545
+ ]
2546
+ },
2547
+ "sortOrder": {
2548
+ "type": "integer"
2549
+ },
2550
+ "isCover": {
2551
+ "type": "boolean"
2552
+ },
2553
+ "isBrochure": {
2554
+ "type": "boolean"
2555
+ },
2556
+ "isBrochureCurrent": {
2557
+ "type": "boolean"
2558
+ },
2559
+ "brochureVersion": {
2560
+ "type": [
2561
+ "integer",
2562
+ "null"
2563
+ ]
2564
+ }
2565
+ },
2566
+ "required": [
2567
+ "id",
2568
+ "mediaType",
2569
+ "name",
2570
+ "url",
2571
+ "mimeType",
2572
+ "altText",
2573
+ "sortOrder",
2574
+ "isCover",
2575
+ "isBrochure",
2576
+ "isBrochureCurrent",
2577
+ "brochureVersion"
2578
+ ]
2579
+ },
2580
+ "isFeatured": {
2581
+ "type": "boolean"
2582
+ },
2583
+ "media": {
2584
+ "type": "array",
2585
+ "items": {
2586
+ "type": "object",
2587
+ "properties": {
2588
+ "id": {
2589
+ "type": "string"
2590
+ },
2591
+ "mediaType": {
2592
+ "type": "string"
2593
+ },
2594
+ "name": {
2595
+ "type": "string"
2596
+ },
2597
+ "url": {
2598
+ "type": "string"
2599
+ },
2600
+ "mimeType": {
2601
+ "type": [
2602
+ "string",
2603
+ "null"
2604
+ ]
2605
+ },
2606
+ "altText": {
2607
+ "type": [
2608
+ "string",
2609
+ "null"
2610
+ ]
2611
+ },
2612
+ "sortOrder": {
2613
+ "type": "integer"
2614
+ },
2615
+ "isCover": {
2616
+ "type": "boolean"
2617
+ },
2618
+ "isBrochure": {
2619
+ "type": "boolean"
2620
+ },
2621
+ "isBrochureCurrent": {
2622
+ "type": "boolean"
2623
+ },
2624
+ "brochureVersion": {
2625
+ "type": [
2626
+ "integer",
2627
+ "null"
2628
+ ]
2629
+ }
2630
+ },
2631
+ "required": [
2632
+ "id",
2633
+ "mediaType",
2634
+ "name",
2635
+ "url",
2636
+ "mimeType",
2637
+ "altText",
2638
+ "sortOrder",
2639
+ "isCover",
2640
+ "isBrochure",
2641
+ "isBrochureCurrent",
2642
+ "brochureVersion"
2643
+ ]
2644
+ }
2645
+ },
2646
+ "brochure": {
2647
+ "type": [
2648
+ "object",
2649
+ "null"
2650
+ ],
2651
+ "properties": {
2652
+ "id": {
2653
+ "type": "string"
2654
+ },
2655
+ "mediaType": {
2656
+ "type": "string"
2657
+ },
2658
+ "name": {
2659
+ "type": "string"
2660
+ },
2661
+ "url": {
2662
+ "type": "string"
2663
+ },
2664
+ "mimeType": {
2665
+ "type": [
2666
+ "string",
2667
+ "null"
2668
+ ]
2669
+ },
2670
+ "altText": {
2671
+ "type": [
2672
+ "string",
2673
+ "null"
2674
+ ]
2675
+ },
2676
+ "sortOrder": {
2677
+ "type": "integer"
2678
+ },
2679
+ "isCover": {
2680
+ "type": "boolean"
2681
+ },
2682
+ "isBrochure": {
2683
+ "type": "boolean"
2684
+ },
2685
+ "isBrochureCurrent": {
2686
+ "type": "boolean"
2687
+ },
2688
+ "brochureVersion": {
2689
+ "type": [
2690
+ "integer",
2691
+ "null"
2692
+ ]
2693
+ }
2694
+ },
2695
+ "required": [
2696
+ "id",
2697
+ "mediaType",
2698
+ "name",
2699
+ "url",
2700
+ "mimeType",
2701
+ "altText",
2702
+ "sortOrder",
2703
+ "isCover",
2704
+ "isBrochure",
2705
+ "isBrochureCurrent",
2706
+ "brochureVersion"
2707
+ ]
2708
+ },
2709
+ "features": {
2710
+ "type": "array",
2711
+ "items": {
2712
+ "type": "object",
2713
+ "properties": {
2714
+ "id": {
2715
+ "type": "string"
2716
+ },
2717
+ "featureType": {
2718
+ "type": "string"
2719
+ },
2720
+ "title": {
2721
+ "type": "string"
2722
+ },
2723
+ "description": {
2724
+ "type": [
2725
+ "string",
2726
+ "null"
2727
+ ]
2728
+ },
2729
+ "sortOrder": {
2730
+ "type": "integer"
2731
+ }
2732
+ },
2733
+ "required": [
2734
+ "id",
2735
+ "featureType",
2736
+ "title",
2737
+ "description",
2738
+ "sortOrder"
2739
+ ]
2740
+ }
2741
+ },
2742
+ "faqs": {
2743
+ "type": "array",
2744
+ "items": {
2745
+ "type": "object",
2746
+ "properties": {
2747
+ "id": {
2748
+ "type": "string"
2749
+ },
2750
+ "question": {
2751
+ "type": "string"
2752
+ },
2753
+ "answer": {
2754
+ "type": "string"
2755
+ },
2756
+ "sortOrder": {
2757
+ "type": "integer"
2758
+ }
2759
+ },
2760
+ "required": [
2761
+ "id",
2762
+ "question",
2763
+ "answer",
2764
+ "sortOrder"
2765
+ ]
2766
+ }
2767
+ }
2768
+ },
2769
+ "required": [
2770
+ "id",
2771
+ "name",
2772
+ "description",
2773
+ "inclusionsHtml",
2774
+ "exclusionsHtml",
2775
+ "termsHtml",
2776
+ "contentLanguageTag",
2777
+ "slug",
2778
+ "shortDescription",
2779
+ "seoTitle",
2780
+ "seoDescription",
2781
+ "bookingMode",
2782
+ "capacityMode",
2783
+ "visibility",
2784
+ "sellCurrency",
2785
+ "sellAmountCents",
2786
+ "startDate",
2787
+ "endDate",
2788
+ "pax",
2789
+ "contractTemplateId",
2790
+ "productType",
2791
+ "categories",
2792
+ "tags",
2793
+ "destinations",
2794
+ "locations",
2795
+ "capabilities",
2796
+ "coverMedia",
2797
+ "isFeatured"
2798
+ ]
2799
+ }
2800
+ },
2801
+ "required": [
2802
+ "data"
2803
+ ]
2804
+ }
2805
+ }
2806
+ }
2807
+ },
2808
+ "404": {
2809
+ "description": "Catalog product not found",
2810
+ "content": {
2811
+ "application/json": {
2812
+ "schema": {
2813
+ "type": "object",
2814
+ "properties": {
2815
+ "error": {
2816
+ "type": "string"
2817
+ }
2818
+ },
2819
+ "required": [
2820
+ "error"
2821
+ ]
2822
+ }
2823
+ }
2824
+ }
2825
+ }
2826
+ },
2827
+ "operationId": "getPublicProductsById",
2828
+ "summary": "GET /v1/public/products/{id}",
2829
+ "tags": [
2830
+ "products"
2831
+ ],
2832
+ "x-voyant-module": "products",
2833
+ "x-voyant-surface": "storefront"
2834
+ }
2835
+ },
2836
+ "/v1/public/products/{id}/brochure": {
2837
+ "get": {
2838
+ "parameters": [
2839
+ {
2840
+ "schema": {
2841
+ "type": "string"
2842
+ },
2843
+ "required": true,
2844
+ "name": "id",
2845
+ "in": "path"
2846
+ },
2847
+ {
2848
+ "schema": {
2849
+ "type": "string",
2850
+ "minLength": 2,
2851
+ "maxLength": 35,
2852
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
2853
+ },
2854
+ "required": false,
2855
+ "name": "languageTag",
2856
+ "in": "query"
2857
+ }
2858
+ ],
2859
+ "responses": {
2860
+ "200": {
2861
+ "description": "A product's current brochure media",
2862
+ "content": {
2863
+ "application/json": {
2864
+ "schema": {
2865
+ "type": "object",
2866
+ "properties": {
2867
+ "data": {
2868
+ "type": "object",
2869
+ "properties": {
2870
+ "id": {
2871
+ "type": "string"
2872
+ },
2873
+ "mediaType": {
2874
+ "type": "string"
2875
+ },
2876
+ "name": {
2877
+ "type": "string"
2878
+ },
2879
+ "url": {
2880
+ "type": "string"
2881
+ },
2882
+ "mimeType": {
2883
+ "type": [
2884
+ "string",
2885
+ "null"
2886
+ ]
2887
+ },
2888
+ "altText": {
2889
+ "type": [
2890
+ "string",
2891
+ "null"
2892
+ ]
2893
+ },
2894
+ "sortOrder": {
2895
+ "type": "integer"
2896
+ },
2897
+ "isCover": {
2898
+ "type": "boolean"
2899
+ },
2900
+ "isBrochure": {
2901
+ "type": "boolean"
2902
+ },
2903
+ "isBrochureCurrent": {
2904
+ "type": "boolean"
2905
+ },
2906
+ "brochureVersion": {
2907
+ "type": [
2908
+ "integer",
2909
+ "null"
2910
+ ]
2911
+ }
2912
+ },
2913
+ "required": [
2914
+ "id",
2915
+ "mediaType",
2916
+ "name",
2917
+ "url",
2918
+ "mimeType",
2919
+ "altText",
2920
+ "sortOrder",
2921
+ "isCover",
2922
+ "isBrochure",
2923
+ "isBrochureCurrent",
2924
+ "brochureVersion"
2925
+ ]
2926
+ }
2927
+ },
2928
+ "required": [
2929
+ "data"
2930
+ ]
2931
+ }
2932
+ }
2933
+ }
2934
+ },
2935
+ "404": {
2936
+ "description": "Catalog product brochure not found",
2937
+ "content": {
2938
+ "application/json": {
2939
+ "schema": {
2940
+ "type": "object",
2941
+ "properties": {
2942
+ "error": {
2943
+ "type": "string"
2944
+ }
2945
+ },
2946
+ "required": [
2947
+ "error"
2948
+ ]
2949
+ }
2950
+ }
2951
+ }
2952
+ }
2953
+ },
2954
+ "operationId": "getPublicProductsByIdBrochure",
2955
+ "summary": "GET /v1/public/products/{id}/brochure",
2956
+ "tags": [
2957
+ "products"
2958
+ ],
2959
+ "x-voyant-module": "products",
2960
+ "x-voyant-surface": "storefront"
2961
+ }
2962
+ }
2963
+ },
2964
+ "webhooks": {}
2965
+ }