Skip to content

Commit 1ec7564

Browse files
author
Leonardo Pedroso
committed
feat: add travel book event docs
1 parent 447596e commit 1ec7564

File tree

1 file changed

+302
-0
lines changed

1 file changed

+302
-0
lines changed
Lines changed: 302 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,302 @@
1+
---
2+
title: Concur Travel Booking Events
3+
layout: reference
4+
---
5+
6+
## <a name="overview"></a>Overview
7+
8+
9+
This page will host the documentation for the travel booking information related events that are publicly available on the `public.concur.travel.book` topic in the Event Subscription Service (ESS).
10+
Subscribers to this topic will receive events when travel bookings are performed within SAP Concur.
11+
12+
To subscribe to these events follow the steps described on the [Event Subscription Service v4](/api-reference/ess/v4.event-subscription.html) page.
13+
14+
## <a name="limitations"></a>Limitations
15+
Access to this documentation does not provide access to the subscription.
16+
17+
## <a name="scope-usage"></a>Scope Usage
18+
19+
Scopes required to interact with this topic:
20+
21+
Name | Description
22+
----------------------------|------------
23+
`events.topic.read` | Read events.
24+
`travel.trips.booking.read` | Read booking data.
25+
26+
## <a name="events"></a>Events
27+
28+
The topic `public.concur.travel.book` contains events for air and hotel bookings at the moment they are completed.
29+
30+
## <a name="schema"></a>Schema
31+
32+
### <a name="schema-booking-event"></a>Schema for Booking Event
33+
34+
Name |Type |Format |Description
35+
---------------|--------|----------------------------------------------|-----------
36+
`id` |`string`|`GUID` |Uniquely identifies the published event.
37+
`correlationId`|`string`|`GUID` |Uniquely identifies the booking request to aid in workflow tracing and troubleshooting.
38+
`eventType` |`string`|- |Identifies the booking event type. Supported values: `travelBookingCompleted`.
39+
`topic` |`string`|- |Topic for subscription. Supported values: `public.concur.travel.book`.
40+
`timeStamp` |`string`|`YYYY-MM-DDTHH:MM:SS.fZ` |Booking event time in UTC.
41+
`facts` |`object`|[Booking Facts](#schema-booking-facts) |Facts for the booking event.
42+
`route` |`string`|- |Routes traffic through the service call tree. Supported values: `stable`.
43+
44+
### <a name="schema-booking-facts"></a>Schema for Booking Facts
45+
46+
Name |Type |Format |Description
47+
-------------------|---------|------------------------------------------------|-----------
48+
`companyId` |`string` |`GUID` |Uniquely identifies the company of the traveler.
49+
`userId` |`string` |`GUID` |Uniquely identifies the user performing the booking. Note: If the travel is booked by a delegate, this will be the traveler's ID. In cases where a profiled user is booking on behalf of a nonprofiled guest, this will be the user performing the booking.
50+
`delegateUserId` |`string` |`GUID` |Uniquely identifies the delegate user performing this action, if applicable.
51+
`type` |`string` |- |Type of the event. Supported values: `concur.travel.trip.Booking.Completed.v1`.
52+
`version` |`string` |- |Semantic version of the event schema. Example: `1.2.0`.
53+
`trip` |`object` |[TripDetails](#schema-trip-details) |Details about the trip the booking belongs to.
54+
`bookings` |`array` |[BookingDetails](#schema-booking-details) |List of bookings added to the trip.
55+
56+
### <a name="schema-booking-details"></a>Schema for Booking Details
57+
58+
Name | Type | Format | Description
59+
----------|----------|--------------------------------------------------------------------------------------------------------|------------
60+
`id` | `string` | `GUID` | Uniquely identifies the air booking.
61+
`type` | `string` | - | Type of the booking. Supported values: `Air`, `Hotel`.
62+
`details` | `object` | [AirBookingDetails](#schema-air-booking-details), [HotelBookingDetails](#schema-hotel-booking-details) | Details about the booking. The object's type depends on the value of the `type` field. For example, if `type` is `Air`, then `details` will be of type `AirBookingDetails`.
63+
64+
### <a name="schema-air-booking-details"></a>Schema for Air Booking Details
65+
66+
Name |Type |Format |Description
67+
--------------|-------|------------------------------------------------|-----------
68+
`journeys` |`array`|[AirJourneyDetails](#schema-air-journey-details)|List of air journey details. A journey is a portion of a passenger's itinerary between origin and destination. There would be one journey for one-way, two journeys for round trip, and (n+1) journeys for a multi-city trip, where n stands for the number of stopovers. Each journey contains one or more segments.
69+
70+
### <a name="schema-air-journey-details"></a>Schema for Air Journey Details
71+
72+
Name |Type |Format | Description
73+
|----------------------|---------|------------------------------------------------|------------
74+
|`origin` |`string` |- |IATA airport code of the airport of initial departure.
75+
|`destination` |`string` |- |IATA airport code of the last airport in the journey.
76+
|`departureDateTime` |`string` |`YYYY-MM-DDTHH:MM:SS.f` |Date and time traveler will depart from the point of departure, local time (without offset).
77+
|`departureDateTimeUtc`|`string` |`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time traveler will depart from the point of departure, UTC time.
78+
|`arrivalDateTime` |`string` |`YYYY-MM-DDTHH:MM:SS.f` |Date and time traveler will arrive at the point of arrival, local time (without offset).
79+
|`arrivalDateTimeUtc` |`string` |`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time traveler will arrive at the point of arrival, UTC time.
80+
|`international` |`boolean`|- |Whether the journey is international or not. True for international (crosses a country), False for domestic (within the country).
81+
|`index` |`integer`|- |Zero-based index, representing the order of the journey withing the booking, that the passenger will take to get from booking origin to booking destination(s).
82+
|`segments` |`array` |[AirSegmentDetails](#schema-air-segment-details)|List of air segment details. Segment refers to the portion of a passenger's itinerary that represents a single flight. Technical stops are ignored.
83+
84+
### <a name="schema-air-segment-details"></a>Schema for Air Segment Details
85+
86+
Name |Type |Format |Description
87+
|-----------------------|---------|---------------------------------|------------
88+
|`origin` |`string` |- |IATA airport code of the point of departure.
89+
|`destination` |`string` |- |IATA airport code of the point of arrival.
90+
|`departureDateTime` |`string` |`YYYY-MM-DDTHH:MM:SS.f` |Date traveler will depart from the point of departure, local time (without offset).
91+
|`departureDateTimeUtc` |`string` |`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time traveler will depart from the point of departure, UTC time.
92+
|`arrivalDateTime` |`string` |`YYYY-MM-DDTHH:MM:SS.f` |Date and time traveler will arrive at the point of arrival, local time (without offset).
93+
|`arrivalDateTimeUtc` |`string` |`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time traveler will arrive at the point of arrival, UTC time.
94+
|`marketingFlightNumber`|`string` |- |The flight number assigned by the airline that sells the ticket.
95+
|`marketingCarrier` |`object` |[AirCarrier](#schema-air-carrier)|Air carrier of the flight segment.
96+
|`international` |`boolean`|- |Whether the segment is international or not. True for international (crosses a country), False for domestic (within the country).
97+
|`index` |`integer`|- |Zero-based index, representing the order of the segment withing the journey.
98+
99+
### <a name="schema-air-carrier"></a>Schema for Air Carrier
100+
101+
Name |Type |Format| Description
102+
|----------|--------|------|------------
103+
|`iataCode`|`string`| - |IATA airline carrier code. Example: AA, VA, LH
104+
|`name` |`string`| - |Name of the air carrier.
105+
106+
### <a name="schema-hotel-booking-details"></a>Schema for Hotel Booking Details
107+
108+
Name |Type |Format |Description
109+
---------------------|--------|-------------------------------------|-----------
110+
`hotel` |`object`|[HotelDetails](#schema-hotel-details)|Details about the hotel.
111+
`checkInDateTime` |`string`|`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time representing the time of check-in in local time (without offset).
112+
`checkOutDateTime` |`string`|`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time representing the time of check-out in local time (without offset).
113+
`checkInDateTimeUtc` |`string`|`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time representing the time of check-in in UTC time.
114+
`checkOutDateTimeUtc`|`string`|`YYYY-MM-DDTHH:MM:SS.fZ` |Date and time representing the time of check-out in UTC time.
115+
116+
### <a name="schema-hotel-details"></a>Schema for Hotel Details
117+
118+
Name |Type |Format |Description
119+
----------|--------|-----------------------------------------|-----------
120+
`name` |`string`|- |Name of the hotel.
121+
`address` |`object`|[AddressDetails](#schema-address-details)|Details about the hotel address.
122+
123+
### <a name="schema-address-details"></a>Schema for Hotel Address Details
124+
125+
Name | Type | Format | Description
126+
-------------------------|----------|------------------------------------------|------------
127+
`address1` | `string` | - | Address line 1.
128+
`address2` | `string` | - | Address line 2.
129+
`administrativeAreaName` | `string` | - | Represents the state or federal land or province the hotel is located in.
130+
`postalCode` | `string` | - | Postal code of the hotel. Between 3 and 10 alphanumeric characters, spaces, and hyphens, which covers most international postal code formats.
131+
`localityName` | `string` | - | Name of the city, town, village, or other locality the address is located in.
132+
`countryCode` | `string` | ISO 3166-1 alpha-2 | Two letter code representing the country the hotel is located in. Uses ISO 3166-1 alpha-2 standard. Example: BR.
133+
`geoCoords` | `object` | [GeoLocation](#schema-hotel-geolocation) | Geographic coordinates of the hotel
134+
135+
### <a name="schema-hotel-geolocation"></a>Schema for Hotel Address GeoLocation
136+
137+
Name | Type | Format | Description
138+
-------|----------|---------|------------
139+
`lat` | `number` | `float` | Latitude of the location.
140+
`long` | `number` | `float` | Longitude of the location.
141+
142+
### <a name="schema-trip-details"></a>Schema for Trip Details
143+
144+
Name|Type |Format|Description
145+
----|--------|------|-----------
146+
`id`|`string`|`GUID`|Uniquely identifies the trip.
147+
148+
## <a name="sample-events"></a>Sample Events
149+
150+
### <a name="sample-air-event"></a>Sample Air Booking Event
151+
152+
Sample roundtrip air booking
153+
154+
```json
155+
{
156+
"id": "51519e89-2c1d-47ec-bd93-7c4ace9c57e6",
157+
"correlationId": "b2fd900a-5935-46fc-8d29-599de9864e21",
158+
"topic": "concur.travel.book",
159+
"eventType": "travelBookingCompleted",
160+
"timeStamp": "2025-04-01T11:01:01.000Z",
161+
"route": "stable",
162+
"facts": {
163+
"userId": "b7d12989-0489-471a-81cd-175f8b78afa5",
164+
"companyId": "ab83bc5f-f66e-4ce0-9dcc-7dbf0195e061",
165+
"delegateUserId": "e5315ec2-5033-4197-b15b-4cec00b838f6",
166+
"type": "concur.travel.trip.Booking.Completed.v1",
167+
"version": "1.0.0",
168+
"trip": {
169+
"id": "8585c3ca-62bd-4585-8f18-f85e331fa7fa"
170+
},
171+
"bookings": [
172+
{
173+
"id": "5040b878-da00-47c7-8676-e0f6c67885b5",
174+
"type": "Air",
175+
"details": {
176+
"journeys": [
177+
{
178+
"origin": "EWR",
179+
"destination": "LAX",
180+
"departureDateTime": "2025-07-01T00:00:00-03:00",
181+
"departureDateTimeUtc": "2025-07-01T05:00:00Z",
182+
"arrivalDateTime": "2025-07-01T16:00:00-03:00",
183+
"arrivalDateTimeUtc": "2025-07-01T21:00:00Z",
184+
"international": false,
185+
"index": 0,
186+
"segments": [
187+
{
188+
"origin": "EWR",
189+
"destination": "DEN",
190+
"departureDateTime": "2025-07-01T00:00:00-03:00",
191+
"departureDateTimeUtc": "2025-07-01T05:00:00Z",
192+
"arrivalDateTime": "2025-07-01T03:00:00-03:00",
193+
"arrivalDateTimeUtc": "2025-07-01T08:00:00Z",
194+
"marketingFlightNumber": "1111",
195+
"marketingCarrier": {
196+
"iataCode": "AA",
197+
"name": "American Airlines"
198+
},
199+
"international": false,
200+
"index": 0
201+
},
202+
{
203+
"origin": "DEN",
204+
"destination": "LAX",
205+
"departureDateTime": "2025-07-01T05:00:00-03:00",
206+
"departureDateTimeUtc": "2025-07-01T10:00:00Z",
207+
"arrivalDateTime": "2025-07-01T16:00:00-03:00",
208+
"arrivalDateTimeUtc": "2025-07-01T21:00:00Z",
209+
"marketingFlightNumber": "2222",
210+
"marketingCarrier": {
211+
"iataCode": "SW",
212+
"name": "SouthWest Airlines"
213+
},
214+
"international": false,
215+
"index": 1
216+
}
217+
]
218+
},
219+
{
220+
"origin": "LAX",
221+
"destination": "EWR",
222+
"departureDateTime": "2025-07-07T00:00:00-03:00",
223+
"departureDateTimeUtc": "2025-07-07T05:00:00Z",
224+
"arrivalDateTime": "2025-07-07T16:00:00-03:00",
225+
"arrivalDateTimeUtc": "2025-07-07T21:00:00Z",
226+
"international": false,
227+
"index": 1,
228+
"segments": [
229+
{
230+
"origin": "LAX",
231+
"destination": "EWR",
232+
"departureDateTime": "2025-07-07T00:00:00-03:00",
233+
"departureDateTimeUtc": "2025-07-07T05:00:00Z",
234+
"arrivalDateTime": "2025-07-07T16:00:00-03:00",
235+
"arrivalDateTimeUtc": "2025-07-07T21:00:00Z",
236+
"marketingFlightNumber": "3333",
237+
"marketingCarrier": {
238+
"iataCode": "DL",
239+
"name": "Delta Airlines"
240+
},
241+
"international": false,
242+
"index": 0
243+
}
244+
]
245+
}
246+
]
247+
}
248+
}
249+
]
250+
}
251+
}
252+
```
253+
254+
### <a name="sample-hotel-event"></a>Sample Hotel Booking Event
255+
256+
```json
257+
{
258+
"id": "51519e89-2c1d-47ec-bd93-7c4ace9c57e6",
259+
"correlationId": "b2fd900a-5935-46fc-8d29-599de9864e21",
260+
"eventType": "travelBookingCompleted",
261+
"topic": "concur.travel.book",
262+
"timeStamp": "2025-04-01T11:01:01.000Z",
263+
"route": "stable",
264+
"facts": {
265+
"companyId": "ab83bc5f-f66e-4ce0-9dcc-7dbf0195e061",
266+
"userId": "b7d12989-0489-471a-81cd-175f8b78afa5",
267+
"delegateUserId": "e5315ec2-5033-4197-b15b-4cec00b838f6",
268+
"type": "concur.travel.trip.Booking.Completed.v1",
269+
"version": "1.0.0",
270+
"trip": {
271+
"id": "8585c3ca-62bd-4585-8f18-f85e331fa7fa"
272+
},
273+
"bookings": [
274+
{
275+
"id": "5040b878-da00-47c7-8676-e0f6c67885b5",
276+
"type": "Hotel",
277+
"details": {
278+
"hotel": {
279+
"name": "The Ritz-Carlton New York, Central Park",
280+
"address": {
281+
"address1": "50 Central Park S",
282+
"address2": "",
283+
"administrativeAreaName": "NY",
284+
"postalCode": "10019",
285+
"localityName": "New York",
286+
"countryCode": "US",
287+
"geoCoords": {
288+
"lat": 40.755630,
289+
"long": -73.977580
290+
}
291+
}
292+
},
293+
"checkInDateTime": "2025-04-02T15:00:00",
294+
"checkInDateTimeUtc": "2025-04-02T20:00:00Z",
295+
"checkOutDateTime": "2025-04-05T16:00:00",
296+
"checkOutDateTimeUtc": "2025-04-05T21:00:00Z"
297+
}
298+
}
299+
]
300+
}
301+
}
302+
```

0 commit comments

Comments
 (0)