Changes for page 1. SearchTourPackages

Last modified by Giorgi Mdivnishvili on 2025/10/22 15:30

From version 10.1
edited by Giorgi Mdivnishvili
on 2023/12/15 12:20
Change comment: There is no comment for this version
To version 38.2
edited by Giorgi Mdivnishvili
on 2024/04/15 18:37
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -SearchTourPackages
1 +1. SearchTourPackages
Content
... ... @@ -6,21 +6,43 @@
6 6  
7 7  = Method Description =
8 8  
9 -The initial method of the integration process is authorization. You will be provided with a test user username and password to generate the access token that you will need to pass in all the following methods.
9 +Tour package mean, tour with hotel and flight  together In case of variation also with transfer option. 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 +
14 +in more  details:
15 +
16 +A tour package encapsulates a bundled offering that includes both hotel accommodations and flight arrangements. In certain variations, it may also incorporate transfer options, providing a comprehensive travel solution. The method detailed herein facilitates the retrieval of data concerning the complete availability of such tour packages, including pertinent flight and hotel options.
17 +
18 +**Data Retrieval Parameters:**
19 +
20 +* **Parameter Usage**: To query package data, the system utilizes the following parameters within the request payload:
21 +** stayDays: Defines the minimum duration of stay (in days) as part of the tour package. The value is set to 0 by default, indicating no minimum duration constraint.
22 +** stayDaysTo: Specifies the maximum duration of stay (in days) allowable within the package offerings. A default value of 0 implies no maximum limit; however, the system enforces a maximum duration difference of 7 days between stayDays and stayDaysTo.
23 +
24 +**Constraints:**
25 +
26 +* The system imposes a constraint wherein the difference between stayDays and stayDaysTo cannot exceed 7 days. This limit is designed to refine search results and maintain query performance.
27 +
28 +**Example Requests:** Below are examples illustrating how to structure requests for retrieving tour package data, utilizing the stayDays and stayDaysTo parameters to define the desired range of stay durations.
29 +
30 +(Note: Actual example requests are not included in this response but should typically be provided here, showcasing the structure and format of API calls or query parameters used to fetch the tour package data.)
31 +
32 +This documentation aims to guide developers in effectively querying for tour package options, employing specified parameters to tailor the search according to the duration of stay requirements.
33 +
34 +
12 12  == Endpoint URL - [POST] ==
13 13  
14 14  {{info}}
15 -{{{ }}}
38 +[[https:~~/~~/integration.kazunion.com/api/TourPackages/SearchTourPackages>>https://integration.kazunion.com/api/TourPackages/SearchTourPackages]]
16 16  {{/info}}
17 17  
18 -
19 19  == Request Parameters ==
20 20  
21 21  (% class="box infomessage" %)
22 22  (((
23 -None
45 +None 
24 24  )))
25 25  
26 26  
... ... @@ -41,13 +41,13 @@
41 41   "tag": "string"
42 42   }
43 43   ],
44 - "checkInDate": "2023-12-14T13:43:54.766Z",
45 - "checkInDateTo": "2023-12-14T13:43:54.766Z",
46 - "checkOutDate": "2023-12-14T13:43:54.766Z",
66 + "checkInDate": "2023-12-14",
67 + "checkInDateTo": "2023-12-14",
68 + "checkOutDate": "2023-12-14",
47 47   "stayDays": 0,
48 48   "stayDaysTo": 0,
49 - "departureDate": "2023-12-14T13:43:54.766Z",
50 - "returnDate": "2023-12-14T13:43:54.766Z",
71 + "departureDate": "2023-12-14",
72 + "returnDate": "2023-12-14",
51 51   "airlineCode": "string",
52 52   "ticketType": "string",
53 53   "directFlightsOnly": true,
... ... @@ -86,6 +86,65 @@
86 86  {{/code}}
87 87  
88 88  
111 +== Request example ==
112 +
113 +{{code language="Json"}}
114 +{
115 + "departureCountryCode": "KZ",
116 + "departureCityUID": "f0ba6324-f337-405c-8cc7-23d62cf664e8",
117 + "arrivalCountryCode": "AE",
118 + "arrivalLocations": [
119 + {
120 + "type": "city",
121 + "label": "Dubai",
122 + "value": "f5185fa3-3f56-44ed-bf6b-80386a33caa2",
123 + "tag": "Dubai"
124 + }
125 + ],
126 + "checkInDate": "2024-02-05T20:00:00.000Z",
127 + "checkInDateTo": "2024-02-10T20:00:00.000Z",
128 +
129 + "stayDays": 3,
130 + "stayDaysTo": 6,
131 +
132 + "airlineCode": "",
133 + "ticketType": "",
134 + "directFlightsOnly": true,
135 + "longConnectTime": true,
136 + "adults": 1,
137 + "children": 1,
138 + "childrenAges": [
139 + 2
140 + ],
141 + "extendedSearch": false,
142 + "totalPriceFrom": 100,
143 + "totalPriceTo": 15000,
144 + "recommended": true,
145 + "popular": true,
146 + "freeSale": true,
147 + "groupByHotel": true,
148 + "hotelCodes": [
149 +
150 + ],
151 + "mealPlans": [
152 +
153 + ],
154 + "hotelClasses": [
155 +
156 + ],
157 + "hotelTypes": [
158 +
159 + ],
160 + "hotelServices": [
161 +
162 + ],
163 + "pagingId": "",
164 + "pageNumber": 10,
165 + "pageRowCount": 10
166 +}
167 +{{/code}}
168 +
169 +
89 89  == Response Body ==
90 90  
91 91  {{code language="json"}}
... ... @@ -265,271 +265,690 @@
265 265  {{/code}}
266 266  
267 267  
268 -=== example ===
349 +== Response example ==
269 269  
270 270  {{code language="Json"}}
271 -X
352 +{
353 + "packages": [
354 + {
355 + "cacheKey": "c705ab31e00e4f9a81c2fd46b2cdbb47f6fd9a6e16984236beb979b31aefafa4:{79}:i:10",
356 + "id": "tour:b01c168e-2ea7-4ea6-b6e0-55abb8cab0a0:da894a1e-88c0-4877-b216-0eeeabe186f3:4298d06f-4344-4a39-ad98-071b7760cf30",
357 + "priceCurrency": "USD",
358 + "totalPrice": 1033.53,
359 + "agentCommissionPercent": 0.0,
360 + "agentCommissionAmount": 0.0,
361 + "includedExtrasAmount": 0,
362 + "priceDifference": 0,
363 + "hotel": {
364 + "hotelPriceId": "da894a1e-88c0-4877-b216-0eeeabe186f3",
365 + "providerId": 13,
366 + "hotelName": "Mercure Dubai Barsha Heights Suites Apartments",
367 + "hotelCode": "5f125310-7025-4807-a4c6-49cd284c9c14",
368 + "nigths": 3,
369 + "mealPlan": "BB",
370 + "hotelClass": "4",
371 + "availabilityType": "FreeSale",
372 + "availableRoomsCount": 0,
373 + "fewRooms": true,
374 + "roomCategoryCode": "bc5f2224-bd4c-49b2-ab57-01eb7fa80d41",
375 + "roomCategoryName": "1 B/R Suite City View",
376 + "placementTypeName": "DBL",
377 + "checkInDate": "2024-02-09T20:00:00.000Z",
378 + "checkOutDate": "2024-02-12T20:00:00.000Z",
379 + "adults": 1,
380 + "children": 1,
381 + "districtUID": "4c65f6ed-902b-4fd8-9419-af7884c22c5e",
382 + "districtName": "Al Barsha",
383 + "cityUID": "f5185fa3-3f56-44ed-bf6b-80386a33caa2",
384 + "cityName": "Dubai",
385 + "countryCode": "AE",
386 + "countryName": "United Arab Emirates",
387 + "hasAlcohol": false,
388 + "hasFreeWifi": true,
389 + "hasMetro": true,
390 + "hasPool": true,
391 + "hasMall": false,
392 + "cancellationPolicyDescription": "Cancellation Policy: 5 Day Before Arrival: 100.00 %, Early Departure: 100.00 %, NoShow: 100.00 %",
393 + "cancellationPolicy": {
394 + "noShowChargeValue": 100.0,
395 + "noShowChargeValueType": "%",
396 + "earlyDepartureChargeValue": 100.0,
397 + "earlyDepartureChargeValueType": "%",
398 + "conditions": [
399 + {
400 + "timeunits": 5,
401 + "timeunitType": "Day",
402 + "timeOffsetTypeName": "Before Arrival",
403 + "chargeValue": 100.0,
404 + "chargeValueType": "%"
405 + }
406 + ]
407 + }
408 + },
409 + "flight": {
410 + "id": "4298d06f-4344-4a39-ad98-071b7760cf30",
411 + "departureDate": "2024-02-09T20:00:00.000Z",
412 + "returnDate": "2024-02-12T20:00:00.000Z",
413 + "departureTicketsLeft": 7,
414 + "returnTicketsLeft": 7,
415 + "departureAvailabilityType": "FewPlaces",
416 + "returnAvailabilityType": "FewPlaces",
417 + "isTwoWay": true,
418 + "sameBaggageForAll": false,
419 + "totalBaggage": false,
420 + "departureSegments": [
421 + {
422 + "airlineCode": "KC",
423 + "airlineName": "Air Astana-",
424 + "flightCode": "KC897",
425 + "class": "econom",
426 + "lugageWeight": 20,
427 + "handLugageWeight": 6,
428 + "departureFlightDate": "2024-02-09T20:00:00.000Z",
429 + "departureCountryName": "Kazakhstan",
430 + "departureCityName": "Almaty",
431 + "departureAirportCode": "ALA",
432 + "departureAirportName": "Almaty Intl Airport",
433 + "departureTerminalCode": "ALA",
434 + "arrivalFlightDate": "2024-02-09T20:00:00.000Z",
435 + "arrivalCountryName": "United Arab Emirates",
436 + "arrivalCityName": "Dubai",
437 + "arrivalAirportCode": "DXB",
438 + "arrivalAirportName": "Dubai Intl Airport",
439 + "arrivalTerminalCode": "DXB1",
440 + "flightDuration": "0h 50m"
441 + }
442 + ],
443 + "returnSegments": [
444 + {
445 + "airlineCode": "KC",
446 + "airlineName": "Air Astana-",
447 + "flightCode": "KC900",
448 + "class": "econom",
449 + "lugageWeight": 20,
450 + "handLugageWeight": 6,
451 + "departureFlightDate": "2024-02-12T20:00:00.000Z",
452 + "departureCountryName": "United Arab Emirates",
453 + "departureCityName": "Dubai",
454 + "departureAirportCode": "DXB",
455 + "departureAirportName": "Dubai Intl Airport",
456 + "departureTerminalCode": "DXB1",
457 + "arrivalFlightDate": "2024-02-12T20:00:00.000Z",
458 + "arrivalCountryName": "Kazakhstan",
459 + "arrivalCityName": "Almaty",
460 + "arrivalAirportCode": "ALA",
461 + "arrivalAirportName": "Almaty Intl Airport",
462 + "arrivalTerminalCode": "ALA",
463 + "flightDuration": "8h 15m"
464 + }
465 + ],
466 + "passengers": [
467 + {
468 + "id": "42768722011000004-A1",
469 + "isAdult": true,
470 + "forwardBaggages": [],
471 + "backwardBaggages": []
472 + },
473 + {
474 + "id": "42768722011000004-C1",
475 + "isAdult": false,
476 + "forwardBaggages": [],
477 + "backwardBaggages": []
478 + }
479 + ]
480 + },
481 + "extraServices": [],
482 + "insurancePrice": {
483 + "name": "Medical INS (N10000)",
484 + "price": 17.92,
485 + "priceSurcarge": 0.0,
486 + "actualStartDate": "2024-02-09T20:00:00.000Z",
487 + "actualEndDate": "2024-02-12T20:00:00.000Z",
488 + "optional": false,
489 + "includedInPackagePrice": true
490 + }
491 + }
492 + ],
493 + "pagingId": "79",
494 + "pageNumber": 10,
495 + "pageCount": 2452,
496 + "totalCount": 2452,
497 + "error": false
498 +}
272 272  {{/code}}
273 273  
274 274  
275 275  === Schema ===
276 276  
277 -{{code language="none"}}
504 +{{success}}
278 278  SearchTourPackagesResponse{
279 -error boolean
280 -errorCode string
281 -nullable: true
282 -errorDescription string
283 -nullable: true
284 -userErrorDescription string
285 -nullable: true
286 -packages [
287 -nullable: true
288 -TourPackage{
289 -cacheKey string
290 -nullable: true
291 -id string
292 -nullable: true
293 -priceCurrency string
294 -nullable: true
295 -totalPrice number($double)
296 -agentCommissionPercent number($double)
297 -agentCommissionAmount number($double)
298 -includedExtrasAmount number($double)
299 -priceDifference number($double)
300 -hotel PackageHotel{
301 -hotelPriceId string
302 -nullable: true
303 -providerId integer($int32)
304 -hotelName string
305 -nullable: true
306 -hotelCode string
307 -nullable: true
308 -nigths integer($int32)
309 -mealPlan string
310 -nullable: true
311 -hotelClass string
312 -nullable: true
313 -availabilityType RoomAvailabilityTypeEnum[...]
314 -availableRoomsCount integer($int32)
315 -fewRooms boolean
316 -roomCategoryCode string
317 -nullable: true
318 -roomCategoryName string
319 -nullable: true
320 -placementTypeName string
321 -nullable: true
322 -placementDescription string
323 -nullable: true
324 -checkInDate string($date-time)
325 -checkOutDate string($date-time)
326 -adults integer($int32)
327 -children integer($int32)
328 -districtUID string($uuid)
329 -nullable: true
330 -districtName string
331 -nullable: true
332 -cityUID string($uuid)
333 -nullable: true
334 -cityName string
335 -nullable: true
336 -countryCode string
337 -nullable: true
338 -countryName string
339 -nullable: true
340 -hasAlcohol boolean
341 -hasFreeWifi boolean
342 -hasMetro boolean
343 -hasPool boolean
344 -hasMall boolean
345 -cancellationPolicyDescription string
346 -nullable: true
347 -cancellationPolicy CancellationPolicyExchange{
348 -cancellationPolicyCode string
349 -nullable: true
350 -noShowChargeValue number($double)
351 -nullable: true
352 -noShowChargeValueType string
353 -nullable: true
354 -earlyDepartureChargeValue number($double)
355 -nullable: true
356 -earlyDepartureChargeValueType string
357 -nullable: true
358 -conditions [
359 -nullable: true
360 -CancellationPolicyConditionExchange{
361 -timeunits integer($int32)
362 -timeunitType string
363 -nullable: true
364 -timeOffsetTypeName string
365 -nullable: true
366 -chargeValue number($double)
367 -nullable: true
368 -chargeValueType string
369 -nullable: true
506 +
507 +|error|boolean
508 +|errorCode|string
509 +nullable: true
510 +|errorDescription|string
511 +nullable: true
512 +|userErrorDescription|string
513 +nullable: true
514 +|packages|[
515 +nullable: trueTourPackage{(((
516 +|cacheKey|string
517 +nullable: true
518 +|id|string
519 +nullable: true
520 +|priceCurrency|string
521 +nullable: true
522 +|totalPrice|number($double)
523 +|agentCommissionPercent|number($double)
524 +|agentCommissionAmount|number($double)
525 +|includedExtrasAmount|number($double)
526 +|priceDifference|number($double)
527 +|hotel|PackageHotel{(((
528 +|hotelPriceId|string
529 +nullable: true
530 +|providerId|integer($int32)
531 +|hotelName|string
532 +nullable: true
533 +|hotelCode|string
534 +nullable: true
535 +|nigths|integer($int32)
536 +|mealPlan|string
537 +nullable: true
538 +|hotelClass|string
539 +nullable: true
540 +|availabilityType|RoomAvailabilityTypeEnumstringEnum:
541 +[ OnRequest, FreeSale, StopSale ]
542 +|availableRoomsCount|integer($int32)
543 +|fewRooms|boolean
544 +|roomCategoryCode|string
545 +nullable: true
546 +|roomCategoryName|string
547 +nullable: true
548 +|placementTypeName|string
549 +nullable: true
550 +|placementDescription|string
551 +nullable: true
552 +|checkInDate|string($date-time)
553 +|checkOutDate|string($date-time)
554 +|adults|integer($int32)
555 +|children|integer($int32)
556 +|districtUID|string($uuid)
557 +nullable: true
558 +|districtName|string
559 +nullable: true
560 +|cityUID|string($uuid)
561 +nullable: true
562 +|cityName|string
563 +nullable: true
564 +|countryCode|string
565 +nullable: true
566 +|countryName|string
567 +nullable: true
568 +|hasAlcohol|boolean
569 +|hasFreeWifi|boolean
570 +|hasMetro|boolean
571 +|hasPool|boolean
572 +|hasMall|boolean
573 +|cancellationPolicyDescription|string
574 +nullable: true
575 +|cancellationPolicy|CancellationPolicyExchange{(((
576 +|cancellationPolicyCode|string
577 +nullable: true
578 +|noShowChargeValue|number($double)
579 +nullable: true
580 +|noShowChargeValueType|string
581 +nullable: true
582 +|earlyDepartureChargeValue|number($double)
583 +nullable: true
584 +|earlyDepartureChargeValueType|string
585 +nullable: true
586 +|conditions|[
587 +nullable: trueCancellationPolicyConditionExchange{(((
588 +|timeunits|integer($int32)
589 +|timeunitType|string
590 +nullable: true
591 +|timeOffsetTypeName|string
592 +nullable: true
593 +|chargeValue|number($double)
594 +nullable: true
595 +|chargeValueType|string
596 +nullable: true
597 +
370 370  }]
599 +)))
600 +
371 371  }
602 +)))
603 +
372 372  }
373 -flight PackageFlight{
374 -id string
375 -nullable: true
376 -departureDate string($date-time)
377 -returnDate string($date-time)
378 -nullable: true
379 -departureTicketsLeft integer($int32)
380 -returnTicketsLeft integer($int32)
381 -departureAvailabilityType FlightAvailabilityTypestring
382 -Enum:
383 -[ OnRequest, FreeSale, FewPlaces, StopSale ]
384 -returnAvailabilityType FlightAvailabilityTypestring
385 -Enum:
386 -[ OnRequest, FreeSale, FewPlaces, StopSale ]
387 -isTwoWay boolean
388 -departureSegments [
389 -nullable: true
390 -FlightSegment{
391 -airlineCode string
392 -nullable: true
393 -airlineName string
394 -nullable: true
395 -flightCode string
396 -nullable: true
397 -class string
398 -nullable: true
399 -lugageWeight number($double)
400 -handLugageWeight number($double)
401 -departureFlightDate string($date-time)
402 -departureCountryName string
403 -nullable: true
404 -departureCityName string
405 -nullable: true
406 -departureAirportCode string
407 -nullable: true
408 -departureAirportName string
409 -nullable: true
410 -departureTerminalCode string
411 -nullable: true
412 -arrivalFlightDate string($date-time)
413 -arrivalCountryName string
414 -nullable: true
415 -arrivalCityName string
416 -nullable: true
417 -arrivalAirportCode string
418 -nullable: true
419 -arrivalAirportName string
420 -nullable: true
421 -arrivalTerminalCode string
422 -nullable: true
423 -flightDuration string
424 -nullable: true
425 -baggages [
426 -nullable: true
427 -Baggage{
428 -baggageCode string
429 -nullable: true
430 -description string
431 -nullable: true
432 -price number($double)
433 -currency string
434 -nullable: true
435 -included boolean
605 +)))
606 +|flight|PackageFlight{(((
607 +|id|string
608 +nullable: true
609 +|departureDate|string($date-time)
610 +|returnDate|string($date-time)
611 +nullable: true
612 +|departureTicketsLeft|integer($int32)
613 +|returnTicketsLeft|integer($int32)
614 +|departureAvailabilityType|FlightAvailabilityTypestringEnum:
615 +[ OnRequest, FreeSale, FewPlaces, StopSale ]
616 +|returnAvailabilityType|FlightAvailabilityTypestringEnum:
617 +[ OnRequest, FreeSale, FewPlaces, StopSale ]
618 +|isTwoWay|boolean
619 +|departureSegments|[
620 +nullable: trueFlightSegment{(((
621 +|airlineCode|string
622 +nullable: true
623 +|airlineName|string
624 +nullable: true
625 +|flightCode|string
626 +nullable: true
627 +|class|string
628 +nullable: true
629 +|lugageWeight|number($double)
630 +|handLugageWeight|number($double)
631 +|departureFlightDate|string($date-time)
632 +|departureCountryName|string
633 +nullable: true
634 +|departureCityName|string
635 +nullable: true
636 +|departureAirportCode|string
637 +nullable: true
638 +|departureAirportName|string
639 +nullable: true
640 +|departureTerminalCode|string
641 +nullable: true
642 +|arrivalFlightDate|string($date-time)
643 +|arrivalCountryName|string
644 +nullable: true
645 +|arrivalCityName|string
646 +nullable: true
647 +|arrivalAirportCode|string
648 +nullable: true
649 +|arrivalAirportName|string
650 +nullable: true
651 +|arrivalTerminalCode|string
652 +nullable: true
653 +|flightDuration|string
654 +nullable: true
655 +|baggages|[
656 +nullable: trueBaggage{(((
657 +|baggageCode|string
658 +nullable: true
659 +|description|string
660 +nullable: true
661 +|price|number($double)
662 +|currency|string
663 +nullable: true
664 +|included|boolean
665 +
436 436  }]
667 +)))
668 +
437 437  }]
438 -returnSegments [
439 -nullable: true
440 -FlightSegment{
441 -airlineCode string
442 -nullable: true
443 -airlineName string
444 -nullable: true
445 -flightCode string
446 -nullable: true
447 -class string
448 -nullable: true
449 -lugageWeight number($double)
450 -handLugageWeight number($double)
451 -departureFlightDate string($date-time)
452 -departureCountryName string
453 -nullable: true
454 -departureCityName string
455 -nullable: true
456 -departureAirportCode string
457 -nullable: true
458 -departureAirportName string
459 -nullable: true
460 -departureTerminalCode string
461 -nullable: true
462 -arrivalFlightDate string($date-time)
463 -arrivalCountryName string
464 -nullable: true
465 -arrivalCityName string
466 -nullable: true
467 -arrivalAirportCode string
468 -nullable: true
469 -arrivalAirportName string
470 -nullable: true
471 -arrivalTerminalCode string
472 -nullable: true
473 -flightDuration string
474 -nullable: true
475 -baggages [
476 -nullable: true
477 -Baggage{
478 -baggageCode string
479 -nullable: true
480 -description string
481 -nullable: true
482 -price number($double)
483 -currency string
484 -nullable: true
485 -included boolean
670 +)))
671 +|returnSegments|[
672 +nullable: trueFlightSegment{(((
673 +|airlineCode|string
674 +nullable: true
675 +|airlineName|string
676 +nullable: true
677 +|flightCode|string
678 +nullable: true
679 +|class|string
680 +nullable: true
681 +|lugageWeight|number($double)
682 +|handLugageWeight|number($double)
683 +|departureFlightDate|string($date-time)
684 +|departureCountryName|string
685 +nullable: true
686 +|departureCityName|string
687 +nullable: true
688 +|departureAirportCode|string
689 +nullable: true
690 +|departureAirportName|string
691 +nullable: true
692 +|departureTerminalCode|string
693 +nullable: true
694 +|arrivalFlightDate|string($date-time)
695 +|arrivalCountryName|string
696 +nullable: true
697 +|arrivalCityName|string
698 +nullable: true
699 +|arrivalAirportCode|string
700 +nullable: true
701 +|arrivalAirportName|string
702 +nullable: true
703 +|arrivalTerminalCode|string
704 +nullable: true
705 +|flightDuration|string
706 +nullable: true
707 +|baggages|[
708 +nullable: trueBaggage{(((
709 +|baggageCode|string
710 +nullabletrue
711 +|description|string
712 +nullabletrue
713 +|price|number($double)
714 +|currency|string
715 +nullabletrue
716 +|included|boolean
717 +
486 486  }]
719 +)))
720 +
487 487  }]
722 +)))
723 +
488 488  }
489 -extraServices [
490 -nullable: true
491 -HotelExtraServiceBase{
492 -extraServiceCode string
493 -nullable: true
494 -extraServiceTypeCode string
495 -nullable: true
496 -isMandatory integer($int32)
497 -extraServiceName string
498 -nullable: true
499 -minimalServiceAmount number($double)
500 -includedPriceCode string
501 -nullable: true
502 -prices [
503 -nullable: true
504 -HotelExtraServicePriceBase{
505 -extraServicePriceCode string
506 -nullable: true
507 -displayName string
508 -nullable: true
509 -restrictionInfo string
510 -nullable: true
511 -additionalInfo string
512 -nullable: true
513 -price number($double)
514 -extraPrice number($double)
515 -currency string
516 -nullable: true
725 +)))
726 +|extraServices|[
727 +nullable: trueHotelExtraServiceBase{(((
728 +|extraServiceCode|string
729 +nullable: true
730 +|extraServiceTypeCode|string
731 +nullable: true
732 +|isMandatory|integer($int32)
733 +|extraServiceName|string
734 +nullable: true
735 +|minimalServiceAmount|number($double)
736 +|includedPriceCode|string
737 +nullable: true
738 +|prices|[
739 +nullable: trueHotelExtraServicePriceBase{(((
740 +|extraServicePriceCode|string
741 +nullabletrue
742 +|displayName|string
743 +nullabletrue
744 +|restrictionInfo|string
745 +nullabletrue
746 +|additionalInfo|string
747 +nullable: true
748 +|price|number($double)
749 +|extraPrice|number($double)
750 +|currency|string
751 +nullabletrue
752 +
517 517  }]
754 +)))
755 +
518 518  }]
519 -insurancePrice InsurancePrice{
520 -name string
521 -nullable: true
522 -price number($double)
523 -priceSurcarge number($double)
524 -actualStartDate string($date-time)
525 -actualEndDate string($date-time)
526 -optional boolean
527 -includedInPackagePrice boolean
757 +)))
758 +|insurancePrice|InsurancePrice{(((
759 +|name|string
760 +nullable: true
761 +|price|number($double)
762 +|priceSurcarge|number($double)
763 +|actualStartDate|string($date-time)
764 +|actualEndDate|string($date-time)
765 +|optional|boolean
766 +|includedInPackagePrice|boolean
767 +
528 528  }
769 +)))
770 +
529 529  }]
530 -pagingId string
531 -nullable: true
532 -pageNumber integer($int64)
533 -pageCount integer($int64)
772 +)))
773 +|pagingId|string
774 +nullable: true
775 +|pageNumber|integer($int64)
776 +|pageCount|integer($int64)
777 +
534 534  }
779 +{{/success}}
780 +
781 +
782 +== Definitions ==
783 +
784 +**Request Parameters **
785 +
786 +(% class="table-bordered" %)
787 +|=Field|=Type|=Description
788 +|departureCountryCode|string|The ISO 3166-1 alpha-2 country code for the departure country. For example, "KZ" for Kazakhstan.
789 +|departureCityUID|string|The unique identifier for the departure city.
790 +|arrivalCountryCode|string|The ISO 3166-1 alpha-2 country code for the arrival country. For example, "AE" for United Arab Emirates.
791 +|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.
792 +|checkInDate|string|The check-in date in ISO 8601 format.
793 +|checkInDateTo|string|The latest possible check-in date in ISO 8601 format.
794 +|stayDays|integer|The minimum number of days to stay.
795 +|stayDaysTo|integer|The maximum number of days to stay.
796 +|airlineCode|string|The code of the airline. This field can be empty.
797 +|ticketType|string|The type of the ticket. This field can be empty.
798 +|directFlightsOnly|boolean|Indicates whether to search for direct flights only.
799 +|longConnectTime|boolean|Indicates whether to include flights with long connection times.
800 +|adults|integer|The number of adults.
801 +|children|integer|The number of children.
802 +|childrenAges|array|An array of integers, each representing the age of a child.
803 +|extendedSearch|boolean|Indicates whether to perform an extended search.
804 +|totalPriceFrom|float|The minimum total price.
805 +|totalPriceTo|float|The maximum total price.
806 +|recommended|boolean|Indicates whether to include recommended packages.
807 +|popular|boolean|Indicates whether to include popular packages.
808 +|freeSale|boolean|Indicates whether to include free sale packages.
809 +|groupByHotel|boolean|Indicates whether to group the results by hotel.
810 +|hotelCodes|array|An array of strings, each representing a hotel code. This field can be empty.
811 +|mealPlans|array|An array of meal plans. This field can be empty.
812 +|hotelClasses|array|An array of hotel classes. This field can be empty.
813 +|hotelTypes|array|An array of hotel types. This field can be empty.
814 +|hotelServices|array|An array of hotel services. This field can be empty.
815 +|pagingId|string|The paging ID for paginated results. This field can be empty.
816 +|pageNumber|integer|The page number for paginated results.
817 +|pageRowCount|integer|The number of rows per page for paginated results.
818 +
819 +(% class="wikigeneratedid" %)
820 +**Response Parameters**
821 +
822 +(% class="table-bordered" %)
823 +|=Field|=Type|=Description
824 +|packages|array|An array of packages available. Each package contains:
825 +|cacheKey|string|A unique identifier for the cache.
826 +|id|string|A unique identifier for the package.
827 +|priceCurrency|string|The currency in which the price is displayed.
828 +|totalPrice|float|The total price of the package.
829 +|agentCommissionPercent|float|The commission percentage for the agent.
830 +|agentCommissionAmount|float|The commission amount for the agent.
831 +|includedExtrasAmount|integer|The amount of extras included in the package.
832 +|priceDifference|integer|The difference in price from the original price.
833 +|hotel|object|An object containing details about the hotel.
834 +|hotelPriceId|string|A unique identifier for the hotel price.
835 +|providerId|integer|A unique identifier for the provider.
836 +|hotelName|string|The name of the hotel.
837 +|hotelCode|string|A unique code for the hotel.
838 +|nigths|integer|The number of nights for the stay.
839 +|mealPlan|string|The meal plan for the stay.
840 +|hotelClass|string|The class or rating of the hotel.
841 +|availabilityType|string|The availability type of the hotel.
842 +|availableRoomsCount|integer|The number of available rooms in the hotel.
843 +|fewRooms|boolean|Indicates whether there are few rooms left.
844 +|roomCategoryCode|string|A unique code for the room category.
845 +|roomCategoryName|string|The name of the room category.
846 +|placementTypeName|string|The name of the placement type.
847 +|checkInDate|string|The check-in date in ISO 8601 format.
848 +|checkOutDate|string|The check-out date in ISO 8601 format.
849 +|adults|integer|The number of adults for the stay.
850 +|children|integer|The number of children for the stay.
851 +|districtUID|string|A unique identifier for the district.
852 +|districtName|string|The name of the district.
853 +|cityUID|string|A unique identifier for the city.
854 +|cityName|string|The name of the city.
855 +|countryCode|string|The ISO 3166-1 alpha-2 country code.
856 +|countryName|string|The name of the country.
857 +|hasAlcohol|boolean|Indicates whether the hotel serves alcohol.
858 +|hasFreeWifi|boolean|Indicates whether the hotel offers free Wi-Fi.
859 +|hasMetro|boolean|Indicates whether the hotel is near a metro station.
860 +|hasPool|boolean|Indicates whether the hotel has a pool.
861 +|hasMall|boolean|Indicates whether the hotel is near a shopping mall.
862 +|cancellationPolicyDescription|string|The description of the cancellation policy.
863 +|cancellationPolicy|object|An object containing details about the cancellation policy.
864 +|flight|object|An object containing details about the flight.
865 +|id|string|A unique identifier for the flight.
866 +|departureDate|string|The departure date in ISO 8601 format.
867 +|returnDate|string|The return date in ISO 8601 format.
868 +|departureTicketsLeft|integer|The number of departure tickets left.
869 +|returnTicketsLeft|integer|The number of return tickets left.
870 +|departureAvailabilityType|string|The availability type of the departure flight.
871 +|returnAvailabilityType|string|The availability type of the return flight.
872 +|isTwoWay|boolean|Indicates whether the flight is two-way.
873 +|sameBaggageForAll|boolean|Indicates whether the same baggage is applicable for all passengers.
874 +|totalBaggage|boolean|Indicates whether total baggage is included.
875 +|departureSegments|array|An array of objects, each representing a departure segment.
876 +|returnSegments|array|An array of objects, each representing a return segment.
877 +|passengers|array|An array of objects, each representing a passenger.
878 +|extraServices|array|An array of extra services included in the package.
879 +|insurancePrice|object|An object containing details about the insurance price.
880 +|pagingId|string|The paging ID for paginated results.
881 +|pageNumber|integer|The page number for paginated results.
882 +|pageCount|integer|The total number of pages.
883 +|totalCount|integer|The total count of packages.
884 +|error|boolean|Indicates whether there was an error.
885 +
886 +=== Paging and Caching ===
887 +
888 +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:
889 +
890 +
891 +==== First request ====
892 +
893 +{{code language="Json"}}
894 + {
895 + "pagingId": "",
896 + "pageNumber": 1,
897 + "pageRowCount":10
898 + }
535 535  {{/code}}
900 +
901 +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.
902 +
903 +
904 +==== Request with caching ====
905 +
906 +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": "",
907 +
908 +{{code language="Json"}}
909 + {
910 + "pagingId": "80",
911 + "pageNumber": 1,
912 + "pageRowCount":10
913 + }
914 +{{/code}}
915 +
916 +
917 +**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.
918 +
919 +**Initial Request:**
920 +
921 +* **Purpose**: The first request initiates the paging process and is designed to fetch the initial set of data without utilizing a pagingId.
922 +* **Parameters**:
923 +** pagingId: Should be set to an empty string ("") to indicate that this is the initial request.
924 +** pageNumber: Indicates the specific page of data to retrieve, starting with 1.
925 +** pageRowCount: Specifies the number of results to be included on each page.
926 +
927 +**Example - First Request**:
928 +
929 +{{{{
930 + "pagingId": "",
931 +  "pageNumber": 1,
932 +  "pageRowCount": 10
933 +}
934 +}}}
935 +
936 +
937 +**Subsequent Requests with Caching:**
938 +
939 +* **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.
940 +* **Cache Utilization**:
941 +** Upon receiving a response, a pagingId value is provided. This pagingId should be used in subsequent requests to reference the cached data.
942 +** To navigate through the dataset, adjust the pageNumber while keeping the pagingId constant.
943 +** To refresh the dataset and clear the cache, initiate a new request without a pagingId.
944 +
945 +**Example - Request with Caching**:
946 +
947 +{{{ {
948 + "pagingId": "80",
949 + "pageNumber": 2, // Adjusted to fetch the next page
950 + "pageRowCount": 10
951 + }
952 +}}}
953 +
954 +
955 +**Cache Management:**
956 +
957 +* 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.
958 +
959 +**Implementation Notes**:
960 +
961 +* The paging and caching mechanism significantly enhances data retrieval efficiency by minimizing server load and optimizing response times.
962 +* Developers should ensure that the pagingId is correctly managed between requests to maintain session continuity and data consistency.
963 +
964 +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.
965 +
966 +
967 +
968 +=== Search parameter options ===
969 +
970 +in the request body it's available to filter search results with parameters. parameter examples:
971 +
972 +{{code language="Json"}}
973 + { "totalPriceFrom": 500,
974 + "totalPriceTo": 10000,
975 + "hotelTypes": [
976 + "CityHotel",
977 + "BeachHotel",
978 + "SecondLineBeach"
979 + ],
980 + "hotelClasses": [
981 + "1",
982 + "2",
983 + "3",
984 + "4",
985 + "5",
986 + "6"
987 + ],
988 + "hotelServices": [
989 + "HasAlcohol",
990 + "HasFreeWifi",
991 + "HasMetro",
992 + "HasPool",
993 + "HasMall"
994 + ],
995 + "mealPlans": [
996 + "RO",
997 + "BB",
998 + "HB",
999 + "FB",
1000 + "AL"
1001 + ]
1002 +}
1003 +{{/code}}
1004 +
1005 +
1006 +
1007 +== Important ==
1008 +
1009 +{{error}}
1010 +=== Implementing Authorization in Subsequent Requests ===
1011 +
1012 +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:
1013 +
1014 +* **Header Key:** Authorization
1015 +* **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.
1016 +
1017 +Additionally, to ensure your requests are properly formatted and recognized, include the following headers:
1018 +
1019 +* **Content-Type:** Specify this header as application/json to indicate the format of the request body.
1020 +* **Header Key:** X-nugios-timezone
1021 +* **Header Value:** 240 - Adjust this value to match your local timezone offset in minutes.
1022 +
1023 +Incorporating these headers with their respective values is essential for the successful processing of your API requests.
1024 +{{/error}}
1025 +
1026 +
1027 +
1028 +(% class="box errormessage" %)
1029 +(((
1030 +Tour package requirements can vary based on the destination country, necessitating the inclusion of additional mandatory services such as Visa, Insurance, and Tour Code. 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:
1031 +
1032 +[[image:1713191255012-154.png]]
1033 +
1034 +in the given example it means that insurance service is mandatory for the tourpackag
1035 +)))