openapi: 3.0.3 info: title: Supply description: | This document only describes the SupplyResponse and is a translation of the supply.xsd. Because not all items in xsd schema can be translated to open API definition it is important to also use the examples. For example the Price Group: <Price Currency="EUR" Occupation="1" PricePer="PA" PriceType="OFF">303400</Price> The Price element has attributes, but also contains the price itself. This cannot be defined in API Specification (json). The price will be a group and a group can not contain a value, only items. version: 1.5.1 contact: name: G7-OTA-TEAM email: b2bota.g7.support@tui.nl servers: - url: prod.sftp.tui-b2bota-g7.nl description: Production - url: playground.sftp.tui-b2bota-g7.nl description: Playground for testing paths: /supply: get: tags: - Supply summary: SupplyResponse description: | The SupplyResponse is here defined as a GET oparation, but in real time a (xml) file is created and placed on a server from which third parties can retrieve them via download. Each file contains the supply for a certain accommodation. It contains information about the package: - General information Like PackageID, Description, BookPeriod and content location - Transport information Like Route information (from/to) - Accommodation/room information Like AccommodationID and AccommodationType, UnitID, Type, Board and Occupation (rules) - Transfer information Included transfer, that could be "No Transfer" or "Standard Transfer" - Price information Price for each Departuredate, Duration, Route, Unit, Board and Occupation security: - oAuth2ClientCredentials: [ ] responses: '200': description: Contents of supply file content: application/xml: schema: $ref: '#/components/schemas/Supply' examples: SupplyResponse: $ref: '#/components/examples/SupplyResponseExample' components: schemas: Supply: type: object properties: VersionID: $ref: '#/components/schemas/VersionID' Control: $ref: '#/components/schemas/Control' SupplyResponse: $ref: '#/components/schemas/SupplyResponse' required: - Control - VersionID - SupplyResponse Control: type: object properties: Language: allOf: - $ref: '#/components/schemas/Language' example: 'NL' Test: allOf: - $ref: '#/components/schemas/YesNoValue' example: 'nee' SenderSessionID: type: string ReceiverSessionID: type: string Date: type: string format: 'YYYY-MM-DD' Time: type: string format: 'HH:MM' MessageSequence: type: number SenderID: type: string ReceiverID: type: string EmployeeID: type: string RequestID: type: string ResponseID: type: string required: - Language - SenderSessionID - ReceiverSessionID - Date - Time - MessageSequence - SenderID - ReceiverID - RequestID - ResponseID SupplyResponse: type: object properties: SupplyPackage: type: array items: $ref: '#/components/schemas/SupplyPackage' SupplyPackage: type: object properties: MutationType: $ref: '#/components/schemas/MutationType' OfferType: type: integer Brand: type: string PackageID: type: string ProductInfo: $ref: '#/components/schemas/ProductInfo' SupplyTransportInfo: $ref: '#/components/schemas/SupplyTransportInfo' SupplyAccoInfo: $ref: '#/components/schemas/SupplyAccoInfo' SupplyTransferInfo: $ref: '#/components/schemas/SupplyTransferInfo' SupplyPriceAvailabilityInfo: $ref: '#/components/schemas/SupplyPriceAvailabilityInfo' required: - MutationType - OfferType - Brand - PackageID - ProductInfo SupplyTransportToFrom: type: object properties: TransportType: $ref: '#/components/schemas/TransportType' DepartureInfo: $ref: '#/components/schemas/DepartureArrivalInfo' ArrivalInfo: $ref: '#/components/schemas/DepartureArrivalInfo' required: - TransportType - DepartureInfo - ArrivalInfo DepartureArrivalInfo: type: object properties: Point: $ref: '#/components/schemas/Point' required: - Point Point: type: object properties: PointType: $ref: '#/components/schemas/PointType' PointID: type: string Description: type: string required: - PointType - PointID - Description SupplyTransportInfo: type: object properties: Route: type: array items: $ref: '#/components/schemas/Route' required: - Route Route: type: object properties: RouteID: type: string xml: attribute: true SupplyTransportTo: $ref: '#/components/schemas/SupplyTransportToFrom' SupplyTransportFrom: $ref: '#/components/schemas/SupplyTransportToFrom' PriceNote: type: integer required: - RouteID SupplyAccoInfo: type: object properties: AccommodationID: type: string AccommodationType: $ref: '#/components/schemas/AccommodationType' Name: type: string Location: type: object properties: Country: type: string Area: type: string Place: type: string required: - Country - Place SupplyUnitInfo: type: array items: $ref: '#/components/schemas/SupplyUnitInfo' required: - AccommodationID - AccommodationType - Name - SupplyUnitInfo SupplyUnitInfo: type: object properties: UnitID: type: string UnitType: $ref: '#/components/schemas/UnitType' Description: type: string Occupation: type: array items: $ref: '#/components/schemas/Occupation' BoardInfo: type: array items: $ref: '#/components/schemas/Board' UnitContentID: type: string required: - UnitID - UnitType - Occupation - BoardInfo - UnitContentID SupplyTransferInfo: type: object properties: SupplyTransfer: type: array items: $ref: '#/components/schemas/SupplyTransfer' required: - SupplyTransfer SupplyTransfer: type: object properties: TransferID: type: string xml: attribute: true SupplyTransferTo: $ref: '#/components/schemas/SupplyTransferToFrom' SupplyTransferFrom: $ref: '#/components/schemas/SupplyTransferToFrom' required: - TransferID SupplyTransferToFrom: type: object properties: TransferCategory: type: string Description: type: string required: - TransferCategory - Description SupplyPriceAvailabilityInfo: type: object properties: SupplyPriceAvailability: type: array items: $ref: '#/components/schemas/SupplyPriceAvailability' required: - SupplyPriceAvailability SupplyPriceAvailability: type: object properties: DepartureDate: type: string format: "YYYY-MM-DD" Duration: $ref: '#/components/schemas/Duration' TripDuration: $ref: '#/components/schemas/Duration' TransportAvailability: type: object properties: Route: type: object properties: RouteID: type: string xml: attribute: true PriceNote: type: integer required: - RouteID UnitGroup: type: object properties: Unit: type: array items: $ref: '#/components/schemas/Unit' required: - Unit TransferAvailability: type: object properties: Transfer: type: array items: $ref: '#/components/schemas/Transfer' required: - DepartureDate - Duration Unit: type: object properties: UnitID: type: string Status: type: string BoardPrice: type: array items: $ref: '#/components/schemas/BoardPrice' required: - UnitID - Status - BoardPrice BoardPrice: type: object properties: BoardType: $ref: '#/components/schemas/BoardType' Price: type: array items: $ref: '#/components/schemas/Price' required: - BoardType - Price Price: type: object properties: Currency: $ref: '#/components/schemas/Currency' Occupation: type: integer xml: attribute: true PricePer: $ref: '#/components/schemas/PricePer' PriceType: $ref: '#/components/schemas/PriceType' required: - Currency - Occupation - PricePer - PriceType Transfer: type: object properties: TransferID: type: string xml: attribute: true Included: $ref: '#/components/schemas/YesNoValue' required: - TransferID Duration: type: object title: Duration properties: Duration: $ref: '#/components/schemas/DurationType' ProductInfo: type: object properties: Description: type: string PublicationPeriod: $ref: '#/components/schemas/StartAndEndDate' Category: type: integer Reference: $ref: '#/components/schemas/Reference' ImageLocation: type: array items: type: string TextLocation: type: string FacilityGroup: $ref: '#/components/schemas/FacilityGroup' CommissionGroup: $ref: '#/components/schemas/CommissionGroup' required: - Description - PublicationPeriod - Category Occupation: type: object properties: MinOccupancy: type: integer MaxOccupancy: type: integer OccupancyRules: type: array items: $ref: '#/components/schemas/OccupancyRules' OccupancyRestrictions: type: array items: $ref: '#/components/schemas/OccupancyRestrictions' OccupancyPeriod: $ref: '#/components/schemas/StartAndEndDate' required: - MinOccupancy - MaxOccupancy OccupancyRules: type: object properties: MinOccupancy: type: integer MaxOccupancy: type: integer AgeCondition: type: array maxItems: 2 items: $ref: '#/components/schemas/AgeType' OccupancyIncluded: allOf: - $ref: '#/components/schemas/YesNoValue' PaxType: $ref: '#/components/schemas/PaxType' required: - MinOccupancy - MaxOccupancy - AgeCondition OccupancyRestrictions: type: object properties: Adult: type: integer Child: type: integer required: - Adult - Child Reference: type: object properties: ReferenceID: type: integer Description: type: string FacilityGroup: type: object properties: Facility: type: array items: type: integer CommissionGroup: type: object properties: Commission: type: array items: $ref: '#/components/schemas/Commission' Commission: type: object properties: CommissionCategory: type: string TravelPeriod: $ref: '#/components/schemas/StartAndEndDate' BookPeriod: $ref: '#/components/schemas/StartAndEndDate' required: - CommissionCategory - TravelPeriod StartAndEndDate: type: object properties: StartDate: type: string format: 'YYYY-MM-DD' EndDate: type: string format: 'YYYY-MM-DD' required: - StartDate - EndDate Board: type: object properties: BoardType: $ref: '#/components/schemas/BoardType' Description: type: string required: - BoardType - Description VersionID: type: string enum: - '1.5.1' xml: attribute: true Language: type: string enum: - NL xml: attribute: true YesNoValue: type: string enum: - ja - nee xml: attribute: true PointType: type: string enum: - IATAcode - Postcode - Internal - ANVRLandStreek xml: attribute: true TransportType: type: string enum: - vl - bu - tr - fe - bo - ev - VL - BU - TR - FE - BO - EV example: 'VL' AccommodationType: type: string enum: - alb - apo - app - bnb - bng - bry - cam - car - cha - cpr - cru - est - ghf - gue - hos - hot - hui - kas - mai - mot - pen - pou - res - rh - ron - sch - tnt - vak - vil - wng - ALB - APO - APP - BNB - BNG - BRY - CAM - CAR - CHA - CPR - CRU - EST - GHF - GUE - HOS - HOT - HUI - KAS - MAI - MOT - PEN - POU - RES - RH - RON - SCH - TNT - VAK - VIL - WNG example: 'HOT' AgeType: type: string enum: - Max - Min - MAX - MIN - max - min xml: attribute: true BoardType: type: string enum: - lg - lo - hp - vp - ab - bb - cb - br - vb - ai - dv - ph - pv - pa - ua - ld - LG - LO - HP - VP - AB - BB - CB - BR - VB - AI - DV - PH - PV - PA - UA - LD example: 'LO' UnitType: type: string pattern: '(\d+pk)|(\d+PK)|(\d+ka)|(\d+KA)|(\d+kb)|(\d+KB)|(\d+kw)|(\d+KW)|(\d+kv)|(\d+KV)|(\d+ph)|(\d+PH)|(\d+pt)|(\d+PT)|(\d+pc)|(\d+PC)|(\d+ks)|(\d+KS)|(\d+pl)|(\d+PL)|(\d+ps)|(\d+PS)|(\d+pz)|(\d+PZ)|(\d+gk)|(\d+GK)|(\d+tc)|(\d+TC)|(div)|(DIV)|(stn)|(STN)' DurationType: type: string enum: - dagen - nachten xml: attribute: true PaxType: type: string enum: - Adult - Child - Infant xml: attribute: true PricePer: type: string enum: - pn - pw - pa - kn - kw - ka - tp - PN - PW - PA - KN - KW - KA - TP example: 'PA' xml: attribute: true PriceType: type: string enum: - OFF - SPO example: 'OFF' xml: attribute: true Currency: type: string enum: - EUR xml: attribute: true MutationType: type: string enum: - New - Mutation - Deletion - Reset example: Reset examples: SupplyResponseExample: value: > 1 1 2022-12-14 1 TUINL OTA TUI-ICT SupplyResponse Reset 1 NL 949102bc-b9fb-4aff-83a4-986111d7c7b2 HOTEL 1926 2022-05-16 2023-11-01 02 A 2022-07-11 2023-04-01 2022-07-11 2023-02-01 https://dev.api.tui/sales-ota-content/v2/accommodations/A1027761?relevantBrand=G7_NL&brand=NL https://dev.api.tui/sales-ota-content/v2/accommodations/A1027761?relevantBrand=G7_NL&brand=NL VL AMS Amsterdam MLA Malta VL MLA Malta AMS Amsterdam A1027761 HOT HOTEL 1926 Malta Malta Sliema ebcde0b6-c813-4ead-85b4-8fe4c712ea71 2PK 1 2 1 2 12 200 0 1 2 11 2022-11-01 2023-10-31 LO LO 64c03f54-758e-4edd-b6ac-a8a968767fb9 fbcde0b6-c813-4ead-85b4-8fe4c712ea70 4PK 1 4 1 3 15 200 0 3 2 14 3 1 2022-11-01 2023-10-31 LO LO 74c03f54-758e-4edd-b6ac-a8a968767fb7 SHARED Standaard transfer SHARED Standaard transfer OPT_OUT Geen transfer OPT_OUT Geen transfer PRIVATE Prive transfer PRIVATE Prive Transfer 2022-12-27 7 8 0 ebcde0b6-c813-4ead-85b4-8fe4c712ea71 OK LO 160300 123600 1000 0 10000 2022-12-27 14 15 0 ebcde0b6-c813-4ead-85b4-8fe4c712ea71 OK LO 258400 184900 1000 0 10000 2023-01-03 7 8 0 ebcde0b6-c813-4ead-85b4-8fe4c712ea71 OK LO 154700 117900 1000 0 10000 2023-01-03 14 15 0 ebcde0b6-c813-4ead-85b4-8fe4c712ea71 OK LO 252600 179100 1000 0 10000 2023-01-03 7 8 0 fbcde0b6-c813-4ead-85b4-8fe4c712ea70 OK LO 154700 117900 107900 1000 0 10000 2023-01-03 14 15 0 fbcde0b6-c813-4ead-85b4-8fe4c712ea70 OK LO 252600 179100 107900 1000 0 10000