SwOTA API Integration Guide for Travel Partners
Quick Start
SwOTA (Seaware Web OTA) is a cruise booking API that enables travel agencies and partners to search, book, and manage cruise reservations directly integrated with our Seaware reservation system.
New to SwOTA? This guide provides a quick start overview. For comprehensive API documentation, see the SwOTA API Development Guide.
What You Can Do
-
Search & Book: Find available sailings, categories, and cabins
-
Manage Bookings: Create, modify, cancel bookings
-
Handle Payments: Process payments and refunds
-
Manage Profiles: Create and update customer profiles
-
Access Inventory: Real-time availability and pricing
-
Generate Documents: Booking confirmations, invoices
Technical Overview
API Protocols
SwOTA supports both REST and SOAP protocols.
-
Message Format: XML based on OpenTravel Alliance (OTA) standards with Seaware extensions
-
Security: REST uses Auth0 token authentication; SOAP uses SSL client certificate authentication
See API Protocols for detailed protocol comparison.
Environment URLs
REST Endpoints
-
Production:
https://bookings.sw.travelhx.com/ota/rest/<MessageName> -
Staging:
https://bookings-stage.sw.travelhx.com/ota/rest/<MessageName> -
Development:
https://bookings-dev.sw.travelhx.com/ota/rest/<MessageName> -
Example:
https://bookings.sw.travelhx.com/ota/rest/OTA_PingRQ
SOAP Endpoints
-
Production: https://bookings.travelhx.com:8082/ota/ws
-
Test/Development: https://dev.bookings.travelhx.com:8082/ota/ws
Authentication & Security
REST Authentication (Auth0)
REST API access uses Auth0 token-based authentication.
To authenticate with the REST API:
-
Obtain Credentials: Contact your integration manager to get your Auth0 client ID and client secret
-
Get Access Token: Authenticate with Auth0 to receive a bearer token
-
Make Requests: Include the bearer token in the
Authorizationheader
Auth0 Token Endpoints
-
Staging:
https://travelhx-backend-stage.eu.auth0.com/oauth/token -
Production:
https://partner-travelhx.eu.auth0.com/oauth/token
Audience Values
-
Staging:
https://partner.dev.travelhx.dev/api -
Production:
https://partner.travelhx.com/api
Example Token Request:
curl --request POST \
--url https://travelhx-backend-stage.eu.auth0.com/oauth/token \
--header 'content-type: application/json' \
--data '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET","audience":"https://partner.dev.travelhx.dev/api","grant_type":"client_credentials"}'
Making REST Requests with Bearer Token:
curl --request POST \
--url https://bookings-dev.sw.travelhx.com/ota/rest/OTA_PingRQ \
--header 'authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'content-type: application/xml' \
--data '<OTA_PingRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-01-01T12:00:00Z"><EchoData>Test</EchoData></OTA_PingRQ>'
For more details, see the REST Testing Guide.
SOAP Authentication (SSL Client Certificates)
SOAP API access requires a valid SSL client certificate issued by HX.
-
Certificate Request: Contact your integration manager to request client certificates
-
Installation: Install the certificate in your HTTP client/application
-
Validation: Certificates are validated at the load balancer level before reaching the API
For more details, see the SOAP Testing Guide.
Point of Sale (POS) Element
Every request must include a POS element identifying your agency:
<POS>
<Source>
<RequestorID ID="YOUR_AGENCY_ID" Type="5" ID_Context="SEAWARE"/>
<BookingChannel Type="1">
<CompanyName>YOUR_COMPANY_NAME</CompanyName>
</BookingChannel>
</Source>
</POS>
Supported ID Types
|
Type |
ID_Context |
Description |
|---|---|---|
|
|
|
Our internal agency ID (Default) |
|
|
|
IATA agency code |
|
|
|
CLIA agency ID |
|
|
|
Travel agent ID |
|
|
|
Direct customer ID |
Core API Messages
1. Connection Test
Message: OTA_PingRQ/RS
<OTA_PingRQ Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<EchoData>Test connection</EchoData>
</OTA_PingRQ>
2. Sailing Search
Message: OTA_CruiseSailAvailRQ/RS
<OTA_CruiseSailAvailRQ Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<POS><!-- Your POS info --></POS>
<SailingDateRange>
<StartDateWindow EarliestDate="2024-06-01"/>
<EndDateWindow LatestDate="2024-08-31"/>
</SailingDateRange>
</OTA_CruiseSailAvailRQ>
3. Category Availability
Message: OTA_CruiseCategoryAvailRQ/RS
<OTA_CruiseCategoryAvailRQ Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<POS><!-- Your POS info --></POS>
<Guest/>
<Guest/>
<GuestCounts>
<GuestCount Code="10" Quantity="2"/>
</GuestCounts>
<SailingInfo>
<SelectedSailing VoyageID="VOYAGE123">
<CruiseLine/>
</SelectedSailing>
</SailingInfo>
<SelectedFare FareCode="BESTPRICE"/>
</OTA_CruiseCategoryAvailRQ>
4. Create Booking
Message: OTA_CruiseBookRQ/RS
<OTA_CruiseBookRQ Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<POS><!-- Your POS info --></POS>
<SailingInfo>
<SelectedSailing VoyageID="VOYAGE123">
<CruiseLine/>
</SelectedSailing>
<SelectedCategory PricedCategoryCode="A">
<SelectedCabin CabinNumber="1001" GuestRefNumbers="1 2"/>
</SelectedCategory>
</SailingInfo>
<ReservationInfo>
<GuestDetails>
<GuestDetail>
<ContactInfo>
<PersonName>
<GivenName>John</GivenName>
<Surname>Doe</Surname>
</PersonName>
</ContactInfo>
</GuestDetail>
<!-- Additional guests -->
</GuestDetails>
</ReservationInfo>
</OTA_CruiseBookRQ>
Payment Processing
Credit Card Payment
Message: OTA_CruisePaymentRQ/RS
<OTA_CruisePaymentRQ Version="1.0">
<POS><!-- Your POS info --></POS>
<ReservationPayment>
<ReservationID ID="12345" Type="14" ID_Context="SEAWARE"/>
<PaymentDetail PaymentType="5">
<PaymentCard ExpireDate="1225">
<CardType Code="1">VISA</CardType>
<CardHolderName>John Doe</CardHolderName>
<CardNumber>
<PlainText>4111111111111111</PlainText>
</CardNumber>
</PaymentCard>
<PaymentAmount Amount="500.00" CurrencyCode="USD"/>
</PaymentDetail>
</ReservationPayment>
</OTA_CruisePaymentRQ>
Testing Your Integration
Development Environment Setup
-
Install Development Certificate: Request and install SSL certificate
-
Test Credentials: Use agency ID
TESTwith booking sourceOPENTRAVEL -
Expected Response: Error Code 168 (Agent not recognised) - This confirms your message format and certificate are working!
Sample Requests
We provide the following sample requests for API calls:
|
Request Type |
File |
Description |
|---|---|---|
|
Connection Test |
Basic connectivity test |
|
|
Sailing Search |
Search for available sailings within a given date range. |
|
|
Category Availability |
Get available cabin categories for a specific sailing for a certain number of guests. |
|
|
Cabin Availability |
Get specific, assignable cabins within a chosen category. |
|
|
Price a Booking |
Get an itemized price for a full booking configuration before creating it. |
|
|
Hold a Cabin |
Temporarily reserve one or more cabins without immediate payment. |
|
|
Create a Booking |
Create a (Multi-Cabin) Booking |
|
|
Retrieve a Booking |
Fetch the details of an existing booking using its confirmation ID. |
|
|
Cancel a Booking |
Cancel a confirmed reservation. |
|
|
Unhold a Cabin |
Release a cabin that was previously on hold. |
|
|
Dining Availability |
Query for available dining times and venues on a sailing. |
|
|
Shore Excursion Availability |
Get a list of available tours for a given sailing. |
|
|
Cancellation Pricing |
Check the cancellation fees before cancelling. |
|
|
Booking History |
Get a log of all changes made to a booking. |
|
|
Create a Guest Profile |
Create a guest profile in the system. |
|
|
Read a Guest Profile |
Retrieve a guest profile from the system. |
|
|
Modify a Guest Profile |
Update a guest profile in the system. |
|
|
Fare Availability |
Get a list of available fares for a specific sailing. |
|
|
Make a Payment |
Submit a payment for an existing booking. |
|
|
Send Booking Documents |
Send Booking Documents |
Complete Message Catalog
Availability & Search
-
OTA_CruiseSailAvailRQ/RS- Search available sailings -
OTA_CruiseCategoryAvailRQ/RS- Get cabin categories -
OTA_CruiseCabinAvailRQ/RS- Find available cabins -
OTA_CruiseFareAvailRQ/RS- Search fare options -
OTA_CruiseDiningAvailRQ/RS- Dining availability -
OTA_CruiseShorexAvailRQ/RS- Shore excursion options
Booking Management
-
OTA_CruiseBookRQ/RS- Create/modify bookings -
OTA_CruisePriceBookingRQ/RS- Get detailed pricing -
OTA_ReadRQ/OTA_ResRetrieveRS- Retrieve booking details -
OTA_CancelRQ/RS- Cancel reservations
Inventory Management
-
OTA_CruiseCabinHoldRQ/RS- Hold cabin inventory -
OTA_CruiseCabinUnholdRQ/RS- Release cabin holds
Payment & Financial
-
OTA_CruisePaymentRQ/RS- Process payments -
OTA_CruiseCancellationPricingRQ/RS- Get cancellation fees
Profile Management
-
OTA_ProfileCreateRQ/RS- Create customer profile -
OTA_ProfileModifyRQ/RS- Update profile -
OTA_ReadRQ/OTA_ProfileReadRS- Retrieve profile
Documents & Communication
-
OTA_CruiseBookingDocumentRQ/RS- Send booking documents
Advanced Features
Stateful Mode (Temporary Storage)
Use TransactionActionCode attribute for complex booking scenarios:
-
Initiate- Start temporary booking -
Hold- Update and keep in temporary storage -
Book- Finalize and store booking -
Ignore- Cancel temporary booking
Multi-Cabin Bookings
Book multiple cabins in single request using GuestRefNumbers attribute:
<SelectedCabin CabinNumber="101" GuestRefNumbers="1 2"/>
<SelectedCabin CabinNumber="102" GuestRefNumbers="3 4"/>
Currency Support
Specify preferred currency in POS element:
<Source ISOCurrency="EUR">
Schema & Technical References
WSDL & Schema Files
-
Primary WSDL: SwOTA.wsdl
-
OTA Schemas: Available on request from https://opentravel.org
-
Key Schemas:
-
OTA_CruiseCommonTypes.xsd- Common data types -
OTA_CruiseBookRQ.xsd- Booking request structure -
OTA_CommonTypes.xsd- General OTA types
-
Code Lists
API supports OpenTravel Alliance standard code lists:
-
Guest Types: Code "10" = Adult, "8" = Child, etc.
-
Reservation Types: Type "14" = Booking Reference
-
Payment Types: Type "5" = Credit Card, "1" = Cash
-
Status Codes: "36" = Available, "46" = Waitlisted
Message Patterns
All responses follow standard OTA patterns:
-
Success:
element present -
Warnings:
element with non-blocking issues -
Errors:
element with blocking problems
Integration Pattern
Stateless Integration
Both REST and SOAP support stateless integration where each request contains all necessary information.
REST Integration
REST requests use Auth0 bearer tokens for authentication:
POST https://bookings.sw.travelhx.com/ota/rest/OTA_MessageTypeRQ
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/xml
<OTA_MessageTypeRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<!-- Always include POS with your agency identification -->
<POS>
<Source>
<RequestorID ID="YOUR_AGENCY_ID" Type="5" ID_Context="SEAWARE"/>
<BookingChannel Type="1">
<CompanyName>YOUR_COMPANY_NAME</CompanyName>
</BookingChannel>
</Source>
</POS>
<!-- Message-specific content -->
</OTA_MessageTypeRQ>
SOAP Integration
SOAP requests use SSL client certificates for authentication:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header/>
<Body>
<OTA_MessageTypeRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-01-01T12:00:00Z">
<!-- Always include POS with your agency identification -->
<POS>
<Source>
<RequestorID ID="YOUR_AGENCY_ID" Type="5" ID_Context="SEAWARE"/>
<BookingChannel Type="1">
<CompanyName>YOUR_COMPANY_NAME</CompanyName>
</BookingChannel>
</Source>
</POS>
<!-- Message-specific content -->
</OTA_MessageTypeRQ>
</Body>
</Envelope>
Key Requirements:
-
REST: Bearer token must be included in Authorization header with every request
-
SOAP: SSL client certificate must be presented with every request
-
POS element must identify your agency in every message
-
All requests are stateless - no session management needed
Support & Resources
Getting Production Access
-
Contact: Your account manager
-
Provide: Company details, expected volume, integration timeline
-
Certificate Request: Request SSL client certificates
-
Receive: Agency setup, client certificates
-
Technical Review: Certificate installation and connectivity verification
-
Certification: Complete booking flow validation
Next Steps
-
SwOTA API Development Guide - Comprehensive technical documentation covering all API features, message types, and integration patterns
-
REST Testing Guide - Learn how to test REST requests using Auth0 authentication
-
SOAP Testing Guide - Learn how to test SOAP requests using SSL client certificates
-
Sample Requests - Ready-to-use example messages for all common operations
This guide covers the core integration requirements. For detailed technical documentation, see the SwOTA API Development Guide. For specific business rules, advanced features, or custom requirements, please contact our technical team.
Last Updated: December 2025