Once your account has been setup and configured, data events and bundles that you have subscribed to will be delivered to your system(s). The mechanism by which the events and bundles will be delivered, will vary according to your receiving system and its capabilities.

Message Delivery

Message delivery can take various forms, although there are fundamentally only two major format

Direct Messaging

Direct messaging entails delivery of messages directly to an endpoint of your choosing. This endpoint will receive messages in near real-time from the our system, as they become available, and be delivered as rapidly as you can receive them. The pending messages will reside in a queue prior to delivery, so minor slow-downs and connectivity failures will not impair delivery.

Direct Messaging Protocols
We support the following delivery mechanisms
REST Endpoint
An HTTPS endpoint. Will receive a POST request of the JSON Subscription Event (we expect a 200 status code returned within 30 seconds).
AWS SQS
An AWS Simple Queue Service endpoint. Hosted either by you, or by us, that will receive a Base64 Encoded JSON Subscription Event.
REST Endpoint Authorization
We support the following auth mechanisms
HMAC
The same HMAC validation protocol used by our Publish api
Basic
A basic access authentication

Batch Messaging

Batch messaging entails accumulating subscribe events in a file, then delivering those files on a configured interval. These files will be comprised of un-indented JSON data, one message per line.

Message Content

The message payload will comprise of wrapper envelope that contains one of several message types.

Subscribe Envelope

The SubscribeEnvelope is the top level object sent for all outbound requests. It encapsulates the various messages that can be delivered to the subscriber endpoint. The `Action` field will dictate which of the subsequent object types will be send along with the message. It also provides the basis for future enhancement of the API without complex versioning constructs. Future additions can be added to the envelope without effecting current messaging.

Field Description
Action The action type of the message. Defines which of the following events will be present. See actions below.
QueuedTimestamp The date and time that this message was placed in queue for delivery.
PublisherCode The unique code that identifies the publisher that the source data was generated from
PublisherName The friendly name of the publisher that the source data was generated from
CustomerId The Id of the customer as the subscribing entity identifies them.
CustomerUuid The unique Id of the Dihedral customer containing matching customers across providers.
CustomerScore The match score that identifies the confidence in match for the customer information.
ReservationId The ID of the reservation as the subscribing entity identifies it.
ReservationUuid The unique Id of the GXR that this reservation belongs to. This can be used in later requests for direct GXR referencing.
ReservationScore The Match score that identifies the confidence in match for the customer's reservation.
SubscribeBundle The subscription bundle that contains the event details.
ScoreChange A container providing details about the change in confidence score match changes.
Actions
The Subscribe Envelope will contain one of the following actions
Match
Envelope only data identifying a match has occurred
Unmatch
Envelope only data identifying a previous match is no longer a match
ScoreChange
The confidence score of an existing match has changed, with ScoreChange providing the details
Subscription
A subscription update containing a SubscribeBundle with details about the data bundle and events

SubscribeBundle

Events published into our system are processed on an individual basis. However, when they are delivered to a subscriber, they are collected into Data Bundles prior to delivery. The bundles will not be delivered until all events defined in that bundle have arrived. Although many Data Bundles are comprised of just a single data event.

Field Description
DataBundleName The name of the data bundle that this request is comprised of, as configured through the Dihedral Portal.
Events The data events that are contained within this data bundle. The fields may be filtered out according to the bundle definition.
Attributes Attributes is a map containing optional information about the bundle. It may contain the fields ArrivalEventIndex and DepartureEventIndex which indicate the travel events that bring a customer to and from their destination, respectively. They are indexed starting at 0 and encoded as strings. Attributes will not be present in the Bundle when there are no attributes.

ScoreChange

The match confidence level of a customer or a reservation may change as new data arrives, existing data is removed. or changes to our algorithms are updated. This event will identify the change and the reason for the change.

Field Description
Reason The reason descriptor.
PreviousCustomerScore What was the customer score prior to this change.
PreviousReservationScore What was the reservation score prior to this change.

Example Request

Here is an example of a simple, four event Air Booking data bundle. More can be found in the Examples section.