{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/stays/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Migration Guide: uAPI to TripServices Stays API","description":"Create AI-native travel products with Travelport's powerful, flexible APIs.","siteUrl":"https://developer.travelport.com/","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"migration-guide-uapi-to-tripservices-stays-api","__idx":0},"children":["Migration Guide: uAPI to TripServices Stays API"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This document provides general information about the Stays API. For the most current endpoints and examples, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/getting-started/authentication"},"children":["Authentication"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/stays/general/stays-api-endpoints"},"children":["Stays Endpoints"]},", and the API References."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This migration guide assists developers in transitioning from the legacy Travelport Universal API (uAPI) SOAP-based hotel booking flow to the modern TripServices Stays API. The TripServices API provides a RESTful interface with simplified request/response structures and improved performance."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Benefits of the TripServices API:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["TripServices instead of SOAP/XML - simpler integration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OAuth 2.0 authentication instead of WS-Security"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cleaner, more intuitive data structures"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Better error handling with standard HTTP status codes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Consolidated endpoints reduce complexity"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Two workflow options: v11 (multi-step) or SearchComplete (single call)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important:"]}," This guide covers migration to the TripServices Stays API, which has two versions:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["TripServices Stays API v11 - Multi-step workflow (Search > Availability > Rules)SearchComplete"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API - Single consolidated endpoint (recommended)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide shows both paths so you can choose the best approach for your needs."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview-of-uapi-hotel-booking-flow","__idx":2},"children":["Overview of uAPI Hotel Booking Flow"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a quick refresher, uAPI is a SOAP-based API using XML payloads:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SOAP Action"},"children":["SOAP Action"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What It Does"},"children":["What It Does"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HotelSearchAvailabilityReq"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Find hotels by location with Availability"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Details"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HotelDetailsReq"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get property details and Images"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rules"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HotelRulesReq"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get rate rules and policies"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Characteristics:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Protocol: SOAP over HTTP"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data Format: XML"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authentication: WS-Security headers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Multiple SOAP actions for different operations"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complex nested XML structures"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Property details require separate call"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview-of-tripservices-stays-api","__idx":3},"children":["Overview of TripServices Stays API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The TripServices Stays API is a modern RESTful API with two workflow options:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Option 1: TripServices API v11 (Multi-Step Workflow)"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What It Does"},"children":["What It Does"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Search"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["POST /search/properties/search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Find hotels with property info"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Availability"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["POST /availability/catalogofferingshospitality"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get available rates"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Rules"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/rules/offershospitality/buildfromcatalogoffering"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get rate policies"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Option 2: SearchComplete (Single Call)"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What It Does"},"children":["What It Does"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/search/searchcomplete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get everything - properties, rates, AND rules"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API Characteristics:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Protocol: RESTful HTTP"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data Format: JSON"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authentication: OAuth 2.0 Bearer tokens"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Consolidated RESTful endpoints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simplified request/response structures"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Property details included in search response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standard HTTP status codes for errors"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"key-differences-between-uapi-and-tripservices-api","__idx":4},"children":["Key Differences Between uAPI and TripServices API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Summary Comparison"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Feature"},"children":["Feature"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"uAPI (SOAP)"},"children":["uAPI (SOAP)"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"TripServices API"},"children":["TripServices API"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Protocol"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SOAP/XML"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["REST/JSON"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authentication"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["WS-Security headers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth 2.0 Bearer tokens"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Request Format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["XML with nested elements"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["JSON with clear structure"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Response Format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["XML"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["JSON"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Error Handling"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SOAP Faults"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP status codes + JSON errors"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["API Calls for Shopping"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2-3 calls (Search, Details, Rules)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["v11: 3 calls /"," ","SearchComplete: 1 call"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Endpoints"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Multiple SOAP actions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["RESTful endpoints"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Documentation"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["WSDL"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenAPI/Swagger"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication-migration","__idx":5},"children":["Authentication Migration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI uses WS-Security with username/password in SOAP headers:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<soap:Header>\n  <wsse:Security>\n    <wsse:UsernameToken>\n      <wsse:Username>USERNAME</wsse:Username>\n      <wsse:Password>PASSWORD</wsse:Password>\n    </wsse:UsernameToken>\n  </wsse:Security>\n  <Header_v52_0:BranchCode>P1234567</Header_v52_0:BranchCode>\n</soap:Header>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API uses OAuth 2.0. First, obtain an access token (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/getting-started/authentication"},"children":["Authentication"]},"):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"Content-Type: application/x-www-form-urlencoded\n\ngrant_type=client_credentials &\nclient_id=YOUR_CLIENT_ID &\nclient_secret=YOUR_CLIENT_SECRET\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then use the token in all API requests:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"Authorization: Bearer YOUR_ACCESS_TOKEN\n\nXAUTH_TRAVELPORT_ACCESSGROUP: YOUR_PCC\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Differences:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OAuth tokens expire in 24 hours and must be refreshed"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Access group (PCC) is now in XAUTH_TRAVELPORT_ACCESSGROUP header"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No username/password in each authorization request - use token instead"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Token management required (cache tokens, refresh before expiry)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migration-path-1-tripservices-api-v11-multi-step-workflow","__idx":6},"children":["Migration Path 1: TripServices API v11 (Multi-Step Workflow)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This section shows how to migrate several uAPI calls to the TripServices API v11 endpoints. This maintains the familiar multi-step workflow while modernizing the technology."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-1-hotel-search","__idx":7},"children":["Step 1: Hotel Search"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI: HotelSearchAvailabilityReq"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<soapenv:Envelope>\n    <soapenv:Body>\n        <hot:HotelSearchAvailabilityReq>\n            <com:BillingPointOfSaleInfo OriginApplication=\"UAPI\"/>\n            <hot:HotelSearchLocation>\n                <hot:HotelLocation Location=\"SFO\"/>\n            </hot:HotelSearchLocation>\n            <hot:HotelSearchModifiers>\n                <hot:NumberOfAdults>2</hot:NumberOfAdults>\n            </hot:HotelSearchModifiers>\n            <hot:HotelStay>\n                <hot:CheckinDate>2025-03-15</hot:CheckinDate>\n                <hot:CheckoutDate>2025-03-17</hot:CheckoutDate>\n            </hot:HotelStay>\n        </hot:HotelSearchAvailabilityReq>\n    </soapenv:Body>\n</soapenv:Envelope>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API v11:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n \"PropertiesQuerySearch\": {\n  \"@type\": \"PropertiesQuerySearch\",\n  \"CheckInDate\": \"2025-03-15\",\n  \"CheckOutDate\": \"2025-03-17\",\n  \"SearchBy\": {\n   \"@type\": \"SearchByIATACode\",\n   \"IATACode\": \"SFO\"\n  },\n  \"RoomStayCandidate\": [\n   {\n    \"GuestCount\": {\n     \"AdultCount\": 2\n    }\n   }\n  ]\n }\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["JSON instead of XML - simpler structure"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["SearchBy object for location (supports coordinates, city, airport)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RoomStayCandidate replaces HotelSearchModifiers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Property details (images, amenities) included in response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No separate HotelDetailsReq needed"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-2-hotel-availability","__idx":8},"children":["Step 2: Hotel Availability"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI: Availability Included in Search"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In uAPI, availability is returned in the HotelSearchAvailabilityReq response."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API v11: Hotel Availability API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API v11 requires a separate availability call:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n \"CatalogOfferingsQueryHospitality\": {\n  \"@type\": \"CatalogOfferingsQueryHospitality\",\n  \"PropertyIdentifier\": [\n   \"TVPT-12345\",\n   \"TVPT-67890\"\n  ],\n  \"HotelStay\": {\n   \"CheckInDate\": \"2025-03-15\",\n   \"CheckOutDate\": \"2025-03-17\"\n  },\n  \"GuestCount\": {\n   \"AdultCount\": 2\n  }\n }\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Separate call required (different from uAPI)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use PropertyIdentifier from search response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Returns CatalogOfferingIdentifier needed for rules call"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Rate and room details in response"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-3-rate-rules","__idx":9},"children":["Step 3: Rate Rules"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI: HotelRulesReq"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<soapenv:Envelope>\n    <soapenv:Body>\n        <hot:HotelRulesReq>\n            <com:BillingPointOfSaleInfo OriginApplication=\"UAPI\"/>\n            <hot:HotelReservationLocatorCode>ABC123</hot:HotelReservationLocatorCode>\n            <hot:HotelRulesModifiers>\n                <hot:HotelRulesLookup>RatePlanType</hot:HotelRulesLookup>\n            </hot:HotelRulesModifiers>\n        </hot:HotelRulesReq>\n    </soapenv:Body>\n</soapenv:Envelope>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API v11:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n \"BuildFromCatalogOfferingsRequestHospitality\": {\n  \"CatalogOfferingIdentifier\": \"abc123-def456-ghi789\"\n }\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use CatalogOfferingIdentifier from availability response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Returns cancellation policies, deposit requirements, guarantees"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simpler JSON structure vs XML"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["More detailed policy information"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migration-path-2-searchcomplete-single-call","__idx":10},"children":["Migration Path 2: SearchComplete (Single Call)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recommended Approach"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["SearchComplete consolidates search, availability, and rules into a single endpoint. This is the recommended approach for new implementations as it reduces complexity and improves performance."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["uAPI: Three Separate SOAP Calls"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In uAPI, you make:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HotelSearchAvailabilityReq - Search and get basic availability"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HotelDetailsReq - Get property details"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HotelRulesReq - Get rate rules and policiesSearchComplete"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Single REST Call"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["One call replaces all three"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n \"stayDetails\": {\n  \"checkInDateLocal\": \"2025-03-15\",\n  \"checkOutDateLocal\": \"2025-03-17\",\n  \"guests\": {\n   \"numberOfAdults\": 2,\n   \"numberOfChildren\": 0\n  }\n },\n \"propertyFilter\": {\n  \"location\": {\n   \"iataCode\": \"SFO\"\n  },\n  \"returnOnlyAvailableProperties\": true,\n  \"returnRateSummaryInfo\": true\n },\n \"requestedCurrency\": \"USD\"\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["What You Get Back:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Properties with all details (name, address, amenities, images)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Available rates with complete pricing"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Room type information"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Rate rules including cancellation and deposit policies"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["All in one unified JSON response"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Benefits vs uAPI:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["One API call instead of three - reduced latency"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No need to manage state between calls"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simpler error handling (one point of failure)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cleaner JSON structure vs XML"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Built-in caching for better performance"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"booking-workflow-changes","__idx":11},"children":["Booking Workflow Changes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The booking, retrieval, modification, and cancellation flows are similar between uAPI and TripServices API, with the main differences being REST/JSON vs SOAP/XML format."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"create-booking","__idx":12},"children":["Create Booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use propertyKey and rateKey from search response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payment object structure simplified"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Guest details in cleaner JSON format"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Response includes reservation confirmation immediately"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"retrieve-booking","__idx":13},"children":["Retrieve Booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RESTful GET instead of SOAP request"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirmation ID in URL path"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complete reservation details in JSON response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standardized status codes"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"modify-booking","__idx":14},"children":["Modify Booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RESTful PUT for updates"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Send only changed fields"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Response includes updated reservation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Clearer modification rules and restrictions"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cancel-booking","__idx":15},"children":["Cancel Booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key Changes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RESTful DELETE for cancellation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cancellation penalties clearly shown in response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standard HTTP status codes for success/failure"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Detailed cancellation confirmation"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"general-changes-and-considerations","__idx":16},"children":["General Changes and Considerations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Error Handling"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"uAPI"},"children":["uAPI"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"TripServices API"},"children":["TripServices API"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SOAP Faults with error codes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP status codes (400, 401, 404, 500, etc.)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Error details in XML structure"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Error details in JSON errors array"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API error response example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n \"errors\": [\n  {\n   \"code\": \"INVALID_REQUEST\",\n   \"message\": \"Check-in date must be in the future\",\n   \"field\": \"stayDetails.checkInDateLocal\"\n  }\n ]\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Request/Response Size"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TripServices API payloads are typically 40-60% smaller than equivalent SOAP/XML:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Faster transmission over network"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reduced bandwidth costs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Easier to parse and process"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["More human-readable for debugging"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Development Tools"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"class":"doc-table md","className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"uAPI"},"children":["uAPI"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"TripServices API"},"children":["TripServices API"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["WSDL documentation"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenAPI/Swagger documentation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SoapUI for testing"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Postman, Insomnia, curl for testing"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Performance Improvements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OAuth token caching reduces authentication overhead"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["JSON parsing is faster than XMLSearchComplete"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API includes intelligent caching"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RESTful architecture enables better CDN usage"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Smaller payload sizes improve network performance"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migration-strategy-recommendations","__idx":17},"children":["Migration Strategy Recommendations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 1: Set up OAuth 2.0 authentication and test token management"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 2: Migrate search functionality (choose v11 or SearchComplete)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 3: Test search thoroughly with various criteria"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 4: Migrate booking workflow (create, retrieve, modify, cancel)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 5: Update error handling for HTTP status codes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 6: Performance testing and optimization"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phase 7: Production cutover with monitoring"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"conclusion","__idx":18},"children":["Conclusion"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Migrating from uAPI to the TripServices Stays API modernizes your integration with significant benefits:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Technical Benefits:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simpler REST/JSON architecture vs SOAP/XML"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Modern OAuth 2.0 authentication"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Smaller payloads and faster performance"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Better development tools and documentation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standard HTTP status codes for errors"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Choice of workflow: v11 multi-step or SearchComplete single call"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Business Benefits:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Faster development and time-to-market"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reduced bandwidth and infrastructure costs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Easier maintenance and debugging"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Better performance for end users"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Modern architecture supporting future enhancements"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recommendation:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For new implementations, we strongly recommend using SearchComplete API. It provides the simplest integration path with best performance. For existing v11 implementations, SearchComplete offers a clear upgrade path with significant benefits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Travelport team is available to assist with your migration. Contact your account manager or visit the developer portal for additional resources and support."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"document-feedback","__idx":19},"children":["Document Feedback"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We value your feedback on this documentation. If you have suggestions for improvements, find errors, or need clarification on any topic, please contact:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your Travelport Account Manager"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Travelport Support team"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Developer Portal feedback form"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For urgent API issues or production support, contact Travelport support immediately."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:john.callaway@travelport.com?subject=JSON%20API%20Feedback"},"children":["Provide feedback about this documentation"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["This link does not provide Help Desk support. If you need immediate assistance with Travelport APIs, please create a support request in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://my.travelport.com/"},"children":["MyTravelport"]}," or use your normal support path."]}]}]},"headings":[{"value":"Migration Guide: uAPI to TripServices Stays API","id":"migration-guide-uapi-to-tripservices-stays-api","depth":1},{"value":"Introduction","id":"introduction","depth":2},{"value":"Overview of uAPI Hotel Booking Flow","id":"overview-of-uapi-hotel-booking-flow","depth":2},{"value":"Overview of TripServices Stays API","id":"overview-of-tripservices-stays-api","depth":2},{"value":"Key Differences Between uAPI and TripServices API","id":"key-differences-between-uapi-and-tripservices-api","depth":2},{"value":"Authentication Migration","id":"authentication-migration","depth":2},{"value":"Migration Path 1: TripServices API v11 (Multi-Step Workflow)","id":"migration-path-1-tripservices-api-v11-multi-step-workflow","depth":2},{"value":"Step 1: Hotel Search","id":"step-1-hotel-search","depth":3},{"value":"Step 2: Hotel Availability","id":"step-2-hotel-availability","depth":3},{"value":"Step 3: Rate Rules","id":"step-3-rate-rules","depth":3},{"value":"Migration Path 2: SearchComplete (Single Call)","id":"migration-path-2-searchcomplete-single-call","depth":2},{"value":"Booking Workflow Changes","id":"booking-workflow-changes","depth":2},{"value":"Create Booking","id":"create-booking","depth":3},{"value":"Retrieve Booking","id":"retrieve-booking","depth":3},{"value":"Modify Booking","id":"modify-booking","depth":3},{"value":"Cancel Booking","id":"cancel-booking","depth":3},{"value":"General Changes and Considerations","id":"general-changes-and-considerations","depth":2},{"value":"Migration Strategy Recommendations","id":"migration-strategy-recommendations","depth":2},{"value":"Conclusion","id":"conclusion","depth":2},{"value":"Document Feedback","id":"document-feedback","depth":2}],"frontmatter":{"seo":{"title":"Migration Guide: uAPI to TripServices Stays API"}},"lastModified":"2026-05-27T15:34:23.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/stays/guides/migration/uapi-to-stripservices-stays-api","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}