@findhotel/sapi 0.23.10 → 0.23.13

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/README.md CHANGED
@@ -5,9 +5,10 @@
5
5
  2. [Tutorials](#tutorials)
6
6
  1. [Getting Started](#getting-started)
7
7
  2. [Usage](#usage)
8
- 1. [Hotels search](#tutorial-hotels-search)
9
- 2. [Get rooms data](#tutorial-get-rooms)
8
+ 1. [Search](#tutorial-hotels-search)
9
+ 2. [Get hotel's rooms offers](#tutorial-get-rooms)
10
10
  3. [Get hotel](#tutorial-get-hotel)
11
+ 4. [Get hotel offers](#tutorial-get-offers)
11
12
  3. [API Reference](#api-reference)
12
13
  1. [SAPI client](#sapi-client)
13
14
  1. [Supported options](#client-options)
@@ -25,6 +26,10 @@
25
26
  5. [`hotel()` method](#hotel-method)
26
27
  1. [Hotel parameters](#hotel-parameters)
27
28
  2. [Response](#hotel-response)
29
+ 6. [`offers()` method](#offers-method)
30
+ 1. [Offers parameters](#hotel-parameters)
31
+ 2. [Callbacks](#offers-callbacks)
32
+ 3. [Response](#offers-response)
28
33
 
29
34
  SDK provides a high level TypeScript/JavaScript API for searching
30
35
  hotels, hotels' offers and rooms.
@@ -80,7 +85,7 @@ For full documentation and supported options check [client api](#sapi-client).
80
85
 
81
86
  <a id="tutorial-hotels-search"></a>
82
87
 
83
- ### Hotels search
88
+ ### Search
84
89
 
85
90
  Search for the hotels and hotels' offers:
86
91
 
@@ -93,19 +98,19 @@ Search for the hotels and hotels' offers:
93
98
 
94
99
  const callbacks = {
95
100
  onStart: (response) => {
96
- console.log('Search started', response)
101
+ log('Search started', response)
97
102
  },
98
103
  onAnchorReceived: (response) => {
99
- console.log('Anchor received', response)
104
+ log('Anchor received', response)
100
105
  },
101
106
  onHotelsReceived: (response) => {
102
- console.log('Hotels received', response)
107
+ log('Hotels received', response)
103
108
  },
104
109
  onOffersReceived: (response) => {
105
- console.log('Offers received', response)
110
+ log('Offers received', response)
106
111
  },
107
112
  onComplete: (response) => {
108
- console.log('Search completed', response)
113
+ log('Search completed', response)
109
114
  }
110
115
  }
111
116
 
@@ -116,9 +121,9 @@ For full documentation, check [search method api](#search-method).
116
121
 
117
122
  <a id="tutorial-get-rooms"></a>
118
123
 
119
- ### Get rooms data
124
+ ### Get hotel's rooms offers
120
125
 
121
- Get rooms and rooms' offers:
126
+ Get rooms data and rooms' offers:
122
127
 
123
128
  const rooms = await sapiClient.rooms({
124
129
  hotelId: '47319',
@@ -141,6 +146,33 @@ Get hotel by id:
141
146
  For full documentation, check [hotel method api](#hotel-method).
142
147
 
143
148
 
149
+ <a id="tutorial-get-offers"></a>
150
+
151
+ ### Get hotel offers
152
+
153
+ Get offers for a single hotel:
154
+
155
+ const parameters = {
156
+ hotelId: '1196472'
157
+ }
158
+
159
+ const callbacks = {
160
+ onStart: (response) => {
161
+ log('Offers started', response)
162
+ },
163
+ onOffersReceived: (response) => {
164
+ log('Offers received', response)
165
+ },
166
+ onComplete: (response) => {
167
+ log('Offers completed', response)
168
+ }
169
+ }
170
+
171
+ const offers = await sapiClient.offers(parameters, callbacks)
172
+
173
+ For full documentation, check [offers method api](#offers-method).
174
+
175
+
144
176
  <a id="api-reference"></a>
145
177
 
146
178
  # API Reference
@@ -175,7 +207,7 @@ Create SAPI client:
175
207
  },
176
208
  callbacks: {
177
209
  onConfigReceived: (config) => {
178
- console.log('Config received', config)
210
+ log('Config received', config)
179
211
  }
180
212
  }
181
213
  })
@@ -528,19 +560,19 @@ Search method receives callbacks object as the second argument:
528
560
 
529
561
  const callbacks = {
530
562
  onStart: (response) => {
531
- console.log('Search started', response)
563
+ log('Search started', response)
532
564
  },
533
565
  onAnchorReceived: (response) => {
534
- console.log('Anchor received', response)
566
+ log('Anchor received', response)
535
567
  },
536
568
  onHotelsReceived: (response) => {
537
- console.log('Hotels received', response)
569
+ log('Hotels received', response)
538
570
  },
539
571
  onOffersReceived: (response) => {
540
- console.log('Offers received', response)
572
+ log('Offers received', response)
541
573
  },
542
574
  onComplete: (response) => {
543
- console.log('Search completed', response)
575
+ log('Search completed', response)
544
576
  }
545
577
  }
546
578
 
@@ -649,20 +681,20 @@ Suggest provides autosuggestions for a given query
649
681
 
650
682
  [
651
683
  {
652
- highlightValue: "<em>London</em>",
653
- objectID: "158584",
654
- objectType: "place",
655
- placeDisplayName: "United Kingdom",
656
- placeTypeName: "city",
657
- value: "London"
684
+ "highlightValue": "<em>London</em>",
685
+ "objectID": "158584",
686
+ "objectType": "place",
687
+ "placeDisplayName": "United Kingdom",
688
+ "placeTypeName": "city",
689
+ "value": "London"
658
690
  },
659
691
  {
660
- highlightValue: "<em>London</em> Heathrow Airport",
661
- objectID: "167733",
662
- objectType: "place",
663
- placeDisplayName: "London, United Kingdom",
664
- placeTypeName: "airport",
665
- value: "London Heathrow Airport"
692
+ "highlightValue": "<em>London</em> Heathrow Airport",
693
+ "objectID": "167733",
694
+ "objectType": "place",
695
+ "placeDisplayName": "London, United Kingdom",
696
+ "placeTypeName": "airport",
697
+ "value": "London Heathrow Airport"
666
698
  }
667
699
  ]
668
700
 
@@ -670,20 +702,20 @@ Suggest provides autosuggestions for a given query
670
702
 
671
703
  [
672
704
  {
673
- highlightValue: "Park Plaza Westminster Bridge <em>London</em>",
674
- objectID: "1546646",
675
- objectType: "hotel",
676
- placeDisplayName: "London, United Kingdom",
677
- placeTypeName: "property",
678
- value: "Park Plaza Westminster Bridge London"
705
+ "highlightValue": "Park Plaza Westminster Bridge <em>London</em>",
706
+ "objectID": "1546646",
707
+ "objectType": "hotel",
708
+ "placeDisplayName": "London, United Kingdom",
709
+ "placeTypeName": "property",
710
+ "value": "Park Plaza Westminster Bridge London"
679
711
  },
680
712
  {
681
- highlightValue: "Hampton by Hilton <em>London</em> Stansted Airport",
682
- objectID: "3333916",
683
- objectType: "hotel",
684
- placeDisplayName: "United Kingdom",
685
- placeTypeName: "property",
686
- value: "Hampton by Hilton London Stansted Airport"
713
+ "highlightValue": "Hampton by Hilton <em>London</em> Stansted Airport",
714
+ "objectID": "3333916",
715
+ "objectType": "hotel",
716
+ "placeDisplayName": "United Kingdom",
717
+ "placeTypeName": "property",
718
+ "value": "Hampton by Hilton London Stansted Airport"
687
719
  }
688
720
  ]
689
721
 
@@ -937,3 +969,268 @@ An example of the response for request with `hotelId` 1196472 and "pt-BR" `langu
937
969
  "displayAddress": "Piet Heinkade 11, Oostelijk Havengebied, Amsterdã, Holanda"
938
970
  }
939
971
 
972
+
973
+ <a id="offers-method"></a>
974
+
975
+ ## `offers()` method
976
+
977
+ Retrieves offers for a single hotel by provided parameters
978
+
979
+ const parameters = {
980
+ hotelId: '1196472',
981
+ checkIn: '2022-10-10',
982
+ checkOut: '2022-10-11',
983
+ rooms: '2'
984
+ }
985
+
986
+ const callbacks = {
987
+ onStart: (response) => {
988
+ log('Offers started', response)
989
+ },
990
+ onOffersReceived: (response) => {
991
+ log('Offers received', response)
992
+ },
993
+ onComplete: (response) => {
994
+ log('Offers completed', response)
995
+ }
996
+ }
997
+
998
+ const offers = await sapiClient.offers(parameters, callbacks)
999
+
1000
+
1001
+ <a id="hotel-parameters"></a>
1002
+
1003
+ ### Offers parameters
1004
+
1005
+ <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
1006
+
1007
+
1008
+ <colgroup>
1009
+ <col class="org-left" />
1010
+
1011
+ <col class="org-left" />
1012
+
1013
+ <col class="org-left" />
1014
+
1015
+ <col class="org-left" />
1016
+
1017
+ <col class="org-left" />
1018
+ </colgroup>
1019
+ <thead>
1020
+ <tr>
1021
+ <th scope="col" class="org-left">name</th>
1022
+ <th scope="col" class="org-left">type</th>
1023
+ <th scope="col" class="org-left">description</th>
1024
+ <th scope="col" class="org-left">required</th>
1025
+ <th scope="col" class="org-left">example</th>
1026
+ </tr>
1027
+ </thead>
1028
+
1029
+ <tbody>
1030
+ <tr>
1031
+ <td class="org-left">`hotelId`</td>
1032
+ <td class="org-left">`string`</td>
1033
+ <td class="org-left">Hotel Id</td>
1034
+ <td class="org-left">yes</td>
1035
+ <td class="org-left">`1196472`</td>
1036
+ </tr>
1037
+
1038
+
1039
+ <tr>
1040
+ <td class="org-left">`checkIn`</td>
1041
+ <td class="org-left">`string`</td>
1042
+ <td class="org-left">Check in date (YYYY-MM-DD) (SDK generates default date if no provided)</td>
1043
+ <td class="org-left">no</td>
1044
+ <td class="org-left">`2022-10-10`</td>
1045
+ </tr>
1046
+
1047
+
1048
+ <tr>
1049
+ <td class="org-left">`checkOut`</td>
1050
+ <td class="org-left">`string`</td>
1051
+ <td class="org-left">Check out date (YYYY-MM-DD)) (SDK generates default date if no provided)</td>
1052
+ <td class="org-left">no</td>
1053
+ <td class="org-left">`2022-10-11`</td>
1054
+ </tr>
1055
+
1056
+
1057
+ <tr>
1058
+ <td class="org-left">`rooms`</td>
1059
+ <td class="org-left">`string`</td>
1060
+ <td class="org-left">[Rooms configuration](https://github.com/FindHotel/search-data-pipelines/wiki/Glossary#rooms-configuration)</td>
1061
+ <td class="org-left">no</td>
1062
+ <td class="org-left">`2`</td>
1063
+ </tr>
1064
+
1065
+
1066
+ <tr>
1067
+ <td class="org-left">`searchId`</td>
1068
+ <td class="org-left">`string`</td>
1069
+ <td class="org-left">SearchId override (SDK generates a new one if no provided)</td>
1070
+ <td class="org-left">no</td>
1071
+ <td class="org-left">`08230dfcc5f0fb95caaa82ce559ea60c4a975d6f`</td>
1072
+ </tr>
1073
+
1074
+
1075
+ <tr>
1076
+ <td class="org-left">`cugDeals`</td>
1077
+ <td class="org-left">`string[]`</td>
1078
+ <td class="org-left">Codes of closed user group deals to retrieve offers</td>
1079
+ <td class="org-left">no</td>
1080
+ <td class="org-left">`['signed_in', 'offline']`</td>
1081
+ </tr>
1082
+
1083
+
1084
+ <tr>
1085
+ <td class="org-left">`freeCancellation`</td>
1086
+ <td class="org-left">`boolean`</td>
1087
+ <td class="org-left">Promote offers with free cancelation (default `false`)</td>
1088
+ <td class="org-left">no</td>
1089
+ <td class="org-left">`true`</td>
1090
+ </tr>
1091
+
1092
+
1093
+ <tr>
1094
+ <td class="org-left">`isAnchor`</td>
1095
+ <td class="org-left">`boolean`</td>
1096
+ <td class="org-left">Anchor/Non anchor hotel (default `false`)</td>
1097
+ <td class="org-left">no</td>
1098
+ <td class="org-left">`true`</td>
1099
+ </tr>
1100
+
1101
+
1102
+ <tr>
1103
+ <td class="org-left">`getAllOffers`</td>
1104
+ <td class="org-left">`boolean`</td>
1105
+ <td class="org-left">Get all/only top offers (default `false`)</td>
1106
+ <td class="org-left">no</td>
1107
+ <td class="org-left">`true`</td>
1108
+ </tr>
1109
+
1110
+
1111
+ <tr>
1112
+ <td class="org-left">`originId`</td>
1113
+ <td class="org-left">`string`</td>
1114
+ <td class="org-left">Identifier of origin where the request was originated</td>
1115
+ <td class="org-left">no</td>
1116
+ <td class="org-left">`c3po6twr70`</td>
1117
+ </tr>
1118
+
1119
+
1120
+ <tr>
1121
+ <td class="org-left">`trafficSource`</td>
1122
+ <td class="org-left">`string`</td>
1123
+ <td class="org-left">Visitor's traffic source. Opaque value that will be passed to tracking systems</td>
1124
+ <td class="org-left">no</td>
1125
+ <td class="org-left">`gha-vr`</td>
1126
+ </tr>
1127
+
1128
+
1129
+ <tr>
1130
+ <td class="org-left">`preferredRate`</td>
1131
+ <td class="org-left">`number`</td>
1132
+ <td class="org-left">Offer's price user saw on a CA (meta) platform</td>
1133
+ <td class="org-left">no</td>
1134
+ <td class="org-left">`196`</td>
1135
+ </tr>
1136
+ </tbody>
1137
+ </table>
1138
+
1139
+
1140
+ <a id="offers-callbacks"></a>
1141
+
1142
+ ### Callbacks
1143
+
1144
+ Object with callbacks:
1145
+
1146
+ const callbacks = {
1147
+ onStart: (response) => {
1148
+ log('Offers started', response)
1149
+ },
1150
+ onOffersReceived: (response) => {
1151
+ log('Offers received', response)
1152
+ },
1153
+ onComplete: (response) => {
1154
+ log('Offers completed', response)
1155
+ }
1156
+ }
1157
+
1158
+ 1. onStart()
1159
+
1160
+ Runs at the beginning of the each new offers request.
1161
+ Returns adjusted and validated offers request parameters.
1162
+
1163
+ 2. onOffersReceived()
1164
+
1165
+ Runs on every received batch of offers.
1166
+ Returns hotel's offers (incomplete response).
1167
+
1168
+ 3. onComplete()
1169
+
1170
+ Runs after offers request complete.
1171
+ Returns hotel's offers (complete response).
1172
+
1173
+
1174
+ <a id="offers-response"></a>
1175
+
1176
+ ### Response
1177
+
1178
+ An example of the response for request parameters:
1179
+
1180
+ const parameters = {
1181
+ hotelId: '1926746',
1182
+ checkIn: '2022-07-10',
1183
+ checkOut: '2022-07-11',
1184
+ rooms: '2'
1185
+ }
1186
+
1187
+ {
1188
+ "anchorPriceRateBreakdown": {
1189
+ "baseRate": 113.21,
1190
+ "localTaxes": 8.64,
1191
+ "taxes": 10.19,
1192
+ "calculatedTotalRate": 132.04,
1193
+ "nightlyRate": 132.04
1194
+ },
1195
+ "availableOffersCount": 19,
1196
+ "fetchedAllOffers": false,
1197
+ "hasMoreOffers": true,
1198
+ "id": "1926746",
1199
+ "offers": [
1200
+ {
1201
+ "additionalProviderParams": {
1202
+ "feedId": "1524856"
1203
+ },
1204
+ "availableRooms": 10,
1205
+ "bookURI": "https://r.findhotel.net?...",
1206
+ "calculatedTotalRate": 110.72,
1207
+ "canPayLater": true,
1208
+ "cug": null,
1209
+ "currency": "EUR",
1210
+ "hasAnchorPrice": true,
1211
+ "hasFreeCancellation": true,
1212
+ "id": "oO8jdRHaO8y0",
1213
+ "isAnchorPriceOffer": false,
1214
+ "isCheapest": false,
1215
+ "isTopOffer": true,
1216
+ "meals": ["breakfast"],
1217
+ "nightlyRate": 110.72,
1218
+ "providerCode": "BKS",
1219
+ "proxyProviderCode": "BKS",
1220
+ "rateBreakdown": {
1221
+ "baseRate": 90.28,
1222
+ "localTaxes": 12.32,
1223
+ "taxes": 8.12
1224
+ },
1225
+ "roomID": "moc_08Ap8BcbIDg",
1226
+ "roomName": "Standard Double Room",
1227
+ "tags": ["top_offer"]
1228
+ }
1229
+ ],
1230
+ "topOfferData": {
1231
+ "anchorPrice": 132.04,
1232
+ "anchorPriceNightly": 132.04,
1233
+ "offerIndexes": [0, 1, 2, 3]
1234
+ }
1235
+ }
1236
+