1. SearchTourPackages

Version 21.1 by Giorgi Mdivnishvili on 2024/01/10 17:51

Method Description

Tour package mean, tour with hotel and flight together. Using this method gives data about full package availability with flight and hotel options. 

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.

Endpoint URL - [POST]

Request Parameters

None  

Request Body

{
 "departureCountryCode": "string",
 "departureCityUID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
 "arrivalCountryCode": "string",
 "arrivalLocations": [
    {
     "type": "string",
     "parent": "string",
     "label": "string",
     "subLabel": "string",
     "value": "string",
     "tag": "string"
    }
  ],
 "checkInDate": "2023-12-14",
 "checkInDateTo": "2023-12-14",
 "checkOutDate": "2023-12-14",
 "stayDays": 0,
 "stayDaysTo": 0,
 "departureDate": "2023-12-14",
 "returnDate": "2023-12-14",
 "airlineCode": "string",
 "ticketType": "string",
 "directFlightsOnly": true,
 "longConnectTime": true,
 "adults": 0,
 "children": 0,
 "childrenAges": [
   0
  ],
 "extendedSearch": true,
 "totalPriceFrom": 0,
 "totalPriceTo": 0,
 "recommended": true,
 "popular": true,
 "freeSale": true,
 "groupByHotel": true,
 "hotelCodes": [
   "string"
  ],
 "mealPlans": [
   "string"
  ],
 "hotelClasses": [
   "string"
  ],
 "hotelTypes": [
   "CityHotel"
  ],
 "hotelServices": [
   "HasAlcohol"
  ],
 "pagingId": "string",
 "pageNumber": 0,
 "pageRowCount": 0
}

Request example

{
 "departureCountryCode": "KZ",
 "departureCityUID": "f0ba6324-f337-405c-8cc7-23d62cf664e8",
 "arrivalCountryCode": "AE",
   "arrivalLocations": [
        {
           "type": "city",
           "label": "Dubai",
           "value": "f5185fa3-3f56-44ed-bf6b-80386a33caa2",
           "tag": "Dubai"
        }
    ],
 "checkInDate": "2024-02-05T20:00:00.000Z",
 "checkInDateTo": "2024-02-10T20:00:00.000Z",
 
 "stayDays": 3,
 "stayDaysTo": 6,

 "airlineCode": "",
 "ticketType": "",
 "directFlightsOnly": true,
 "longConnectTime": true,
 "adults": 1,
 "children": 1,
 "childrenAges": [
   2
  ],
 "extendedSearch": false,
 "totalPriceFrom": 100,
 "totalPriceTo": 15000,
 "recommended": true,
 "popular": true,
 "freeSale": true,
 "groupByHotel": true,
 "hotelCodes": [
   
  ],
 "mealPlans": [
   
  ],
 "hotelClasses": [
   
  ],
 "hotelTypes": [
   
  ],
 "hotelServices": [
   
  ],
 "pagingId": "",
 "pageNumber": 10,
 "pageRowCount": 10
}

Response Body

{
 "error": true,
 "errorCode": "string",
 "errorDescription": "string",
 "userErrorDescription": "string",
 "packages": [
    {
     "cacheKey": "string",
     "id": "string",
     "priceCurrency": "string",
     "totalPrice": 0,
     "agentCommissionPercent": 0,
     "agentCommissionAmount": 0,
     "includedExtrasAmount": 0,
     "priceDifference": 0,
     "hotel": {
       "hotelPriceId": "string",
       "providerId": 0,
       "hotelName": "string",
       "hotelCode": "string",
       "nigths": 0,
       "mealPlan": "string",
       "hotelClass": "string",
       "availabilityType": "OnRequest",
       "availableRoomsCount": 0,
       "fewRooms": true,
       "roomCategoryCode": "string",
       "roomCategoryName": "string",
       "placementTypeName": "string",
       "placementDescription": "string",
       "checkInDate": "2023-12-14T13:47:13.396Z",
       "checkOutDate": "2023-12-14T13:47:13.396Z",
       "adults": 0,
       "children": 0,
       "districtUID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
       "districtName": "string",
       "cityUID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
       "cityName": "string",
       "countryCode": "string",
       "countryName": "string",
       "hasAlcohol": true,
       "hasFreeWifi": true,
       "hasMetro": true,
       "hasPool": true,
       "hasMall": true,
       "cancellationPolicyDescription": "string",
       "cancellationPolicy": {
         "cancellationPolicyCode": "string",
         "noShowChargeValue": 0,
         "noShowChargeValueType": "string",
         "earlyDepartureChargeValue": 0,
         "earlyDepartureChargeValueType": "string",
         "conditions": [
            {
             "timeunits": 0,
             "timeunitType": "string",
             "timeOffsetTypeName": "string",
             "chargeValue": 0,
             "chargeValueType": "string"
            }
          ]
        }
      },
     "flight": {
       "id": "string",
       "departureDate": "2023-12-14T13:47:13.396Z",
       "returnDate": "2023-12-14T13:47:13.396Z",
       "departureTicketsLeft": 0,
       "returnTicketsLeft": 0,
       "departureAvailabilityType": "OnRequest",
       "returnAvailabilityType": "OnRequest",
       "isTwoWay": true,
       "departureSegments": [
          {
           "airlineCode": "string",
           "airlineName": "string",
           "flightCode": "string",
           "class": "string",
           "lugageWeight": 0,
           "handLugageWeight": 0,
           "departureFlightDate": "2023-12-14T13:47:13.396Z",
           "departureCountryName": "string",
           "departureCityName": "string",
           "departureAirportCode": "string",
           "departureAirportName": "string",
           "departureTerminalCode": "string",
           "arrivalFlightDate": "2023-12-14T13:47:13.396Z",
           "arrivalCountryName": "string",
           "arrivalCityName": "string",
           "arrivalAirportCode": "string",
           "arrivalAirportName": "string",
           "arrivalTerminalCode": "string",
           "flightDuration": "string",
           "baggages": [
              {
               "baggageCode": "string",
               "description": "string",
               "price": 0,
               "currency": "string",
               "included": true
              }
            ]
          }
        ],
       "returnSegments": [
          {
           "airlineCode": "string",
           "airlineName": "string",
           "flightCode": "string",
           "class": "string",
           "lugageWeight": 0,
           "handLugageWeight": 0,
           "departureFlightDate": "2023-12-14T13:47:13.396Z",
           "departureCountryName": "string",
           "departureCityName": "string",
           "departureAirportCode": "string",
           "departureAirportName": "string",
           "departureTerminalCode": "string",
           "arrivalFlightDate": "2023-12-14T13:47:13.396Z",
           "arrivalCountryName": "string",
           "arrivalCityName": "string",
           "arrivalAirportCode": "string",
           "arrivalAirportName": "string",
           "arrivalTerminalCode": "string",
           "flightDuration": "string",
           "baggages": [
              {
               "baggageCode": "string",
               "description": "string",
               "price": 0,
               "currency": "string",
               "included": true
              }
            ]
          }
        ]
      },
     "extraServices": [
        {
         "extraServiceCode": "string",
         "extraServiceTypeCode": "string",
         "isMandatory": 0,
         "extraServiceName": "string",
         "minimalServiceAmount": 0,
         "includedPriceCode": "string",
         "prices": [
            {
             "extraServicePriceCode": "string",
             "displayName": "string",
             "restrictionInfo": "string",
             "additionalInfo": "string",
             "price": 0,
             "extraPrice": 0,
             "currency": "string"
            }
          ]
        }
      ],
     "insurancePrice": {
       "name": "string",
       "price": 0,
       "priceSurcarge": 0,
       "actualStartDate": "2023-12-14T13:47:13.396Z",
       "actualEndDate": "2023-12-14T13:47:13.396Z",
       "optional": true,
       "includedInPackagePrice": true
      }
    }
  ],
 "pagingId": "string",
 "pageNumber": 0,
 "pageCount": 0
}

Response example

{
   "packages": [
        {
           "cacheKey": "c705ab31e00e4f9a81c2fd46b2cdbb47f6fd9a6e16984236beb979b31aefafa4:{79}:i:10",
           "id": "tour:b01c168e-2ea7-4ea6-b6e0-55abb8cab0a0:da894a1e-88c0-4877-b216-0eeeabe186f3:4298d06f-4344-4a39-ad98-071b7760cf30",
           "priceCurrency": "USD",
           "totalPrice": 1033.53,
           "agentCommissionPercent": 0.0,
           "agentCommissionAmount": 0.0,
           "includedExtrasAmount": 0,
           "priceDifference": 0,
           "hotel": {
               "hotelPriceId": "da894a1e-88c0-4877-b216-0eeeabe186f3",
               "providerId": 13,
               "hotelName": "Mercure Dubai Barsha Heights Suites  Apartments",
               "hotelCode": "5f125310-7025-4807-a4c6-49cd284c9c14",
               "nigths": 3,
               "mealPlan": "BB",
               "hotelClass": "4",
               "availabilityType": "FreeSale",
               "availableRoomsCount": 0,
               "fewRooms": true,
               "roomCategoryCode": "bc5f2224-bd4c-49b2-ab57-01eb7fa80d41",
               "roomCategoryName": "1 B/R Suite City View",
               "placementTypeName": "DBL",
               "checkInDate": "2024-02-09T20:00:00.000Z",
               "checkOutDate": "2024-02-12T20:00:00.000Z",
               "adults": 1,
               "children": 1,
               "districtUID": "4c65f6ed-902b-4fd8-9419-af7884c22c5e",
               "districtName": "Al Barsha",
               "cityUID": "f5185fa3-3f56-44ed-bf6b-80386a33caa2",
               "cityName": "Dubai",
               "countryCode": "AE",
               "countryName": "United Arab Emirates",
               "hasAlcohol": false,
               "hasFreeWifi": true,
               "hasMetro": true,
               "hasPool": true,
               "hasMall": false,
               "cancellationPolicyDescription": "Cancellation Policy: 5 Day Before Arrival: 100.00 %, Early Departure: 100.00 %, NoShow: 100.00 %",
               "cancellationPolicy": {
                   "noShowChargeValue": 100.0,
                   "noShowChargeValueType": "%",
                   "earlyDepartureChargeValue": 100.0,
                   "earlyDepartureChargeValueType": "%",
                   "conditions": [
                        {
                           "timeunits": 5,
                           "timeunitType": "Day",
                           "timeOffsetTypeName": "Before Arrival",
                           "chargeValue": 100.0,
                           "chargeValueType": "%"
                        }
                    ]
                }
            },
           "flight": {
               "id": "4298d06f-4344-4a39-ad98-071b7760cf30",
               "departureDate": "2024-02-09T20:00:00.000Z",
               "returnDate": "2024-02-12T20:00:00.000Z",
               "departureTicketsLeft": 7,
               "returnTicketsLeft": 7,
               "departureAvailabilityType": "FewPlaces",
               "returnAvailabilityType": "FewPlaces",
               "isTwoWay": true,
               "sameBaggageForAll": false,
               "totalBaggage": false,
               "departureSegments": [
                    {
                       "airlineCode": "KC",
                       "airlineName": "Air Astana-",
                       "flightCode": "KC897",
                       "class": "econom",
                       "lugageWeight": 20,
                       "handLugageWeight": 6,
                       "departureFlightDate": "2024-02-09T20:00:00.000Z",
                       "departureCountryName": "Kazakhstan",
                       "departureCityName": "Almaty",
                       "departureAirportCode": "ALA",
                       "departureAirportName": "Almaty Intl Airport",
                       "departureTerminalCode": "ALA",
                       "arrivalFlightDate": "2024-02-09T20:00:00.000Z",
                       "arrivalCountryName": "United Arab Emirates",
                       "arrivalCityName": "Dubai",
                       "arrivalAirportCode": "DXB",
                       "arrivalAirportName": "Dubai Intl Airport",
                       "arrivalTerminalCode": "DXB1",
                       "flightDuration": "0h 50m"
                    }
                ],
               "returnSegments": [
                    {
                       "airlineCode": "KC",
                       "airlineName": "Air Astana-",
                       "flightCode": "KC900",
                       "class": "econom",
                       "lugageWeight": 20,
                       "handLugageWeight": 6,
                       "departureFlightDate": "2024-02-12T20:00:00.000Z",
                       "departureCountryName": "United Arab Emirates",
                       "departureCityName": "Dubai",
                       "departureAirportCode": "DXB",
                       "departureAirportName": "Dubai Intl Airport",
                       "departureTerminalCode": "DXB1",
                       "arrivalFlightDate": "2024-02-12T20:00:00.000Z",
                       "arrivalCountryName": "Kazakhstan",
                       "arrivalCityName": "Almaty",
                       "arrivalAirportCode": "ALA",
                       "arrivalAirportName": "Almaty Intl Airport",
                       "arrivalTerminalCode": "ALA",
                       "flightDuration": "8h 15m"
                    }
                ],
               "passengers": [
                    {
                       "id": "42768722011000004-A1",
                       "isAdult": true,
                       "forwardBaggages": [],
                       "backwardBaggages": []
                    },
                    {
                       "id": "42768722011000004-C1",
                       "isAdult": false,
                       "forwardBaggages": [],
                       "backwardBaggages": []
                    }
                ]
            },
           "extraServices": [],
           "insurancePrice": {
               "name": "Medical INS (N10000)",
               "price": 17.92,
               "priceSurcarge": 0.0,
               "actualStartDate": "2024-02-09T20:00:00.000Z",
               "actualEndDate": "2024-02-12T20:00:00.000Z",
               "optional": false,
               "includedInPackagePrice": true
            }
        }
    ],
   "pagingId": "79",
   "pageNumber": 10,
   "pageCount": 2452,
   "totalCount": 2452,
   "error": false
}

Schema

Success

SearchTourPackagesResponse{

errorboolean
errorCodestring
nullable: true
errorDescriptionstring
nullable: true
userErrorDescriptionstring
nullable: true
packages[
nullable: trueTourPackage{
cacheKeystring
nullable: true
idstring
nullable: true
priceCurrencystring
nullable: true
totalPricenumber($double)
agentCommissionPercentnumber($double)
agentCommissionAmountnumber($double)
includedExtrasAmountnumber($double)
priceDifferencenumber($double)
hotelPackageHotel{
hotelPriceIdstring
nullable: true
providerIdinteger($int32)
hotelNamestring
nullable: true
hotelCodestring
nullable: true
nigthsinteger($int32)
mealPlanstring
nullable: true
hotelClassstring
nullable: true
availabilityTypeRoomAvailabilityTypeEnumstringEnum:
[ OnRequest, FreeSale, StopSale ]
availableRoomsCountinteger($int32)
fewRoomsboolean
roomCategoryCodestring
nullable: true
roomCategoryNamestring
nullable: true
placementTypeNamestring
nullable: true
placementDescriptionstring
nullable: true
checkInDatestring($date-time)
checkOutDatestring($date-time)
adultsinteger($int32)
childreninteger($int32)
districtUIDstring($uuid)
nullable: true
districtNamestring
nullable: true
cityUIDstring($uuid)
nullable: true
cityNamestring
nullable: true
countryCodestring
nullable: true
countryNamestring
nullable: true
hasAlcoholboolean
hasFreeWifiboolean
hasMetroboolean
hasPoolboolean
hasMallboolean
cancellationPolicyDescriptionstring
nullable: true
cancellationPolicyCancellationPolicyExchange{
cancellationPolicyCodestring
nullable: true
noShowChargeValuenumber($double)
nullable: true
noShowChargeValueTypestring
nullable: true
earlyDepartureChargeValuenumber($double)
nullable: true
earlyDepartureChargeValueTypestring
nullable: true
conditions[
nullable: trueCancellationPolicyConditionExchange{
timeunitsinteger($int32)
timeunitTypestring
nullable: true
timeOffsetTypeNamestring
nullable: true
chargeValuenumber($double)
nullable: true
chargeValueTypestring
nullable: true

}]

}

}

flightPackageFlight{
idstring
nullable: true
departureDatestring($date-time)
returnDatestring($date-time)
nullable: true
departureTicketsLeftinteger($int32)
returnTicketsLeftinteger($int32)
departureAvailabilityTypeFlightAvailabilityTypestringEnum:
[ OnRequest, FreeSale, FewPlaces, StopSale ]
returnAvailabilityTypeFlightAvailabilityTypestringEnum:
[ OnRequest, FreeSale, FewPlaces, StopSale ]
isTwoWayboolean
departureSegments[
nullable: trueFlightSegment{
airlineCodestring
nullable: true
airlineNamestring
nullable: true
flightCodestring
nullable: true
classstring
nullable: true
lugageWeightnumber($double)
handLugageWeightnumber($double)
departureFlightDatestring($date-time)
departureCountryNamestring
nullable: true
departureCityNamestring
nullable: true
departureAirportCodestring
nullable: true
departureAirportNamestring
nullable: true
departureTerminalCodestring
nullable: true
arrivalFlightDatestring($date-time)
arrivalCountryNamestring
nullable: true
arrivalCityNamestring
nullable: true
arrivalAirportCodestring
nullable: true
arrivalAirportNamestring
nullable: true
arrivalTerminalCodestring
nullable: true
flightDurationstring
nullable: true
baggages[
nullable: trueBaggage{
baggageCodestring
nullable: true
descriptionstring
nullable: true
pricenumber($double)
currencystring
nullable: true
includedboolean

}]

}]

returnSegments[
nullable: trueFlightSegment{
airlineCodestring
nullable: true
airlineNamestring
nullable: true
flightCodestring
nullable: true
classstring
nullable: true
lugageWeightnumber($double)
handLugageWeightnumber($double)
departureFlightDatestring($date-time)
departureCountryNamestring
nullable: true
departureCityNamestring
nullable: true
departureAirportCodestring
nullable: true
departureAirportNamestring
nullable: true
departureTerminalCodestring
nullable: true
arrivalFlightDatestring($date-time)
arrivalCountryNamestring
nullable: true
arrivalCityNamestring
nullable: true
arrivalAirportCodestring
nullable: true
arrivalAirportNamestring
nullable: true
arrivalTerminalCodestring
nullable: true
flightDurationstring
nullable: true
baggages[
nullable: trueBaggage{
baggageCodestring
nullable: true
descriptionstring
nullable: true
pricenumber($double)
currencystring
nullable: true
includedboolean

}]

}]

}

extraServices[
nullable: trueHotelExtraServiceBase{
extraServiceCodestring
nullable: true
extraServiceTypeCodestring
nullable: true
isMandatoryinteger($int32)
extraServiceNamestring
nullable: true
minimalServiceAmountnumber($double)
includedPriceCodestring
nullable: true
prices[
nullable: trueHotelExtraServicePriceBase{
extraServicePriceCodestring
nullable: true
displayNamestring
nullable: true
restrictionInfostring
nullable: true
additionalInfostring
nullable: true
pricenumber($double)
extraPricenumber($double)
currencystring
nullable: true

}]

}]

insurancePriceInsurancePrice{
namestring
nullable: true
pricenumber($double)
priceSurcargenumber($double)
actualStartDatestring($date-time)
actualEndDatestring($date-time)
optionalboolean
includedInPackagePriceboolean

}

}]

pagingIdstring
nullable: true
pageNumberinteger($int64)
pageCountinteger($int64)

}

Definitions

Paging and Caching

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:

first request

 {
 "pagingId": "",
 "pageNumber": 1,
 "pageRowCount":10
 }

Request with caching

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

 {
 "pagingId": "80",
 "pageNumber": 1,
 "pageRowCount":10
 }

search parameter options

in the request body it's available to filter search results with parameters. parameter examples:

 { "totalPriceFrom": 500,
   "totalPriceTo": 10000,
   "hotelTypes": [
       "CityHotel",
       "BeachHotel",
       "SecondLineBeach"
    ],
   "hotelClasses": [
       "1",
       "2",
       "3",
       "4",
       "5",
       "6"
    ],
   "hotelServices": [
       "HasAlcohol",
       "HasFreeWifi",
       "HasMetro",
       "HasPool",
       "HasMall"
    ],
   "mealPlans": [
       "RO",
       "BB",
       "HB",
       "FB",
       "AL"
    ]
}

Important

Error

It's Important to in every other request header, put Auth token

Key - Authorization

Value - Bearer Token what is given in this response.

also note in headers that:

Content-Type - application/json

Key - X-nugios-timezone

Value - 240