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