Skip to content

GoGlobal Integration — Data Flow Reference

This document describes the complete data flow for every GoGlobal API endpoint: from the REST call into HotelApi, through the entity framework, into the GoGlobal SOAP service, and back through the response chain to the JSON result returned to the caller.


Table of Contents

  1. Architecture Overview
  2. Two Execution Paths
  3. SOAP Transport Layer
  4. Country/City Lookup (Static Data)
  5. Operation 11 — Hotel Availability Search
  6. Operation 6/61 — Hotel Info
  7. Operation 9 — Valuation
  8. Operation 14 — Price Breakdown
  9. Operation 2 — Create Booking
  10. Operation 5 — Booking Status
  11. Operation 4 — Booking Details
  12. Operation 3 — Cancel Booking
  13. Operation 10 — Advanced Booking Search
  14. Operation 8 — Voucher Details
  15. Operation 15 — Amendment Options
  16. Operation 16 — Booking Amendment
  17. Entity Configuration Reference
  18. Field Mapping Tables

Architecture Overview

All GoGlobal operations flow through a layered architecture with clearly separated responsibilities. The key classes involved are:

Layer Class Responsibility
REST API HotelApi HTTP POST endpoint, parameter extraction, response wrapping
Search Facade HotelSearchFacade Pagination, sorting, search session persistence
Supplier Registry OnlineHotelSupplierRegistry Selects active online supplier by config
Online Facade GoGlobalHotelFacade Direct mapping between canonical and GoGlobal objects
Entity Facade EntityFacade Generic CRUD via config-driven service/factory/transformer
Service Factory GoGlobalServiceFactory Creates service instances from goglobal-client.xml
Entity Service GoGlobalHotelService Business logic; maps DTOs to native entities
Entity Transformer EntityTransformer Field mapping between native ↔ canonical entities
Request Builder GoGlobalRequestBuilder Builds XML request body per operation
SOAP Client GoGlobalSoapClient SOAP 1.2 envelope, HTTP POST, response extraction
Response Parser GoGlobalResponseParser Parses XML/JSON response into typed DTOs

General Sequence (EntityFacade path)

┌─────────┐    ┌─────────────┐    ┌───────────────┐    ┌─────────────────────┐
│ HotelApi │───>│ EntityFacade │───>│ ServiceFactory │───>│ GoGlobalHotelService │
└─────────┘    └─────────────┘    └───────────────┘    └──────────┬──────────┘
                     ┌────────────────────┐    ┌──────────────────┴──────────┐
                     │ GoGlobalSoapClient  │<───│ GoGlobalRequestBuilder     │
                     └────────┬───────────┘    └────────────────────────────┘
                              │ HTTP POST (SOAP 1.2)
                              v
                     ┌────────────────────┐
                     │ GoGlobal API Server │
                     └────────┬───────────┘
                              │ SOAP Response
                              v
                     ┌────────────────────┐    ┌──────────────────────────┐
                     │GoGlobalSoapClient   │───>│ GoGlobalResponseParser   │
                     │(extractResponse)    │    │ (parse to DTO)           │
                     └────────────────────┘    └──────────┬───────────────┘
                                                          │ DTO
                                                          v
                                               ┌──────────────────────────┐
                                               │ GoGlobalHotelService     │
                                               │ (map DTO → native entity)│
                                               └──────────┬───────────────┘
                                                          │ Native Entity (GG*)
                                                          v
                                               ┌──────────────────────────┐
                                               │ EntityTransformer        │
                                               │ (FieldMappingList)       │
                                               └──────────┬───────────────┘
                                                          │ Canonical Entity (C*)
                                                          v
                                               ┌──────────────────────────┐
                                               │ HotelApi                 │
                                               │ (wrap in TlinqApiResponse│
                                               └──────────────────────────┘

Two Execution Paths

GoGlobal endpoints use one of two distinct execution paths:

Path A — Online (Direct Facade)

Used by searchOffers (online mode), searchByName, getByCity. Bypasses EntityFacade and EntityTransformer; mapping is done in code.

HotelApi
  └─> HotelSearchFacade.executeSearch()
        └─> OnlineHotelSupplierRegistry.getActiveSupplier()
              └─> GoGlobalHotelFacade (implements OnlineHotelSupplierI)
                    ├─> GoGlobalRequestBuilder.build*Request()
                    ├─> GoGlobalSoapClient.sendRequest(opCode, xml)
                    ├─> GoGlobalResponseParser.parse*Response()
                    └─> mapToCHotelOffer() — inline Java mapping to CHotelOffer

Key characteristic: No XML entity configuration involved. Field mapping is hardcoded in GoGlobalHotelFacade.mapToCHotelOffer().

Path B — EntityFacade (Config-Driven)

Used by all other endpoints. Routing is driven by XML configuration in hotel-entities.xml and goglobal-client.xml.

HotelApi
  └─> EntityFacade.read() / write() / callCustomService()
        └─> Looks up Entity config in hotel-entities.xml
              └─> Finds Factory="GoGlobalServiceFactory"
                    └─> Finds Service name → looks up in goglobal-client.xml
                          └─> Creates GoGlobalHotelService instance
                                └─> Calls method via reflection (invokeMethod)
                                      ├─> Reads namedParams (from entity config NamedParams)
                                      ├─> GoGlobalRequestBuilder.build*Request()
                                      ├─> GoGlobalSoapClient.sendRequest()
                                      ├─> GoGlobalResponseParser.parse*Response()
                                      └─> Maps DTO → native entity (GG*)
        └─> EntityTransformer applies FieldMappingList
              └─> Converts native entity (GG*) → canonical entity (C*)

Key characteristic: Field mapping is driven by <FieldMappingList> in hotel-entities.xml. Service method and entity class come from goglobal-client.xml.


SOAP Transport Layer

All GoGlobal communication goes through GoGlobalSoapClient:

┌─────────────────────────────────────────────────────────────┐
│                    SOAP 1.2 Envelope                        │
│                                                             │
│  <?xml version="1.0" encoding="utf-8"?>                    │
│  <soap12:Envelope xmlns:soap12="...05/soap-envelope"        │
│                   xmlns:gg="http://www.goglobal.travel/">   │
│    <soap12:Body>                                            │
│      <gg:MakeRequest>                                       │
│        <gg:requestType>{operationCode}</gg:requestType>     │
│        <gg:xmlRequest><![CDATA[                             │
│          <Root>                                              │
│            <Header>                                          │
│              <Agency>{agencyId}</Agency>                     │
│              <User>{login}</User>                            │
│              <Password>{password}</Password>                 │
│              <Operation>{OPERATION_NAME}</Operation>         │
│              <OperationType>Request</OperationType>          │
│            </Header>                                         │
│            <Main Version="{ver}">                            │
│              {operation-specific XML}                        │
│            </Main>                                           │
│          </Root>                                              │
│        ]]></gg:xmlRequest>                                   │
│      </gg:MakeRequest>                                       │
│    </soap12:Body>                                            │
│  </soap12:Envelope>                                          │
└─────────────────────────────────────────────────────────────┘

HTTP Headers:
  Content-Type: application/soap+xml; charset=utf-8
  API-Operation: {operationCode}
  API-AgencyID: {agencyId}

Response extraction: The MakeRequestResult element is located, CDATA unescaped, and the inner XML/JSON is returned to the caller.


Country/City Lookup (Static Data)

Endpoints: POST /hotel/searchCountries, POST /hotel/getCities GoGlobal Operation: None (local database queries) Execution Path: Direct Hibernate query — no SOAP, no EntityFacade

These endpoints query the GoGlobal static data cache (goglobal.country, goglobal.city tables) that is populated by StaticDataRefresher / GGRefreshRunner. They provide country/city selection for the hotel search form, where the selected city ID is used as the cityCode parameter in /hotel/searchOffers.

Data Flow

Client              HotelApi                GoGlobalDBSession       PostgreSQL
  │                    │                         │                      │
  │ POST /hotel/       │                         │                      │
  │ searchCountries    │                         │                      │
  │ {keyword:"Uni"}    │                         │                      │
  │───────────────────>│                         │                      │
  │                    │ session.createQuery(     │                      │
  │                    │  "FROM GGCountryEntity   │                      │
  │                    │   WHERE LOWER(           │                      │
  │                    │   countryName) LIKE :kw  │                      │
  │                    │   ORDER BY countryName") │                      │
  │                    │────────────────────────>│                      │
  │                    │                         │ SELECT * FROM         │
  │                    │                         │ goglobal.country      │
  │                    │                         │ WHERE LOWER(          │
  │                    │                         │  country_name)        │
  │                    │                         │  LIKE '%uni%'         │
  │                    │                         │────────────────────>│
  │                    │                         │  List<GGCountryEntity>│
  │                    │                         │<────────────────────│
  │                    │  [{countryId, countryName, countryCode}, ...]   │
  │                    │<────────────────────────│                      │
  │  TlinqApiResponse  │                         │                      │
  │  apiData: [...]    │                         │                      │
  │<───────────────────│                         │                      │

The getCities flow is identical but queries goglobal.city filtered by countryId.

Data Objects

Step Object Key Fields
API Input (searchCountries) reqData keyword
DB Entity GGCountryEntity countryId (Long), countryName, countryCode
API Output Array of maps countryId, countryName, countryCode
API Input (getCities) reqData countryId
DB Entity GGCityEntity cityId (Long), cityName, cityCode, countryId
API Output Array of maps cityId, cityName, cityCode

Important: The cityCode returned by getCities is the GoGlobal city ID (numeric string). This same value is passed as cityCode to /hotel/searchOffers. During the EntityFacade's convertSearchCriteria() step, the canonical field name cityCode is transformed to the native field name cityId (per the HotelOffer GoGlobal FieldMapping configuration). The GoGlobalHotelService.searchAvailability() method reads getNamedParam("cityId") with a fallback to getNamedParam("cityCode") to handle both paths.


Endpoint: POST /hotel/searchOffers GoGlobal Operation: 11 — HOTEL_SEARCH_REQUEST Response format: JSON (unique among all operations) Execution Path: A (Online) or B (Contracted), controlled by searchMode parameter.

Sequence Diagram — Online Mode (Path A)

Client          HotelApi           HotelSearchFacade   GoGlobalHotelFacade   RequestBuilder    SoapClient     ResponseParser
  │                │                      │                   │                   │                │                │
  │ POST /hotel/   │                      │                   │                   │                │                │
  │ searchOffers   │                      │                   │                   │                │                │
  │ {session,      │                      │                   │                   │                │                │
  │  cityCode,     │                      │                   │                   │                │                │
  │  checkInDate,  │                      │                   │                   │                │                │
  │  checkOutDate, │                      │                   │                   │                │                │
  │  adults,       │                      │                   │                   │                │                │
  │  children,     │                      │                   │                   │                │                │
  │  roomQuantity, │                      │                   │                   │                │                │
  │  currency,     │                      │                   │                   │                │                │
  │  searchMode:   │                      │                   │                   │                │                │
  │  "online"}     │                      │                   │                   │                │                │
  │───────────────>│                      │                   │                   │                │                │
  │                │  Build CHotelSearch   │                   │                   │                │                │
  │                │  from reqData         │                   │                   │                │                │
  │                │                      │                   │                   │                │                │
  │                │  executeSearch(       │                   │                   │                │                │
  │                │    CHotelSearch,      │                   │                   │                │                │
  │                │    pageSize,          │                   │                   │                │                │
  │                │    sortOrder)         │                   │                   │                │                │
  │                │─────────────────────>│                   │                   │                │                │
  │                │                      │ Registry           │                   │                │                │
  │                │                      │ .getActiveSupplier │                   │                │                │
  │                │                      │ ──────────────────>│                   │                │                │
  │                │                      │                   │                   │                │                │
  │                │                      │ searchOffers(      │                   │                │                │
  │                │                      │   CHotelSearch)    │                   │                │                │
  │                │                      │──────────────────>│                   │                │                │
  │                │                      │                   │ buildAvailability  │                │                │
  │                │                      │                   │ Request(cityCode,  │                │                │
  │                │                      │                   │  checkIn,checkOut, │                │                │
  │                │                      │                   │  rooms,adults,     │                │                │
  │                │                      │                   │  children,         │                │                │
  │                │                      │                   │  nationality,      │                │                │
  │                │                      │                   │  currency)         │                │                │
  │                │                      │                   │──────────────────>│                │                │
  │                │                      │                   │     XML string    │                │                │
  │                │                      │                   │<──────────────────│                │                │
  │                │                      │                   │                   │                │                │
  │                │                      │                   │ sendRequest(11,xml)│                │                │
  │                │                      │                   │──────────────────────────────────>│                │
  │                │                      │                   │                   │   SOAP/HTTP    │                │
  │                │                      │                   │                   │ ──────────────>│ GoGlobal API   │
  │                │                      │                   │                   │   JSON resp    │                │
  │                │                      │                   │                   │ <──────────────│                │
  │                │                      │                   │   JSON string     │                │                │
  │                │                      │                   │<──────────────────────────────────│                │
  │                │                      │                   │                   │                │                │
  │                │                      │                   │ parseAvailability  │                │                │
  │                │                      │                   │ Response(json)     │                │                │
  │                │                      │                   │───────────────────────────────────────────────────>│
  │                │                      │                   │ GGAvailabilityResponse             │                │
  │                │                      │                   │  └ hotels[]:HotelResult            │                │
  │                │                      │                   │     ├ HotelCode,HotelName          │                │
  │                │                      │                   │     ├ Category,CityId              │                │
  │                │                      │                   │     ├ Latitude,Longitude           │                │
  │                │                      │                   │     └ offers[]:Offer               │                │
  │                │                      │                   │        ├ HotelSearchCode            │                │
  │                │                      │                   │        ├ TotalPrice,Currency        │                │
  │                │                      │                   │        ├ RoomBasis,BoardBasis       │                │
  │                │                      │                   │        ├ NonRef,CxlDeadline         │                │
  │                │                      │                   │        └ AvailFlag,Rooms[]          │                │
  │                │                      │                   │<───────────────────────────────────────────────────│
  │                │                      │                   │                   │                │                │
  │                │                      │                   │ for each hotel+offer:              │                │
  │                │                      │                   │   mapToCHotelOffer()               │                │
  │                │                      │                   │   → CHotelOffer                    │                │
  │                │                      │                   │                   │                │                │
  │                │                      │  List<CHotelOffer> │                   │                │                │
  │                │                      │<──────────────────│                   │                │                │
  │                │                      │                   │                   │                │                │
  │                │                      │ Sort + save to DB  │                   │                │                │
  │                │                      │ (CPersistentSearch │                   │                │                │
  │                │                      │  + CSearchResult)  │                   │                │                │
  │                │                      │                   │                   │                │                │
  │                │  CHotelOfferSet       │                   │                   │                │                │
  │                │  {searchId, page,     │                   │                   │                │                │
  │                │   offers[], totalRes} │                   │                   │                │                │
  │                │<─────────────────────│                   │                   │                │                │
  │                │                      │                   │                   │                │                │
  │  TlinqApiResponse                     │                   │                   │                │                │
  │  {apiStatus:OK,                       │                   │                   │                │                │
  │   apiData: CHotelOfferSet}            │                   │                   │                │                │
  │<───────────────│                      │                   │                   │                │                │

Sequence Diagram — Contracted Mode (Path B)

Client          HotelApi           EntityFacade      ServiceFactory     GoGlobalHotelService  EntityTransformer
  │                │                    │                 │                    │                    │
  │ POST /hotel/   │                    │                 │                    │                    │
  │ searchOffers   │                    │                 │                    │                    │
  │ {searchMode:   │                    │                 │                    │                    │
  │  "contracted"} │                    │                 │                    │                    │
  │───────────────>│                    │                 │                    │                    │
  │                │ Build criteria SCL │                 │                    │                    │
  │                │ ef.search(         │                 │                    │                    │
  │                │  "HotelOffer",scl) │                 │                    │                    │
  │                │───────────────────>│                 │                    │                    │
  │                │                    │ Look up entity  │                    │                    │
  │                │                    │ "HotelOffer" in │                    │                    │
  │                │                    │ hotel-entities   │                    │                    │
  │                │                    │ .xml             │                    │                    │
  │                │                    │                 │                    │                    │
  │                │                    │ createService(  │                    │                    │
  │                │                    │ "searchHotel    │                    │                    │
  │                │                    │  Offers")       │                    │                    │
  │                │                    │────────────────>│                    │                    │
  │                │                    │                 │ GoGlobalHotelService                    │
  │                │                    │                 │ .initialize(config)│                    │
  │                │                    │                 │───────────────────>│                    │
  │                │                    │                 │                    │                    │
  │                │                    │ service.addCriterion("cityCode",val) │                    │
  │                │                    │ service.addCriterion("checkInDate",.)│                    │
  │                │                    │ ... (adds all SCL criteria as namedParams)                │
  │                │                    │                 │                    │                    │
  │                │                    │ service.search() │                    │                    │
  │                │                    │───────────────────────────────────>│                    │
  │                │                    │                 │                    │                    │
  │                │                    │                 │   invokeMethod(    │                    │
  │                │                    │                 │   "searchAvail     │                    │
  │                │                    │                 │    ability")       │                    │
  │                │                    │                 │                    │                    │
  │                │                    │                 │  (same SOAP flow   │                    │
  │                │                    │                 │   as Online mode)  │                    │
  │                │                    │                 │                    │                    │
  │                │                    │                 │   GGHotelOffer[]   │                    │
  │                │                    │<───────────────────────────────────│                    │
  │                │                    │                 │                    │                    │
  │                │                    │ For each GGHotelOffer:              │                    │
  │                │                    │   EntityTransformer                 │                    │
  │                │                    │   .transform(                       │                    │
  │                │                    │     GGHotelOffer,                   │                    │
  │                │                    │     FieldMappingList)               │                    │
  │                │                    │────────────────────────────────────────────────────────>│
  │                │                    │                 │                    │  CHotelOffer       │
  │                │                    │<────────────────────────────────────────────────────────│
  │                │                    │                 │                    │                    │
  │                │  List<CHotelOffer>  │                 │                    │                    │
  │                │<───────────────────│                 │                    │                    │
  │  TlinqApiResponse                   │                 │                    │                    │
  │<───────────────│                    │                 │                    │                    │

Data Objects

Step Object Key Fields
API Input reqData (Map) cityCode, checkInDate, checkOutDate, adults, children, roomQuantity, nationality, currency, searchMode
Search Criteria CHotelSearch cityCode, checkInDate, checkOutDate, adults, children, roomQuantity, nationality, currency
Request XML String <CityCode>, <ArrivalDate>, <Nights>, <Rooms> (Adults, RoomCount, ChildCount), <Nationality>, <Currency>
Response DTO GGAvailabilityResponse hotels[] →
Native Entity GGHotelOffer hotelSearchCode, hotelCode, hotelName, category, cityId, latitude, longitude, totalPrice, currency, roomBasis, boardBasis, nonRef, cxlDeadline
Canonical Entity CHotelOffer offerId, hotelId, hotelName, cityCode, hotelLatitude, hotelLongitude, totalAmount, currencyCode, roomType, boardType, cancellationType, cancellationDeadline
API Output CHotelOfferSet searchId, currentPage, offers[], totalRes

Search Persistence (3 tables) — Hotel-Grouped Pagination

After the GoGlobal API returns results, HotelSearchFacade groups offers by hotel and persists the search session for pagination and later retrieval. Each CSearchResult row represents one hotel with all its room offers stored as a JSON array.

HotelSearchFacade.executeSearch()
  ├── executeBasicSearch()  →  EntityFacade.search("HotelOffer", criteria)
  │                              → GGHotelOffer[] → EntityTransformer → List<CHotelOffer>
  ├── groupByHotel(offers)  →  Map<hotelId, List<CHotelOffer>>
  ├── sortHotelGroups(groups, sortMethod)
  │     SORT_PRICE_ASC  → sort by min offer price ascending
  │     SORT_PRICE_DESC → sort by min offer price descending
  │     SORT_NAME_ASC   → sort by hotel name ascending
  └── saveGroupedResults()
        ├── (1) CPersistentSearch  →  nts.searchbase
        │     searchId, sessionId, searchType="HOTELSEARCH",
        │     resultCount = number of unique hotels (not offers),
        │     searchStart, searchExpiry (+30 min)
        ├── (2) CHotelSearch  →  nts.hotelsearch
        │     searchId, searchBaseId, sessionId,
        │     cityCode, checkInDate, checkOutDate, adults, children,
        │     roomQuantity, nationality, currency, ...
        └── (3) CSearchResult[]  →  nts.searchres (one per HOTEL)
              searchId, searchBaseId, sortIndex (hotel position),
              groupKey=hotelId, groupDesc=hotelName,
              sourceObject = gson.toJson(List<CHotelOffer>) (JSON array of all room offers)

Page size is configurable via goglobal.hotel.search.pageSize in goglobal-client.xml (default: 20 hotels per page). HotelApi reads the page size via GoGlobalClientConfig.getSearchPageSize().

The CHotelSearch entity is registered in the NTS entity framework: - NTS entity: HotelsearchEntity (JPA, maps to nts.hotelsearch) - NTS services: getHotelSearch, createHotelSearch, updateHotelSearch in nts-client.xml - Entity config: HotelSearch in hotel-entities.xml with NTSServiceFactory

Pagination via hotel/fetchOfferResults reads from nts.searchres by searchId and sortIdx range. Each row's sourceObject is a JSON array deserialized via gson.fromJson(so, CHotelOffer[].class), then all offers are flattened into the response. Since each row represents one hotel, a page of 20 results returns 20 hotels with all their room offers.

Field Name Mapping (Contracted Mode)

When using Path B (EntityFacade), the convertSearchCriteria() method transforms canonical field names to native field names using the HotelOffer GoGlobal FieldMapping configuration. This affects how criteria are passed to GoGlobalHotelService:

Canonical (input) Native (namedParam key) Mapping source
cityCode cityId hotel-entities.xml line 472: targetField="cityCode" sourceField="cityId"
checkInDate checkInDate Direct (same name)
checkOutDate checkOutDate Direct (same name)
adults adults Direct (same name)
roomQuantity roomQuantity Direct (same name)
children children Direct (same name)
nationality nationality Direct (same name)
currency currency Direct (same name)

Important: GoGlobalHotelService.searchAvailability() reads getNamedParam("cityId") first, falling back to getNamedParam("cityCode") to handle both the transformed name (from EntityFacade) and the direct name (from Online mode).


Op 6 — Hotel Info

Endpoint: POST /hotel/getHotel (with searchMode=online) GoGlobal Operation: 61 — HOTEL_INFO_REQUEST Response format: XML Execution Path: B (EntityFacade)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getHotel       │                    │                    │                  │                  │
  │ {hotelId,      │                    │                    │                  │                  │
  │  searchMode:   │                    │                    │                  │                  │
  │  "online"}     │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.read(null,      │                    │                  │                  │
  │                │  "HotelInfo",      │                    │                  │                  │
  │                │  hotelId)          │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ service=getHotelInfo                  │                  │
  │                │                    │ namedParam: hotelId │                  │                  │
  │                │                    │ invokeMethod(       │                  │                  │
  │                │                    │  "getHotelInfo")    │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ buildHotelInfo   │                  │
  │                │                    │                    │ Request(hotelId) │                  │
  │                │                    │                    │ sendRequest(61,.)│                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │   XML response  │                  │
  │                │                    │                    │<────────────────│                  │
  │                │                    │                    │ parseHotelInfo  │                  │
  │                │                    │                    │ Response(xml)   │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │  GGHotelInfoResponse             │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Map DTO → GGHotelInfo              │
  │                │                    │                    │ (hotelId, hotelName, address,      │
  │                │                    │                    │  cityCode, cityName, category,     │
  │                │                    │                    │  description, lat, lng,            │
  │                │                    │                    │  countryCode, facilitiesJson,      │
  │                │                    │                    │  picturesJson)                     │
  │                │                    │   GGHotelInfo      │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │                    │                  │                  │
  │                │                    │ EntityTransformer   │                  │                  │
  │                │                    │ GGHotelInfo →       │                  │                  │
  │                │                    │ CHotelInfo           │                  │                  │
  │                │                    │ (FieldMappingList)  │                  │                  │
  │                │  CHotelInfo         │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData hotelId, searchMode="online"
Response DTO GGHotelInfoResponse hotelId, hotelName, address, cityCode, cityName, category, description, facilities[], pictures[], latitude, longitude, countryCode
Native Entity GGHotelInfo hotelId, hotelName, address, cityCode, cityName, category, description, facilities, pictures, latitude, longitude, countryCode, facilitiesJson, picturesJson
Canonical Entity CHotelInfo hotelId, hotelName, address, cityCode, cityName, category, description, facilities (JSON), pictures (JSON), latitude, longitude, countryCode

Op 9 — Valuation

Endpoint: POST /hotel/valuateOffer GoGlobal Operation: 9 — BOOKING_VALUATION_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action valuateOffer)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ valuateOffer   │                    │                    │                  │                  │
  │ {hotelSearch   │                    │                    │                  │                  │
  │  Code,         │                    │                    │                  │                  │
  │  arrivalDate}  │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ CHotelOffer input   │                    │                  │                  │
  │                │  .offerId =         │                    │                  │                  │
  │                │   hotelSearchCode   │                    │                  │                  │
  │                │  .checkInDate =     │                    │                  │                  │
  │                │   arrivalDate       │                    │                  │                  │
  │                │                    │                    │                  │                  │
  │                │ result = ef.call    │                    │                  │                  │
  │                │ CustomService(input,│                    │                  │                  │
  │                │  "valuateOffer")    │                    │                  │                  │
  │                │  returns Object     │                    │                  │                  │
  │                │  (single entity or  │                    │                  │                  │
  │                │   List, handled by  │                    │                  │                  │
  │                │   instanceof check) │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParams:        │                  │                  │
  │                │                    │  hotelSearchCode    │                  │                  │
  │                │                    │   ← input.offerId   │                  │                  │
  │                │                    │  arrivalDate        │                  │                  │
  │                │                    │   ← input.checkInDate                 │                  │
  │                │                    │                    │                  │                  │
  │                │                    │ invokeMethod(       │                  │                  │
  │                │                    │  "valuateBooking")  │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ buildValuation   │                  │
  │                │                    │                    │ Request(code,    │                  │
  │                │                    │                    │  arrivalDate)    │                  │
  │                │                    │                    │ sendRequest(9,.) │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │   XML response  │                  │
  │                │                    │                    │<────────────────│                  │
  │                │                    │                    │ parseValuation  │                  │
  │                │                    │                    │ Response(xml)   │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │  GGValuationResponse             │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Map → GGHotelOffer                 │
  │                │                    │  GGHotelOffer      │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelOffer          │                  │                  │
  │                │  CHotelOffer        │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData hotelSearchCode, arrivalDate
Response DTO GGValuationResponse hotelSearchCode, totalPrice, currency, cancellationDeadline, nonRefundable, boardBasis
Native Entity GGHotelOffer hotelSearchCode, totalPrice, currency, cxlDeadline, nonRef, cancellationType, boardBasis
Canonical Entity CHotelOffer offerId, totalAmount, currencyCode, cancellationDeadline, cancellationType, boardType

Op 14 — Price Breakdown

Endpoint: POST /hotel/getPriceBreakdown GoGlobal Operation: 14 — PRICE_BREAKDOWN_REQUEST Response format: XML Execution Path: B (EntityFacade, read action)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getPriceBreak  │                    │                    │                  │                  │
  │ down           │                    │                    │                  │                  │
  │ {hotelSearch   │                    │                    │                  │                  │
  │  Code}         │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.read(null,      │                    │                  │                  │
  │                │ "HotelPrice        │                    │                  │                  │
  │                │  Breakdown",       │                    │                  │                  │
  │                │  hotelSearchCode)  │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ service=getHotel   │                  │                  │
  │                │                    │ PriceBreakdown     │                  │                  │
  │                │                    │ namedParam:         │                  │                  │
  │                │                    │  hotelSearchCode   │                  │                  │
  │                │                    │ invokeMethod(       │                  │                  │
  │                │                    │  "getPrice          │                  │                  │
  │                │                    │   Breakdown")       │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(14) │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parse response  │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │  GGPriceBreakdownResponse        │
  │                │                    │                    │   ├ hotelSearchCode               │
  │                │                    │                    │   ├ hotelName                     │
  │                │                    │                    │   └ rooms[] → RoomBreakdown       │
  │                │                    │                    │      └ nights[] → NightPrice      │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │  GGPriceBreakdown  │                  │                  │
  │                │                    │  (breakdownJson =  │                  │                  │
  │                │                    │   Gson.toJson(rooms))                 │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelPriceBreakdown│                  │                  │
  │                │  CHotelPriceBreakdown                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData hotelSearchCode
Response DTO GGPriceBreakdownResponse hotelSearchCode, hotelName, rooms[] → {roomType, nights[] → {date, price, currency}}
Native Entity GGPriceBreakdown hotelSearchCode, hotelName, breakdownJson
Canonical Entity CHotelPriceBreakdown hotelSearchCode, hotelName, breakdown (JSON string)

Op 2 — Create Booking

Endpoint: POST /hotel/createBooking GoGlobal Operation: 2 — BOOKING_INSERT_REQUEST Response format: XML Execution Path: B (EntityFacade, write/create action)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ createBooking  │                    │                    │                  │                  │
  │ {hotelSearch   │                    │                    │                  │                  │
  │  Code, title,  │                    │                    │                  │                  │
  │  firstName,    │                    │                    │                  │                  │
  │  lastName,     │                    │                    │                  │                  │
  │  email, phone, │                    │                    │                  │                  │
  │  clientRef}    │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ Build CHotelBooking │                    │                  │                  │
  │                │  .hotelSearchCode   │                    │                  │                  │
  │                │  .leaderTitle/First │                    │                  │                  │
  │                │  /Last/email/phone  │                    │                  │                  │
  │                │  .clientBookingCode │                    │                  │                  │
  │                │                    │                    │                  │                  │
  │                │ ef.write(booking)   │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ Entity "HotelBooking"                 │                  │
  │                │                    │ action "create" →   │                  │                  │
  │                │                    │ service:            │                  │                  │
  │                │                    │ "createHotelBooking"│                  │                  │
  │                │                    │                    │                  │                  │
  │                │                    │ NamedParams from    │                  │                  │
  │                │                    │ CHotelBooking:      │                  │                  │
  │                │                    │  hotelSearchCode    │                  │                  │
  │                │                    │  clientRef          │                  │                  │
  │                │                    │  leaderTitle        │                  │                  │
  │                │                    │  leaderFirstName    │                  │                  │
  │                │                    │  leaderLastName     │                  │                  │
  │                │                    │  email, phone       │                  │                  │
  │                │                    │                    │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ buildBooking     │                  │
  │                │                    │                    │ Request(code,    │                  │
  │                │                    │                    │  clientRef,title,│                  │
  │                │                    │                    │  first,last,     │                  │
  │                │                    │                    │  email,phone,    │                  │
  │                │                    │                    │  arrivalTime)    │                  │
  │                │                    │                    │ sendRequest(2,.) │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │  XML response   │                  │
  │                │                    │                    │<────────────────│                  │
  │                │                    │                    │ parseBooking    │                  │
  │                │                    │                    │ Response(xml)   │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │  GGBookingResponse               │
  │                │                    │                    │  (goBookingCode, goReference,    │
  │                │                    │                    │   bookingStatus, totalPrice,     │
  │                │                    │                    │   currency, hotelName, hotelId,  │
  │                │                    │                    │   arrivalDate, nights, rooms,    │
  │                │                    │                    │   leaderTitle/First/Last,        │
  │                │                    │                    │   clientBookingCode)             │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Map → GGBooking                    │
  │                │                    │  GGBooking          │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelBooking        │                  │                  │
  │                │  CHotelBooking      │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData hotelSearchCode, title, firstName, lastName, email, phone, clientRef
Canonical Input CHotelBooking hotelSearchCode, leaderTitle, leaderFirstName, leaderLastName, email, phone, clientBookingCode
Request XML String <HotelSearchCode>, <ClientBookingCode>, <Leader> (Title, FirstName, LastName), <Email>, <Phone>
Response DTO GGBookingResponse goBookingCode, goReference, bookingStatus, totalPrice, currency, hotelName, hotelId, arrivalDate, nights, rooms, clientBookingCode, leaderTitle/First/Last
Native Entity GGBooking goBookingCode, goReference, bookingStatus, totalPrice, currency, hotelName, hotelId, arrivalDate, nights, rooms, clientBookingCode, leaderTitle/First/Last
Canonical Output CHotelBooking bookingCode, bookingReference, bookingStatus, totalPrice, currency, hotelName, hotelId, arrivalDate, nights, rooms, clientBookingCode, leaderTitle/First/Last

Op 5 — Booking Status

Endpoint: POST /hotel/getBookingStatus GoGlobal Operation: 5 — BOOKING_STATUS_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action getBookingStatus)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getBooking     │                    │                    │                  │                  │
  │ Status         │                    │                    │                  │                  │
  │ {goBookingCode}│                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ CHotelBooking input │                    │                  │                  │
  │                │  .bookingCode =     │                    │                  │                  │
  │                │   goBookingCode     │                    │                  │                  │
  │                │                    │                    │                  │                  │
  │                │ ef.callCustom       │                    │                  │                  │
  │                │ Service(input,      │                    │                  │                  │
  │                │ "getBookingStatus") │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParams:        │                  │                  │
  │                │                    │  goBookingCode      │                  │                  │
  │                │                    │   ← field:          │                  │                  │
  │                │                    │    bookingCode      │                  │                  │
  │                │                    │                    │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(5)  │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseBooking    │                  │
  │                │                    │                    │ StatusResponse  │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGBookingStatusResponse           │
  │                │                    │                    │ (goBookingCode, status,           │
  │                │                    │                    │  goReference, totalPrice,         │
  │                │                    │                    │  currency)                        │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │  GGBooking          │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform → CHotelBooking             │                  │
  │                │  CHotelBooking      │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode
Response DTO GGBookingStatusResponse goBookingCode, status, goReference, totalPrice, currency
Native Entity GGBooking goBookingCode, bookingStatus, goReference, totalPrice, currency
Canonical Entity CHotelBooking bookingCode, bookingStatus, bookingReference, totalPrice, currency

Op 4 — Booking Details

Endpoint: POST /hotel/getBookingDetails GoGlobal Operation: 4 — BOOKING_SEARCH_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action getBookingDetails)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getBooking     │                    │                    │                  │                  │
  │ Details        │                    │                    │                  │                  │
  │ {goBookingCode}│                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.callCustomService(input, "getBookingDetails")           │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParam: goBookingCode ← field:bookingCode            │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(4)  │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseBooking    │                  │
  │                │                    │                    │ DetailsResponse │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGBookingDetailsResponse          │
  │                │                    │                    │ (goBookingCode, goReference,      │
  │                │                    │                    │  clientBookingCode, status,       │
  │                │                    │                    │  hotelName, hotelId, cityName,    │
  │                │                    │                    │  arrivalDate, nights, rooms,      │
  │                │                    │                    │  roomType, boardBasis,            │
  │                │                    │                    │  totalPrice, currency,            │
  │                │                    │                    │  leader*, cancellationDeadline,   │
  │                │                    │                    │  remarks, email, phone)           │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │  GGBooking (full)   │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform → CHotelBooking (22 fields) │                  │
  │                │  CHotelBooking      │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode
Response DTO GGBookingDetailsResponse All booking fields: goBookingCode, goReference, clientBookingCode, bookingStatus, hotelName, hotelId, cityName, arrivalDate, nights, rooms, roomType, boardBasis, totalPrice, currency, leaderTitle/First/Last, cancellationDeadline, remarks, email, phone
Native Entity GGBooking All 22 fields populated
Canonical Entity CHotelBooking bookingCode, bookingReference, clientBookingCode, bookingStatus, hotelName, hotelId, cityCode, arrivalDate, nights, rooms, roomType, boardBasis, totalPrice, currency, leaderTitle/First/Last, cancellationDeadline, remarks, email, phone

Op 3 — Cancel Booking

Endpoint: POST /hotel/cancelBooking GoGlobal Operation: 3 — BOOKING_CANCEL_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action cancelBooking)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ cancelBooking  │                    │                    │                  │                  │
  │ {goBookingCode}│                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.callCustomService(input, "cancelBooking")               │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParam: goBookingCode ← field:bookingCode            │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(3)  │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseCancellation│                  │
  │                │                    │                    │ Response(xml)   │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGCancellationResponse            │
  │                │                    │                    │ (goBookingCode, bookingStatus,    │
  │                │                    │                    │  cancellationFee, currency,       │
  │                │                    │                    │  remarks)                         │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │  GGBooking          │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform → CHotelBooking             │                  │
  │                │  CHotelBooking      │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode
Response DTO GGCancellationResponse goBookingCode, bookingStatus, cancellationFee, currency, remarks
Native Entity GGBooking goBookingCode, bookingStatus, cancellationFee, currency, remarks
Canonical Entity CHotelBooking bookingCode, bookingStatus, cancellationFee, currency, remarks

Endpoint: POST /hotel/searchBookings GoGlobal Operation: 10 — ADV_BOOKING_SEARCH_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action searchBookings)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ searchBookings │                    │                    │                  │                  │
  │ {dateFrom?,    │                    │                    │                  │                  │
  │  dateTo?,      │                    │                    │                  │                  │
  │  status?,      │                    │                    │                  │                  │
  │  clientRef?}   │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ CHotelBooking input │                    │                  │                  │
  │                │  .arrivalDate =     │                    │                  │                  │
  │                │   dateFrom          │                    │                  │                  │
  │                │  .cancellationDead  │                    │                  │                  │
  │                │   line = dateTo     │                    │                  │                  │
  │                │  .bookingStatus =   │                    │                  │                  │
  │                │   status            │                    │                  │                  │
  │                │  .clientBookingCode │                    │                  │                  │
  │                │   = clientRef       │                    │                  │                  │
  │                │                    │                    │                  │                  │
  │                │ ef.callCustom       │                    │                  │                  │
  │                │ Service(input,      │                    │                  │                  │
  │                │ "searchBookings")   │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParams:        │                  │                  │
  │                │                    │  dateFrom ←         │                  │                  │
  │                │                    │   field:arrivalDate │                  │                  │
  │                │                    │  dateTo ←           │                  │                  │
  │                │                    │   field:cancellation│                  │                  │
  │                │                    │   Deadline          │                  │                  │
  │                │                    │  status ←           │                  │                  │
  │                │                    │   field:booking     │                  │                  │
  │                │                    │   Status            │                  │                  │
  │                │                    │  clientRef ←        │                  │                  │
  │                │                    │   field:client      │                  │                  │
  │                │                    │   BookingCode       │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ buildAdvanced    │                  │
  │                │                    │                    │ BookingSearch    │                  │
  │                │                    │                    │ Request(from,to, │                  │
  │                │                    │                    │  status,ref)     │                  │
  │                │                    │                    │ sendRequest(10,.)│                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseAdvBooking │                  │
  │                │                    │                    │ SearchResponse  │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGAdvBookingSearchResponse        │
  │                │                    │                    │  └ bookings[]:BookingEntry        │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Map each entry   │                  │
  │                │                    │                    │ → GGBooking      │                  │
  │                │                    │  GGBooking[]        │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform each →    │                  │                  │
  │                │                    │ CHotelBooking        │                  │                  │
  │                │  List<CHotelBooking>│                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData dateFrom, dateTo, status, clientRef (all optional)
Request XML String <DateFrom>, <DateTo>, <Status>, <ClientBookingCode>
Response DTO GGAdvBookingSearchResponse bookings[] →
Native Entity GGBooking[] Each entry mapped to GGBooking fields
Canonical Entity CHotelBooking[] Each GGBooking transformed via FieldMappingList

Op 8 — Voucher Details

Endpoint: POST /hotel/getVoucher GoGlobal Operation: 8 — VOUCHER_DETAILS_REQUEST Response format: XML Execution Path: B (EntityFacade, read action on HotelVoucher entity)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getVoucher     │                    │                    │                  │                  │
  │ {goBookingCode}│                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.read(null,      │                    │                  │                  │
  │                │ "HotelVoucher",    │                    │                  │                  │
  │                │  goBookingCode)    │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ service=            │                  │                  │
  │                │                    │ getVoucherDetails   │                  │                  │
  │                │                    │ namedParam:         │                  │                  │
  │                │                    │  goBookingCode      │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(8)  │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseVoucher    │                  │
  │                │                    │                    │ DetailsResponse │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGVoucherDetailsResponse          │
  │                │                    │                    │ (goBookingCode, hotelName,        │
  │                │                    │                    │  address, phone, fax,             │
  │                │                    │                    │  checkInDate, roomBasis,          │
  │                │                    │                    │  nights, rooms, remarks,          │
  │                │                    │                    │  voucherDownloadURL,              │
  │                │                    │                    │  bookedAndPayableBy,              │
  │                │                    │                    │  supplierRefNumber,               │
  │                │                    │                    │  emergencyPhone)                  │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Map → GGVoucherDetails             │
  │                │                    │  GGVoucherDetails   │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelVoucher        │                  │                  │
  │                │  CHotelVoucher      │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode
Response DTO GGVoucherDetailsResponse goBookingCode, hotelName, address, phone, fax, checkInDate, roomBasis, nights, rooms, remarks, voucherDownloadURL, bookedAndPayableBy, supplierReferenceNumber, emergencyPhone
Native Entity GGVoucherDetails goBookingCode, hotelName, address, phone, fax, checkInDate, roomBasis, nights, rooms, remarks, voucherDownloadURL, supplierName, supplierReference, emergencyPhone
Canonical Entity CHotelVoucher bookingCode, hotelName, address, phone, fax, checkInDate, roomBasis, nights, rooms, remarks, voucherDownloadURL, supplierName, supplierReference, emergencyPhone

Op 15 — Amendment Options

Endpoint: POST /hotel/getAmendmentOptions GoGlobal Operation: 15 — BOOKING_INFO_FOR_AMENDMENT_REQUEST Response format: XML (nested rooms/pax structure) Execution Path: B (EntityFacade, read action on HotelAmendmentInfo entity)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ getAmendment   │                    │                    │                  │                  │
  │ Options        │                    │                    │                  │                  │
  │ {goBookingCode}│                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ ef.read(null,      │                    │                  │                  │
  │                │ "HotelAmendment    │                    │                  │                  │
  │                │  Info",            │                    │                  │                  │
  │                │  goBookingCode)    │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ service=            │                  │                  │
  │                │                    │ getAmendmentOptions │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │ build + send(15) │                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseAmendment  │                  │
  │                │                    │                    │ OptionsResponse │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGAmendmentOptionsResponse        │
  │                │                    │                    │  ├ arrivalDate, nights            │
  │                │                    │                    │  ├ roomTypes[]:RoomTypeEntry      │
  │                │                    │                    │  │  ├ type, adults                │
  │                │                    │                    │  │  └ rooms[]:RoomEntry           │
  │                │                    │                    │  │     ├ roomId, category,        │
  │                │                    │                    │  │     │ roomBasis, cots          │
  │                │                    │                    │  │     └ persons[]:PersonEntry    │
  │                │                    │                    │  │        ├ personId, lastName    │
  │                │                    │                    │  │        ├ firstName, title, age │
  │                │                    │                    │  └ remarks[]:RemarkEntry          │
  │                │                    │                    │     ├ id, text                    │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Serialize nested  │                  │
  │                │                    │                    │ structure to JSON: │                  │
  │                │                    │                    │  roomsJson =      │                  │
  │                │                    │                    │   Gson.toJson(    │                  │
  │                │                    │                    │    roomTypes)     │                  │
  │                │                    │                    │  remarksJson =    │                  │
  │                │                    │                    │   Gson.toJson(    │                  │
  │                │                    │                    │    remarks)       │                  │
  │                │                    │                    │                  │                  │
  │                │                    │  GGAmendmentInfo    │                  │                  │
  │                │                    │  (goBookingCode,    │                  │                  │
  │                │                    │   arrivalDate,      │                  │                  │
  │                │                    │   nights,           │                  │                  │
  │                │                    │   roomsJson,        │                  │                  │
  │                │                    │   remarksJson)      │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelAmendmentInfo  │                  │                  │
  │                │  CHotelAmendmentInfo│                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode
Response DTO GGAmendmentOptionsResponse arrivalDate, nights, roomTypes[] (nested: type, adults, rooms[] → {roomId, category, roomBasis, cots, persons[]}), remarks[]
Native Entity GGAmendmentInfo goBookingCode, arrivalDate, nights, roomsJson (serialized rooms/pax tree), remarksJson (serialized remarks)
Canonical Entity CHotelAmendmentInfo bookingCode, arrivalDate, nights, roomsJson, remarksJson

Op 16 — Booking Amendment

Endpoint: POST /hotel/amendBooking GoGlobal Operation: 16 — BOOKING_AMENDMENT_REQUEST Response format: XML Execution Path: B (EntityFacade, custom service action amendBooking)

Sequence Diagram

Client          HotelApi           EntityFacade      GoGlobalHotelService   SoapClient       ResponseParser
  │                │                    │                    │                  │                  │
  │ POST /hotel/   │                    │                    │                  │                  │
  │ amendBooking   │                    │                    │                  │                  │
  │ {goBookingCode,│                    │                    │                  │                  │
  │  arrivalDate,  │                    │                    │                  │                  │
  │  nights,       │                    │                    │                  │                  │
  │  roomsJson,    │                    │                    │                  │                  │
  │  remarksJson?} │                    │                    │                  │                  │
  │───────────────>│                    │                    │                  │                  │
  │                │ CHotelAmendmentInfo │                    │                  │                  │
  │                │  .bookingCode       │                    │                  │                  │
  │                │  .arrivalDate       │                    │                  │                  │
  │                │  .nights            │                    │                  │                  │
  │                │  .roomsJson         │                    │                  │                  │
  │                │  .remarksJson       │                    │                  │                  │
  │                │                    │                    │                  │                  │
  │                │ ef.callCustom       │                    │                  │                  │
  │                │ Service(input,      │                    │                  │                  │
  │                │ "amendBooking")     │                    │                  │                  │
  │                │───────────────────>│                    │                  │                  │
  │                │                    │ NamedParams:        │                  │                  │
  │                │                    │  goBookingCode ←    │                  │                  │
  │                │                    │   field:bookingCode │                  │                  │
  │                │                    │  arrivalDate ←      │                  │                  │
  │                │                    │   field:arrivalDate │                  │                  │
  │                │                    │  nights ←           │                  │                  │
  │                │                    │   field:nights      │                  │                  │
  │                │                    │  roomsJson ←        │                  │                  │
  │                │                    │   field:roomsJson   │                  │                  │
  │                │                    │  remarksJson ←      │                  │                  │
  │                │                    │   field:remarksJson │                  │                  │
  │                │                    │───────────────────>│                  │                  │
  │                │                    │                    │                  │                  │
  │                │                    │                    │ Parse roomsJson  │                  │
  │                │                    │                    │ → buildRoomsXml()│                  │
  │                │                    │                    │ Parse remarksJson│                  │
  │                │                    │                    │ → buildRemarks   │                  │
  │                │                    │                    │   Xml()          │                  │
  │                │                    │                    │                  │                  │
  │                │                    │                    │ buildAmendment   │                  │
  │                │                    │                    │ Request(code,    │                  │
  │                │                    │                    │  arrDate, nights,│                  │
  │                │                    │                    │  roomsXml,       │                  │
  │                │                    │                    │  remarksXml)     │                  │
  │                │                    │                    │ sendRequest(16,.)│                  │
  │                │                    │                    │────────────────>│                  │
  │                │                    │                    │ parseAmendment  │                  │
  │                │                    │                    │ Response(xml)   │                  │
  │                │                    │                    │─────────────────────────────────>│
  │                │                    │                    │ GGAmendmentResponse               │
  │                │                    │                    │ (success, errorMessage)           │
  │                │                    │                    │<─────────────────────────────────│
  │                │                    │                    │                  │                  │
  │                │                    │  GGAmendmentInfo    │                  │                  │
  │                │                    │  (goBookingCode,    │                  │                  │
  │                │                    │   success,          │                  │                  │
  │                │                    │   errorMessage)     │                  │                  │
  │                │                    │<───────────────────│                  │                  │
  │                │                    │ Transform →         │                  │                  │
  │                │                    │ CHotelAmendmentInfo  │                  │                  │
  │                │  CHotelAmendmentInfo│                    │                  │                  │
  │                │  {bookingCode,      │                    │                  │                  │
  │                │   success: true/    │                    │                  │                  │
  │                │   false,            │                    │                  │                  │
  │                │   errorMessage}     │                    │                  │                  │
  │                │<───────────────────│                    │                  │                  │
  │  TlinqApiResponse                   │                    │                  │                  │
  │<───────────────│                    │                    │                  │                  │

Data Objects

Step Object Key Fields
API Input reqData goBookingCode, arrivalDate, nights, roomsJson, remarksJson
Canonical Input CHotelAmendmentInfo bookingCode, arrivalDate, nights, roomsJson, remarksJson
Intermediate roomsXml, remarksXml JSON → XML conversion in GoGlobalHotelService.buildRoomsXml() / buildRemarksXml()
Request XML String <GoBookingCode>, <ArrivalDate>, <Nights>, <Rooms><RoomType><Room><Person>..., <Remarks><Remark>...
Response DTO GGAmendmentResponse success (boolean), errorMessage (String)
Native Entity GGAmendmentInfo goBookingCode, success, errorMessage
Canonical Output CHotelAmendmentInfo bookingCode, success, errorMessage

Entity Configuration Reference

goglobal-client.xml — Service Definitions

Maps service names to Java classes, methods, native entities, and ID fields.

Service Name Method Native Entity Op
searchHotelOffers searchAvailability GGHotelOffer 11
valuateHotelOffer valuateBooking GGHotelOffer 9
createHotelBooking createBooking GGBooking 2
getHotelBookingStatus getBookingStatus GGBooking 5
getHotelBookingDetails getBookingDetails GGBooking 4
cancelHotelBooking cancelBooking GGBooking 3
searchHotelsByName searchHotelsByName GGHotelInfo
getHotelsByCity getHotelsByCity GGHotelInfo
getHotelInfo getHotelInfo GGHotelInfo 61
getHotelPriceBreakdown getPriceBreakdown GGPriceBreakdown 14
advancedBookingSearch advancedBookingSearch GGBooking 10
getVoucherDetails getVoucherDetails GGVoucherDetails 8
getAmendmentOptions getAmendmentOptions GGAmendmentInfo 15
amendHotelBooking amendBooking GGAmendmentInfo 16

hotel-entities.xml — Entity Definitions

Maps canonical entities to their factories, services, and field transformations.

Entity Name Canonical Class Action Service Name NamedParams
HotelOffer CHotelOffer search searchHotelOffers (from SCL criteria)
HotelOffer CHotelOffer valuateOffer valuateHotelOffer hotelSearchCode←offerId, arrivalDate←checkInDate
HotelInfo CHotelInfo read getHotelInfo hotelId (from read ID)
HotelPriceBreakdown CHotelPriceBreakdown read getHotelPriceBreakdown hotelSearchCode (from read ID)
HotelBooking CHotelBooking create createHotelBooking hotelSearchCode, clientRef, leaderTitle/First/Last, email, phone
HotelBooking CHotelBooking getBookingStatus getHotelBookingStatus goBookingCode←bookingCode
HotelBooking CHotelBooking getBookingDetails getHotelBookingDetails goBookingCode←bookingCode
HotelBooking CHotelBooking cancelBooking cancelHotelBooking goBookingCode←bookingCode
HotelBooking CHotelBooking searchBookings advancedBookingSearch dateFrom←arrivalDate, dateTo←cancellationDeadline, status←bookingStatus, clientRef←clientBookingCode
HotelVoucher CHotelVoucher read getVoucherDetails goBookingCode (from read ID)
HotelAmendmentInfo CHotelAmendmentInfo read getAmendmentOptions goBookingCode (from read ID)
HotelAmendmentInfo CHotelAmendmentInfo amendBooking amendHotelBooking goBookingCode←bookingCode, arrivalDate, nights, roomsJson, remarksJson

Field Mapping Tables

HotelOffer: GGHotelOffer → CHotelOffer

CHotelOffer (target) GGHotelOffer (source)
offerId hotelSearchCode
type roomType
hotelId hotelCode
hotelName hotelName
cityCode cityId
available available
checkInDate checkInDate
checkOutDate checkOutDate
roomType roomBasis
roomCategory category
currencyCode currency
totalAmount totalPrice
baseAmount baseAmount
cancellationType cancellationType
cancellationDeadline cxlDeadline
boardType boardBasis
hotelLatitude latitude
hotelLongitude longitude

HotelInfo: GGHotelInfo → CHotelInfo

CHotelInfo (target) GGHotelInfo (source)
hotelId hotelId
hotelName hotelName
address address
category category
description description
cityCode cityCode
cityName cityName
countryCode countryCode
facilities facilitiesJson
pictures picturesJson
latitude latitude
longitude longitude

HotelBooking: GGBooking → CHotelBooking

CHotelBooking (target) GGBooking (source)
bookingCode goBookingCode
bookingReference goReference
clientBookingCode clientBookingCode
bookingStatus bookingStatus
hotelName hotelName
hotelSearchCode hotelSearchCode
arrivalDate arrivalDate
nights nights
rooms rooms
roomType roomType
boardBasis boardBasis
totalPrice totalPrice
currency currency
leaderTitle leaderTitle
leaderFirstName leaderFirstName
leaderLastName leaderLastName
hotelId hotelId
cityCode cityCode
createdDate createdDate
cancellationDeadline cancellationDeadline
remarks remarks
cancellationFee cancellationFee
email email
phone phone

HotelPriceBreakdown: GGPriceBreakdown → CHotelPriceBreakdown

CHotelPriceBreakdown (target) GGPriceBreakdown (source)
hotelSearchCode hotelSearchCode
hotelName hotelName
breakdown breakdownJson

HotelVoucher: GGVoucherDetails → CHotelVoucher

CHotelVoucher (target) GGVoucherDetails (source)
bookingCode goBookingCode
hotelName hotelName
address address
phone phone
fax fax
checkInDate checkInDate
roomBasis roomBasis
nights nights
rooms rooms
remarks remarks
voucherDownloadURL voucherDownloadURL
supplierName supplierName
supplierReference supplierReference
emergencyPhone emergencyPhone

HotelAmendmentInfo: GGAmendmentInfo → CHotelAmendmentInfo

CHotelAmendmentInfo (target) GGAmendmentInfo (source)
bookingCode goBookingCode
arrivalDate arrivalDate
nights nights
roomsJson roomsJson
remarksJson remarksJson
success success
errorMessage errorMessage