Exchanging Data

protel uses protel I/O to route incoming and outbound data messages. Messages can be delivered to protel I/O from an HTTPS endpoint. protel I/O provides different endpoints for synchronous and asynchronous SOAP 1.2 messages to accommodate WSDL requirements. protel I/O is using the Version 'OTA 2011A' for the OTA messages.




Security, Access, and Authentication

Security is important to you and protel. All messages must be authenticated using protel IO’s secure authentication processes. To ensure the source of messages are valid, all messages flowing to and from protel are checked. Messages are verified by protel I/O. Access to the API is only permitted through SSL (secure sockets layer). For HTNG messaging, all messages will utilize the HTNG 1.2 SOAP header.



Authentication of Inbound messages

Direction Vendor to protel. All messages require a protel provided Bearer Token (whether RQ or RS!).

The Authentication token must be submitted in HTTP headers.

Protel will provide you with your bearer token at the time we commence testing. When requesting a test environment protel will provide you with a token at that time.


Format of HTTP Headers

In order to process your incoming requests, all of your messages must contain headers inside the HTTP headers

HTTP HeaderDescriptionOccurrence
Content-TypeFixed to "application/soap+xml"Mandatory
SOAPActionPlease check the table below for the correct valueMandatory
AuthorizationThe access token e.g. "Bearer C6MmpEFjRRSy288V1-DEMO-hGETMBImNJhFzv5"Mandatory
CorrelationIDThe CorrelationID of the message you are sending to identify the transactionOptional
Header Format
Content-Type: application/soap+xml
SOAPAction: OTA_HotelResNotifRQ
Authorization: Bearer C6MmpEFjRRSy288V1-DEMO-hGETMBImNJhFzv5
CorrelationID: RES#047616#UPDATE#000025#1594029290242#546D

SOAPAction

Messages sent to Protel IO (ESB)


OTAHTNGIO
RequestSOAPAction "http://htng.org/PWSWG/2010/12/OTA_HotelResNotifRQ_SubmitRequest"SOAPAction : "http://htng.org/PWSWG/2010/12/HTNG_HotelCheckInNotifRQ_SubmitRequest"SOAPAction : "IO_StatsNotifRQ
ResponseSOAPAction : "OTA_HotelResNotifRS"SOAPAction : "HTNG_HotelCheckInNotifRS"SOAPAction : "IO_StatsNotifRS"

Format of SOAP Environment

In order to process your incoming requests, all of your messages must contain headers inside the SOAP environment

ElementNamespaceDescriptionOccurrence
Envelopehttp://www.w3.org/2003/05/soap-envelope-Mandatory
Envelope / Headerhttp://www.w3.org/2003/05/soap-envelopeContains the SOAP headers of the messageMandatory
Envelope / Header / Actionhttp://protel.io/soapThe required action (Message name) e.g. "OTA_HotelResNotifRQ"Optional
Envelope / Header / CorrelationIDhttp://protel.io/soapThe CorrelationID of the message you are sending to identify the transaction (protel namespace)Mandatory
Envelope / Header / Sourcehttp://protel.io/soapThe Source of the message (Only outbound from protel to vendor)Optional
Envelope / Header / CorrelationIDhttp://htng.org/PWSWG/2007/02/AsyncHeadersThe CorrelationID of the message you are sending to identify the transaction (HTNG namespace)Mandatory
Envelope / Header / Targethttp://protel.io/soap

The desired target service name of the message

For message/s to protel PMS the correct values are:

  • io.protel.air - for protel Cloud PMS
  • io.protel.onpremise - for protel onPremise PMS
  • io.protel.pms - for either of the two above. The value is an alias that is valid for either of the PMSes
Mandatory
Envelope / Bodyhttp://www.w3.org/2003/05/soap-envelopeThe HTNG/OTA/IO messageMandatory
SOAP Env
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Header>
		<p:Action xmlns:p="http://protel.io/soap">OTA_HotelResNotifRQ</p:Action>
		<p:CorrelationID xmlns:p="http://protel.io/soap">RES#047616#UPDATE#000025#1594029290242#546D</p:CorrelationID>
		<p:Source xmlns:p="http://protel.io/soap" Module="backline" ModuleVersion="2020-07-02T10:28:55 (PROD)" Product="protelAir" ProductVersion="2027.1.56845-RELEASE" Service="io.protel.air"/>
		<htnga:CorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">RES#047616#UPDATE#000025#1594029290242#546D</htnga:CorrelationID>
		<p:Target xmlns:p="http://protel.io/soap">io.protel.air</p:Target>
	</env:Header>
	<env:Body>
		--OTA/IO/HTNG Message--
	</env:Body>
</env:Envelope>

Format of the Acknowledgment (ASYNC communication)

To communicate with an ASYNC pattern, the receiver of the message needs to send an ACK with the HTTP status code 200 and the following payload back to the sender before the receiver starts the processing of the message. 

The Content-Type needs to be added in the HTTP Header with the value "application/soap+xml". 

Please note that depending on the message group used, the ACK has some differences between the standard OTA/HTNG and the protel extension IO message types:

Example ACK for HTNG/OTA message type
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Header>
		<htnga:CorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">%1$s</htnga:CorrelationID>
		<htnga:RelatesToCorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">%1$s</htnga:RelatesToCorrelationID>
	</env:Header>
	<env:Body>
		<ns:HTNG_AcknowledgeReceipt xmlns:ns="http://htng.org/2014B"/>
	</env:Body>
</env:Envelope>
Example ACK for IO message type
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Header>
		<htnga:CorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">%1$s</htnga:CorrelationID>
		<htnga:RelatesToCorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">%1$s</htnga:RelatesToCorrelationID>
	</env:Header>
	<env:Body>
		<io:IOAcknowledgeRS CorrelationID="%1$s" xmlns:io="http://protel.io/soap">
        	<io:Success>true</io:Success>
        </io:IOAcknowledgeRS>
	</env:Body>
</env:Envelope>

protel I/O Connection Endpoints

Connecting to TEST


Connecting to PROD

SystemEndpointVariantURLComments
ESBAsynchronous APISOAP 1.2

https://service.protel.io/services/ProtelApiService.ProtelApiServiceHttpsSoap12Endpoint

Default Endpoint

Synchronous APISOAP 1.2

https://service.protel.io/services/ProtelApiSyncService.ProtelApiSyncServiceHttpsSoap12Endpoint


Asynchronous API (CD-Proxy-Ireland)SOAP 1.2https://pci.protel.net/cd-proxy-io/pci/1/io/reservationsEndpoint for all inbound OTA_HotelResNotifRQ messages
Asynchronous API (CD-Proxy-Sydney)SOAP 1.2https://pci-sydney.protel.net/cd-proxy-io/pci/1/io/reservationsEndpoint for all inbound OTA_HotelResNotifRQ messages for protel Customers located in Sydney
WSDLSOAP 1.2https://wsdl.protel.io/services/ProtelApiService?wsdl

NAT Gateway IP Addresses

EnvironmentNAT Gateway - Out
ESB TEST34.249.236.99
ESB PROD34.248.234.12

Circular Message Flow


The circular message flow prevents a message loop between Integration Partner and Protel.

It is applicable for message types which the PMS accepts in both directions In/Out (e.g. OTA_ProfileModifyRQ, OTA_HotelResNotifRQ, etc.)

Sample:

The Integration Partner sends an OTA_ProfileModifyRQ message to Protel. This profile is modified in the PMS and then sent again as OTA_ProfileModifyRQ by the PMS. The Integration Partner will also modify the profile again and send it back to Protel, thus creating an endless loop. 





To stop this endless loop, we have implemented the "Caused-By CorrelationID". The "Caused-By CorrelationID" is automatically added to the outbound messages by the PMS if a modification has been made due to an inbound message. Based on the "Caused-By CorrelationID", our ESB knows to which Ontegration Partner the message does not have to be sent. 



  • Keine Stichwörter