Version 16.2 by Giorgi Mdivnishvili on 2024/04/16 09:15

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2
3
4 {{toc/}}
5 {{/box}}
6
7 = Method Description =
8
9
10 === Method Overview: Streamlined Tour Package Discovery and Booking ===
11
12 **Purpose:** This method outlines the most efficient process for locating and subsequently booking a tour package utilizing a minimal set of required parameters. It is designed to simplify the user interaction by reducing the complexity and volume of input data necessary for operation.
13
14 **Procedure:**
15
16 1. **Initialization**: Start by specifying the essential parameters. This approach is engineered to streamline the search and booking process, focusing on the core data elements critical for identifying suitable tour packages.
17 1. **Search Execution**: Deploy the method with the specified parameters to initiate the search. The system is optimized to process these inputs, conducting a targeted query across available tour packages to identify matches that align with the user's criteria.
18 1. **Selection and Booking**: Upon receiving search results, the user can select a desired tour package. The booking process is then initiated with the minimal parameters already provided, ensuring a seamless transition from selection to confirmation.
19
20 **Parameter Details:**
21
22 * The parameters required for this method are intentionally limited to essential elements only, aiming to expedite the search and booking phases while maintaining effectiveness. Details on these parameters, including data types and usage instructions, are documented separately.
23
24 **Usage Notes:**
25
26 * This method is particularly beneficial for users seeking a straightforward and efficient path to tour package booking, minimizing decision fatigue and enhancing user experience.
27
28 **Examples:**
29
30 * Code examples and detailed step-by-step instructions for utilizing this method are available in the subsequent sections, providing practical guidance on implementing the streamlined tour package discovery and booking process.
31
32 This documentation segment aims to facilitate developers and users in leveraging a simplified method for tour package exploration and booking, ensuring an efficient and user-friendly interaction with the system.
33
34
35 == Endpoint URL - [POST] ==
36
37 {{info}}
38 [[https:~~/~~/integration.kazunion.com/api/TourPackages/SearchTourPackages>>https://integration.kazunion.com/api/TourPackages/SearchTourPackages]]
39 {{/info}}
40
41 == Request Parameters ==
42
43 (% class="box infomessage" %)
44 (((
45 None 
46 )))
47
48
49 == Request example ==
50
51 {{code language="Json"}}
52 {
53 "departureCountryCode": "KZ",
54 "departureCityUID": "f0ba6324-f337-405c-8cc7-23d62cf664e8",
55 "arrivalCountryCode": "AE",
56 "adults": 2,
57 "children": 0,
58 "departureDate": "2024-05-25T00:00:00",
59 "returnDate": "2024-06-01T00:00:00",
60 "departureAndReturnDaysCount": 7,
61 "checkInDate": "2024-05-25T00:00:00",
62 "checkOutDate": "2024-06-01T00:00:00",
63 "checkInAndCheckOutDaysCount": 7,
64 "directFlightsOnly": true,
65 "pageRowCount": 25,
66 "searchCurrency": "USD"
67 }
68 {{/code}}
69
70 == Request example for 2Adults 2Child ==
71
72 {{code language="Json"}}
73 {
74 "departureCountryCode": "KZ",
75 "departureCityUID": "f0ba6324-f337-405c-8cc7-23d62cf664e8",
76 "arrivalCountryCode": "AE",
77 "adults": 2,
78 "children": 2,
79 "childrenAges": [
80 4,
81 8
82 ],
83 "departureDate": "2024-05-26T00:00:00",
84 "returnDate": "2024-06-02T00:00:00",
85 "departureAndReturnDaysCount": 7,
86 "checkInDate": "2024-05-26T00:00:00",
87 "checkOutDate": "2024-06-02T00:00:00",
88 "checkInAndCheckOutDaysCount": 7,
89 "directFlightsOnly": true,
90 "searchCurrency": "USD",
91
92 "pagingId": "",
93 "pageNumber": 1,
94 "pageRowCount":5
95 }
96 {{/code}}
97
98
99 == Response Body ==
100
101 {{code language="json"}}
102 {
103 "error": true,
104 "errorCode": "string",
105 "errorDescription": "string",
106 "userErrorDescription": "string",
107 "packages": [
108 {
109 "cacheKey": "string",
110 "id": "string",
111 "priceCurrency": "string",
112 "totalPrice": 0,
113 "agentCommissionPercent": 0,
114 "agentCommissionAmount": 0,
115 "includedExtrasAmount": 0,
116 "priceDifference": 0,
117 "hotel": {
118 "hotelPriceId": "string",
119 "providerId": 0,
120 "hotelName": "string",
121 "hotelCode": "string",
122 "nigths": 0,
123 "mealPlan": "string",
124 "hotelClass": "string",
125 "availabilityType": "OnRequest",
126 "availableRoomsCount": 0,
127 "fewRooms": true,
128 "roomCategoryCode": "string",
129 "roomCategoryName": "string",
130 "placementTypeName": "string",
131 "placementDescription": "string",
132 "checkInDate": "2023-12-14T13:47:13.396Z",
133 "checkOutDate": "2023-12-14T13:47:13.396Z",
134 "adults": 0,
135 "children": 0,
136 "districtUID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
137 "districtName": "string",
138 "cityUID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
139 "cityName": "string",
140 "countryCode": "string",
141 "countryName": "string",
142 "hasAlcohol": true,
143 "hasFreeWifi": true,
144 "hasMetro": true,
145 "hasPool": true,
146 "hasMall": true,
147 "cancellationPolicyDescription": "string",
148 "cancellationPolicy": {
149 "cancellationPolicyCode": "string",
150 "noShowChargeValue": 0,
151 "noShowChargeValueType": "string",
152 "earlyDepartureChargeValue": 0,
153 "earlyDepartureChargeValueType": "string",
154 "conditions": [
155 {
156 "timeunits": 0,
157 "timeunitType": "string",
158 "timeOffsetTypeName": "string",
159 "chargeValue": 0,
160 "chargeValueType": "string"
161 }
162 ]
163 }
164 },
165 "flight": {
166 "id": "string",
167 "departureDate": "2023-12-14T13:47:13.396Z",
168 "returnDate": "2023-12-14T13:47:13.396Z",
169 "departureTicketsLeft": 0,
170 "returnTicketsLeft": 0,
171 "departureAvailabilityType": "OnRequest",
172 "returnAvailabilityType": "OnRequest",
173 "isTwoWay": true,
174 "departureSegments": [
175 {
176 "airlineCode": "string",
177 "airlineName": "string",
178 "flightCode": "string",
179 "class": "string",
180 "lugageWeight": 0,
181 "handLugageWeight": 0,
182 "departureFlightDate": "2023-12-14T13:47:13.396Z",
183 "departureCountryName": "string",
184 "departureCityName": "string",
185 "departureAirportCode": "string",
186 "departureAirportName": "string",
187 "departureTerminalCode": "string",
188 "arrivalFlightDate": "2023-12-14T13:47:13.396Z",
189 "arrivalCountryName": "string",
190 "arrivalCityName": "string",
191 "arrivalAirportCode": "string",
192 "arrivalAirportName": "string",
193 "arrivalTerminalCode": "string",
194 "flightDuration": "string",
195 "baggages": [
196 {
197 "baggageCode": "string",
198 "description": "string",
199 "price": 0,
200 "currency": "string",
201 "included": true
202 }
203 ]
204 }
205 ],
206 "returnSegments": [
207 {
208 "airlineCode": "string",
209 "airlineName": "string",
210 "flightCode": "string",
211 "class": "string",
212 "lugageWeight": 0,
213 "handLugageWeight": 0,
214 "departureFlightDate": "2023-12-14T13:47:13.396Z",
215 "departureCountryName": "string",
216 "departureCityName": "string",
217 "departureAirportCode": "string",
218 "departureAirportName": "string",
219 "departureTerminalCode": "string",
220 "arrivalFlightDate": "2023-12-14T13:47:13.396Z",
221 "arrivalCountryName": "string",
222 "arrivalCityName": "string",
223 "arrivalAirportCode": "string",
224 "arrivalAirportName": "string",
225 "arrivalTerminalCode": "string",
226 "flightDuration": "string",
227 "baggages": [
228 {
229 "baggageCode": "string",
230 "description": "string",
231 "price": 0,
232 "currency": "string",
233 "included": true
234 }
235 ]
236 }
237 ]
238 },
239 "extraServices": [
240 {
241 "extraServiceCode": "string",
242 "extraServiceTypeCode": "string",
243 "isMandatory": 0,
244 "extraServiceName": "string",
245 "minimalServiceAmount": 0,
246 "includedPriceCode": "string",
247 "prices": [
248 {
249 "extraServicePriceCode": "string",
250 "displayName": "string",
251 "restrictionInfo": "string",
252 "additionalInfo": "string",
253 "price": 0,
254 "extraPrice": 0,
255 "currency": "string"
256 }
257 ]
258 }
259 ],
260 "insurancePrice": {
261 "name": "string",
262 "price": 0,
263 "priceSurcarge": 0,
264 "actualStartDate": "2023-12-14T13:47:13.396Z",
265 "actualEndDate": "2023-12-14T13:47:13.396Z",
266 "optional": true,
267 "includedInPackagePrice": true
268 }
269 }
270 ],
271 "pagingId": "string",
272 "pageNumber": 0,
273 "pageCount": 0
274 }
275 {{/code}}
276
277
278 == Response example ==
279
280 {{code language="Json"}}
281 {
282 "packages": [
283 {
284 "id": "tour:556ce3c2-4062-4181-9970-f41e1aeb3b8b:ce81c22f-7d91-4237-9a2a-43c4c4bcb62f:1d8793e6-346e-4b5c-933f-3d8637684d7e",
285 "priceCurrency": "USD",
286 "totalPrice": 909.78,
287 "agentCommissionPercent": 0.0,
288 "agentCommissionAmount": 0.0,
289 "includedExtrasAmount": 0,
290 "priceDifference": 0,
291 "hotel": {
292 "hotelPriceId": "ce81c22f-7d91-4237-9a2a-43c4c4bcb62f",
293 "hotelName": "CityMax Sharjah",
294 "hotelCode": "CMAXBSHJNUG",
295 "nigths": 7,
296 "mealPlan": "BB",
297 "hotelClass": "3",
298 "hotelColor": "#228B22",
299 "availabilityType": "FreeSale",
300 "availableRoomsCount": 0,
301 "fewRooms": true,
302 "roomCategoryCode": "DBL",
303 "roomCategoryName": "Standard Room",
304 "placementTypeName": "2 Adults",
305 "placementDescription": "MARPROMDMC02/RUS",
306 "checkInDate": "2024-05-25T00:00:00.000",
307 "checkOutDate": "2024-06-01T00:00:00.000",
308 "adults": 2,
309 "children": 0,
310 "districtUID": "7ac1bbc8-59ea-4977-b272-ed8553f94f9b",
311 "districtName": "Sharjah",
312 "cityUID": "f78ac3bc-f040-46d0-8319-2c52083080a6",
313 "cityName": "Sharjah",
314 "countryCode": "AE",
315 "countryName": "United Arab Emirates",
316 "hasAlcohol": false,
317 "hasFreeWifi": true,
318 "hasMetro": false,
319 "hasPool": false,
320 "hasMall": true,
321 "infantMaxAge": 4.99,
322 "childMinAge": 5.0,
323 "childMaxAge": 11.99,
324 "teenMinAge": 0.0,
325 "teenMaxAge": 0.0,
326 "adultMinAge": 12.0,
327 "cancellationPolicyDescription": "Cancellation Policy: 2 Day Before Arrival: 1.00 Night, Early Departure: 1.00 Night, NoShow: 1.00 Night",
328 "cancellationPolicy": {
329 "noShowChargeValue": 1.0,
330 "noShowChargeValueType": "Night",
331 "earlyDepartureChargeValue": 1.0,
332 "earlyDepartureChargeValueType": "Night",
333 "conditions": [
334 {
335 "timeunits": 2,
336 "timeunitType": "Day",
337 "timeOffsetTypeName": "Before Arrival",
338 "chargeValue": 1.0,
339 "chargeValueType": "Night"
340 }
341 ]
342 }
343 },
344 "flight": {
345 "id": "1d8793e6-346e-4b5c-933f-3d8637684d7e",
346 "departureDate": "2024-05-25T00:00:00.000",
347 "returnDate": "2024-06-01T00:00:00.000",
348 "departureTicketsLeft": 48,
349 "returnTicketsLeft": 33,
350 "departureAvailabilityType": "FreeSale",
351 "returnAvailabilityType": "FreeSale",
352 "isTwoWay": true,
353 "sameBaggageForAll": false,
354 "totalBaggage": false,
355 "isBlock": true,
356 "class": "Economy",
357 "departureSegments": [
358 {
359 "airlineCode": "FZ",
360 "airlineName": "Fly Dubai",
361 "flightCode": "FZ1722",
362 "class": "Economy",
363 "lugageWeight": 20,
364 "handLugageWeight": 6,
365 "departureFlightDate": "2024-05-25T03:35:00.000",
366 "departureCountryName": "Kazakhstan",
367 "departureCityName": "Almaty",
368 "departureAirportCode": "ALA",
369 "departureAirportName": "Almaty Intl Airport",
370 "departureTerminalCode": "ALA",
371 "arrivalFlightDate": "2024-05-25T07:10:00.000",
372 "arrivalCountryName": "United Arab Emirates",
373 "arrivalCityName": "Dubai",
374 "arrivalAirportCode": "DXB",
375 "arrivalAirportName": "Dubai Intl Airport",
376 "arrivalTerminalCode": "DXB3",
377 "flightDuration": "5h 35m"
378 }
379 ],
380 "returnSegments": [
381 {
382 "airlineCode": "FZ",
383 "airlineName": "Fly Dubai",
384 "flightCode": "FZ1721",
385 "class": "Economy",
386 "lugageWeight": 20,
387 "handLugageWeight": 6,
388 "departureFlightDate": "2024-06-01T21:25:00.000",
389 "departureCountryName": "United Arab Emirates",
390 "departureCityName": "Dubai",
391 "departureAirportCode": "DXB",
392 "departureAirportName": "Dubai Intl Airport",
393 "departureTerminalCode": "DXB3",
394 "arrivalFlightDate": "2024-06-02T02:35:00.000",
395 "arrivalCountryName": "Kazakhstan",
396 "arrivalCityName": "Almaty",
397 "arrivalAirportCode": "ALA",
398 "arrivalAirportName": "Almaty Intl Airport",
399 "arrivalTerminalCode": "ALA",
400 "flightDuration": "3h 10m"
401 }
402 ],
403 "passengers": [
404 {
405 "id": "1d8793e6-346e-4b5c-933f-3d8637684d7e-A1",
406 "isAdult": true,
407 "selectedForwardBaggageCode": "INCLUDED",
408 "selectedBackwardBaggageCode": "INCLUDED",
409 "forwardBaggages": [
410 {
411 "baggageCode": "INCLUDED",
412 "description": "20 Kg Included",
413 "price": 0.0,
414 "currency": "USD",
415 "included": true
416 }
417 ],
418 "backwardBaggages": [
419 {
420 "baggageCode": "INCLUDED",
421 "description": "20 Kg Included",
422 "price": 0.0,
423 "currency": "USD",
424 "included": true
425 }
426 ]
427 },
428 {
429 "id": "1d8793e6-346e-4b5c-933f-3d8637684d7e-A2",
430 "isAdult": true,
431 "selectedForwardBaggageCode": "INCLUDED",
432 "selectedBackwardBaggageCode": "INCLUDED",
433 "forwardBaggages": [
434 {
435 "baggageCode": "INCLUDED",
436 "description": "20 Kg Included",
437 "price": 0.0,
438 "currency": "USD",
439 "included": true
440 }
441 ],
442 "backwardBaggages": [
443 {
444 "baggageCode": "INCLUDED",
445 "description": "20 Kg Included",
446 "price": 0.0,
447 "currency": "USD",
448 "included": true
449 }
450 ]
451 }
452 ]
453 },
454 "extraServices": [],
455 "insurancePrice": {
456 "name": "Medical INS (N10000)",
457 "price": 35.84,
458 "actualStartDate": "2024-05-25T00:00:00.000",
459 "actualEndDate": "2024-06-01T00:00:00.000",
460 "optional": false,
461 "includedInPackagePrice": true
462 },
463 "cacheKey": "bd7e9a28fb744528a2deb043f05e0502602ea56f943a4dc9805321db85d51137:{9}:i:1",
464 "sortCheckInOut": "25.05.2024-01.06.2024",
465 "sortAirline": "fly dubai",
466 "sortHotelName": "citymax sharjah",
467 "sortDetails": "bb",
468 "sortPlacement": "standard room 2 adults"
469 }
470 ],
471 "pagingId": "9",
472 "pageNumber": 1,
473 "pageCount": 883,
474 "totalCount": 883,
475 "error": false
476 }
477 {{/code}}
478
479
480 === Schema ===
481
482 {{success}}
483 SearchTourPackagesResponse{
484
485 |error|boolean
486 |errorCode|string
487 nullable: true
488 |errorDescription|string
489 nullable: true
490 |userErrorDescription|string
491 nullable: true
492 |packages|[
493 nullable: trueTourPackage{(((
494 |cacheKey|string
495 nullable: true
496 |id|string
497 nullable: true
498 |priceCurrency|string
499 nullable: true
500 |totalPrice|number($double)
501 |agentCommissionPercent|number($double)
502 |agentCommissionAmount|number($double)
503 |includedExtrasAmount|number($double)
504 |priceDifference|number($double)
505 |hotel|PackageHotel{(((
506 |hotelPriceId|string
507 nullable: true
508 |providerId|integer($int32)
509 |hotelName|string
510 nullable: true
511 |hotelCode|string
512 nullable: true
513 |nigths|integer($int32)
514 |mealPlan|string
515 nullable: true
516 |hotelClass|string
517 nullable: true
518 |availabilityType|RoomAvailabilityTypeEnumstringEnum:
519 [ OnRequest, FreeSale, StopSale ]
520 |availableRoomsCount|integer($int32)
521 |fewRooms|boolean
522 |roomCategoryCode|string
523 nullable: true
524 |roomCategoryName|string
525 nullable: true
526 |placementTypeName|string
527 nullable: true
528 |placementDescription|string
529 nullable: true
530 |checkInDate|string($date-time)
531 |checkOutDate|string($date-time)
532 |adults|integer($int32)
533 |children|integer($int32)
534 |districtUID|string($uuid)
535 nullable: true
536 |districtName|string
537 nullable: true
538 |cityUID|string($uuid)
539 nullable: true
540 |cityName|string
541 nullable: true
542 |countryCode|string
543 nullable: true
544 |countryName|string
545 nullable: true
546 |hasAlcohol|boolean
547 |hasFreeWifi|boolean
548 |hasMetro|boolean
549 |hasPool|boolean
550 |hasMall|boolean
551 |cancellationPolicyDescription|string
552 nullable: true
553 |cancellationPolicy|CancellationPolicyExchange{(((
554 |cancellationPolicyCode|string
555 nullable: true
556 |noShowChargeValue|number($double)
557 nullable: true
558 |noShowChargeValueType|string
559 nullable: true
560 |earlyDepartureChargeValue|number($double)
561 nullable: true
562 |earlyDepartureChargeValueType|string
563 nullable: true
564 |conditions|[
565 nullable: trueCancellationPolicyConditionExchange{(((
566 |timeunits|integer($int32)
567 |timeunitType|string
568 nullable: true
569 |timeOffsetTypeName|string
570 nullable: true
571 |chargeValue|number($double)
572 nullable: true
573 |chargeValueType|string
574 nullable: true
575
576 }]
577 )))
578
579 }
580 )))
581
582 }
583 )))
584 |flight|PackageFlight{(((
585 |id|string
586 nullable: true
587 |departureDate|string($date-time)
588 |returnDate|string($date-time)
589 nullable: true
590 |departureTicketsLeft|integer($int32)
591 |returnTicketsLeft|integer($int32)
592 |departureAvailabilityType|FlightAvailabilityTypestringEnum:
593 [ OnRequest, FreeSale, FewPlaces, StopSale ]
594 |returnAvailabilityType|FlightAvailabilityTypestringEnum:
595 [ OnRequest, FreeSale, FewPlaces, StopSale ]
596 |isTwoWay|boolean
597 |departureSegments|[
598 nullable: trueFlightSegment{(((
599 |airlineCode|string
600 nullable: true
601 |airlineName|string
602 nullable: true
603 |flightCode|string
604 nullable: true
605 |class|string
606 nullable: true
607 |lugageWeight|number($double)
608 |handLugageWeight|number($double)
609 |departureFlightDate|string($date-time)
610 |departureCountryName|string
611 nullable: true
612 |departureCityName|string
613 nullable: true
614 |departureAirportCode|string
615 nullable: true
616 |departureAirportName|string
617 nullable: true
618 |departureTerminalCode|string
619 nullable: true
620 |arrivalFlightDate|string($date-time)
621 |arrivalCountryName|string
622 nullable: true
623 |arrivalCityName|string
624 nullable: true
625 |arrivalAirportCode|string
626 nullable: true
627 |arrivalAirportName|string
628 nullable: true
629 |arrivalTerminalCode|string
630 nullable: true
631 |flightDuration|string
632 nullable: true
633 |baggages|[
634 nullable: trueBaggage{(((
635 |baggageCode|string
636 nullable: true
637 |description|string
638 nullable: true
639 |price|number($double)
640 |currency|string
641 nullable: true
642 |included|boolean
643
644 }]
645 )))
646
647 }]
648 )))
649 |returnSegments|[
650 nullable: trueFlightSegment{(((
651 |airlineCode|string
652 nullable: true
653 |airlineName|string
654 nullable: true
655 |flightCode|string
656 nullable: true
657 |class|string
658 nullable: true
659 |lugageWeight|number($double)
660 |handLugageWeight|number($double)
661 |departureFlightDate|string($date-time)
662 |departureCountryName|string
663 nullable: true
664 |departureCityName|string
665 nullable: true
666 |departureAirportCode|string
667 nullable: true
668 |departureAirportName|string
669 nullable: true
670 |departureTerminalCode|string
671 nullable: true
672 |arrivalFlightDate|string($date-time)
673 |arrivalCountryName|string
674 nullable: true
675 |arrivalCityName|string
676 nullable: true
677 |arrivalAirportCode|string
678 nullable: true
679 |arrivalAirportName|string
680 nullable: true
681 |arrivalTerminalCode|string
682 nullable: true
683 |flightDuration|string
684 nullable: true
685 |baggages|[
686 nullable: trueBaggage{(((
687 |baggageCode|string
688 nullable: true
689 |description|string
690 nullable: true
691 |price|number($double)
692 |currency|string
693 nullable: true
694 |included|boolean
695
696 }]
697 )))
698
699 }]
700 )))
701
702 }
703 )))
704 |extraServices|[
705 nullable: trueHotelExtraServiceBase{(((
706 |extraServiceCode|string
707 nullable: true
708 |extraServiceTypeCode|string
709 nullable: true
710 |isMandatory|integer($int32)
711 |extraServiceName|string
712 nullable: true
713 |minimalServiceAmount|number($double)
714 |includedPriceCode|string
715 nullable: true
716 |prices|[
717 nullable: trueHotelExtraServicePriceBase{(((
718 |extraServicePriceCode|string
719 nullable: true
720 |displayName|string
721 nullable: true
722 |restrictionInfo|string
723 nullable: true
724 |additionalInfo|string
725 nullable: true
726 |price|number($double)
727 |extraPrice|number($double)
728 |currency|string
729 nullable: true
730
731 }]
732 )))
733
734 }]
735 )))
736 |insurancePrice|InsurancePrice{(((
737 |name|string
738 nullable: true
739 |price|number($double)
740 |priceSurcarge|number($double)
741 |actualStartDate|string($date-time)
742 |actualEndDate|string($date-time)
743 |optional|boolean
744 |includedInPackagePrice|boolean
745
746 }
747 )))
748
749 }]
750 )))
751 |pagingId|string
752 nullable: true
753 |pageNumber|integer($int64)
754 |pageCount|integer($int64)
755
756 }
757 {{/success}}
758
759
760 == Definitions ==
761
762
763 === **Request Parameters ** ===
764
765 (% class="table-bordered" %)
766 |=Key|=Type|=Nullable|=Description
767 |departureCountryCode|String|No|The ISO 3166-1 alpha-2 code of the departure country. For example, "KZ" for Kazakhstan.
768 |departureCityUID|String (UUID)|No|The unique identifier of the departure city. This is a UUID, such as "f0ba6324-f337-405c-8cc7-23d62cf664e8".
769 |arrivalCountryCode|String|No|The ISO 3166-1 alpha-2 code of the arrival country. For example, "AE" for United Arab Emirates.
770 |adults|Integer|No|The number of adults for the trip. For example, 2 for two adults.
771 |children|Integer|No|The number of children for the trip. For example, 0 for no children.
772 |departureDate|String (date-time)|No|The departure date in ISO 8601 format. For example, "2024-05-25T00:00:00" for May 25, 2024.
773 |returnDate|String (date-time)|No|The return date in ISO 8601 format. For example, "2024-06-01T00:00:00" for June 1, 2024.
774 |departureAndReturnDaysCount|Integer|No|The total number of days for the departure and return trip. For example, 7 for a week-long trip.
775 |checkInDate|String (date-time)|No|The check-in date at the hotel in ISO 8601 format. For example, "2024-05-25T00:00:00" for May 25, 2024.
776 |checkOutDate|String (date-time)|No|The check-out date from the hotel in ISO 8601 format. For example, "2024-06-01T00:00:00" for June 1, 2024.
777 |checkInAndCheckOutDaysCount|Integer|No|The total number of days for the hotel stay. For example, 7 for a week-long stay.
778 |directFlightsOnly|Boolean|No|Whether to search for direct flights only. For example, true to only search for direct flights.
779 |pageRowCount|Integer|No|The number of results to return per page. For example, 1 to return 1 result per page.
780 |searchCurrency|String|No|The currency in which the search results should be displayed. For example, "USD" for United States Dollar.
781
782 === **Response Parameters** ===
783
784 (% class="table-bordered" %)
785 |=Key|=Type|=Description
786 |packages|Array|An array of travel packages. Each package includes various details about the package.
787 |packages[].id|String|A unique identifier for the package. This is used to uniquely identify each package.
788 |packages[].priceCurrency|String|The currency in which the price is denoted. This could be USD, EUR, etc.
789 |packages[].totalPrice|Number|The total price of the package. This includes all costs associated with the package.
790 |packages[].agentCommissionPercent|Number|The commission percentage for the agent. This is the percentage of the total price that the agent receives as commission.
791 |packages[].agentCommissionAmount|Number|The commission amount for the agent. This is the actual amount the agent receives as commission.
792 |packages[].includedExtrasAmount|Number|The amount for the included extras. This is the cost of any extra services included in the package.
793 |packages[].priceDifference|Number|The price difference. This could be a discount or a price increase.
794 |packages[].hotel|Object|An object containing details about the hotel included in the package. This includes information like the hotel name, class, availability, etc.
795 |packages[].hotel.hotelPriceId|String|The price ID of the hotel. This is used to uniquely identify the price for the hotel.
796 |packages[].hotel.hotelName|String|The name of the hotel. This is the actual name of the hotel.
797 |packages[].hotel.hotelCode|String|The code of the hotel. This is a unique code used to identify the hotel.
798 |packages[].hotel.nights|Number|The number of nights for the stay. This is the duration of the stay at the hotel.
799 |packages[].hotel.mealPlan|String|The meal plan for the stay. This could be breakfast included, all inclusive, etc.
800 |packages[].hotel.hotelClass|String|The class of the hotel. This could be 3-star, 4-star, 5-star, etc.
801 |packages[].hotel.hotelColor|String|The color associated with the hotel. This could be used for categorization or visualization purposes.
802 |packages[].hotel.availabilityType|String|The availability type of the hotel. This could be available, sold out, etc.
803 |packages[].hotel.availableRoomsCount|Number|The count of available rooms. This is the number of rooms that are currently available at the hotel.
804 |packages[].hotel.fewRooms|Boolean|A boolean indicating if there are few rooms left. If true, it means that there are only a few rooms left.
805 |packages[].hotel.roomCategoryCode|String|The code of the room category. This is a unique code used to identify the room category.
806 |packages[].hotel.roomCategoryName|String|The name of the room category. This is the actual name of the room category.
807 |packages[].hotel.placementTypeName|String|The name of the placement type. This could be sea view, garden view, etc.
808 |packages[].hotel.placementDescription|String|The description of the placement. This provides more details about the placement type.
809 |packages[].hotel.checkInDate|String|The check-in date. This is the date when the stay at the hotel begins.
810 |packages[].hotel.checkOutDate|String|The check-out date. This is the date when the stay at the hotel ends.
811 |packages[].hotel.adults|Number|The number of adults. This is the number of adults that will be staying at the hotel.
812 |packages[].hotel.children|Number|The number of children. This is the number of children that will be staying at the hotel.
813 |packages[].hotel.districtUID|String|The UID of the district. This is a unique identifier for the district where the hotel is located.
814 |packages[].hotel.districtName|String|The name of the district. This is the actual name of the district where the hotel is located.
815 |packages[].hotel.cityUID|String|The UID of the city. This is a unique identifier for the city where the hotel is located.
816 |packages[].hotel.cityName|String|The name of the city. This is the actual name of the city where the hotel is located.
817 |packages[].hotel.countryCode|String|The code of the country. This is a unique code used to identify the country where the hotel is located.
818 |packages[].hotel.countryName|String|The name of the country. This is the actual name of the country where the hotel is located.
819 |packages[].hotel.hasAlcohol|Boolean|A boolean indicating if alcohol is available. If true, it means that alcohol is available at the hotel.
820 |packages[].hotel.hasFreeWifi|Boolean|A boolean indicating if free Wi-Fi is available. If true, it means that free Wi-Fi is available at the hotel.
821 |packages[].hotel.hasMetro|Boolean|A boolean indicating if metro is available. If true, it means that there is a metro station near the hotel.
822 |packages[].hotel.hasPool|Boolean|A boolean indicating if a pool is available. If true, it means that the hotel has a pool.
823 |packages[].hotel.hasMall|Boolean|A boolean indicating if a mall is available. If true, it means that there is a mall near the hotel.
824 |packages[].hotel.infantMaxAge|Number|The maximum age for an infant. This is the maximum age at which a person is considered an infant.
825 |packages[].hotel.childMinAge|Number|The minimum age for a child. This is the minimum age at which a person is considered a child.
826 |packages[].hotel.childMaxAge|Number|The maximum age for a child. This is the maximum age at which a person is considered a child.
827 |packages[].hotel.teenMinAge|Number|The minimum age for a teen. This is the minimum age at which a person is considered a teen.
828 |packages[].hotel.teenMaxAge|Number|The maximum age for a teen. This is the maximum age at which a person is considered a teen.
829 |packages[].hotel.adultMinAge|Number|The minimum age for an adult. This is the minimum age at which a person is considered an adult.
830 |packages[].hotel.cancellationPolicyDescription|String|The description of the cancellation policy. This provides more details about the cancellation policy of the hotel.
831 |packages[].hotel.cancellationPolicy|Object|An object containing details about the cancellation policy. This includes information like the cancellation deadline, cancellation fee, etc.
832 |packages[].flight|Object|An object containing details about the flight included in the package. This includes information like the flight ID, departure date, return date, etc.
833 |packages[].flight.id|String|The ID of the flight. This is used to uniquely identify the flight.
834 |packages[].flight.departureDate|String|The departure date of the flight. This is the date when the flight departs.
835 |packages[].flight.returnDate|String|The return date of the flight. This is the date when the flight returns.
836 |packages[].flight.departureTicketsLeft|Number|The number of departure tickets left. This is the number of tickets that are still available for the departure flight.
837 |packages[].flight.returnTicketsLeft|Number|The number of return tickets left. This is the number of tickets that are still available for the return flight.
838 |packages[].flight.departureAvailabilityType|String|The availability type of the departure flight. This could be available, sold out, etc.
839 |packages[].flight.returnAvailabilityType|String|The availability type of the return flight. This could be available, sold out, etc.
840 |packages[].flight.isTwoWay|Boolean|A boolean indicating if the flight is two-way. If true, it means that the flight includes both departure and return.
841 |packages[].flight.sameBaggageForAll|Boolean|A boolean indicating if the same baggage is for all. If true, it means that the same baggage allowance applies to all passengers.
842 |packages[].flight.totalBaggage|Boolean|A boolean indicating if total baggage is included. If true, it means that the total baggage allowance is included in the price.
843 |packages[].flight.isBlock|Boolean|A boolean indicating if the flight is blocked. If true, it means that the flight is currently blocked and cannot be booked.
844 |packages[].flight.class|String|The class of the flight. This could be economy, business, first class, etc.
845 |packages[].flight.departureSegments|Array|An array containing details about the departure segments. Each segment includes information like the departure airport, arrival airport, departure time, arrival time, etc.
846 |packages[].flight.returnSegments|Array|An array containing details about the return segments. Each segment includes information like the departure airport, arrival airport, departure time, arrival time, etc.
847 |packages[].flight.passengers|Array|An array containing details about the passengers. Each passenger includes information like the passenger type, baggage allowance, etc.
848 |packages[].extraServices|Array|An array of any extra services included in the package. Each service includes information like the service name, service price, etc.
849 |packages[].insurancePrice|Object|An object containing details about the insurance price included in the package. This includes information like the insurance type, insurance price, etc.
850 |packages[].cacheKey|String|The cache key. This is used to cache the package details for faster retrieval.
851 |packages[].sortCheckInOut|String|The check-in and check-out dates for sorting. This is used to sort the packages based on the check-in and check-out dates.
852 |packages[].sortAirline|String|The airline for sorting. This is used to sort the packages based on the airline.
853 |packages[].sortHotelName|String|The hotel name for sorting. This is used to sort the packages based on the hotel name.
854 |packages[].sortDetails|String|The details for sorting. This is used to sort the packages based on various details.
855 |packages[].sortPlacement|String|The placement for sorting. This is used to sort the packages based on the placement.
856 |pagingId|String|An identifier for the page. This is used to uniquely identify each page of results.
857 |pageNumber|Number|The current page number. This is the number of the current page of results.
858 |pageCount|Number|The total number of pages. This is the total number of pages of results.
859 |totalCount|Number|The total count of packages. This is the total number of packages in all pages of results.
860 |error|Boolean|A boolean indicating whether there was an error. If true, it means that there was an error in retrieving the packages.
861
862 ==== first request ====
863
864 {{code language="Json"}}
865 {
866 "pagingId": "",
867 "pageNumber": 1,
868 "pageRowCount":10
869 }
870 {{/code}}
871
872 While making first search request, paging id should be empty,  "pageNumber":  and  "pageRowCount":10 means that, in response there will be returned maximum 10 packages per page.
873
874
875 ==== Request with caching ====
876
877 after receiving response from first search request, in the end we can see pagingId- number, wchich we can use for caching, and (pageinatoin) for switch pagenumbers, and displaying results as we whant. For cleaning cache, it's important to make new request without cllear pagingID, like this  "pagingId": "",
878
879 {{code language="Json"}}
880 {
881 "pagingId": "80",
882 "pageNumber": 1,
883 "pageRowCount":10
884 }
885 {{/code}}
886
887
888 **Overview:** The Paging and Caching mechanism is designed to efficiently manage data retrieval in a paginated format. This mechanism is essential for handling large datasets by dividing the data into manageable pages, thereby optimizing the performance and scalability of data retrieval operations.
889
890 **Initial Request:**
891
892 * **Purpose**: The first request initiates the paging process and is designed to fetch the initial set of data without utilizing a pagingId.
893 * **Parameters**:
894 ** pagingId: Should be set to an empty string ("") to indicate that this is the initial request.
895 ** pageNumber: Indicates the specific page of data to retrieve, starting with 1.
896 ** pageRowCount: Specifies the number of results to be included on each page.
897
898 **Example - First Request**:
899
900 {{{{
901 "pagingId": "",
902   "pageNumber": 1,
903   "pageRowCount": 10
904 }
905 }}}
906
907
908 **Subsequent Requests with Caching:**
909
910 * **Purpose**: Following the initial data retrieval, subsequent requests utilize the pagingId obtained from the previous response. This pagingId serves as a cache identifier, enabling the system to quickly access the relevant dataset and efficiently paginate through the data.
911 * **Cache Utilization**:
912 ** Upon receiving a response, a pagingId value is provided. This pagingId should be used in subsequent requests to reference the cached data.
913 ** To navigate through the dataset, adjust the pageNumber while keeping the pagingId constant.
914 ** To refresh the dataset and clear the cache, initiate a new request without a pagingId.
915
916 **Example - Request with Caching**:
917
918 {{{ {
919 "pagingId": "80",
920 "pageNumber": 2, // Adjusted to fetch the next page
921 "pageRowCount": 10
922 }
923 }}}
924
925
926 **Cache Management:**
927
928 * Clearing the cache and fetching a fresh set of data requires sending a new request with the pagingId parameter omitted or set to an empty string. This action resets the pagination and caching context.
929
930 **Implementation Notes**:
931
932 * The paging and caching mechanism significantly enhances data retrieval efficiency by minimizing server load and optimizing response times.
933 * Developers should ensure that the pagingId is correctly managed between requests to maintain session continuity and data consistency.
934
935 This documentation outlines the procedural framework for implementing a robust paging and caching strategy within data retrieval systems, detailing parameter usage and operational best practices for both initial and subsequent data fetch operations.
936
937
938 === search parameter options ===
939
940 in the request body it's available to filter search results with parameters. parameter examples:
941
942 {{code language="Json"}}
943 { "totalPriceFrom": 500,
944 "totalPriceTo": 10000,
945 "hotelTypes": [
946 "CityHotel",
947 "BeachHotel",
948 "SecondLineBeach"
949 ],
950 "hotelClasses": [
951 "1",
952 "2",
953 "3",
954 "4",
955 "5",
956 "6"
957 ],
958 "hotelServices": [
959 "HasAlcohol",
960 "HasFreeWifi",
961 "HasMetro",
962 "HasPool",
963 "HasMall"
964 ],
965 "mealPlans": [
966 "RO",
967 "BB",
968 "HB",
969 "FB",
970 "AL"
971 ]
972 }
973 {{/code}}
974
975
976 == Important ==
977
978 {{error}}
979 === Implementing Authorization in Subsequent Requests ===
980
981 For every API request after the initial authentication, it's crucial to include the authorization token in the request header. This ensures your requests are authorized and can access the necessary resources. Here's how to properly include your token:
982
983 * **Header Key:** Authorization
984 * **Header Value:** Bearer [Your Token Here] - Use the bearer token provided in the initial authentication response. The authorization type should be specified as Bearer Token.
985
986 Additionally, to ensure your requests are properly formatted and recognized, include the following headers:
987
988 * **Content-Type:** Specify this header as application/json to indicate the format of the request body.
989 * **Header Key:** X-nugios-timezone
990 * **Header Value:** 240 - Adjust this value to match your local timezone offset in minutes.
991
992 Incorporating these headers with their respective values is essential for the successful processing of your API requests.
993 {{/error}}
994
995
996
997 (% class="box errormessage" %)
998 (((
999 Tour package requirements can vary based on the destination country, necessitating the inclusion of additional mandatory services such as Visa, Insurance, etc. When querying for tour packages through the API, the response payload will dynamically include fields indicating whether these services are mandatory. For instance, the API may return a structure like this:
1000
1001 [[image:https://xwiki.nugios.com/xwiki/bin/download/APIs/Online%20API/TourPackages/WebHome/1713191255012-154.png?rev=1.1||alt="1713191255012-154.png"]]
1002
1003 in the given example it means that insurance service is mandatory for the tourpackage
1004 )))