@revolugo/common 7.1.1 → 7.2.0-alpha.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.
@@ -4,159 +4,185 @@ import { z } from 'zod'
4
4
  import { CountryIso2Code } from '../constants/index.ts'
5
5
 
6
6
  import { CURRENCY_SCHEMA } from './currency.ts'
7
+ import { IMAGES_SCHEMA } from './global.ts'
7
8
 
8
- export const AMENITIES_SCHEMA = z.object({
9
- air_conditioning: z
10
- .boolean()
11
- .optional()
12
- .openapi({ description: 'Air conditioning.' }),
13
- airport_transportation: z
14
- .boolean()
15
- .optional()
16
- .openapi({ description: 'Airport transportation service.' }),
17
- business_center: z
18
- .boolean()
19
- .optional()
20
- .openapi({ description: 'Business center.' }),
21
- car_rent_desk: z
22
- .boolean()
23
- .optional()
24
- .openapi({ description: 'Car rental desk service.' }),
25
- children_allowed: z
26
- .boolean()
27
- .optional()
28
- .openapi({ description: 'Children welcomed.' }),
29
- clothing_iron: z
30
- .boolean()
31
- .optional()
32
- .openapi({ description: 'Clothing iron.' }),
33
- coffee_tea_maker: z
34
- .boolean()
35
- .optional()
36
- .openapi({ description: 'Coffea/tea maker.' }),
37
- combination: z.boolean().optional().openapi({ description: 'Combination.' }),
38
- continental_breakfast: z
39
- .boolean()
40
- .optional()
41
- .openapi({ description: 'Continental Breakfast.' }),
42
- data_ports: z
43
- .boolean()
44
- .optional()
45
- .openapi({ description: 'Data ports in room.' }),
46
- dry_cleaning: z
47
- .boolean()
48
- .optional()
49
- .openapi({ description: 'Dry cleaning.' }),
50
- electronic_room_keys: z
51
- .boolean()
52
- .optional()
53
- .openapi({ description: 'Electornic room keys.' }),
54
- exterior_room_entrance: z
55
- .boolean()
56
- .optional()
57
- .openapi({ description: 'Exterior room entrance.' }),
58
- family_rooms: z
59
- .boolean()
60
- .optional()
61
- .openapi({ description: 'Family rooms.' }),
62
- fitness_facility: z
63
- .boolean()
64
- .optional()
65
- .openapi({ description: 'Fitness facility.' }),
66
- game_room: z.boolean().optional().openapi({ description: 'Game room.' }),
67
- golf_course: z.boolean().optional().openapi({ description: 'Golf course.' }),
68
- hair_dryer: z.boolean().optional().openapi({ description: 'Hair dryer.' }),
69
- handicap_accessible: z
70
- .boolean()
71
- .optional()
72
- .openapi({ description: 'Handicap Accessible.' }),
73
- in_house_bar: z
74
- .boolean()
75
- .optional()
76
- .openapi({ description: 'In house bar.' }),
77
- in_house_dining: z
78
- .boolean()
79
- .optional()
80
- .openapi({ description: 'In house dining.' }),
81
- in_room_movies: z
82
- .boolean()
83
- .optional()
84
- .openapi({ description: 'In room movies.' }),
85
- indoor_pool: z.boolean().optional().openapi({ description: 'Indoor pool.' }),
86
- interior_room_entrance: z
87
- .boolean()
88
- .optional()
89
- .openapi({ description: 'Interior room entrance.' }),
90
- kitchen: z.boolean().optional().openapi({ description: 'Kitchen.' }),
91
- map: z.boolean().optional().openapi({ description: 'Map.' }),
92
- meeting_rooms: z
93
- .boolean()
94
- .optional()
95
- .openapi({ description: 'Meeting rooms.' }),
96
- mini_bar_in_room: z
97
- .boolean()
98
- .optional()
99
- .openapi({ description: 'mini bar in room.' }),
100
- non_smoking_rooms: z
101
- .boolean()
102
- .optional()
103
- .openapi({ description: 'Non smoking rooms.' }),
104
- outdoor_pool: z
105
- .boolean()
106
- .optional()
107
- .openapi({ description: 'Outdoor pool.' }),
108
- parking_garage: z
109
- .boolean()
110
- .optional()
111
- .openapi({ description: 'Parking garage.' }),
112
- pets_allowed: z
113
- .boolean()
114
- .optional()
115
- .openapi({ description: 'Pets allowed.' }),
116
- restricted_access: z
117
- .boolean()
118
- .optional()
119
- .openapi({ description: 'Restricted access.' }),
120
- room_service: z
121
- .boolean()
122
- .optional()
123
- .openapi({ description: 'Room service.' }),
124
- safe: z.boolean().optional().openapi({ description: 'Safe in room.' }),
125
- sauna: z.boolean().optional().openapi({ description: 'Sauna.' }),
126
- t_v_in_room: z.boolean().optional().openapi({ description: 'TV in room.' }),
127
- tennis_court: z
128
- .boolean()
129
- .optional()
130
- .openapi({ description: 'Tennis court.' }),
131
- twenty_four_hour_security: z
132
- .boolean()
133
- .optional()
134
- .openapi({ description: ' 24/7 security.' }),
135
- valet_parking: z
136
- .boolean()
137
- .optional()
138
- .openapi({ description: 'Valet parking.' }),
139
- video_check_out: z
140
- .boolean()
141
- .optional()
142
- .openapi({ description: 'Video check out.' }),
143
- voice_mail: z.boolean().optional().openapi({ description: 'Voice mail.' }),
144
- wake_up_service: z
145
- .boolean()
146
- .optional()
147
- .openapi({ description: 'Wake up service.' }),
148
- whirpool: z.boolean().optional().openapi({ description: 'Whirpool.' }),
149
- })
9
+ export const AMENITIES_SCHEMA = z
10
+ .object({
11
+ air_conditioning: z
12
+ .boolean()
13
+ .optional()
14
+ .openapi({ description: 'Air conditioning.' }),
15
+ airport_transportation: z
16
+ .boolean()
17
+ .optional()
18
+ .openapi({ description: 'Airport transportation service.' }),
19
+ business_center: z
20
+ .boolean()
21
+ .optional()
22
+ .openapi({ description: 'Business center.' }),
23
+ car_rent_desk: z
24
+ .boolean()
25
+ .optional()
26
+ .openapi({ description: 'Car rental desk service.' }),
27
+ children_allowed: z
28
+ .boolean()
29
+ .optional()
30
+ .openapi({ description: 'Children welcomed.' }),
31
+ clothing_iron: z
32
+ .boolean()
33
+ .optional()
34
+ .openapi({ description: 'Clothing iron.' }),
35
+ coffee_tea_maker: z
36
+ .boolean()
37
+ .optional()
38
+ .openapi({ description: 'Coffea/tea maker.' }),
39
+ combination: z
40
+ .boolean()
41
+ .optional()
42
+ .openapi({ description: 'Combination.' }),
43
+ continental_breakfast: z
44
+ .boolean()
45
+ .optional()
46
+ .openapi({ description: 'Continental Breakfast.' }),
47
+ data_ports: z
48
+ .boolean()
49
+ .optional()
50
+ .openapi({ description: 'Data ports in room.' }),
51
+ dry_cleaning: z
52
+ .boolean()
53
+ .optional()
54
+ .openapi({ description: 'Dry cleaning.' }),
55
+ electronic_room_keys: z
56
+ .boolean()
57
+ .optional()
58
+ .openapi({ description: 'Electornic room keys.' }),
59
+ exterior_room_entrance: z
60
+ .boolean()
61
+ .optional()
62
+ .openapi({ description: 'Exterior room entrance.' }),
63
+ family_rooms: z
64
+ .boolean()
65
+ .optional()
66
+ .openapi({ description: 'Family rooms.' }),
67
+ fitness_facility: z
68
+ .boolean()
69
+ .optional()
70
+ .openapi({ description: 'Fitness facility.' }),
71
+ game_room: z.boolean().optional().openapi({ description: 'Game room.' }),
72
+ golf_course: z
73
+ .boolean()
74
+ .optional()
75
+ .openapi({ description: 'Golf course.' }),
76
+ hair_dryer: z.boolean().optional().openapi({ description: 'Hair dryer.' }),
77
+ handicap_accessible: z
78
+ .boolean()
79
+ .optional()
80
+ .openapi({ description: 'Handicap Accessible.' }),
81
+ in_house_bar: z
82
+ .boolean()
83
+ .optional()
84
+ .openapi({ description: 'In house bar.' }),
85
+ in_house_dining: z
86
+ .boolean()
87
+ .optional()
88
+ .openapi({ description: 'In house dining.' }),
89
+ in_room_movies: z
90
+ .boolean()
91
+ .optional()
92
+ .openapi({ description: 'In room movies.' }),
93
+ indoor_pool: z
94
+ .boolean()
95
+ .optional()
96
+ .openapi({ description: 'Indoor pool.' }),
97
+ interior_room_entrance: z
98
+ .boolean()
99
+ .optional()
100
+ .openapi({ description: 'Interior room entrance.' }),
101
+ kitchen: z.boolean().optional().openapi({ description: 'Kitchen.' }),
102
+ map: z.boolean().optional().openapi({ description: 'Map.' }),
103
+ meeting_rooms: z
104
+ .boolean()
105
+ .optional()
106
+ .openapi({ description: 'Meeting rooms.' }),
107
+ mini_bar_in_room: z
108
+ .boolean()
109
+ .optional()
110
+ .openapi({ description: 'mini bar in room.' }),
111
+ non_smoking_rooms: z
112
+ .boolean()
113
+ .optional()
114
+ .openapi({ description: 'Non smoking rooms.' }),
115
+ outdoor_pool: z
116
+ .boolean()
117
+ .optional()
118
+ .openapi({ description: 'Outdoor pool.' }),
119
+ parking_garage: z
120
+ .boolean()
121
+ .optional()
122
+ .openapi({ description: 'Parking garage.' }),
123
+ pets_allowed: z
124
+ .boolean()
125
+ .optional()
126
+ .openapi({ description: 'Pets allowed.' }),
127
+ restricted_access: z
128
+ .boolean()
129
+ .optional()
130
+ .openapi({ description: 'Restricted access.' }),
131
+ room_service: z
132
+ .boolean()
133
+ .optional()
134
+ .openapi({ description: 'Room service.' }),
135
+ safe: z.boolean().optional().openapi({ description: 'Safe in room.' }),
136
+ sauna: z.boolean().optional().openapi({ description: 'Sauna.' }),
137
+ t_v_in_room: z.boolean().optional().openapi({ description: 'TV in room.' }),
138
+ tennis_court: z
139
+ .boolean()
140
+ .optional()
141
+ .openapi({ description: 'Tennis court.' }),
142
+ twenty_four_hour_security: z
143
+ .boolean()
144
+ .optional()
145
+ .openapi({ description: ' 24/7 security.' }),
146
+ valet_parking: z
147
+ .boolean()
148
+ .optional()
149
+ .openapi({ description: 'Valet parking.' }),
150
+ video_check_out: z
151
+ .boolean()
152
+ .optional()
153
+ .openapi({ description: 'Video check out.' }),
154
+ voice_mail: z.boolean().optional().openapi({ description: 'Voice mail.' }),
155
+ wake_up_service: z
156
+ .boolean()
157
+ .optional()
158
+ .openapi({ description: 'Wake up service.' }),
159
+ whirpool: z.boolean().optional().openapi({ description: 'Whirpool.' }),
160
+ })
161
+ .openapi('hotelAmenitiesApi', {
162
+ description: 'Amenities available at the hotel.',
163
+ })
150
164
 
151
- export const HOTEL_IMAGE = z.object({
152
- caption: z.string().nullish(),
153
- is_hero_image: z.boolean(),
154
- l: z.string(),
155
- m: z.string(),
156
- s: z.string(),
157
- xl: z.string(),
158
- xs: z.string(),
159
- })
165
+ export const HOTEL_IMAGE = z
166
+ .object({
167
+ caption: z
168
+ .string()
169
+ .nullish()
170
+ .openapi({ description: 'Caption of the hotel image.' }),
171
+ is_hero_image: z.boolean().openapi({
172
+ description:
173
+ 'Whether this image is the primary (hero) image of the hotel.',
174
+ }),
175
+ l: z.string().openapi({ description: 'URL of the large-size image.' }),
176
+ m: z.string().openapi({ description: 'URL of the medium-size image.' }),
177
+ s: z.string().openapi({ description: 'URL of the small-size image.' }),
178
+ xl: z
179
+ .string()
180
+ .openapi({ description: 'URL of the extra-large-size image.' }),
181
+ xs: z
182
+ .string()
183
+ .openapi({ description: 'URL of the extra-small-size image.' }),
184
+ })
185
+ .openapi('hotelImageApi', { description: 'Hotel image in various sizes.' })
160
186
 
161
187
  export const HOTEL_IMAGES = z.array(HOTEL_IMAGE).openapi({
162
188
  description:
@@ -170,8 +196,7 @@ export const HOTEL_REVIEW_RATING_SCHEMA = z
170
196
  .openapi({
171
197
  description: 'Category of the collected reviews for the Hotel.',
172
198
  })
173
- .nullish()
174
- .optional(),
199
+ .nullish(),
175
200
  rating: z.number().openapi({
176
201
  description: 'Rating of the collected review for the Hotel.',
177
202
  }),
@@ -187,174 +212,116 @@ export const HOTEL_REVIEW_RATINGS_SCHEMA = z
187
212
  'List of meta reviews (category and rating) that are summary of verified reviews collected across the web on the Hotel to help choose the best option.',
188
213
  })
189
214
 
190
- export const IMAGES_SCHEMA = z
191
- .object({
192
- count: z
193
- .number()
194
- .openapi({ description: 'Number of images.' })
195
- .optional()
196
- .nullish(),
197
- highres: z
198
- .boolean()
199
- .openapi({ description: 'Whether images exist in highres format.' })
200
- .optional()
201
- .nullish(),
202
-
203
- lowres: z
204
- .boolean()
205
- .openapi({ description: 'Whether images exist in lowres format.' })
206
- .optional()
207
- .nullish(),
208
- prefix: z
209
- .string()
210
- .openapi({ description: 'Base URL for the images.' })
211
- .optional()
212
- .nullish(),
213
- suffix: z
214
- .string()
215
- .openapi({
216
- description:
217
- 'This parameter usually represents the extension of the image (e.g.: .jpg, .png)',
215
+ export const VENUES_SCHEMA = z
216
+ .array(
217
+ z
218
+ .object({
219
+ description: z.string().nullish().openapi({
220
+ description: 'Description of the venue or point of interest.',
221
+ }),
222
+ name: z
223
+ .string()
224
+ .openapi({ description: 'Name of the venue or point of interest.' }),
225
+ travel_times: z
226
+ .object({
227
+ driving: z.number().optional().openapi({
228
+ description: 'Driving travel time to the venue in minutes.',
229
+ }),
230
+ transit: z.number().optional().openapi({
231
+ description: 'Transit travel time to the venue in minutes.',
232
+ }),
233
+ walking: z.number().optional().openapi({
234
+ description: 'Walking travel time to the venue in minutes.',
235
+ }),
236
+ })
237
+ .nullish()
238
+ .openapi({
239
+ description:
240
+ 'Estimated travel times to the venue by transport mode.',
241
+ }),
218
242
  })
219
- .optional()
220
- .nullish(),
221
- thumb: z
222
- .boolean()
223
243
  .openapi({
224
- description:
225
- 'Whether images exist in thumb format (for thumbnails preview).',
226
- })
227
- .optional()
228
- .nullish(),
229
- })
244
+ description: 'A venue or point of interest near the hotel.',
245
+ }),
246
+ )
247
+ .optional()
230
248
  .openapi({
231
249
  description:
232
- '🛑 DEPRECATED - Hotel images details.\n\nIn order to retrieve a specific image you need to construct the complete URL from the images parameters: **[images.prefix][highres|lowres|thumb]/[index]/[images.suffix]**. If **images.count = n**, then index is in [0...n-1] range.\n\ne.g.: https://s3.eu-west-3.amazonaws.com/revolugo/hotels/yhKY/images/highres/0.jpg',
250
+ 'List of nearby venues or points of interest (e.g. airports, stadiums) with estimated travel times.',
233
251
  })
234
252
 
235
- export const VENUES_SCHEMA = z
236
- .array(
237
- z.object({
238
- description: z.string().optional().nullish(),
239
- name: z.string(),
240
- travel_times: z
241
- .object({
242
- driving: z.number().optional(),
243
- transit: z.number().optional(),
244
- walking: z.number().optional(),
245
- })
246
- .optional()
247
- .nullish(),
248
- }),
249
- )
250
- .optional()
251
253
  export const HOTEL_SCHEMA = z
252
254
  .object({
253
- address: z
254
- .string()
255
- .openapi({ description: 'Hotel address.' })
256
- .optional()
257
- .nullish(),
255
+ address: z.string().openapi({ description: 'Hotel address.' }).nullish(),
258
256
  address2: z
259
257
  .string()
260
258
  .openapi({ description: 'Second part of hotel address.' })
261
- .optional()
262
259
  .nullish(),
263
- amenities: AMENITIES_SCHEMA.nullish(),
260
+ amenities: AMENITIES_SCHEMA.nullish().openapi({
261
+ description: 'Hotel amenities.',
262
+ }),
264
263
  check_in_time: z
265
264
  .string()
266
265
  .openapi({ description: 'Check in time of the hotel.' })
267
- .optional()
268
266
  .nullish(),
269
267
  check_out_time: z
270
268
  .string()
271
269
  .openapi({ description: 'Check out time of the hotel.' })
272
- .optional()
273
- .nullish(),
274
- city: z.string().openapi({ description: 'City' }).optional().nullish(),
275
- country: z
276
- .string()
277
- .openapi({ description: 'Country' })
278
- .optional()
279
270
  .nullish(),
271
+ city: z.string().openapi({ description: 'City' }).nullish(),
272
+ country: z.string().openapi({ description: 'Country' }).nullish(),
280
273
  country_code: z
281
274
  .string()
282
275
  .refine(check =>
283
276
  Object.values(CountryIso2Code).includes(check as CountryIso2Code),
284
277
  )
285
278
  .openapi({ description: 'Hotel country code in ISO2.' })
286
- .optional()
287
- .nullish(),
288
- currency: CURRENCY_SCHEMA.openapi({ description: 'Hotel currency.' })
289
- .optional()
290
279
  .nullish(),
280
+ currency: CURRENCY_SCHEMA.openapi({
281
+ description: 'Hotel currency.',
282
+ }).nullish(),
291
283
  description: z
292
284
  .string()
293
285
  .openapi({ description: 'Hotel description.' })
294
- .optional()
295
286
  .nullish(),
296
287
  distance: z
297
288
  .number()
298
- .optional()
299
289
  .openapi({
300
290
  description: 'Distance from a requested location, expressed in meters',
301
291
  })
302
- .optional()
303
- .nullish(),
304
- email: z
305
- .string()
306
- .openapi({ description: 'Hotel email.' })
307
- .optional()
308
- .nullish(),
309
- fax: z
310
- .string()
311
- .openapi({ description: 'Hotel fax number.' })
312
- .optional()
313
292
  .nullish(),
293
+ email: z.string().openapi({ description: 'Hotel email.' }).nullish(),
294
+ fax: z.string().openapi({ description: 'Hotel fax number.' }).nullish(),
314
295
  hotel_images: HOTEL_IMAGES.nullish(),
315
- hotel_review_ratings: HOTEL_REVIEW_RATINGS_SCHEMA.optional().nullish(),
296
+ hotel_review_ratings: HOTEL_REVIEW_RATINGS_SCHEMA.nullish(),
316
297
  id: z.string().openapi({ description: 'Hotel id.' }),
317
298
  images: IMAGES_SCHEMA.nullish(),
318
299
  latitude: z.number().openapi({ description: 'Hotel latitude.' }),
319
300
  longitude: z.number().openapi({ description: 'Hotel longitude.' }),
320
301
  name: z.string().openapi({ description: 'Hotel name.' }),
321
- phone: z
322
- .string()
323
- .openapi({ description: 'Hotel phone number.' })
324
- .optional()
325
- .nullish(),
302
+ phone: z.string().openapi({ description: 'Hotel phone number.' }).nullish(),
326
303
  policy: z
327
304
  .string()
328
305
  .openapi({ description: 'Internal policy of the hotel.' })
329
- .optional()
330
306
  .nullish(),
331
307
  postal_code: z
332
308
  .string()
333
309
  .openapi({ description: 'Hotel address postal code.' })
334
- .optional()
335
310
  .nullish(),
336
- rating: z
337
- .number()
338
- .optional()
339
- .nullish()
340
- .openapi({ description: 'Hotel Star rating.' }),
311
+ rating: z.number().nullish().openapi({ description: 'Hotel Star rating.' }),
341
312
  state: z
342
313
  .string()
343
314
  .openapi({ description: 'Hotel address state.' })
344
- .optional()
345
315
  .nullish(),
346
316
  ta_id: z
347
317
  .string()
348
- .optional()
349
318
  .openapi({ description: 'TripAdvisor property id. When applicable.' })
350
- .optional()
351
319
  .nullish(),
352
320
  timezone: z.string().openapi({ description: 'Hotel timezone.' }),
353
321
  venues: VENUES_SCHEMA,
354
322
  website: z
355
323
  .string()
356
324
  .openapi({ description: 'Hotel website url.' })
357
- .optional()
358
325
  .nullish(),
359
326
  })
360
- .openapi('hotelApi')
327
+ .openapi('hotelApi', { description: 'Hotel details.' })
@@ -1,6 +1,8 @@
1
+ export * from './breakfast.ts'
2
+ export * from './booking-policy.ts'
1
3
  export * from './cancellation-policies.ts'
2
4
  export * from './currency.ts'
3
- export * from './hotel-offer-request.ts'
5
+ export * from './global.ts'
4
6
  export * from './hotel-offer.ts'
5
7
  export * from './hotel-room-offer.ts'
6
8
  export * from './hotel-room.ts'
@@ -29,7 +29,9 @@ export const LIST_META_SCHEMA = z
29
29
  ending_before: ENDING_BEFORE_SCHEMA,
30
30
  limit: LIMIT_SCHEMA,
31
31
  starting_after: STARTING_AFTER_SCHEMA,
32
- total_count: z.number().nullish(),
32
+ total_count: z.number().nullish().openapi({
33
+ description: 'Total count of items in the list.',
34
+ }),
33
35
  })
34
36
  .openapi('metaApiResponse')
35
37
  .openapi({
@@ -43,5 +45,8 @@ export const LIST_POLLING_META_SCHEMA = LIST_META_SCHEMA.extend({
43
45
  .number()
44
46
  .optional()
45
47
  .openapi({ description: 'Total count of the response list.' }),
46
- }).openapi('metaApiPollingResponse')
48
+ }).openapi('metaApiPollingResponse', {
49
+ description:
50
+ 'Meta information about the polling response list, including pagination cursors and the current polling status.',
51
+ })
47
52
  /* eslint-enable camelcase */
@@ -1,13 +1,27 @@
1
1
  /* eslint-disable camelcase */
2
2
  import { z } from 'zod'
3
3
 
4
- export const TAG_SCHEMA = z.object({
5
- bg: z.string().optional().nullish(),
6
- color: z.string().optional().nullish(),
7
- description: z.string().optional().nullish(),
8
- fa_icon: z.string().optional().nullish(),
9
- name: z.string(),
10
- })
4
+ export const TAG_SCHEMA = z
5
+ .object({
6
+ bg: z.string().optional().nullish().openapi({
7
+ description: 'Background color of the tag.',
8
+ }),
9
+ color: z.string().optional().nullish().openapi({
10
+ description: 'Text color of the tag.',
11
+ }),
12
+ description: z.string().optional().nullish().openapi({
13
+ description: 'Description of the tag.',
14
+ }),
15
+ fa_icon: z.string().optional().nullish().openapi({
16
+ description: 'Font Awesome icon identifier for the tag.',
17
+ }),
18
+ name: z.string().openapi({ description: 'Name of the tag.' }),
19
+ })
20
+ .openapi('tagApi', {
21
+ description: 'Tag associated with a Hotel or Hotel Room Offer.',
22
+ })
11
23
 
12
- export const TAGS_SCHEMA = z.array(TAG_SCHEMA).optional().default([])
24
+ export const TAGS_SCHEMA = z.array(TAG_SCHEMA).optional().default([]).openapi({
25
+ description: 'List of tags associated with a Hotel or Hotel Room Offer.',
26
+ })
13
27
  /* eslint-enable camelcase */
@@ -28,7 +28,9 @@ export const TAX_SCHEMA = z
28
28
  'Tax mode. Specifies if the tax applies per occupant, per booking or per room',
29
29
  }),
30
30
  })
31
- .openapi('taxApi')
31
+ .openapi('taxApi', { description: 'Tax applied to the Hotel Room Offer.' })
32
32
 
33
- export const TAXES_SCHEMA = z.array(TAX_SCHEMA).optional()
33
+ export const TAXES_SCHEMA = z.array(TAX_SCHEMA).optional().openapi({
34
+ description: 'List of taxes applied to the Hotel Room Offer.',
35
+ })
34
36
  /* eslint-enable camelcase */
@@ -41,7 +41,7 @@ export interface BookingPolicies {
41
41
  children?: string | null
42
42
  /**
43
43
  *
44
- * @type {CurrencyBookingApiClient}
44
+ * @type {CurrencyClient}
45
45
  * @memberof BookingPolicies
46
46
  */
47
47
  currency: CurrencyType