@venulog/phasing-engine-schemas 0.13.0-alpha.3 → 0.13.0-alpha.5

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.
@@ -592,6 +592,7 @@ export declare const availableTimeSlotV2Schema: z.ZodObject<{
592
592
  parking_spot: z.ZodString;
593
593
  entity_name: z.ZodString;
594
594
  slot_key: z.ZodString;
595
+ vehicle_type: z.ZodString;
595
596
  }, z.core.$strip>;
596
597
  export declare const availableSlotsResponseV2Schema: z.ZodObject<{
597
598
  event_id: z.ZodNumber;
@@ -617,6 +618,42 @@ export declare const availableSlotsResponseV2Schema: z.ZodObject<{
617
618
  parking_spot: z.ZodString;
618
619
  entity_name: z.ZodString;
619
620
  slot_key: z.ZodString;
621
+ vehicle_type: z.ZodString;
622
+ }, z.core.$strip>>;
623
+ total_slots: z.ZodNumber;
624
+ }, z.core.$strip>;
625
+ export declare const getBookingStatisticsQuerySchema: z.ZodObject<{
626
+ event_id: z.ZodNumber;
627
+ year: z.ZodNumber;
628
+ month: z.ZodNumber;
629
+ schedule_type: z.ZodOptional<z.ZodEnum<typeof ParkingAreaScheduleType>>;
630
+ }, z.core.$strip>;
631
+ export declare const bookingStatisticsResponseSchema: z.ZodObject<{
632
+ event_id: z.ZodNumber;
633
+ event_code: z.ZodString;
634
+ event_name: z.ZodString;
635
+ year: z.ZodNumber;
636
+ month: z.ZodNumber;
637
+ schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
638
+ all_slots: z.ZodArray<z.ZodObject<{
639
+ date: z.ZodString;
640
+ start_time: z.ZodString;
641
+ end_time: z.ZodString;
642
+ duration: z.ZodNumber;
643
+ schedule_type: z.ZodEnum<{
644
+ assembly: "assembly";
645
+ dismantling: "dismantling";
646
+ }>;
647
+ max_capacity: z.ZodNumber;
648
+ current_bookings: z.ZodNumber;
649
+ confirmed_bookings: z.ZodNumber;
650
+ available_capacity: z.ZodNumber;
651
+ is_available: z.ZodBoolean;
652
+ door: z.ZodString;
653
+ parking_spot: z.ZodString;
654
+ entity_name: z.ZodString;
655
+ slot_key: z.ZodString;
656
+ vehicle_type: z.ZodString;
620
657
  }, z.core.$strip>>;
621
658
  total_slots: z.ZodNumber;
622
659
  }, z.core.$strip>;
@@ -695,3 +732,5 @@ export type Translations = z.infer<typeof translationsSchema>;
695
732
  export type GetAvailableSlotsBodyV2 = z.infer<typeof getAvailableSlotsBodyV2Schema>;
696
733
  export type AvailableTimeSlotV2 = z.infer<typeof availableTimeSlotV2Schema>;
697
734
  export type AvailableSlotsResponseV2 = z.infer<typeof availableSlotsResponseV2Schema>;
735
+ export type GetBookingStatisticsQuery = z.infer<typeof getBookingStatisticsQuerySchema>;
736
+ export type BookingStatisticsResponse = z.infer<typeof bookingStatisticsResponseSchema>;
@@ -804,6 +804,10 @@ export const availableTimeSlotV2Schema = z
804
804
  slot_key: z.string().openapi({
805
805
  description: 'Unique identifier for the time slot',
806
806
  example: '12345'
807
+ }),
808
+ vehicle_type: z.string().openapi({
809
+ description: 'Vehicle type for the slot',
810
+ example: 'PL'
807
811
  })
808
812
  })
809
813
  .openapi('AvailableTimeSlotV2');
@@ -839,6 +843,64 @@ export const availableSlotsResponseV2Schema = z
839
843
  })
840
844
  .openapi('AvailableSlotsResponseV2');
841
845
  // ------------------------------
846
+ // Booking Statistics V2
847
+ // ------------------------------
848
+ export const getBookingStatisticsQuerySchema = z
849
+ .object({
850
+ event_id: z.number().positive().openapi({
851
+ description: 'The ID of the event',
852
+ example: 1
853
+ }),
854
+ year: z.number().min(2025).openapi({
855
+ description: 'Year for filtering slots (YYYY). Slots before today will be excluded.',
856
+ example: 2026
857
+ }),
858
+ month: z.number().min(1).max(12).openapi({
859
+ description: 'Month for filtering slots (1-12). Slots before today will be excluded.',
860
+ example: 6
861
+ }),
862
+ schedule_type: z.enum(ParkingAreaScheduleType).optional().openapi({
863
+ description: 'Optional filter by schedule type (assembly or dismantling)',
864
+ example: 'assembly'
865
+ })
866
+ })
867
+ .openapi('GetBookingStatisticsQuery');
868
+ export const bookingStatisticsResponseSchema = z
869
+ .object({
870
+ event_id: z.number().openapi({
871
+ description: 'ID of the event',
872
+ example: 1
873
+ }),
874
+ event_code: z.string().openapi({
875
+ description: 'Code of the event',
876
+ example: 'COEC2025'
877
+ }),
878
+ event_name: z.string().openapi({
879
+ description: 'Name of the event',
880
+ example: 'COEC 2025'
881
+ }),
882
+ year: z.number().openapi({
883
+ description: 'Year of the statistics',
884
+ example: 2026
885
+ }),
886
+ month: z.number().openapi({
887
+ description: 'Month of the statistics',
888
+ example: 6
889
+ }),
890
+ schedule_type: z.enum(ParkingAreaScheduleType).nullable().openapi({
891
+ description: 'Schedule type filter applied (null if not filtered)',
892
+ example: 'assembly'
893
+ }),
894
+ all_slots: z.array(availableTimeSlotV2Schema).openapi({
895
+ description: 'All time slots with full booking information, across all companies and vehicle types'
896
+ }),
897
+ total_slots: z.number().openapi({
898
+ description: 'Total number of time slots',
899
+ example: 120
900
+ })
901
+ })
902
+ .openapi('BookingStatisticsResponse');
903
+ // ------------------------------
842
904
  // Company Roles for Parking Area
843
905
  // ------------------------------
844
906
  export const getCompanyRolesByEventIdParamsSchema = z
@@ -52,12 +52,31 @@ export declare const companyDetailsSchema: z.ZodObject<{
52
52
  driver_phone: z.ZodString;
53
53
  transport_company: z.ZodOptional<z.ZodString>;
54
54
  }, z.core.$strip>;
55
+ export declare const companyDetailsWithMinimalFields: z.ZodObject<{
56
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
57
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
58
+ company_name: z.ZodOptional<z.ZodString>;
59
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
60
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
61
+ contact_name: z.ZodOptional<z.ZodString>;
62
+ email: z.ZodOptional<z.ZodEmail>;
63
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
64
+ driver_name: z.ZodOptional<z.ZodString>;
65
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
66
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
67
+ }, z.core.$strip>;
55
68
  export declare const vehicleDetailsSchema: z.ZodObject<{
56
69
  vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
57
70
  unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
58
71
  license_plate: z.ZodString;
59
72
  trailer_registration: z.ZodOptional<z.ZodString>;
60
73
  }, z.core.$strip>;
74
+ export declare const partialVehicleDetails: z.ZodNullable<z.ZodOptional<z.ZodObject<{
75
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
76
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
77
+ license_plate: z.ZodOptional<z.ZodString>;
78
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
79
+ }, z.core.$strip>>>;
61
80
  export declare const parkingBookingSchema: z.ZodObject<{
62
81
  id: z.ZodNumber;
63
82
  status: z.ZodEnum<typeof BookingStatus>;
@@ -71,24 +90,24 @@ export declare const parkingBookingSchema: z.ZodObject<{
71
90
  end_time: z.ZodNullable<z.ZodString>;
72
91
  company_role: z.ZodNullable<z.ZodString>;
73
92
  company: z.ZodObject<{
74
- hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
75
- stand_number: z.ZodOptional<z.ZodString>;
76
- company_name: z.ZodString;
77
- exhibitor_name: z.ZodOptional<z.ZodString>;
78
- departure_city: z.ZodOptional<z.ZodString>;
79
- contact_name: z.ZodString;
80
- email: z.ZodEmail;
81
- phone: z.ZodString;
82
- driver_name: z.ZodString;
83
- driver_phone: z.ZodString;
84
- transport_company: z.ZodOptional<z.ZodString>;
85
- }, z.core.$strip>;
86
- vehicle: z.ZodObject<{
87
- vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
88
- unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
89
- license_plate: z.ZodString;
90
- trailer_registration: z.ZodOptional<z.ZodString>;
93
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
94
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
95
+ company_name: z.ZodOptional<z.ZodString>;
96
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
97
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
98
+ contact_name: z.ZodOptional<z.ZodString>;
99
+ email: z.ZodOptional<z.ZodEmail>;
100
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
101
+ driver_name: z.ZodOptional<z.ZodString>;
102
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
103
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
91
104
  }, z.core.$strip>;
105
+ vehicle: z.ZodNullable<z.ZodOptional<z.ZodObject<{
106
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
107
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
108
+ license_plate: z.ZodOptional<z.ZodString>;
109
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
110
+ }, z.core.$strip>>>;
92
111
  entry_scanned_at: z.ZodNullable<z.ZodString>;
93
112
  exit_scanned_at: z.ZodNullable<z.ZodString>;
94
113
  parking_spot: z.ZodString;
@@ -114,24 +133,24 @@ export declare const eventBookingsDataSchema: z.ZodObject<{
114
133
  end_time: z.ZodNullable<z.ZodString>;
115
134
  company_role: z.ZodNullable<z.ZodString>;
116
135
  company: z.ZodObject<{
117
- hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
118
- stand_number: z.ZodOptional<z.ZodString>;
119
- company_name: z.ZodString;
120
- exhibitor_name: z.ZodOptional<z.ZodString>;
121
- departure_city: z.ZodOptional<z.ZodString>;
122
- contact_name: z.ZodString;
123
- email: z.ZodEmail;
124
- phone: z.ZodString;
125
- driver_name: z.ZodString;
126
- driver_phone: z.ZodString;
127
- transport_company: z.ZodOptional<z.ZodString>;
128
- }, z.core.$strip>;
129
- vehicle: z.ZodObject<{
130
- vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
131
- unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
132
- license_plate: z.ZodString;
133
- trailer_registration: z.ZodOptional<z.ZodString>;
136
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
137
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
138
+ company_name: z.ZodOptional<z.ZodString>;
139
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
140
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
141
+ contact_name: z.ZodOptional<z.ZodString>;
142
+ email: z.ZodOptional<z.ZodEmail>;
143
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
144
+ driver_name: z.ZodOptional<z.ZodString>;
145
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
146
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
134
147
  }, z.core.$strip>;
148
+ vehicle: z.ZodNullable<z.ZodOptional<z.ZodObject<{
149
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
150
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
151
+ license_plate: z.ZodOptional<z.ZodString>;
152
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
153
+ }, z.core.$strip>>>;
135
154
  entry_scanned_at: z.ZodNullable<z.ZodString>;
136
155
  exit_scanned_at: z.ZodNullable<z.ZodString>;
137
156
  parking_spot: z.ZodString;
@@ -161,24 +180,24 @@ export declare const eventBookingsResponseSchema: z.ZodObject<{
161
180
  end_time: z.ZodNullable<z.ZodString>;
162
181
  company_role: z.ZodNullable<z.ZodString>;
163
182
  company: z.ZodObject<{
164
- hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
165
- stand_number: z.ZodOptional<z.ZodString>;
166
- company_name: z.ZodString;
167
- exhibitor_name: z.ZodOptional<z.ZodString>;
168
- departure_city: z.ZodOptional<z.ZodString>;
169
- contact_name: z.ZodString;
170
- email: z.ZodEmail;
171
- phone: z.ZodString;
172
- driver_name: z.ZodString;
173
- driver_phone: z.ZodString;
174
- transport_company: z.ZodOptional<z.ZodString>;
175
- }, z.core.$strip>;
176
- vehicle: z.ZodObject<{
177
- vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
178
- unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
179
- license_plate: z.ZodString;
180
- trailer_registration: z.ZodOptional<z.ZodString>;
183
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
184
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
185
+ company_name: z.ZodOptional<z.ZodString>;
186
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
187
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
188
+ contact_name: z.ZodOptional<z.ZodString>;
189
+ email: z.ZodOptional<z.ZodEmail>;
190
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
191
+ driver_name: z.ZodOptional<z.ZodString>;
192
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
193
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
181
194
  }, z.core.$strip>;
195
+ vehicle: z.ZodNullable<z.ZodOptional<z.ZodObject<{
196
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
197
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
198
+ license_plate: z.ZodOptional<z.ZodString>;
199
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
200
+ }, z.core.$strip>>>;
182
201
  entry_scanned_at: z.ZodNullable<z.ZodString>;
183
202
  exit_scanned_at: z.ZodNullable<z.ZodString>;
184
203
  parking_spot: z.ZodString;
@@ -263,6 +282,7 @@ export declare const checkSlotAvailabilityResponseSchema: z.ZodObject<{
263
282
  parking_spot: z.ZodString;
264
283
  entity_name: z.ZodString;
265
284
  slot_key: z.ZodString;
285
+ vehicle_type: z.ZodString;
266
286
  }, z.core.$strip>;
267
287
  }, z.core.$strip>;
268
288
  export declare const customSlotSchema: z.ZodObject<{
@@ -522,11 +542,14 @@ export declare const parkingBookingWithRelationsSchema: z.ZodObject<{
522
542
  }, z.core.$strip>;
523
543
  parking_spot: z.ZodString;
524
544
  door: z.ZodString;
525
- parking_schedule_type: z.ZodEnum<typeof ParkingAreaScheduleType>;
545
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
526
546
  slot_key: z.ZodNullable<z.ZodString>;
527
547
  entry_scanned_at: z.ZodNullable<z.ZodString>;
528
548
  exit_scanned_at: z.ZodNullable<z.ZodString>;
529
549
  is_custom_slot: z.ZodBoolean;
550
+ is_fast_track_access: z.ZodBoolean;
551
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
552
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
530
553
  }, z.core.$strip>;
531
554
  export declare const getParkingBookingDetailsParamsSchema: z.ZodObject<{
532
555
  bookingId: z.ZodCoercedNumber<unknown>;
@@ -541,24 +564,24 @@ export declare const parkingBookingDetailsDataSchema: z.ZodObject<{
541
564
  end_time: z.ZodString;
542
565
  company_role: z.ZodNullable<z.ZodString>;
543
566
  company: z.ZodObject<{
544
- hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
545
- stand_number: z.ZodOptional<z.ZodString>;
546
- company_name: z.ZodString;
547
- exhibitor_name: z.ZodOptional<z.ZodString>;
548
- departure_city: z.ZodOptional<z.ZodString>;
549
- contact_name: z.ZodString;
550
- email: z.ZodEmail;
551
- phone: z.ZodString;
552
- driver_name: z.ZodString;
553
- driver_phone: z.ZodString;
554
- transport_company: z.ZodOptional<z.ZodString>;
555
- }, z.core.$strip>;
556
- vehicle: z.ZodObject<{
557
- vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
558
- unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
559
- license_plate: z.ZodString;
560
- trailer_registration: z.ZodOptional<z.ZodString>;
567
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
568
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
569
+ company_name: z.ZodOptional<z.ZodString>;
570
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
571
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
572
+ contact_name: z.ZodOptional<z.ZodString>;
573
+ email: z.ZodOptional<z.ZodEmail>;
574
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
575
+ driver_name: z.ZodOptional<z.ZodString>;
576
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
577
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
561
578
  }, z.core.$strip>;
579
+ vehicle: z.ZodNullable<z.ZodOptional<z.ZodObject<{
580
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
581
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
582
+ license_plate: z.ZodOptional<z.ZodString>;
583
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
584
+ }, z.core.$strip>>>;
562
585
  event_id: z.ZodNumber;
563
586
  event_name: z.ZodString;
564
587
  event_code: z.ZodString;
@@ -569,7 +592,6 @@ export declare const parkingBookingDetailsDataSchema: z.ZodObject<{
569
592
  venue_id: z.ZodNullable<z.ZodNumber>;
570
593
  venue_name: z.ZodNullable<z.ZodString>;
571
594
  venue_address: z.ZodNullable<z.ZodString>;
572
- request_type: z.ZodString;
573
595
  duration: z.ZodNumber;
574
596
  banner: z.ZodNullable<z.ZodObject<{
575
597
  url: z.ZodURL;
@@ -583,11 +605,14 @@ export declare const parkingBookingDetailsDataSchema: z.ZodObject<{
583
605
  updated_at: z.ZodString;
584
606
  entry_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
585
607
  exit_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
586
- slot_key: z.ZodString;
608
+ slot_key: z.ZodNullable<z.ZodString>;
587
609
  parking_spot: z.ZodString;
588
610
  door: z.ZodString;
589
- parking_schedule_type: z.ZodEnum<typeof ParkingAreaScheduleType>;
611
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
590
612
  is_custom_slot: z.ZodBoolean;
613
+ is_fast_track_access: z.ZodBoolean;
614
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
615
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
591
616
  }, z.core.$strip>;
592
617
  export declare const getParkingBookingDetailsResponseSchema: z.ZodObject<{
593
618
  success: z.ZodBoolean;
@@ -601,24 +626,24 @@ export declare const getParkingBookingDetailsResponseSchema: z.ZodObject<{
601
626
  end_time: z.ZodString;
602
627
  company_role: z.ZodNullable<z.ZodString>;
603
628
  company: z.ZodObject<{
604
- hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
605
- stand_number: z.ZodOptional<z.ZodString>;
606
- company_name: z.ZodString;
607
- exhibitor_name: z.ZodOptional<z.ZodString>;
608
- departure_city: z.ZodOptional<z.ZodString>;
609
- contact_name: z.ZodString;
610
- email: z.ZodEmail;
611
- phone: z.ZodString;
612
- driver_name: z.ZodString;
613
- driver_phone: z.ZodString;
614
- transport_company: z.ZodOptional<z.ZodString>;
615
- }, z.core.$strip>;
616
- vehicle: z.ZodObject<{
617
- vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
618
- unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
619
- license_plate: z.ZodString;
620
- trailer_registration: z.ZodOptional<z.ZodString>;
629
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
630
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
631
+ company_name: z.ZodOptional<z.ZodString>;
632
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
633
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
634
+ contact_name: z.ZodOptional<z.ZodString>;
635
+ email: z.ZodOptional<z.ZodEmail>;
636
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
637
+ driver_name: z.ZodOptional<z.ZodString>;
638
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
639
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
621
640
  }, z.core.$strip>;
641
+ vehicle: z.ZodNullable<z.ZodOptional<z.ZodObject<{
642
+ vehicle_type: z.ZodOptional<z.ZodEnum<typeof import("./index.js").VehicleType>>;
643
+ unloading_method: z.ZodOptional<z.ZodOptional<z.ZodEnum<typeof UnloadingType>>>;
644
+ license_plate: z.ZodOptional<z.ZodString>;
645
+ trailer_registration: z.ZodOptional<z.ZodOptional<z.ZodString>>;
646
+ }, z.core.$strip>>>;
622
647
  event_id: z.ZodNumber;
623
648
  event_name: z.ZodString;
624
649
  event_code: z.ZodString;
@@ -629,7 +654,6 @@ export declare const getParkingBookingDetailsResponseSchema: z.ZodObject<{
629
654
  venue_id: z.ZodNullable<z.ZodNumber>;
630
655
  venue_name: z.ZodNullable<z.ZodString>;
631
656
  venue_address: z.ZodNullable<z.ZodString>;
632
- request_type: z.ZodString;
633
657
  duration: z.ZodNumber;
634
658
  banner: z.ZodNullable<z.ZodObject<{
635
659
  url: z.ZodURL;
@@ -643,16 +667,142 @@ export declare const getParkingBookingDetailsResponseSchema: z.ZodObject<{
643
667
  updated_at: z.ZodString;
644
668
  entry_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
645
669
  exit_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
646
- slot_key: z.ZodString;
670
+ slot_key: z.ZodNullable<z.ZodString>;
647
671
  parking_spot: z.ZodString;
648
672
  door: z.ZodString;
649
- parking_schedule_type: z.ZodEnum<typeof ParkingAreaScheduleType>;
673
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
650
674
  is_custom_slot: z.ZodBoolean;
675
+ is_fast_track_access: z.ZodBoolean;
676
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
677
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
651
678
  }, z.core.$strip>;
652
679
  }, z.core.$strip>;
653
680
  export declare const getParkingBookingDetailsByTokenBodySchema: z.ZodObject<{
654
681
  access_token: z.ZodString;
655
682
  }, z.core.$strip>;
683
+ export declare const parkingBookingDetailsByTokenDataSchema: z.ZodObject<{
684
+ qr_token: z.ZodNullable<z.ZodString>;
685
+ id: z.ZodNumber;
686
+ booking_id: z.ZodNumber;
687
+ status: z.ZodString;
688
+ booking_date: z.ZodString;
689
+ start_time: z.ZodString;
690
+ end_time: z.ZodString;
691
+ company_role: z.ZodNullable<z.ZodString>;
692
+ event_id: z.ZodNumber;
693
+ event_name: z.ZodString;
694
+ event_code: z.ZodString;
695
+ event_gps_latitude: z.ZodNullable<z.ZodNumber>;
696
+ event_gps_longitude: z.ZodNullable<z.ZodNumber>;
697
+ event_start_date: z.ZodString;
698
+ event_end_date: z.ZodString;
699
+ venue_id: z.ZodNullable<z.ZodNumber>;
700
+ venue_name: z.ZodNullable<z.ZodString>;
701
+ venue_address: z.ZodNullable<z.ZodString>;
702
+ duration: z.ZodNumber;
703
+ banner: z.ZodNullable<z.ZodObject<{
704
+ url: z.ZodURL;
705
+ name: z.ZodOptional<z.ZodString>;
706
+ size: z.ZodOptional<z.ZodNumber>;
707
+ bucket: z.ZodOptional<z.ZodString>;
708
+ type: z.ZodOptional<z.ZodString>;
709
+ path: z.ZodOptional<z.ZodString>;
710
+ }, z.core.$strip>>;
711
+ created_at: z.ZodString;
712
+ updated_at: z.ZodString;
713
+ entry_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
714
+ exit_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
715
+ parking_spot: z.ZodString;
716
+ door: z.ZodString;
717
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
718
+ is_custom_slot: z.ZodBoolean;
719
+ is_fast_track_access: z.ZodBoolean;
720
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
721
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
722
+ company: z.ZodObject<{
723
+ hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
724
+ stand_number: z.ZodOptional<z.ZodString>;
725
+ company_name: z.ZodString;
726
+ exhibitor_name: z.ZodOptional<z.ZodString>;
727
+ departure_city: z.ZodOptional<z.ZodString>;
728
+ contact_name: z.ZodString;
729
+ email: z.ZodEmail;
730
+ phone: z.ZodString;
731
+ driver_name: z.ZodString;
732
+ driver_phone: z.ZodString;
733
+ transport_company: z.ZodOptional<z.ZodString>;
734
+ }, z.core.$strip>;
735
+ vehicle: z.ZodObject<{
736
+ vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
737
+ unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
738
+ license_plate: z.ZodString;
739
+ trailer_registration: z.ZodOptional<z.ZodString>;
740
+ }, z.core.$strip>;
741
+ slot_key: z.ZodString;
742
+ }, z.core.$strip>;
743
+ export declare const getParkingBookingDetailsByTokenResponseSchema: z.ZodObject<{
744
+ success: z.ZodBoolean;
745
+ data: z.ZodObject<{
746
+ qr_token: z.ZodNullable<z.ZodString>;
747
+ id: z.ZodNumber;
748
+ booking_id: z.ZodNumber;
749
+ status: z.ZodString;
750
+ booking_date: z.ZodString;
751
+ start_time: z.ZodString;
752
+ end_time: z.ZodString;
753
+ company_role: z.ZodNullable<z.ZodString>;
754
+ event_id: z.ZodNumber;
755
+ event_name: z.ZodString;
756
+ event_code: z.ZodString;
757
+ event_gps_latitude: z.ZodNullable<z.ZodNumber>;
758
+ event_gps_longitude: z.ZodNullable<z.ZodNumber>;
759
+ event_start_date: z.ZodString;
760
+ event_end_date: z.ZodString;
761
+ venue_id: z.ZodNullable<z.ZodNumber>;
762
+ venue_name: z.ZodNullable<z.ZodString>;
763
+ venue_address: z.ZodNullable<z.ZodString>;
764
+ duration: z.ZodNumber;
765
+ banner: z.ZodNullable<z.ZodObject<{
766
+ url: z.ZodURL;
767
+ name: z.ZodOptional<z.ZodString>;
768
+ size: z.ZodOptional<z.ZodNumber>;
769
+ bucket: z.ZodOptional<z.ZodString>;
770
+ type: z.ZodOptional<z.ZodString>;
771
+ path: z.ZodOptional<z.ZodString>;
772
+ }, z.core.$strip>>;
773
+ created_at: z.ZodString;
774
+ updated_at: z.ZodString;
775
+ entry_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
776
+ exit_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
777
+ parking_spot: z.ZodString;
778
+ door: z.ZodString;
779
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
780
+ is_custom_slot: z.ZodBoolean;
781
+ is_fast_track_access: z.ZodBoolean;
782
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
783
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
784
+ company: z.ZodObject<{
785
+ hall: z.ZodNullable<z.ZodOptional<z.ZodString>>;
786
+ stand_number: z.ZodOptional<z.ZodString>;
787
+ company_name: z.ZodString;
788
+ exhibitor_name: z.ZodOptional<z.ZodString>;
789
+ departure_city: z.ZodOptional<z.ZodString>;
790
+ contact_name: z.ZodString;
791
+ email: z.ZodEmail;
792
+ phone: z.ZodString;
793
+ driver_name: z.ZodString;
794
+ driver_phone: z.ZodString;
795
+ transport_company: z.ZodOptional<z.ZodString>;
796
+ }, z.core.$strip>;
797
+ vehicle: z.ZodObject<{
798
+ vehicle_type: z.ZodEnum<typeof import("./index.js").VehicleType>;
799
+ unloading_method: z.ZodOptional<z.ZodEnum<typeof UnloadingType>>;
800
+ license_plate: z.ZodString;
801
+ trailer_registration: z.ZodOptional<z.ZodString>;
802
+ }, z.core.$strip>;
803
+ slot_key: z.ZodString;
804
+ }, z.core.$strip>;
805
+ }, z.core.$strip>;
656
806
  export declare const getParkingBookingDetailsByQrBodySchema: z.ZodObject<{
657
807
  qr_token: z.ZodString;
658
808
  scanner_latitude: z.ZodOptional<z.ZodNumber>;
@@ -813,10 +963,80 @@ export declare const updateBookingTimeResponseSchema: z.ZodObject<{
813
963
  updated_by: z.ZodNullable<z.ZodString>;
814
964
  }, z.core.$strip>;
815
965
  }, z.core.$strip>;
966
+ export declare const createFastTrackBookingBodySchema: z.ZodObject<{
967
+ phone_number: z.ZodString;
968
+ event_id: z.ZodNumber;
969
+ license_plate_image_url: z.ZodOptional<z.ZodURL>;
970
+ applicant_badge_image_url: z.ZodOptional<z.ZodURL>;
971
+ }, z.core.$strip>;
972
+ export declare const createFastTrackBookingDataSchema: z.ZodObject<{
973
+ id: z.ZodNumber;
974
+ status: z.ZodString;
975
+ company: z.ZodObject<{
976
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
977
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
978
+ company_name: z.ZodOptional<z.ZodString>;
979
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
980
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
981
+ contact_name: z.ZodOptional<z.ZodString>;
982
+ email: z.ZodOptional<z.ZodEmail>;
983
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
984
+ driver_name: z.ZodOptional<z.ZodString>;
985
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
986
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
987
+ }, z.core.$strip>;
988
+ booking_date: z.ZodString;
989
+ start_time: z.ZodString;
990
+ end_time: z.ZodString;
991
+ event_id: z.ZodNumber;
992
+ parking_spot: z.ZodString;
993
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
994
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
995
+ is_fast_track_access: z.ZodBoolean;
996
+ created_at: z.ZodString;
997
+ created_by: z.ZodNullable<z.ZodString>;
998
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
999
+ door: z.ZodString;
1000
+ }, z.core.$strip>;
1001
+ export declare const createFastTrackBookingResponseSchema: z.ZodObject<{
1002
+ success: z.ZodBoolean;
1003
+ message: z.ZodString;
1004
+ data: z.ZodObject<{
1005
+ id: z.ZodNumber;
1006
+ status: z.ZodString;
1007
+ company: z.ZodObject<{
1008
+ hall: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
1009
+ stand_number: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1010
+ company_name: z.ZodOptional<z.ZodString>;
1011
+ exhibitor_name: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1012
+ departure_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1013
+ contact_name: z.ZodOptional<z.ZodString>;
1014
+ email: z.ZodOptional<z.ZodEmail>;
1015
+ phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
1016
+ driver_name: z.ZodOptional<z.ZodString>;
1017
+ driver_phone: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
1018
+ transport_company: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1019
+ }, z.core.$strip>;
1020
+ booking_date: z.ZodString;
1021
+ start_time: z.ZodString;
1022
+ end_time: z.ZodString;
1023
+ event_id: z.ZodNumber;
1024
+ parking_spot: z.ZodString;
1025
+ license_plate_image_url: z.ZodNullable<z.ZodString>;
1026
+ applicant_badge_image_url: z.ZodNullable<z.ZodString>;
1027
+ is_fast_track_access: z.ZodBoolean;
1028
+ created_at: z.ZodString;
1029
+ created_by: z.ZodNullable<z.ZodString>;
1030
+ parking_schedule_type: z.ZodNullable<z.ZodEnum<typeof ParkingAreaScheduleType>>;
1031
+ door: z.ZodString;
1032
+ }, z.core.$strip>;
1033
+ }, z.core.$strip>;
816
1034
  export type Geometry = z.infer<typeof geometrySchema>;
817
1035
  export type ParkingBooking = z.infer<typeof parkingBookingSchema>;
818
1036
  export type CompanyDetails = z.infer<typeof companyDetailsSchema>;
1037
+ export type CompanyDetailsWithMinimalFields = z.infer<typeof companyDetailsWithMinimalFields>;
819
1038
  export type VehicleDetails = z.infer<typeof vehicleDetailsSchema>;
1039
+ export type PartialVehicleDetails = z.infer<typeof partialVehicleDetails>;
820
1040
  export type EventBookingsData = z.infer<typeof eventBookingsDataSchema>;
821
1041
  export type CheckSlotAvailabilityBody = z.infer<typeof checkSlotAvailabilityBodySchema>;
822
1042
  export type CheckSlotAvailabilityData = z.infer<typeof availableTimeSlotV2Schema>;
@@ -843,6 +1063,8 @@ export type GetBookingDetailsParams = z.infer<typeof getParkingBookingDetailsPar
843
1063
  export type GetBookingDetailsData = z.infer<typeof parkingBookingDetailsDataSchema>;
844
1064
  export type GetBookingDetailsResponse = z.infer<typeof getParkingBookingDetailsResponseSchema>;
845
1065
  export type GetBookingDetailsByTokenBody = z.infer<typeof getParkingBookingDetailsByTokenBodySchema>;
1066
+ export type ParkingBookingDetailsByTokenData = z.infer<typeof parkingBookingDetailsByTokenDataSchema>;
1067
+ export type GetParkingBookingDetailsByTokenResponse = z.infer<typeof getParkingBookingDetailsByTokenResponseSchema>;
846
1068
  export type GetBookingDetailsByQrBody = z.infer<typeof getParkingBookingDetailsByQrBodySchema>;
847
1069
  export type ConfirmBookingData = z.infer<typeof confirmBookingDataSchema>;
848
1070
  export type ConfirmBookingDataResponse = z.infer<typeof confirmBookingResponseSchema>;
@@ -855,3 +1077,6 @@ export type UpdateBookingTimeBody = z.infer<typeof updateBookingTimeBodySchema>;
855
1077
  export type UpdateBookingTimeData = z.infer<typeof updateBookingTimeDataSchema>;
856
1078
  export type UpdateBookingTimeResponse = z.infer<typeof updateBookingTimeResponseSchema>;
857
1079
  export type UpdateParkingBookingResponse = z.infer<typeof updateParkingBookingResponseSchema>;
1080
+ export type CreateFastTrackBookingBody = z.infer<typeof createFastTrackBookingBodySchema>;
1081
+ export type CreateFastTrackBookingData = z.infer<typeof createFastTrackBookingDataSchema>;
1082
+ export type CreateFastTrackBookingResponse = z.infer<typeof createFastTrackBookingResponseSchema>;
@@ -133,6 +133,13 @@ export const companyDetailsSchema = z
133
133
  })
134
134
  })
135
135
  .openapi('CompanyDetails');
136
+ export const companyDetailsWithMinimalFields = companyDetailsSchema
137
+ .partial()
138
+ .required({
139
+ phone: true,
140
+ driver_phone: true
141
+ })
142
+ .openapi('CompanyDetailsWithMandatoryFields');
136
143
  export const vehicleDetailsSchema = z
137
144
  .object({
138
145
  vehicle_type: vehicleTypeSchema,
@@ -150,6 +157,11 @@ export const vehicleDetailsSchema = z
150
157
  })
151
158
  })
152
159
  .openapi('VehicleDetails');
160
+ export const partialVehicleDetails = vehicleDetailsSchema
161
+ .partial()
162
+ .optional()
163
+ .nullable()
164
+ .openapi('PartialVehicleDetails');
153
165
  // TODO: remove booking_date, start_time, end_time, time_zone and migrate to start_time with timezone info and end_time with timezone info
154
166
  // so that we have full timezone support from db level
155
167
  export const parkingBookingSchema = z.object({
@@ -164,8 +176,8 @@ export const parkingBookingSchema = z.object({
164
176
  start_time: z.string().nullable(),
165
177
  end_time: z.string().nullable(),
166
178
  company_role: z.string().nullable(),
167
- company: companyDetailsSchema,
168
- vehicle: vehicleDetailsSchema,
179
+ company: companyDetailsWithMinimalFields,
180
+ vehicle: partialVehicleDetails,
169
181
  entry_scanned_at: z.string().nullable(),
170
182
  exit_scanned_at: z.string().nullable(),
171
183
  parking_spot: z.string(),
@@ -513,11 +525,14 @@ export const parkingBookingWithRelationsSchema = z
513
525
  }),
514
526
  parking_spot: z.string(),
515
527
  door: z.string(),
516
- parking_schedule_type: z.enum(ParkingAreaScheduleType),
528
+ parking_schedule_type: z.enum(ParkingAreaScheduleType).nullable(),
517
529
  slot_key: z.string().nullable(),
518
530
  entry_scanned_at: z.string().nullable(),
519
531
  exit_scanned_at: z.string().nullable(),
520
- is_custom_slot: z.boolean()
532
+ is_custom_slot: z.boolean(),
533
+ is_fast_track_access: z.boolean(),
534
+ license_plate_image_url: z.string().nullable(),
535
+ applicant_badge_image_url: z.string().nullable()
521
536
  })
522
537
  .openapi('ParkingBookingWithRelations');
523
538
  // ------------------------------
@@ -564,12 +579,8 @@ export const parkingBookingDetailsDataSchema = z
564
579
  description: 'Company role for the booking',
565
580
  example: 'exhibitor'
566
581
  }),
567
- company: companyDetailsSchema.openapi({
568
- description: 'Company details'
569
- }),
570
- vehicle: vehicleDetailsSchema.openapi({
571
- description: 'Vehicle details'
572
- }),
582
+ company: companyDetailsWithMinimalFields,
583
+ vehicle: partialVehicleDetails,
573
584
  event_id: z.number().openapi({
574
585
  description: 'ID of the event',
575
586
  example: 1
@@ -610,10 +621,6 @@ export const parkingBookingDetailsDataSchema = z
610
621
  description: 'Address of the venue',
611
622
  example: '1 Pl. de la Prte de Versailles, 75015 Paris, France'
612
623
  }),
613
- request_type: z.string().openapi({
614
- description: 'Type of parking area schedule (assembly/dismantling)',
615
- example: 'assembly'
616
- }),
617
624
  duration: z.number().openapi({
618
625
  description: 'Duration of the booking in minutes',
619
626
  example: 30
@@ -642,7 +649,7 @@ export const parkingBookingDetailsDataSchema = z
642
649
  description: 'Timestamp when exit was scanned',
643
650
  example: '2025-12-15T08:25:00.000Z'
644
651
  }),
645
- slot_key: z.string().openapi({
652
+ slot_key: z.string().nullable().openapi({
646
653
  description: 'Unique key identifying the booked time slot',
647
654
  example: 'MainEntrance_2025-12-15_08:00'
648
655
  }),
@@ -654,13 +661,25 @@ export const parkingBookingDetailsDataSchema = z
654
661
  description: 'Assigned door for the booking',
655
662
  example: 'North Gate'
656
663
  }),
657
- parking_schedule_type: z.enum(ParkingAreaScheduleType).openapi({
664
+ parking_schedule_type: z.enum(ParkingAreaScheduleType).nullable().openapi({
658
665
  description: 'Type of parking area schedule',
659
666
  example: 'assembly'
660
667
  }),
661
668
  is_custom_slot: z.boolean().openapi({
662
669
  description: 'Indicates if the booking is for a custom time slot',
663
670
  example: false
671
+ }),
672
+ is_fast_track_access: z.boolean().openapi({
673
+ description: 'Indicates if the booking has fast track access',
674
+ example: true
675
+ }),
676
+ license_plate_image_url: z.string().nullable().openapi({
677
+ description: 'URL of the license plate image',
678
+ example: 'https://example.com/license-plate.jpg'
679
+ }),
680
+ applicant_badge_image_url: z.string().nullable().openapi({
681
+ description: 'URL of the applicant badge image',
682
+ example: 'https://example.com/applicant-badge.jpg'
664
683
  })
665
684
  })
666
685
  .openapi('ParkingBookingDetailsData');
@@ -676,6 +695,25 @@ export const getParkingBookingDetailsByTokenBodySchema = z
676
695
  })
677
696
  })
678
697
  .openapi('GetParkingBookingDetailsByTokenBody');
698
+ // Extends parkingBookingDetailsDataSchema with stricter validation:
699
+ // - company: full schema (not partial)
700
+ // - vehicle: full schema (not partial)
701
+ // - slot_key: non-nullable
702
+ export const parkingBookingDetailsByTokenDataSchema = parkingBookingDetailsDataSchema
703
+ .extend({
704
+ company: companyDetailsSchema.openapi({
705
+ description: 'Company details (all fields required)'
706
+ }),
707
+ vehicle: vehicleDetailsSchema.openapi({
708
+ description: 'Vehicle details (all fields required)'
709
+ }),
710
+ slot_key: z.string().openapi({
711
+ description: 'Unique key identifying the booked time slot',
712
+ example: 'MainEntrance_2025-12-15_08:00'
713
+ })
714
+ })
715
+ .openapi('ParkingBookingDetailsByTokenData');
716
+ export const getParkingBookingDetailsByTokenResponseSchema = createSuccessResponseSchema(parkingBookingDetailsByTokenDataSchema, 'GetParkingBookingDetailsByTokenResponse', 'Booking details retrieved by access token with complete company and vehicle information');
679
717
  // ------------------------------
680
718
  // Get booking details by QR schemas
681
719
  // ------------------------------
@@ -939,3 +977,46 @@ export const updateBookingTimeDataSchema = z
939
977
  })
940
978
  .openapi('UpdateBookingTimeData');
941
979
  export const updateBookingTimeResponseSchema = createMessageDataResponseSchema(updateBookingTimeDataSchema, 'UpdateBookingTimeResponse', 'Booking time updated successfully', 'Details of the updated booking time');
980
+ // ------------------------------
981
+ // Fast-Track Parking Booking schemas
982
+ // ------------------------------
983
+ export const createFastTrackBookingBodySchema = z
984
+ .object({
985
+ phone_number: z.string().min(1, 'Phone number is required').openapi({
986
+ description: 'Contact phone number for fast-track booking',
987
+ example: '+33123456789'
988
+ }),
989
+ event_id: z.number().positive().openapi({
990
+ description: 'ID of the event for the fast-track booking',
991
+ example: 1
992
+ }),
993
+ license_plate_image_url: z.url().optional().openapi({
994
+ description: 'URL of the license plate image (optional)',
995
+ example: 'https://example.com/plates/abc123.jpg'
996
+ }),
997
+ applicant_badge_image_url: z.url().optional().openapi({
998
+ description: 'URL of the applicant badge image (optional)',
999
+ example: 'https://example.com/badges/applicant456.jpg'
1000
+ })
1001
+ })
1002
+ .openapi('CreateFastTrackBookingBody');
1003
+ export const createFastTrackBookingDataSchema = z
1004
+ .object({
1005
+ id: z.number(),
1006
+ status: z.string(),
1007
+ company: companyDetailsWithMinimalFields,
1008
+ booking_date: z.string(),
1009
+ start_time: z.string(),
1010
+ end_time: z.string(),
1011
+ event_id: z.number(),
1012
+ parking_spot: z.string(),
1013
+ license_plate_image_url: z.string().nullable(),
1014
+ applicant_badge_image_url: z.string().nullable(),
1015
+ is_fast_track_access: z.boolean(),
1016
+ created_at: z.string(),
1017
+ created_by: z.string().nullable(),
1018
+ parking_schedule_type: z.enum(ParkingAreaScheduleType).nullable(),
1019
+ door: z.string()
1020
+ })
1021
+ .openapi('CreateFastTrackBookingData');
1022
+ export const createFastTrackBookingResponseSchema = createMessageDataResponseSchema(createFastTrackBookingDataSchema, 'CreateFastTrackBookingResponse', 'Fast-track parking booking created successfully', 'Details of the created fast-track booking');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venulog/phasing-engine-schemas",
3
- "version": "0.13.0-alpha.3",
3
+ "version": "0.13.0-alpha.5",
4
4
  "description": "Shared schemas and types for Phasing Engine API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",