{"openapi":"3.0.0","components":{"examples":{},"headers":{},"parameters":{},"requestBodies":{},"responses":{},"schemas":{"ApiFlightLeg":{"properties":{"typeOfFlightName":{"type":"string"},"typeOfFlightCode":{"type":"string"},"airlineName":{"type":"string"},"airlineCode":{"type":"string"},"flightCode":{"type":"string"},"flightNumber":{"type":"string"},"arrivalTime":{"type":"string"},"arrivalDate":{"type":"string"},"arrivalName":{"type":"string"},"arrivalCode":{"type":"string"},"departureTime":{"type":"string"},"departureDate":{"type":"string"},"departureName":{"type":"string"},"departureCode":{"type":"string"},"legNumber":{"type":"number","format":"double"}},"required":["airlineCode","flightCode","arrivalTime","arrivalDate","arrivalCode","departureTime","departureDate","departureCode","legNumber"],"type":"object"},"ApiFlightPrice":{"properties":{"priceOriginal":{"type":"number","format":"double"},"currentPrice":{"type":"number","format":"double"},"priceReduced":{"type":"number","format":"double"},"currency":{"type":"string"},"available":{"type":"number","format":"double"},"seatsAvailable":{"type":"number","format":"double"},"flightClassCode":{"type":"string"},"flightClassName":{"type":"string"},"urlToBooking":{"type":"string"},"campaignName":{"type":"string","nullable":true}},"required":["priceOriginal","currentPrice","priceReduced","currency","available","seatsAvailable","flightClassCode","flightClassName","urlToBooking","campaignName"],"type":"object","additionalProperties":false},"ApiFlightOnly":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"href":{"type":"string"},"departureCode":{"type":"string"},"departureName":{"type":"string"},"departureDate":{"type":"string"},"departureTime":{"type":"string"},"returnDate":{"type":"string"},"duration":{"type":"number","format":"double"},"destinationCode":{"type":"string"},"destinationName":{"type":"string"},"isOneWay":{"type":"boolean"},"adults":{"type":"number","format":"double"},"youths":{"type":"number","format":"double"},"children":{"type":"number","format":"double"},"infants":{"type":"number","format":"double"},"flightClimateCompensated":{"type":"boolean"},"outboundTravelTime":{"type":"string"},"outboundFlightLegs":{"items":{"$ref":"#/components/schemas/ApiFlightLeg"},"type":"array"},"homeboundTravelTime":{"type":"string"},"homeboundFlightLegs":{"items":{"$ref":"#/components/schemas/ApiFlightLeg"},"type":"array"},"prices":{"items":{"$ref":"#/components/schemas/ApiFlightPrice"},"type":"array"}},"required":["id","name","href","departureCode","departureDate","departureTime","duration","destinationCode","isOneWay","adults","youths","children","infants","flightClimateCompensated","outboundFlightLegs","homeboundFlightLegs","prices"],"type":"object","additionalProperties":false},"ApiFlightsOnly":{"properties":{"last":{"type":"number","enum":[null],"nullable":true},"previous":{"type":"number","enum":[null],"nullable":true},"totalNumberOfItems":{"type":"number","format":"double"},"first":{"type":"string"},"next":{"type":"string","nullable":true},"items":{"items":{"$ref":"#/components/schemas/ApiFlightOnly"},"type":"array"}},"required":["last","previous","totalNumberOfItems","first","next","items"],"type":"object","additionalProperties":false},"ApiAccommodation":{"properties":{"id":{"type":"string"},"configurationId":{"type":"string"},"name":{"type":"string"},"href":{"type":"string"},"imagesHref":{"type":"string"},"allInclusive":{"type":"boolean"},"destinationName":{"type":"string"},"climateCompensated":{"type":"boolean"}},"required":["id","name","href","imagesHref","allInclusive"],"type":"object","additionalProperties":false},"ApiPrice":{"properties":{"priceOriginal":{"type":"number","format":"double"},"currentPrice":{"type":"number","format":"double"},"currency":{"type":"string"},"available":{"type":"number","format":"double"},"seatsAvailable":{"type":"number","format":"double"},"flightClassName":{"type":"string"},"urlToBooking":{"type":"string"},"roomTags":{"items":{"type":"string"},"type":"array"},"roomGroupCode":{"type":"string"},"roomTypeCode":{"type":"string"},"roomTypeName":{"type":"string"},"numberOfOrdinaryBeds":{"type":"number","format":"double"},"numberOfExtraBeds":{"type":"number","format":"double"},"campaignCode":{"type":"string","nullable":true},"campaignName":{"type":"string","nullable":true},"boardIncluded":{"type":"string"}},"required":["priceOriginal","currentPrice","currency","flightClassName","urlToBooking","roomTypeCode","roomTypeName","boardIncluded"],"type":"object","additionalProperties":false},"ApiPackage":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"departureCode":{"type":"string"},"departureName":{"type":"string"},"departureDate":{"type":"string"},"departureTime":{"type":"string"},"returnDate":{"type":"string"},"duration":{"type":"string"},"countryName":{"type":"string"},"destinationCode":{"type":"string"},"destinationName":{"type":"string"},"adults":{"type":"number","format":"double"},"youths":{"type":"number","format":"double"},"children":{"type":"number","format":"double"},"infants":{"type":"number","format":"double"},"accommodation":{"$ref":"#/components/schemas/ApiAccommodation"},"priority":{"type":"number","format":"double"},"flightClimateCompensated":{"type":"boolean"},"charterFlight":{"type":"boolean"},"outboundTravelTime":{"type":"string"},"outboundFlightLegs":{"items":{"$ref":"#/components/schemas/ApiFlightLeg"},"type":"array"},"homeboundTravelTime":{"type":"string"},"homeboundFlightLegs":{"items":{"$ref":"#/components/schemas/ApiFlightLeg"},"type":"array"},"prices":{"items":{"$ref":"#/components/schemas/ApiPrice"},"type":"array"}},"required":["departureCode","departureDate","departureTime","returnDate","duration","destinationCode","adults","youths","children","infants","accommodation","priority","flightClimateCompensated","charterFlight","outboundFlightLegs","homeboundFlightLegs","prices"],"type":"object","additionalProperties":false},"ApiPackages":{"properties":{"next":{"type":"string","nullable":true},"totalNumberOfItems":{"type":"number","format":"double"},"version":{"type":"string"},"items":{"items":{"$ref":"#/components/schemas/ApiPackage"},"type":"array"}},"required":["next","totalNumberOfItems","version","items"],"type":"object","additionalProperties":false},"FlightsRoute":{"properties":{"origin":{"type":"string"},"destination":{"type":"string"},"days_of_week":{"type":"string"},"effective_start":{"type":"string"},"effective_end":{"type":"string"}},"required":["origin","destination","days_of_week","effective_start","effective_end"],"type":"object","additionalProperties":false},"LocationModel":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object","additionalProperties":false},"LocationResponseModel":{"properties":{"total":{"type":"number","format":"double"},"items":{"items":{"$ref":"#/components/schemas/LocationModel"},"type":"array"}},"required":["total","items"],"type":"object","additionalProperties":false}},"securitySchemes":{"tsoa_auth_prod":{"type":"oauth2","description":"Production OAuth2","flows":{"clientCredentials":{"tokenUrl":"https://prod.api.tui/oauth2/token","scopes":{"read:sales-meta-package":"Read access"}}}},"tsoa_auth_preprod":{"type":"oauth2","description":"Pre-production OAuth2","flows":{"clientCredentials":{"tokenUrl":"https://pre-prod.api.tui/oauth2/token","scopes":{"read:sales-meta-package":"Read access"}}}}}},"info":{"title":"Partner API","description":"The Partner API provides a suite of RESTful endpoints that enable meta partners to search \nfor and retrieve up-to-date information on flights and travel packages.\nIt allows clients to integrate real-time availability and pricing into their applications. ","version":"1.0.0"},"paths":{"/{market}/flights/search/{agent}":{"get":{"operationId":"GetFlights","responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFlightsOnly"}}}}},"description":"This endpoint returns available flights.","tags":["Flights"],"security":[{"tsoa_auth_prod":[]},{"tsoa_auth_preprod":[]}],"parameters":[{"description":"The source market code. Accepted values: dk, fi, no, se.","in":"path","name":"market","required":true,"schema":{"type":"string","pattern":"^dk$|^fi$|^no$|^se$"}},{"description":"Your agent code. This will be used for generating the url for the next request.","in":"path","name":"agent","required":true,"schema":{"type":"string","pattern":"^\\w+$"}},{"description":"Mandatory. Number of adults. Any integer between 1 and 6.","in":"query","name":"adults","required":true,"schema":{"format":"double","type":"number","minimum":1,"maximum":6}},{"description":"A comma separated string with child ages. No space after comma. Example: childAges=0,5,14. Age ranges are, infant: 0-1, child: 2-12, youth: 13-17, adults: 18+.","in":"query","name":"childAges","required":false,"schema":{"type":"string","pattern":"^\\d+(,\\d+)*$"}},{"description":"Code of the departure airport. Any valid IATA airport code.","in":"query","name":"departureCode","required":false,"schema":{"type":"string"}},{"description":"Date of departure. Date must be compatible with ISO 8601. Example: departuredate=2035-01-31.","in":"query","name":"departureDate","required":false,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"Code of the destination airport. Any valid IATA airport code.","in":"query","name":"destinationCode","required":false,"schema":{"type":"string"}},{"description":"Date of return. Date must be compatible with ISO 8601. Example: returnDate=2035-01-31.","in":"query","name":"returnDate","required":false,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"Number of nights between departure date and return date.","in":"query","name":"duration","required":false,"schema":{"format":"int32","type":"integer"}},{"description":"If true then only one way flights are returned, if false then one way flights are not returned. If omitted then all flights are returned.","in":"query","name":"oneWay","required":false,"schema":{"type":"boolean"}},{"description":"The number of items to return. Default: 100, maximum: 1000.","in":"query","name":"limit","required":false,"schema":{"default":100,"format":"int32","type":"integer","maximum":1000}},{"description":"Used for pagination. For performance reasons, do not use without adding other query parameters.","in":"query","name":"offset","required":false,"schema":{"default":0,"format":"int32","type":"integer"}},{"description":"If true returns flights from TUIfly Nordic and TUI Airways. If false or omitted returns all airlines.","in":"query","name":"tuiOnly","required":false,"schema":{"type":"boolean"}}]}},"/{market}/packages/{pax}":{"get":{"operationId":"GetPackages","responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPackages"}}}}},"description":"This endpoint returns all available packages.\nVery important! Remember to add your own agent string {&agent=youragentstring} to the urlToBooking link in each package.","tags":["Packages"],"security":[{"tsoa_auth_prod":[]},{"tsoa_auth_preprod":[]}],"parameters":[{"description":"The source market code. Accepted values: dk, fi, no, se.","in":"path","name":"market","required":true,"schema":{"type":"string","pattern":"^dk$|^fi$|^no$|^se$"}},{"description":"The pax configuration. Accepted values: 2000 for two adults, 2010 for two adults and one child, 2020 for two adults and two children.","in":"path","name":"pax","required":true,"schema":{"type":"string","pattern":"^2.[0-2].$"}},{"description":"Your agent code. Use the same for every request made.","in":"query","name":"agent","required":true,"schema":{"type":"string","pattern":"^\\w+$"}},{"description":"The package id to start from. Items retrieved will have an id that comes after the given value when sorted in ascending order.","in":"query","name":"fromid","required":false,"schema":{"default":"","type":"string"}},{"description":"The number of items to return. Default: 100, maximum: 1000.","in":"query","name":"limit","required":false,"schema":{"default":100,"format":"int32","type":"integer","maximum":1000}},{"description":"Used for pagination. For performance reasons, do not use without adding other query parameters.","in":"query","name":"offset","required":false,"schema":{"default":0,"format":"int32","type":"integer"}},{"description":"Code of the departure airport. Any valid IATA airport code.","in":"query","name":"departurecode","required":false,"schema":{"type":"string"}},{"description":"Date of departure. Date must be compatible with ISO 8601. Example: departuredate=2035-01-31","in":"query","name":"departuredate","required":false,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"Code of the destination airport. Any valid IATA airport code.","in":"query","name":"destinationcode","required":false,"schema":{"type":"string"}},{"description":"Number of nights in the accommodation.","in":"query","name":"duration","required":false,"schema":{"format":"int32","type":"integer"}},{"description":"The id of the accommodation to retrieve.","in":"query","name":"accommodationid","required":false,"schema":{"type":"string"}},{"description":"Maximum number of days to departure. Items returned will have a departure date that is equal or fewer days away from today.","in":"query","name":"maxdaystodeparture","required":false,"schema":{"format":"int32","type":"integer"}},{"description":"Date of departure. Date must be compatible with ISO 8601. Example: departuredatefrom=2035-01-31","in":"query","name":"departuredatefrom","required":false,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"Date of departure. Date must be compatible with ISO 8601. Example: departuredatetill=2035-01-31","in":"query","name":"departuredatetill","required":false,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}}]}},"/{market}/flights/{agent}/route-feed":{"get":{"operationId":"GetFlightsRouteFeed","responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FlightsRoute"},"type":"array"}}}}},"description":"This endpoint returns the current flights route feed.","tags":["Route Feed"],"security":[{"tsoa_auth_prod":[]},{"tsoa_auth_preprod":[]}],"parameters":[{"description":"The source market code. Accepted values: dk, fi, no, se.","in":"path","name":"market","required":true,"schema":{"type":"string","pattern":"^dk$|^fi$|^no$|^se$"}},{"description":"Your agent code. This will be used for monitoring purposes.","in":"path","name":"agent","required":true,"schema":{"type":"string","pattern":"^\\w+$"}}]}},"/{market}/live-search/packages/{agent}":{"get":{"operationId":"GetLiveSearch","responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPackages"}}}}},"description":"This endpoint returns available packages.","tags":["Live Search Packages (Beta)"],"security":[{"tsoa_auth_prod":[]},{"tsoa_auth_preprod":[]}],"parameters":[{"description":"Your agent code. Use the same for every request made.\n\nExample - tui","in":"path","name":"agent","required":true,"schema":{"type":"string","pattern":"^\\w+$"}},{"description":"The source market code.\n\nAccepted values: dk, fi, no, se.","in":"path","name":"market","required":true,"schema":{"type":"string","pattern":"^dk$|^fi$|^no$|^se$"}},{"description":"Number of Adults in the request.\n\nAccepted Values - 1 to 6","in":"query","name":"adults","required":true,"schema":{"format":"int32","type":"integer","minimum":1,"maximum":6}},{"description":"Ages of Children in the request separated by comma. If no children are sent in the request, this parameter should not be sent (or sent as ?childAges=).\n\nFor 2 children with age 5 and 7, the value should be 5,7.\nAge ranges are, infant: 0-1, child: 2-12, youth: 13-17.","in":"query","name":"childages","required":false,"schema":{"default":"","type":"string","pattern":"^$|^(1[0-7]|[0-9])(,(1[0-7]|[0-9]))*$"}},{"description":"The G- code value for each destination that is mapped through the locations endpoint.\nMultiple destinations can be sent in the request separated by comma.\n\nExample: G-000000234,G-000000256,G-000000293,G-000000293","in":"query","name":"destinations","required":true,"schema":{"type":"string"}},{"description":"Date of arrival from. Date must be compatible with ISO 8601. Example: arrivaldatefrom=2035-01-31","in":"query","name":"arrivaldatefrom","required":true,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"Date of arrival to.\nDate must be compatible with ISO 8601.\n\nExample: arrivaldateto=2035-01-31","in":"query","name":"arrivaldateto","required":true,"schema":{"type":"string","pattern":"^\\d{4}\\-(0[1-9]|(1[0-2]))\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$"}},{"description":"A list of one or more stay durations. Example: 3,5,7,14","in":"query","name":"durations","required":true,"schema":{"type":"string","pattern":"^\\d+(,\\d+)*$"}},{"description":"A list of airportcodes separated by comma that are requested by user as Departure locations.\n\nExample: ARN,GOT,CPH","in":"query","name":"airportcodes","required":false,"schema":{"default":"","type":"string"}},{"description":"The number of items to return. Maximum: 100.","in":"query","name":"limit","required":false,"schema":{"default":20,"format":"int32","type":"integer","maximum":100}}]}},"/{market}/live-search/packages/{agent}/locations":{"get":{"operationId":"GetLocations","responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponseModel"}}}}},"description":"Get all locations for a specific market","tags":["Live Search Packages (Beta)"],"security":[{"tsoa_auth_prod":[]},{"tsoa_auth_preprod":[]}],"parameters":[{"description":"The source market code. Accepted values: dk, fi, no, se.","in":"path","name":"market","required":true,"schema":{"type":"string","pattern":"^dk$|^fi$|^no$|^se$"}},{"description":"Your agent code. Use the same for every request made.","in":"path","name":"agent","required":true,"schema":{"type":"string","pattern":"^\\w+$"}}]}}},"servers":[{"url":"https://prod.api.tui/sales/pip-package/partner","description":"Prod Server"},{"url":"https://pre-prod.api.tui/sales/pip-package/partner","description":"Pre-prod Server"}]}