Last modified by Giorgi Mdivnishvili on 2024/07/11 12:45

From version 1.1
edited by Giorgi Mdivnishvili
on 2024/04/11 09:30
Change comment: There is no comment for this version
To version 15.1
edited by Giorgi Mdivnishvili
on 2024/04/11 18:01
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -SearchTourPackages - Basic version
1 +SearchTourPackages - Basic Version
Content
... ... @@ -1,32 +1,994 @@
1 1  {{box cssClass="floatinginfobox" title="**Contents**"}}
2 +
3 +
2 2  {{toc/}}
3 3  {{/box}}
4 4  
5 -= Paragraph 1 =
7 += Method Description =
6 6  
7 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
8 8  
9 -== Sub-paragraph ==
10 +=== Method Overview: Streamlined Tour Package Discovery and Booking ===
10 10  
11 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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.
12 12  
13 -== Sub-paragraph ==
14 +**Procedure:**
14 14  
15 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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.
16 16  
17 -=== Sub-sub paragraph ===
20 +**Parameter Details:**
18 18  
19 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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.
20 20  
24 +**Usage Notes:**
21 21  
22 -= Paragraph 2 =
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.
23 23  
24 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
28 +**Examples:**
25 25  
26 -== Sub-paragraph ==
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.
27 27  
28 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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.
29 29  
30 -== Sub-paragraph ==
31 31  
32 -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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 +
917 +**Example - Request with Caching**:
918 +
919 +{{{ {
920 + "pagingId": "80",
921 + "pageNumber": 2, // Adjusted to fetch the next page
922 + "pageRowCount": 10
923 + }
924 +}}}
925 +
926 +
927 +**Cache Management:**
928 +
929 +* 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.
930 +
931 +**Implementation Notes**:
932 +
933 +* The paging and caching mechanism significantly enhances data retrieval efficiency by minimizing server load and optimizing response times.
934 +* Developers should ensure that the pagingId is correctly managed between requests to maintain session continuity and data consistency.
935 +
936 +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.
937 +
938 +
939 +=== search parameter options ===
940 +
941 +in the request body it's available to filter search results with parameters. parameter examples:
942 +
943 +{{code language="Json"}}
944 + { "totalPriceFrom": 500,
945 + "totalPriceTo": 10000,
946 + "hotelTypes": [
947 + "CityHotel",
948 + "BeachHotel",
949 + "SecondLineBeach"
950 + ],
951 + "hotelClasses": [
952 + "1",
953 + "2",
954 + "3",
955 + "4",
956 + "5",
957 + "6"
958 + ],
959 + "hotelServices": [
960 + "HasAlcohol",
961 + "HasFreeWifi",
962 + "HasMetro",
963 + "HasPool",
964 + "HasMall"
965 + ],
966 + "mealPlans": [
967 + "RO",
968 + "BB",
969 + "HB",
970 + "FB",
971 + "AL"
972 + ]
973 +}
974 +{{/code}}
975 +
976 +
977 +== Important ==
978 +
979 +{{error}}
980 +=== Implementing Authorization in Subsequent Requests ===
981 +
982 +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:
983 +
984 +* **Header Key:** Authorization
985 +* **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.
986 +
987 +Additionally, to ensure your requests are properly formatted and recognized, include the following headers:
988 +
989 +* **Content-Type:** Specify this header as application/json to indicate the format of the request body.
990 +* **Header Key:** X-nugios-timezone
991 +* **Header Value:** 240 - Adjust this value to match your local timezone offset in minutes.
992 +
993 +Incorporating these headers with their respective values is essential for the successful processing of your API requests.
994 +{{/error}}