@revolugo/common 6.9.5 → 6.9.6-beta.1
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.
- package/package.json +12 -7
- package/src/cancellation-policies.test.ts +12 -9
- package/src/cancellation-policies.ts +31 -26
- package/src/constants/countries.ts +0 -2515
- package/src/constants/currencies.ts +0 -1812
- package/src/constants/environment.ts +1 -0
- package/src/constants/hotel-offers.ts +2 -0
- package/src/constants/hotel.ts +3 -0
- package/src/constants/locales.ts +6 -0
- package/src/constants/measurement.ts +1 -0
- package/src/constants/time.ts +1 -0
- package/src/countries/constants.ts +2518 -0
- package/src/countries/index.ts +7 -0
- package/src/currencies/index.ts +1817 -0
- package/src/models/paginated-queries.ts +1 -0
- package/src/types/country.ts +1 -1
- package/src/types/elements/amenity.ts +266 -0
- package/src/types/elements/bed.ts +20 -0
- package/src/types/elements/booking-policy.ts +80 -0
- package/src/types/elements/booking.ts +236 -0
- package/src/types/elements/cancellation-policy.ts +20 -0
- package/src/types/elements/contact-person.ts +158 -0
- package/src/types/elements/currency.ts +3 -0
- package/src/types/elements/event-metadata.ts +38 -0
- package/src/types/elements/event.ts +14 -0
- package/src/types/elements/hotel-image.ts +44 -0
- package/src/types/elements/hotel-images.ts +47 -0
- package/src/types/elements/hotel-offer-request.ts +82 -0
- package/src/types/elements/hotel-offer.ts +200 -0
- package/src/types/elements/hotel-review-rating.ts +14 -0
- package/src/types/elements/hotel-room-offer-package-type.ts +8 -0
- package/src/types/elements/hotel-room-offer-request.ts +77 -0
- package/src/types/elements/hotel-room-offer-type.ts +6 -0
- package/src/types/elements/hotel-room-offer.ts +192 -0
- package/src/types/elements/hotel-room.ts +102 -0
- package/src/types/elements/hotel-rooming-list.ts +49 -0
- package/src/types/elements/hotel.ts +184 -0
- package/src/types/elements/index.ts +22 -0
- package/src/types/elements/invoice.ts +21 -0
- package/src/types/elements/payment-method.ts +159 -0
- package/src/types/elements/source-market.ts +247 -0
- package/src/types/elements/tag.ts +32 -0
- package/src/types/elements/tax.ts +52 -0
- package/src/types/elements/travel-times.ts +45 -0
- package/src/types/index.ts +1 -0
- package/src/utils/array-tools.ts +3 -2
- package/src/utils/case-transformers.ts +1 -0
- package/src/utils/colors.ts +4 -4
- package/src/utils/currency.ts +30 -18
- package/src/utils/dates.ts +6 -10
- package/src/utils/debounce.ts +2 -2
- package/src/utils/find-unique-keys.ts +2 -2
- package/src/utils/get-guest-count.ts +1 -0
- package/src/utils/index.ts +1 -1
- package/src/utils/lang-default-fallbacks.ts +1 -1
- package/src/utils/math.ts +3 -3
- package/src/utils/numbers.ts +8 -7
- package/src/utils/object-tools.ts +22 -2
- package/src/utils/poller.ts +1 -0
- package/src/utils/random.ts +12 -0
- package/src/utils/strings.ts +5 -2
- package/src/utils/validators.ts +1 -0
- package/src/utils/countries.ts +0 -4
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { CountryIso2Code } from '#constants'
|
|
2
|
+
|
|
3
|
+
type CountryIso2CodeType = `${CountryIso2Code}`
|
|
4
|
+
|
|
5
|
+
export interface ContactPerson {
|
|
6
|
+
/**
|
|
7
|
+
* Contact person's postal code of residence
|
|
8
|
+
* @type {string}
|
|
9
|
+
* @memberof ContactPerson
|
|
10
|
+
*/
|
|
11
|
+
address?: string | null
|
|
12
|
+
/**
|
|
13
|
+
* Contact person's city of residence
|
|
14
|
+
* @type {string}
|
|
15
|
+
* @memberof ContactPerson
|
|
16
|
+
*/
|
|
17
|
+
city?: string | null
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {CountryIso2Code}
|
|
21
|
+
* @memberof ContactPerson
|
|
22
|
+
*/
|
|
23
|
+
country?: CountryIso2CodeType | null
|
|
24
|
+
/**
|
|
25
|
+
* Contact person's email address
|
|
26
|
+
* @type {string}
|
|
27
|
+
* @memberof ContactPerson
|
|
28
|
+
*/
|
|
29
|
+
email: string
|
|
30
|
+
/**
|
|
31
|
+
* Contact person's first name
|
|
32
|
+
* @type {string}
|
|
33
|
+
* @memberof ContactPerson
|
|
34
|
+
*/
|
|
35
|
+
firstName: string
|
|
36
|
+
/**
|
|
37
|
+
* Set the prefered language to use when contacting the contact person for booking related communication(s).
|
|
38
|
+
* @type {string}
|
|
39
|
+
* @memberof ContactPerson
|
|
40
|
+
*/
|
|
41
|
+
lang?: ContactPersonLang
|
|
42
|
+
/**
|
|
43
|
+
* Contact person's last name
|
|
44
|
+
* @type {string}
|
|
45
|
+
* @memberof ContactPerson
|
|
46
|
+
*/
|
|
47
|
+
lastName: string
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* @type {CountryIso2Code}
|
|
51
|
+
* @memberof ContactPerson
|
|
52
|
+
*/
|
|
53
|
+
nationality: CountryIso2CodeType
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @type {ContactPersonOrganization}
|
|
57
|
+
* @memberof ContactPerson
|
|
58
|
+
*/
|
|
59
|
+
organization?: ContactPersonOrganization | null
|
|
60
|
+
/**
|
|
61
|
+
* Contact person's phone number
|
|
62
|
+
* @type {string}
|
|
63
|
+
* @memberof ContactPerson
|
|
64
|
+
*/
|
|
65
|
+
phone: string
|
|
66
|
+
/**
|
|
67
|
+
* Contact person's remarks
|
|
68
|
+
* @type {string}
|
|
69
|
+
* @memberof ContactPerson
|
|
70
|
+
*/
|
|
71
|
+
remarks?: string
|
|
72
|
+
/**
|
|
73
|
+
* Title of the contact person
|
|
74
|
+
* @type {string}
|
|
75
|
+
* @memberof ContactPerson
|
|
76
|
+
*/
|
|
77
|
+
salutation?: ContactPersonSalutation
|
|
78
|
+
/**
|
|
79
|
+
* Contact person's state of residence
|
|
80
|
+
* @type {string}
|
|
81
|
+
* @memberof ContactPerson
|
|
82
|
+
*/
|
|
83
|
+
state?: string | null
|
|
84
|
+
/**
|
|
85
|
+
* Contact person's postal code of residence
|
|
86
|
+
* @type {string}
|
|
87
|
+
* @memberof ContactPerson
|
|
88
|
+
*/
|
|
89
|
+
zipCode?: string | null
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export enum ContactPersonLangEnum {
|
|
93
|
+
DeDe = 'de-DE',
|
|
94
|
+
EnUs = 'en-US',
|
|
95
|
+
EsEs = 'es-ES',
|
|
96
|
+
FrFr = 'fr-FR',
|
|
97
|
+
ItIt = 'it-IT',
|
|
98
|
+
NlNl = 'nl-NL',
|
|
99
|
+
PtPt = 'pt-PT',
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
type ContactPersonLang = `${ContactPersonLangEnum}`
|
|
103
|
+
|
|
104
|
+
export enum ContactPersonSalutationEnum {
|
|
105
|
+
Dr = 'dr',
|
|
106
|
+
Mr = 'mr',
|
|
107
|
+
Mrs = 'mrs',
|
|
108
|
+
Ms = 'ms',
|
|
109
|
+
NotSpecified = 'notSpecified',
|
|
110
|
+
Prof = 'prof',
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type ContactPersonSalutation = `${ContactPersonSalutationEnum}`
|
|
114
|
+
|
|
115
|
+
export interface ContactPersonOrganization {
|
|
116
|
+
/**
|
|
117
|
+
* Address of the organization
|
|
118
|
+
* @type {string}
|
|
119
|
+
* @memberof ContactPersonOrganization
|
|
120
|
+
*/
|
|
121
|
+
address: string
|
|
122
|
+
/**
|
|
123
|
+
* City of the organization
|
|
124
|
+
* @type {string}
|
|
125
|
+
* @memberof ContactPersonOrganization
|
|
126
|
+
*/
|
|
127
|
+
city: string
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* @type {CountryIso2Code}
|
|
131
|
+
* @memberof ContactPersonOrganization
|
|
132
|
+
*/
|
|
133
|
+
country: CountryIso2CodeType
|
|
134
|
+
/**
|
|
135
|
+
* Name of the organization
|
|
136
|
+
* @type {string}
|
|
137
|
+
* @memberof ContactPersonOrganization
|
|
138
|
+
*/
|
|
139
|
+
name: string
|
|
140
|
+
/**
|
|
141
|
+
* State of the organization
|
|
142
|
+
* @type {string}
|
|
143
|
+
* @memberof ContactPersonOrganization
|
|
144
|
+
*/
|
|
145
|
+
state?: string | null
|
|
146
|
+
/**
|
|
147
|
+
* VAT Number of the organization
|
|
148
|
+
* @type {string}
|
|
149
|
+
* @memberof ContactPersonOrganization
|
|
150
|
+
*/
|
|
151
|
+
vatNumber?: string | null
|
|
152
|
+
/**
|
|
153
|
+
* ZIP Code of the organization
|
|
154
|
+
* @type {string}
|
|
155
|
+
* @memberof ContactPersonOrganization
|
|
156
|
+
*/
|
|
157
|
+
zipCode: string
|
|
158
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface EventMetadata {
|
|
2
|
+
/**
|
|
3
|
+
* End date of the event formatted as YYYY-MM-DD.
|
|
4
|
+
* @type {string}
|
|
5
|
+
* @memberof EventMetadata
|
|
6
|
+
*/
|
|
7
|
+
dateEnd?: string
|
|
8
|
+
/**
|
|
9
|
+
* Start date of the event formatted as YYYY-MM-DD.
|
|
10
|
+
* @type {string}
|
|
11
|
+
* @memberof EventMetadata
|
|
12
|
+
*/
|
|
13
|
+
dateStart?: string
|
|
14
|
+
/**
|
|
15
|
+
* Unique id of the event
|
|
16
|
+
* @type {string}
|
|
17
|
+
* @memberof EventMetadata
|
|
18
|
+
*/
|
|
19
|
+
id?: string
|
|
20
|
+
/**
|
|
21
|
+
* Image URL of the event
|
|
22
|
+
* @type {string}
|
|
23
|
+
* @memberof EventMetadata
|
|
24
|
+
*/
|
|
25
|
+
imageUrl?: string
|
|
26
|
+
/**
|
|
27
|
+
* Name of the event
|
|
28
|
+
* @type {string}
|
|
29
|
+
* @memberof EventMetadata
|
|
30
|
+
*/
|
|
31
|
+
name?: string
|
|
32
|
+
/**
|
|
33
|
+
* Unique slug of the event
|
|
34
|
+
* @type {string}
|
|
35
|
+
* @memberof EventMetadata
|
|
36
|
+
*/
|
|
37
|
+
slug?: string
|
|
38
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface HotelImage {
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @type {string}
|
|
5
|
+
* @memberof HotelImage
|
|
6
|
+
*/
|
|
7
|
+
caption?: string | null
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @type {boolean}
|
|
11
|
+
* @memberof HotelImage
|
|
12
|
+
*/
|
|
13
|
+
isHeroImage: boolean
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @type {string}
|
|
17
|
+
* @memberof HotelImage
|
|
18
|
+
*/
|
|
19
|
+
l: string
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @type {string}
|
|
23
|
+
* @memberof HotelImage
|
|
24
|
+
*/
|
|
25
|
+
m: string
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
* @type {string}
|
|
29
|
+
* @memberof HotelImage
|
|
30
|
+
*/
|
|
31
|
+
s: string
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @type {string}
|
|
35
|
+
* @memberof HotelImage
|
|
36
|
+
*/
|
|
37
|
+
xl: string
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @type {string}
|
|
41
|
+
* @memberof HotelImage
|
|
42
|
+
*/
|
|
43
|
+
xs: string
|
|
44
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🛑 DEPRECATED - Hotel images details.
|
|
3
|
+
*
|
|
4
|
+
* In 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.
|
|
5
|
+
*
|
|
6
|
+
* e.g.: https://s3.eu-west-3.amazonaws.com/revolugo/hotels/yhKY/images/highres/0.jpg
|
|
7
|
+
* @export
|
|
8
|
+
* @interface HotelImages
|
|
9
|
+
*/
|
|
10
|
+
export interface HotelImages {
|
|
11
|
+
/**
|
|
12
|
+
* Number of images.
|
|
13
|
+
* @type {number}
|
|
14
|
+
* @memberof HotelImages
|
|
15
|
+
*/
|
|
16
|
+
count?: number | null
|
|
17
|
+
/**
|
|
18
|
+
* Whether images exist in highres format.
|
|
19
|
+
* @type {boolean}
|
|
20
|
+
* @memberof HotelImages
|
|
21
|
+
*/
|
|
22
|
+
highres?: boolean | null
|
|
23
|
+
/**
|
|
24
|
+
* Whether images exist in lowres format.
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
* @memberof HotelImages
|
|
27
|
+
*/
|
|
28
|
+
lowres?: boolean | null
|
|
29
|
+
/**
|
|
30
|
+
* Base URL for the images.
|
|
31
|
+
* @type {string}
|
|
32
|
+
* @memberof HotelImages
|
|
33
|
+
*/
|
|
34
|
+
prefix?: string | null
|
|
35
|
+
/**
|
|
36
|
+
* This parameter usually represents the extension of the image (e.g.: .jpg, .png)
|
|
37
|
+
* @type {string}
|
|
38
|
+
* @memberof HotelImages
|
|
39
|
+
*/
|
|
40
|
+
suffix?: string | null
|
|
41
|
+
/**
|
|
42
|
+
* Whether images exist in thumb format (for thumbnails preview).
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
* @memberof HotelImages
|
|
45
|
+
*/
|
|
46
|
+
thumb?: boolean | null
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { EventMetadata } from './event-metadata.ts'
|
|
2
|
+
import type { SourceMarket } from './source-market.ts'
|
|
3
|
+
|
|
4
|
+
export interface HotelOfferRequest {
|
|
5
|
+
/**
|
|
6
|
+
* This endpoint allows to find the geo-coordinates of a known address, place or locality via this free-text address query field. This address will eventually be geocoded into a latitude/longitude pair.
|
|
7
|
+
*
|
|
8
|
+
* <b style="color: red;">If address cannot be geocoded (transformed into a latitude/longitude pair) provided **latitude** and **longitude** parameters will be used as fallback.</b>
|
|
9
|
+
* @type {string}
|
|
10
|
+
*/
|
|
11
|
+
address?: string | null
|
|
12
|
+
/**
|
|
13
|
+
* The total number of adults who will be staying in the property.
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
adultCount: number
|
|
17
|
+
/**
|
|
18
|
+
* Date of check-in formatted as YYYY-MM-DD.
|
|
19
|
+
* @type {string}
|
|
20
|
+
*/
|
|
21
|
+
checkInDate: string
|
|
22
|
+
/**
|
|
23
|
+
* Date of check-out formatted as YYYY-MM-DD.
|
|
24
|
+
* @type {string}
|
|
25
|
+
*/
|
|
26
|
+
checkOutDate: string
|
|
27
|
+
/**
|
|
28
|
+
* A comma-separated list of child ages (0 up to 17). e.g.: "3,7" represents 2 children respectively 3 and 7 years old.
|
|
29
|
+
* @type {string}
|
|
30
|
+
*/
|
|
31
|
+
children?: string | null
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @type {EventMetadata}
|
|
35
|
+
*/
|
|
36
|
+
eventMetadata?: EventMetadata | null
|
|
37
|
+
/**
|
|
38
|
+
* Search location latitude.
|
|
39
|
+
*
|
|
40
|
+
* <b style="color: red;"> when no address parameter passed.</b>
|
|
41
|
+
* @type {number}
|
|
42
|
+
*/
|
|
43
|
+
latitude?: number | null
|
|
44
|
+
/**
|
|
45
|
+
* Search location longitude.
|
|
46
|
+
*
|
|
47
|
+
* <b style="color: red;"> when no address parameter passed.</b>
|
|
48
|
+
* @type {number}
|
|
49
|
+
*/
|
|
50
|
+
longitude?: number | null
|
|
51
|
+
/**
|
|
52
|
+
* The total number of rooms requested for the stay. Results may display offers matching a different room count than the requested one, however those results will always provide enough occupancy for the total guest count needed.
|
|
53
|
+
*
|
|
54
|
+
* Constraint: The **room_count** cannot be greater than the requested guest count (adult and children guests) and the minimum **room_count** cannot be less than the total guest count (adult and children guests) divided by 4, meaning that the maximum number of guest in a single room cannot be greeater than 4.
|
|
55
|
+
* @type {number}
|
|
56
|
+
*/
|
|
57
|
+
roomCount: number
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @type {SourceMarket}
|
|
61
|
+
*/
|
|
62
|
+
sourceMarket: SourceMarket
|
|
63
|
+
/**
|
|
64
|
+
* id of the **Hotel Offer Request**
|
|
65
|
+
* @type {string}
|
|
66
|
+
*/
|
|
67
|
+
id: string
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type HotelOfferRequestCreate = Pick<
|
|
71
|
+
HotelOfferRequest,
|
|
72
|
+
| 'address'
|
|
73
|
+
| 'adultCount'
|
|
74
|
+
| 'checkInDate'
|
|
75
|
+
| 'checkOutDate'
|
|
76
|
+
| 'children'
|
|
77
|
+
| 'eventMetadata'
|
|
78
|
+
| 'latitude'
|
|
79
|
+
| 'longitude'
|
|
80
|
+
| 'roomCount'
|
|
81
|
+
| 'sourceMarket'
|
|
82
|
+
>
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { Currency } from '#constants'
|
|
2
|
+
import type { Amenities } from './amenity.ts'
|
|
3
|
+
import type { HotelImage } from './hotel-image.ts'
|
|
4
|
+
import type { HotelImages } from './hotel-images.ts'
|
|
5
|
+
import type { HotelReviewRating } from './hotel-review-rating.ts'
|
|
6
|
+
import type { HotelRoomOffer } from './hotel-room-offer.ts'
|
|
7
|
+
import type { Tag } from './tag.ts'
|
|
8
|
+
import type { TravelTimeItem } from './travel-times.ts'
|
|
9
|
+
|
|
10
|
+
export interface HotelOffer {
|
|
11
|
+
/**
|
|
12
|
+
* Hotel address.
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @memberof HotelOffer
|
|
15
|
+
*/
|
|
16
|
+
address?: string | null
|
|
17
|
+
/**
|
|
18
|
+
* Second part of hotel address.
|
|
19
|
+
* @type {string}
|
|
20
|
+
* @memberof HotelOffer
|
|
21
|
+
*/
|
|
22
|
+
address2?: string | null
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @type {Amenities}
|
|
26
|
+
* @memberof HotelOffer
|
|
27
|
+
*/
|
|
28
|
+
amenities?: Amenities | null
|
|
29
|
+
/**
|
|
30
|
+
* Check in time of the hotel.
|
|
31
|
+
* @type {string}
|
|
32
|
+
* @memberof HotelOffer
|
|
33
|
+
*/
|
|
34
|
+
checkInTime?: string | null
|
|
35
|
+
/**
|
|
36
|
+
* Check out time of the hotel.
|
|
37
|
+
* @type {string}
|
|
38
|
+
* @memberof HotelOffer
|
|
39
|
+
*/
|
|
40
|
+
checkOutTime?: string | null
|
|
41
|
+
/**
|
|
42
|
+
* City
|
|
43
|
+
* @type {string}
|
|
44
|
+
* @memberof HotelOffer
|
|
45
|
+
*/
|
|
46
|
+
city?: string | null
|
|
47
|
+
/**
|
|
48
|
+
* Country
|
|
49
|
+
* @type {string}
|
|
50
|
+
* @memberof HotelOffer
|
|
51
|
+
*/
|
|
52
|
+
country?: string | null
|
|
53
|
+
/**
|
|
54
|
+
* Hotel country code in ISO2.
|
|
55
|
+
* @type {string}
|
|
56
|
+
* @memberof HotelOffer
|
|
57
|
+
*/
|
|
58
|
+
countryCode?: string | null
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @type {CurrencyBookingApiClient}
|
|
62
|
+
* @memberof HotelOffer
|
|
63
|
+
*/
|
|
64
|
+
currency?: Currency
|
|
65
|
+
/**
|
|
66
|
+
* Hotel description.
|
|
67
|
+
* @type {string}
|
|
68
|
+
* @memberof HotelOffer
|
|
69
|
+
*/
|
|
70
|
+
description?: string | null
|
|
71
|
+
/**
|
|
72
|
+
* Distance from a requested location, expressed in meters
|
|
73
|
+
* @type {number}
|
|
74
|
+
* @memberof HotelOffer
|
|
75
|
+
*/
|
|
76
|
+
distance?: number | null
|
|
77
|
+
/**
|
|
78
|
+
* Hotel email.
|
|
79
|
+
* @type {string}
|
|
80
|
+
* @memberof HotelOffer
|
|
81
|
+
*/
|
|
82
|
+
email?: string | null
|
|
83
|
+
/**
|
|
84
|
+
* Hotel fax number.
|
|
85
|
+
* @type {string}
|
|
86
|
+
* @memberof HotelOffer
|
|
87
|
+
*/
|
|
88
|
+
fax?: string | null
|
|
89
|
+
/**
|
|
90
|
+
* ⚠️ Cached images of the hotel. May be empty, use the endpoint /hotels/{id}/images to get the latest images.
|
|
91
|
+
*
|
|
92
|
+
* List of hotel images in various sizes featuring an indicator for the primary (hero) image
|
|
93
|
+
* @type {Array<HotelImageApi>}
|
|
94
|
+
* @memberof HotelOffer
|
|
95
|
+
*/
|
|
96
|
+
hotelImages: HotelImage[]
|
|
97
|
+
/**
|
|
98
|
+
* 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.
|
|
99
|
+
* @type {Array<HotelReviewRating>}
|
|
100
|
+
* @memberof HotelOffer
|
|
101
|
+
*/
|
|
102
|
+
hotelReviewRatings?: HotelReviewRating[] | null
|
|
103
|
+
/**
|
|
104
|
+
* Hotel id.
|
|
105
|
+
* @type {string}
|
|
106
|
+
* @memberof HotelOffer
|
|
107
|
+
*/
|
|
108
|
+
id: string
|
|
109
|
+
/**
|
|
110
|
+
*
|
|
111
|
+
* @type {HotelImages}
|
|
112
|
+
* @memberof HotelOffer
|
|
113
|
+
*/
|
|
114
|
+
images?: HotelImages | null
|
|
115
|
+
/**
|
|
116
|
+
* Hotel latitude.
|
|
117
|
+
* @type {number}
|
|
118
|
+
* @memberof HotelOffer
|
|
119
|
+
*/
|
|
120
|
+
latitude: number
|
|
121
|
+
/**
|
|
122
|
+
* Hotel longitude.
|
|
123
|
+
* @type {number}
|
|
124
|
+
* @memberof HotelOffer
|
|
125
|
+
*/
|
|
126
|
+
longitude: number
|
|
127
|
+
/**
|
|
128
|
+
* Hotel name.
|
|
129
|
+
* @type {string}
|
|
130
|
+
* @memberof HotelOffer
|
|
131
|
+
*/
|
|
132
|
+
name: string
|
|
133
|
+
/**
|
|
134
|
+
* Hotel phone number.
|
|
135
|
+
* @type {string}
|
|
136
|
+
* @memberof HotelOffer
|
|
137
|
+
*/
|
|
138
|
+
phone?: string | null
|
|
139
|
+
/**
|
|
140
|
+
* Internal policy of the hotel.
|
|
141
|
+
* @type {string}
|
|
142
|
+
* @memberof HotelOffer
|
|
143
|
+
*/
|
|
144
|
+
policy?: string | null
|
|
145
|
+
/**
|
|
146
|
+
* Hotel address postal code.
|
|
147
|
+
* @type {string}
|
|
148
|
+
* @memberof HotelOffer
|
|
149
|
+
*/
|
|
150
|
+
postalCode?: string | null
|
|
151
|
+
/**
|
|
152
|
+
* Hotel Star rating.
|
|
153
|
+
* @type {any}
|
|
154
|
+
* @memberof HotelOffer
|
|
155
|
+
*/
|
|
156
|
+
// oxlint-disable-next-line no-explicit-any
|
|
157
|
+
rating?: any | null
|
|
158
|
+
/**
|
|
159
|
+
* Hotel address state.
|
|
160
|
+
* @type {string}
|
|
161
|
+
* @memberof HotelOffer
|
|
162
|
+
*/
|
|
163
|
+
state?: string | null
|
|
164
|
+
/**
|
|
165
|
+
* TripAdvisor property id. When applicable.
|
|
166
|
+
* @type {string}
|
|
167
|
+
* @memberof HotelOffer
|
|
168
|
+
*/
|
|
169
|
+
taId?: string | null
|
|
170
|
+
/**
|
|
171
|
+
* Hotel timezone.
|
|
172
|
+
* @type {string}
|
|
173
|
+
* @memberof HotelOffer
|
|
174
|
+
*/
|
|
175
|
+
timezone: string
|
|
176
|
+
/**
|
|
177
|
+
*
|
|
178
|
+
* @type {Array<TravelTimeItem>}
|
|
179
|
+
* @memberof HotelOffer
|
|
180
|
+
*/
|
|
181
|
+
venues?: TravelTimeItem[]
|
|
182
|
+
/**
|
|
183
|
+
* Hotel website url.
|
|
184
|
+
* @type {string}
|
|
185
|
+
* @memberof HotelOffer
|
|
186
|
+
*/
|
|
187
|
+
website?: string | null
|
|
188
|
+
/**
|
|
189
|
+
*
|
|
190
|
+
* @type {Array<HotelRoomOffer>}
|
|
191
|
+
* @memberof HotelOffer
|
|
192
|
+
*/
|
|
193
|
+
hotelRoomOffers: HotelRoomOffer[]
|
|
194
|
+
/**
|
|
195
|
+
*
|
|
196
|
+
* @type {Array<Tag>}
|
|
197
|
+
* @memberof HotelOffer
|
|
198
|
+
*/
|
|
199
|
+
tags?: Tag[]
|
|
200
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface HotelReviewRating {
|
|
2
|
+
/**
|
|
3
|
+
* Category of the collected reviews for the Hotel.
|
|
4
|
+
* @type {string}
|
|
5
|
+
* @memberof HotelReviewRating
|
|
6
|
+
*/
|
|
7
|
+
category?: string | null
|
|
8
|
+
/**
|
|
9
|
+
* Rating of the collected review for the Hotel.
|
|
10
|
+
* @type {number}
|
|
11
|
+
* @memberof HotelReviewRating
|
|
12
|
+
*/
|
|
13
|
+
rating: number
|
|
14
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { EventMetadata } from './event-metadata.ts'
|
|
2
|
+
import type { SourceMarket } from './source-market.ts'
|
|
3
|
+
|
|
4
|
+
export interface HotelRoomOfferRequest {
|
|
5
|
+
/**
|
|
6
|
+
* Requested number of adult(s) to be accommodated.
|
|
7
|
+
* @type {number}
|
|
8
|
+
* @memberof HotelRoomOfferRequest
|
|
9
|
+
*/
|
|
10
|
+
adultCount: number
|
|
11
|
+
/**
|
|
12
|
+
* Check-in date formatted as `YYYY-MM-DD`.
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @memberof HotelRoomOfferRequest
|
|
15
|
+
*/
|
|
16
|
+
checkInDate: string
|
|
17
|
+
/**
|
|
18
|
+
* Check-out date formatted as `YYYY-MM-DD`.
|
|
19
|
+
* @type {string}
|
|
20
|
+
* @memberof HotelRoomOfferRequest
|
|
21
|
+
*/
|
|
22
|
+
checkOutDate: string
|
|
23
|
+
/**
|
|
24
|
+
* A comma-separated list of child ages (0 up to 17). e.g.: "3,7" represents 2 children respectively 3 and 7 years old.
|
|
25
|
+
* @type {string}
|
|
26
|
+
* @memberof HotelRoomOfferRequest
|
|
27
|
+
*/
|
|
28
|
+
children?: string | null
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @type {EventMetadata}
|
|
32
|
+
* @memberof HotelRoomOfferRequest
|
|
33
|
+
*/
|
|
34
|
+
eventMetadata?: EventMetadata | null
|
|
35
|
+
/**
|
|
36
|
+
* id of requested hotel
|
|
37
|
+
* @type {string}
|
|
38
|
+
* @memberof HotelRoomOfferRequest
|
|
39
|
+
*/
|
|
40
|
+
hotelId: string
|
|
41
|
+
/**
|
|
42
|
+
* Number of room(s) requested. Results may display offers matching a different room count than the requested one, however those results will always provide enough occupancy for the total guest count needed.
|
|
43
|
+
* @type {number}
|
|
44
|
+
* @memberof HotelRoomOfferRequest
|
|
45
|
+
*/
|
|
46
|
+
roomCount: number
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @type {SourceMarket}
|
|
50
|
+
* @memberof HotelRoomOfferRequest
|
|
51
|
+
*/
|
|
52
|
+
sourceMarket: SourceMarket
|
|
53
|
+
/**
|
|
54
|
+
* Date of the **Hotel Room Offer Request** creation
|
|
55
|
+
* @type {string}
|
|
56
|
+
* @memberof HotelRoomOfferRequest
|
|
57
|
+
*/
|
|
58
|
+
createdAt: string
|
|
59
|
+
/**
|
|
60
|
+
* id of the **Hotel Room Offer Request**
|
|
61
|
+
* @type {string}
|
|
62
|
+
* @memberof HotelRoomOfferRequest
|
|
63
|
+
*/
|
|
64
|
+
id: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export type HotelRoomOfferRequestCreate = Pick<
|
|
68
|
+
HotelRoomOfferRequest,
|
|
69
|
+
| 'adultCount'
|
|
70
|
+
| 'checkInDate'
|
|
71
|
+
| 'checkOutDate'
|
|
72
|
+
| 'children'
|
|
73
|
+
| 'eventMetadata'
|
|
74
|
+
| 'hotelId'
|
|
75
|
+
| 'roomCount'
|
|
76
|
+
| 'sourceMarket'
|
|
77
|
+
>
|