Changes for page 1. SearchTourPackages
Last modified by Giorgi Mdivnishvili on 2025/02/12 15:25
From version 12.1
edited by Giorgi Mdivnishvili
on 2023/12/15 16:13
on 2023/12/15 16:13
Change comment:
There is no comment for this version
To version 22.1
edited by Giorgi Mdivnishvili
on 2024/04/10 10:48
on 2024/04/10 10:48
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 -SearchTourPackages 1 +1. SearchTourPackages - Content
-
... ... @@ -6,13 +6,15 @@ 6 6 7 7 = Method Description = 8 8 9 -T he initial method of the integrationprocessisauthorization.Youwill be providedwithatestuser username andpasswordtonerate the accesstokenthatyouwillneed topassinallthefollowingmethods.9 +Tour package mean, tour with hotel and flight together. Using this method gives data about full package availability with flight and hotel options. 10 10 11 +It's possible to receive data as current dates, also in date ranges using parameter "stayDays": 0, "stayDaysTo": 0. the maximum difference between the days can be 7. Below you can see examples. 11 11 13 + 12 12 == Endpoint URL - [POST] == 13 13 14 14 {{info}} 15 -[[https:~~/~~/ online-api.kazunion.com/api/TourPackages/SearchTourPackages>>https://online-api.kazunion.com/api/TourPackages/SearchTourPackages]]17 +[[https:~~/~~/integration.kazunion.com/api/TourPackages/SearchTourPackages>>https://integration.kazunion.com/api/TourPackages/SearchTourPackages]] 16 16 {{/info}} 17 17 18 18 == Request Parameters == ... ... @@ -40,13 +40,13 @@ 40 40 "tag": "string" 41 41 } 42 42 ], 43 - "checkInDate": "2023-12-14 T13:43:54.766Z",44 - "checkInDateTo": "2023-12-14 T13:43:54.766Z",45 - "checkOutDate": "2023-12-14 T13:43:54.766Z",45 + "checkInDate": "2023-12-14", 46 + "checkInDateTo": "2023-12-14", 47 + "checkOutDate": "2023-12-14", 46 46 "stayDays": 0, 47 47 "stayDaysTo": 0, 48 - "departureDate": "2023-12-14 T13:43:54.766Z",49 - "returnDate": "2023-12-14 T13:43:54.766Z",50 + "departureDate": "2023-12-14", 51 + "returnDate": "2023-12-14", 50 50 "airlineCode": "string", 51 51 "ticketType": "string", 52 52 "directFlightsOnly": true, ... ... @@ -85,6 +85,65 @@ 85 85 {{/code}} 86 86 87 87 90 +== Request example == 91 + 92 +{{code language="Json"}} 93 +{ 94 + "departureCountryCode": "KZ", 95 + "departureCityUID": "f0ba6324-f337-405c-8cc7-23d62cf664e8", 96 + "arrivalCountryCode": "AE", 97 + "arrivalLocations": [ 98 + { 99 + "type": "city", 100 + "label": "Dubai", 101 + "value": "f5185fa3-3f56-44ed-bf6b-80386a33caa2", 102 + "tag": "Dubai" 103 + } 104 + ], 105 + "checkInDate": "2024-02-05T20:00:00.000Z", 106 + "checkInDateTo": "2024-02-10T20:00:00.000Z", 107 + 108 + "stayDays": 3, 109 + "stayDaysTo": 6, 110 + 111 + "airlineCode": "", 112 + "ticketType": "", 113 + "directFlightsOnly": true, 114 + "longConnectTime": true, 115 + "adults": 1, 116 + "children": 1, 117 + "childrenAges": [ 118 + 2 119 + ], 120 + "extendedSearch": false, 121 + "totalPriceFrom": 100, 122 + "totalPriceTo": 15000, 123 + "recommended": true, 124 + "popular": true, 125 + "freeSale": true, 126 + "groupByHotel": true, 127 + "hotelCodes": [ 128 + 129 + ], 130 + "mealPlans": [ 131 + 132 + ], 133 + "hotelClasses": [ 134 + 135 + ], 136 + "hotelTypes": [ 137 + 138 + ], 139 + "hotelServices": [ 140 + 141 + ], 142 + "pagingId": "", 143 + "pageNumber": 10, 144 + "pageRowCount": 10 145 +} 146 +{{/code}} 147 + 148 + 88 88 == Response Body == 89 89 90 90 {{code language="json"}} ... ... @@ -264,10 +264,156 @@ 264 264 {{/code}} 265 265 266 266 267 -== =example ===328 +== Response example == 268 268 269 269 {{code language="Json"}} 270 -X 331 +{ 332 + "packages": [ 333 + { 334 + "cacheKey": "c705ab31e00e4f9a81c2fd46b2cdbb47f6fd9a6e16984236beb979b31aefafa4:{79}:i:10", 335 + "id": "tour:b01c168e-2ea7-4ea6-b6e0-55abb8cab0a0:da894a1e-88c0-4877-b216-0eeeabe186f3:4298d06f-4344-4a39-ad98-071b7760cf30", 336 + "priceCurrency": "USD", 337 + "totalPrice": 1033.53, 338 + "agentCommissionPercent": 0.0, 339 + "agentCommissionAmount": 0.0, 340 + "includedExtrasAmount": 0, 341 + "priceDifference": 0, 342 + "hotel": { 343 + "hotelPriceId": "da894a1e-88c0-4877-b216-0eeeabe186f3", 344 + "providerId": 13, 345 + "hotelName": "Mercure Dubai Barsha Heights Suites Apartments", 346 + "hotelCode": "5f125310-7025-4807-a4c6-49cd284c9c14", 347 + "nigths": 3, 348 + "mealPlan": "BB", 349 + "hotelClass": "4", 350 + "availabilityType": "FreeSale", 351 + "availableRoomsCount": 0, 352 + "fewRooms": true, 353 + "roomCategoryCode": "bc5f2224-bd4c-49b2-ab57-01eb7fa80d41", 354 + "roomCategoryName": "1 B/R Suite City View", 355 + "placementTypeName": "DBL", 356 + "checkInDate": "2024-02-09T20:00:00.000Z", 357 + "checkOutDate": "2024-02-12T20:00:00.000Z", 358 + "adults": 1, 359 + "children": 1, 360 + "districtUID": "4c65f6ed-902b-4fd8-9419-af7884c22c5e", 361 + "districtName": "Al Barsha", 362 + "cityUID": "f5185fa3-3f56-44ed-bf6b-80386a33caa2", 363 + "cityName": "Dubai", 364 + "countryCode": "AE", 365 + "countryName": "United Arab Emirates", 366 + "hasAlcohol": false, 367 + "hasFreeWifi": true, 368 + "hasMetro": true, 369 + "hasPool": true, 370 + "hasMall": false, 371 + "cancellationPolicyDescription": "Cancellation Policy: 5 Day Before Arrival: 100.00 %, Early Departure: 100.00 %, NoShow: 100.00 %", 372 + "cancellationPolicy": { 373 + "noShowChargeValue": 100.0, 374 + "noShowChargeValueType": "%", 375 + "earlyDepartureChargeValue": 100.0, 376 + "earlyDepartureChargeValueType": "%", 377 + "conditions": [ 378 + { 379 + "timeunits": 5, 380 + "timeunitType": "Day", 381 + "timeOffsetTypeName": "Before Arrival", 382 + "chargeValue": 100.0, 383 + "chargeValueType": "%" 384 + } 385 + ] 386 + } 387 + }, 388 + "flight": { 389 + "id": "4298d06f-4344-4a39-ad98-071b7760cf30", 390 + "departureDate": "2024-02-09T20:00:00.000Z", 391 + "returnDate": "2024-02-12T20:00:00.000Z", 392 + "departureTicketsLeft": 7, 393 + "returnTicketsLeft": 7, 394 + "departureAvailabilityType": "FewPlaces", 395 + "returnAvailabilityType": "FewPlaces", 396 + "isTwoWay": true, 397 + "sameBaggageForAll": false, 398 + "totalBaggage": false, 399 + "departureSegments": [ 400 + { 401 + "airlineCode": "KC", 402 + "airlineName": "Air Astana-", 403 + "flightCode": "KC897", 404 + "class": "econom", 405 + "lugageWeight": 20, 406 + "handLugageWeight": 6, 407 + "departureFlightDate": "2024-02-09T20:00:00.000Z", 408 + "departureCountryName": "Kazakhstan", 409 + "departureCityName": "Almaty", 410 + "departureAirportCode": "ALA", 411 + "departureAirportName": "Almaty Intl Airport", 412 + "departureTerminalCode": "ALA", 413 + "arrivalFlightDate": "2024-02-09T20:00:00.000Z", 414 + "arrivalCountryName": "United Arab Emirates", 415 + "arrivalCityName": "Dubai", 416 + "arrivalAirportCode": "DXB", 417 + "arrivalAirportName": "Dubai Intl Airport", 418 + "arrivalTerminalCode": "DXB1", 419 + "flightDuration": "0h 50m" 420 + } 421 + ], 422 + "returnSegments": [ 423 + { 424 + "airlineCode": "KC", 425 + "airlineName": "Air Astana-", 426 + "flightCode": "KC900", 427 + "class": "econom", 428 + "lugageWeight": 20, 429 + "handLugageWeight": 6, 430 + "departureFlightDate": "2024-02-12T20:00:00.000Z", 431 + "departureCountryName": "United Arab Emirates", 432 + "departureCityName": "Dubai", 433 + "departureAirportCode": "DXB", 434 + "departureAirportName": "Dubai Intl Airport", 435 + "departureTerminalCode": "DXB1", 436 + "arrivalFlightDate": "2024-02-12T20:00:00.000Z", 437 + "arrivalCountryName": "Kazakhstan", 438 + "arrivalCityName": "Almaty", 439 + "arrivalAirportCode": "ALA", 440 + "arrivalAirportName": "Almaty Intl Airport", 441 + "arrivalTerminalCode": "ALA", 442 + "flightDuration": "8h 15m" 443 + } 444 + ], 445 + "passengers": [ 446 + { 447 + "id": "42768722011000004-A1", 448 + "isAdult": true, 449 + "forwardBaggages": [], 450 + "backwardBaggages": [] 451 + }, 452 + { 453 + "id": "42768722011000004-C1", 454 + "isAdult": false, 455 + "forwardBaggages": [], 456 + "backwardBaggages": [] 457 + } 458 + ] 459 + }, 460 + "extraServices": [], 461 + "insurancePrice": { 462 + "name": "Medical INS (N10000)", 463 + "price": 17.92, 464 + "priceSurcarge": 0.0, 465 + "actualStartDate": "2024-02-09T20:00:00.000Z", 466 + "actualEndDate": "2024-02-12T20:00:00.000Z", 467 + "optional": false, 468 + "includedInPackagePrice": true 469 + } 470 + } 471 + ], 472 + "pagingId": "79", 473 + "pageNumber": 10, 474 + "pageCount": 2452, 475 + "totalCount": 2452, 476 + "error": false 477 +} 271 271 {{/code}} 272 272 273 273 ... ... @@ -550,4 +550,128 @@ 550 550 } 551 551 {{/success}} 552 552 553 - 760 + 761 +== Definitions == 762 + 763 + 764 +(% class="table-bordered" %) 765 +|=Field|=Type|=Description 766 +|departureCountryCode|string|The ISO 3166-1 alpha-2 country code for the departure country. For example, "KZ" for Kazakhstan. 767 +|departureCityUID|string|The unique identifier for the departure city. 768 +|arrivalCountryCode|string|The ISO 3166-1 alpha-2 country code for the arrival country. For example, "AE" for United Arab Emirates. 769 +|arrivalLocations|array|An array of objects, each representing an arrival location. Each object contains: type (string) - The type of the location. This can be "city". label (string) - The name of the location. value (string) - The unique identifier for the location. tag (string) - A tag for the location. 770 +|checkInDate|string|The check-in date in ISO 8601 format. 771 +|checkInDateTo|string|The latest possible check-in date in ISO 8601 format. 772 +|stayDays|integer|The minimum number of days to stay. 773 +|stayDaysTo|integer|The maximum number of days to stay. 774 +|airlineCode|string|The code of the airline. This field can be empty. 775 +|ticketType|string|The type of the ticket. This field can be empty. 776 +|directFlightsOnly|boolean|Indicates whether to search for direct flights only. 777 +|longConnectTime|boolean|Indicates whether to include flights with long connection times. 778 +|adults|integer|The number of adults. 779 +|children|integer|The number of children. 780 +|childrenAges|array|An array of integers, each representing the age of a child. 781 +|extendedSearch|boolean|Indicates whether to perform an extended search. 782 +|totalPriceFrom|float|The minimum total price. 783 +|totalPriceTo|float|The maximum total price. 784 +|recommended|boolean|Indicates whether to include recommended packages. 785 +|popular|boolean|Indicates whether to include popular packages. 786 +|freeSale|boolean|Indicates whether to include free sale packages. 787 +|groupByHotel|boolean|Indicates whether to group the results by hotel. 788 +|hotelCodes|array|An array of strings, each representing a hotel code. This field can be empty. 789 +|mealPlans|array|An array of meal plans. This field can be empty. 790 +|hotelClasses|array|An array of hotel classes. This field can be empty. 791 +|hotelTypes|array|An array of hotel types. This field can be empty. 792 +|hotelServices|array|An array of hotel services. This field can be empty. 793 +|pagingId|string|The paging ID for paginated results. This field can be empty. 794 +|pageNumber|integer|The page number for paginated results. 795 +|pageRowCount|integer|The number of rows per page for paginated results. 796 + 797 +=== === 798 + 799 +=== Paging and Caching === 800 + 801 +During the first request, Paging id must be empty like this ( "pagingId": "",) pagenumber is the number of the page, pagerowcount means number of the given result in one page. So in the first request we can search like this: 802 + 803 + 804 +==== first request ==== 805 + 806 +{{code language="Json"}} 807 + { 808 + "pagingId": "", 809 + "pageNumber": 1, 810 + "pageRowCount":10 811 + } 812 +{{/code}} 813 + 814 + 815 +==== Request with caching ==== 816 + 817 +as we receive response, in the end we can see pagingId- number, chich we can use for caching, and then just switch pagenumbers. for cleaning cache, it's important to make new request without pagingID 818 + 819 +{{code language="Json"}} 820 + { 821 + "pagingId": "80", 822 + "pageNumber": 1, 823 + "pageRowCount":10 824 + } 825 +{{/code}} 826 + 827 + 828 +=== search parameter options === 829 + 830 +in the request body it's available to filter search results with parameters. parameter examples: 831 + 832 +{{code language="Json"}} 833 + { "totalPriceFrom": 500, 834 + "totalPriceTo": 10000, 835 + "hotelTypes": [ 836 + "CityHotel", 837 + "BeachHotel", 838 + "SecondLineBeach" 839 + ], 840 + "hotelClasses": [ 841 + "1", 842 + "2", 843 + "3", 844 + "4", 845 + "5", 846 + "6" 847 + ], 848 + "hotelServices": [ 849 + "HasAlcohol", 850 + "HasFreeWifi", 851 + "HasMetro", 852 + "HasPool", 853 + "HasMall" 854 + ], 855 + "mealPlans": [ 856 + "RO", 857 + "BB", 858 + "HB", 859 + "FB", 860 + "AL" 861 + ] 862 +} 863 +{{/code}} 864 + 865 + 866 + 867 +== Important == 868 + 869 +{{error}} 870 +It's Important to in every other request header, put Auth token 871 + 872 +**Key **- Authorization 873 + 874 +**Value **- Bearer Token what is given in this response. 875 + 876 + 877 +**also note in headers that:** 878 + 879 +Content-Type - application/json 880 + 881 +**Key - **X-nugios-timezone 882 + 883 +**Value **- 240 884 +{{/error}}