Wiki source code of Webhooks
Last modified by Marcus Calverley on 2024/03/06 15:26
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | Webhooks are a way for integrations developed by airports or third parties to be notified of updates in Better Airport. Webhooks are URL registrations in Better Airport for different event types. Each URL will be sent an HTTP POST request containing a JSON payload with details whenever an event of the registered type happens within Better Airport. The payload will typically refer to one or more URLs on the Better Airport API that will provide the actual data. | ||
2 | |||
3 | {{toc depth="6"/}} | ||
4 | |||
5 | = Registration Process = | ||
6 | |||
7 | Webhooks are currently registered manually by communicating with your Copenhagen Optimization contact. In the future, we want to provide an interface in Better Airport to administer registrations and provide other features to work with webhooks. | ||
8 | To register a webhook, provide the following information: | ||
9 | |||
10 | * Type of event to receive. | ||
11 | * URL to receive the JSON payload when the event is triggered. | ||
12 | * Credentials or other headers that must be sent in the request. | ||
13 | |||
14 | = Source Addresses = | ||
15 | |||
16 | Webhooks will be sent from one of the following IP addresses: | ||
17 | |||
18 | EU region: | ||
19 | |||
20 | * 34.77.254.44 | ||
21 | * 34.76.104.16 | ||
22 | * 35.195.136.235 | ||
23 | |||
24 | US region: | ||
25 | |||
26 | * 34.145.57.117 | ||
27 | * 34.82.72.191 | ||
28 | * 34.105.72.61 | ||
29 | |||
30 | CA region: | ||
31 | |||
32 | * 34.152.51.111 | ||
33 | * 34.118.161.97 | ||
34 | * 34.118.181.2 | ||
35 | |||
36 | Legacy infrastructure: | ||
37 | |||
38 | * 35.195.31.165 | ||
39 | * 35.205.103.107 | ||
40 | * 104.155.101.99 | ||
41 | |||
42 | = Error Handling = | ||
43 | |||
44 | If the webhook endpoint called does not return a success HTTP code (e.g. 200), then the system will try again indefinitely with an exponential back-off of up to 5 minutes between each call. All pending events will be blocked until the failing POST request no longer fails. This ensures that all events will always be received in the correct order, but could mean that many events will be received in quick succession when the webhook endpoint becomes operational again. | ||
45 | |||
46 | = Event Types = | ||
47 | |||
48 | Each event type available via webhooks has a different payload. If using the same endpoint to handle multiple types of events, the {{code language="json"}}"type"{{/code}} field can be used to differentiate between event types before reading other fields of the webhook. | ||
49 | |||
50 | == Better Baggage == | ||
51 | |||
52 | === Counter Allocation Plan Published === | ||
53 | |||
54 | When a baggage counter allocation plan has been published, an event with the following type will be sent: | ||
55 | |||
56 | {{code language="json"}} | ||
57 | { | ||
58 | "counterAllocation": { | ||
59 | "url": string, | ||
60 | "period": { | ||
61 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
62 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
63 | } | ||
64 | }, | ||
65 | "type": "bbg.counterAllocation", | ||
66 | "id": string, | ||
67 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
68 | } | ||
69 | {{/code}} | ||
70 | |||
71 | |=Field Name|=Description|=Example | ||
72 | |id|Unique identifier of the event|{{code language="json"}}"1018a935-a60e-43a6-a13b-59022852fe07"{{/code}} | ||
73 | |type|Event type identifier, will always be bbg.counterAllocation|{{code language="json"}}"bbg.counterAllocation"{{/code}} | ||
74 | |timestamp|Date and time of the event|{{code language="json"}}"2024-02-27T15:41:17.116942+00:00"{{/code}} | ||
75 | |counterAllocation.url|URL on the Better Airport API where the counter allocation plan can be fetched|{{code language="json"}}"https://betterairport.ca/demo/api/o/5e9bd5bcd087/Baggage/Terminals/5fb42dbf-9ee4-47ca-b1eb-27c48fcd68a1/AllocationPlans/2024-02-28"{{/code}} | ||
76 | |counterAllocation.period|Time period the counter allocation plan covers|{{code language="json"}}{"fromTime": "2024-02-28T00:00:00-05:00", "toTime": "2024-02-28T23:59:59.9999999-05:00"}{{/code}} | ||
77 | |||
78 | Example: | ||
79 | |||
80 | {{code language="json"}} | ||
81 | { | ||
82 | "counterAllocation": { | ||
83 | "url": "https://betterairport.ca/demo/api/o/5e9bd5bcd087/Baggage/Terminals/5fb42dbf-9ee4-47ca-b1eb-27c48fcd68a1/AllocationPlans/2024-02-28", | ||
84 | "period": { | ||
85 | "fromTime": "2024-02-28T00:00:00-05:00", | ||
86 | "toTime": "2024-02-28T23:59:59.9999999-05:00" | ||
87 | } | ||
88 | }, | ||
89 | "type": "bbg.counterAllocation", | ||
90 | "id": "c630b63f-5e77-40ce-871c-a5f5374c5fd1", | ||
91 | "timestamp": "2024-02-27T15:41:17.116942+00:00" | ||
92 | } | ||
93 | {{/code}} | ||
94 | |||
95 | == Better Check-In == | ||
96 | |||
97 | === Counter Allocation Plan Published === | ||
98 | |||
99 | When a check-in counter allocation plan has been published, an event with the following type will be sent: | ||
100 | |||
101 | {{code language="json"}} | ||
102 | { | ||
103 | "counterAllocation": { | ||
104 | "url": string, | ||
105 | "period": { | ||
106 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
107 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
108 | } | ||
109 | }, | ||
110 | "type": "bci.counterAllocation", | ||
111 | "id": string, | ||
112 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
113 | } | ||
114 | {{/code}} | ||
115 | |||
116 | |=Field Name|=Description|=Example | ||
117 | |id|Unique identifier of the event|{{code language="json"}}"1018a935-a60e-43a6-a13b-59022852fe07"{{/code}} | ||
118 | |type|Event type identifier, will always be bci.counterAllocation|{{code language="json"}}"bci.counterAllocation"{{/code}} | ||
119 | |timestamp|Date and time of the event|{{code language="json"}}"2024-02-27T15:58:53.0762883+00:00"{{/code}} | ||
120 | |counterAllocation.url|URL on the Better Airport API where the counter allocation plan can be fetched|{{code language="json"}}"https://betterairport.ca/demo/api/o/7c5f78dd7619/CheckIn/Terminals/357bdfe0-a206-413f-9b27-50f94809e9a2/AllocationPlans/2024-02-27"{{/code}} | ||
121 | |counterAllocation.period|Time period the counter allocation plan covers|{{code language="json"}}{"fromTime": "2024-02-27T00:00:00-05:00", "toTime": "2024-02-27T23:59:59.9999999-05:00"}{{/code}} | ||
122 | |||
123 | Example: | ||
124 | |||
125 | {{code language="json"}} | ||
126 | { | ||
127 | "counterAllocation": { | ||
128 | "url": "https://betterairport.ca/demo/api/o/7c5f78dd7619/CheckIn/Terminals/357bdfe0-a206-413f-9b27-50f94809e9a2/AllocationPlans/2024-02-27", | ||
129 | "period": { | ||
130 | "fromTime": "2024-02-27T00:00:00-05:00", | ||
131 | "toTime": "2024-02-27T23:59:59.9999999-05:00" | ||
132 | } | ||
133 | }, | ||
134 | "type": "bci.counterAllocation", | ||
135 | "id": "09377172-e955-4816-8c7a-91e3eec2662b", | ||
136 | "timestamp": "2024-02-27T15:58:53.0762883+00:00" | ||
137 | } | ||
138 | {{/code}} | ||
139 | |||
140 | == Better Forecast == | ||
141 | |||
142 | === Flight Load Factor Forecast Published === | ||
143 | |||
144 | When a flight load factor forecast is published, an event with the following type will be sent: | ||
145 | |||
146 | {{code language="json"}} | ||
147 | { | ||
148 | "publishId": string, | ||
149 | "forecastUrl": string, | ||
150 | "period": { | ||
151 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
152 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
153 | }, | ||
154 | "type": "bf.loadFactorForecastPublished", | ||
155 | "id": string, | ||
156 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
157 | } | ||
158 | {{/code}} | ||
159 | |||
160 | |=Field Name|=Description|=Example | ||
161 | |id|Unique identifier of the event|{{code language="json"}}"9aa617c7-3fe4-4f77-a16f-a55f1dd5f0c4"{{/code}} | ||
162 | |type|Event type identifier, will always be bf.loadFactorForecastPublished|{{code language="json"}}"bf.loadFactorForecastPublished"{{/code}} | ||
163 | |timestamp|Date and time of the event|{{code language="json"}}"2024-02-27T15:14:40.4719166+00:00"{{/code}} | ||
164 | |forecastUrl|Array of URLs on the Better Airport API where the load factor forecast can be fetched, one for each day|{{code language="json"}}"https://betterairport.ca/demo/api/o/7c5f78dd7619/Forecast/LoadFactor/Published/2024-02-27"{{/code}} | ||
165 | |period|Time period that was published in Better Forecast|{{code language="json"}}{"fromTime": "2024-02-27T00:00:00-05:00", "toTime": "2024-02-27T23:59:59.9999999-05:00"}{{/code}} | ||
166 | |||
167 | Example: | ||
168 | |||
169 | {{code language="json"}} | ||
170 | { | ||
171 | "publishId": "d3cf40f6-a315-47be-9a5e-c407aa447319", | ||
172 | "forecastUrl": "https://betterairport.ca/demo/api/o/7c5f78dd7619/Forecast/LoadFactor/Published/2024-02-27", | ||
173 | "period": { | ||
174 | "fromTime": "2024-02-27T00:00:00-05:00", | ||
175 | "toTime": "2024-02-27T23:59:59.9999999-05:00" | ||
176 | }, | ||
177 | "type": "bf.loadFactorForecastPublished", | ||
178 | "id": "e0b9fe5e-226e-49d0-bae8-f8781c1ae565", | ||
179 | "timestamp": "2024-02-27T15:14:40.4719166+00:00" | ||
180 | } | ||
181 | {{/code}} | ||
182 | |||
183 | === Passenger Show Up Forecast Published === | ||
184 | |||
185 | When a passenger show up forecast is published, an event with the following type will be sent: | ||
186 | |||
187 | {{code language="json"}} | ||
188 | { | ||
189 | "publishId": string, | ||
190 | "forecastUrl": string, | ||
191 | "period": { | ||
192 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
193 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
194 | }, | ||
195 | "type": "bf.showUpForecastPublished", | ||
196 | "id": string, | ||
197 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
198 | } | ||
199 | {{/code}} | ||
200 | |||
201 | Note: A separate event will be sent for each day a show up forecast is published. | ||
202 | |||
203 | |=Field Name|=Description|=Example | ||
204 | |id|Unique identifier of the event|{{code language="json"}}"64c116df-7985-4ee9-9e90-277dcb07e98d"{{/code}} | ||
205 | |type|Event type identifier, will always be bf.showUpForecastPublished|{{code language="json"}}"bf.showUpForecastPublished"{{/code}} | ||
206 | |timestamp|Date and time of the event|{{code language="json"}}"2024-02-27T14:31:49.5557417+00:00"{{/code}} | ||
207 | |forecastUrl|((( | ||
208 | URL on the Better Airport API where the show up forecast can be fetched | ||
209 | )))|{{code language="json"}}"https://betterairport.ca/demo/api/o/7c5f78dd7619/Forecast/ShowUp/Published/2024-02-27"{{/code}} | ||
210 | |period|Time period that was published in Better Forecast|{{code language="json"}}{"fromTime": "2024-02-27T00:00:00-05:00", "toTime": "2024-02 27T23:59:59.9999999-05:00"}{{/code}} | ||
211 | |||
212 | Example: | ||
213 | |||
214 | {{code language="json"}} | ||
215 | { | ||
216 | "publishId": "34ae0fa8-aa90-43c3-a5ce-1ff4239fc051", | ||
217 | "forecastUrl": "https://betterairport.ca/demo/api/o/7c5f78dd7619/Forecast/ShowUp/Published/2024-02-27", | ||
218 | "period": { | ||
219 | "fromTime": "2024-02-27T00:00:00-05:00", | ||
220 | "toTime": "2024-02-27T23:59:59.9999999-05:00" | ||
221 | }, | ||
222 | "type": "bf.showUpForecastPublished", | ||
223 | "id": "257cdad6-22da-4017-ba20-5f061b49b4f1", | ||
224 | "timestamp": "2024-02-27T14:31:49.5557417+00:00" | ||
225 | } | ||
226 | {{/code}} | ||
227 | |||
228 | == Better Security == | ||
229 | |||
230 | === Lane Plan Published === | ||
231 | |||
232 | When a lane plan has been published, an event with the following type will be sent: | ||
233 | |||
234 | {{code language="json"}} | ||
235 | { | ||
236 | "lanePlan": { | ||
237 | "url": string, | ||
238 | "period": { | ||
239 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
240 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
241 | } | ||
242 | }, | ||
243 | "type": "bs.lanePlan", | ||
244 | "id": string, | ||
245 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
246 | } | ||
247 | {{/code}} | ||
248 | |||
249 | |=Field Name|=Description|=Example | ||
250 | |id|Unique identifier of the event|{{code language="json"}}"1018a935-a60e-43a6-a13b-59022852fe07"{{/code}} | ||
251 | |type|Event type identifier, will always be bs.lanePlan|{{code language="json"}}"bs.lanePlan"{{/code}} | ||
252 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:25:29.1017705+00:00"{{/code}} | ||
253 | |lanePlan.url|URL on the Better Airport API where the lane plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/security/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29"{{/code}} | ||
254 | |lanePlan.period|Time period the lane plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
255 | |||
256 | Example: | ||
257 | |||
258 | {{code language="json"}} | ||
259 | { | ||
260 | "lanePlan": { | ||
261 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/security/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29", | ||
262 | "period": { | ||
263 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
264 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
265 | } | ||
266 | }, | ||
267 | "type": "bs.lanePlan", | ||
268 | "id": "d1bc6a77-f8ff-454f-9511-037120a27c7f", | ||
269 | "timestamp": "2024-03-01T11:25:29.1017705+00:00" | ||
270 | } | ||
271 | {{/code}} | ||
272 | |||
273 | === Staff Plan Published === | ||
274 | |||
275 | When a staff plan has been published, an event with the following type will be sent: | ||
276 | |||
277 | {{code language="json"}} | ||
278 | { | ||
279 | "staffPlan": { | ||
280 | "url": string, | ||
281 | "period": { | ||
282 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
283 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
284 | } | ||
285 | }, | ||
286 | "type": "bs.staffPlan", | ||
287 | "id": string, | ||
288 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
289 | } | ||
290 | {{/code}} | ||
291 | |||
292 | |=Field Name|=Description|=Example | ||
293 | |id|Unique identifier of the event|{{code language="json"}}"d2458e4f-c44b-419b-ab26-6921581f0a6e"{{/code}} | ||
294 | |type|Event type identifier, will always be bs.staffPlan|{{code language="json"}}"bs.staffPlan"{{/code}} | ||
295 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:29:59.7871733+00:00"{{/code}} | ||
296 | |staffPlan.url|URL on the Better Airport API where the staff plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/security/StaffPlans/2023-11-29"{{/code}} | ||
297 | |staffPlan.period|Time period the staff plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
298 | |||
299 | Example: | ||
300 | |||
301 | {{code language="json"}} | ||
302 | { | ||
303 | "staffPlan": { | ||
304 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/security/StaffPlans/2023-11-29", | ||
305 | "period": { | ||
306 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
307 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
308 | } | ||
309 | }, | ||
310 | "type": "bs.staffPlan", | ||
311 | "id": "018bb9be-d249-409a-8060-5fa73c15d805", | ||
312 | "timestamp": "2024-03-01T11:29:59.7871733+00:00" | ||
313 | } | ||
314 | {{/code}} | ||
315 | |||
316 | == Better Demand == | ||
317 | |||
318 | === Lane Plan Published === | ||
319 | |||
320 | When a lane plan has been published, an event with the following type will be sent: | ||
321 | |||
322 | {{code language="json"}} | ||
323 | { | ||
324 | "lanePlan": { | ||
325 | "url": string, | ||
326 | "period": { | ||
327 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
328 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
329 | } | ||
330 | }, | ||
331 | "type": "bd.lanePlan", | ||
332 | "id": string, | ||
333 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
334 | } | ||
335 | {{/code}} | ||
336 | |||
337 | |=Field Name|=Description|=Example | ||
338 | |id|Unique identifier of the event|{{code language="json"}}"1018a935-a60e-43a6-a13b-59022852fe07"{{/code}} | ||
339 | |type|Event type identifier, will always be bd.lanePlan|{{code language="json"}}"bd.lanePlan"{{/code}} | ||
340 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:25:29.1017705+00:00"{{/code}} | ||
341 | |lanePlan.url|URL on the Better Airport API where the lane plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/demand/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29"{{/code}} | ||
342 | |lanePlan.period|Time period the lane plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
343 | |||
344 | Example: | ||
345 | |||
346 | {{code language="json"}} | ||
347 | { | ||
348 | "lanePlan": { | ||
349 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/demand/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29", | ||
350 | "period": { | ||
351 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
352 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
353 | } | ||
354 | }, | ||
355 | "type": "bd.lanePlan", | ||
356 | "id": "d1bc6a77-f8ff-454f-9511-037120a27c7f", | ||
357 | "timestamp": "2024-03-01T11:25:29.1017705+00:00" | ||
358 | } | ||
359 | {{/code}} | ||
360 | |||
361 | === Staff Plan Published === | ||
362 | |||
363 | When a staff plan has been published, an event with the following type will be sent: | ||
364 | |||
365 | {{code language="json"}} | ||
366 | { | ||
367 | "staffPlan": { | ||
368 | "url": string, | ||
369 | "period": { | ||
370 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
371 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
372 | } | ||
373 | }, | ||
374 | "type": "bd.staffPlan", | ||
375 | "id": string, | ||
376 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
377 | } | ||
378 | {{/code}} | ||
379 | |||
380 | |=Field Name|=Description|=Example | ||
381 | |id|Unique identifier of the event|{{code language="json"}}"d2458e4f-c44b-419b-ab26-6921581f0a6e"{{/code}} | ||
382 | |type|Event type identifier, will always be bd.staffPlan|{{code language="json"}}"bd.staffPlan"{{/code}} | ||
383 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:29:59.7871733+00:00"{{/code}} | ||
384 | |staffPlan.url|URL on the Better Airport API where the staff plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/demand/StaffPlans/2023-11-29"{{/code}} | ||
385 | |staffPlan.period|Time period the staff plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
386 | |||
387 | Example: | ||
388 | |||
389 | {{code language="json"}} | ||
390 | { | ||
391 | "staffPlan": { | ||
392 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/demand/StaffPlans/2023-11-29", | ||
393 | "period": { | ||
394 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
395 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
396 | } | ||
397 | }, | ||
398 | "type": "bd.staffPlan", | ||
399 | "id": "018bb9be-d249-409a-8060-5fa73c15d805", | ||
400 | "timestamp": "2024-03-01T11:29:59.7871733+00:00" | ||
401 | } | ||
402 | {{/code}} | ||
403 | |||
404 | == (% id="cke_bm_7521S" style="display:none" %) (%%)Better Border == | ||
405 | |||
406 | === Lane Plan Published === | ||
407 | |||
408 | When a lane plan has been published, an event with the following type will be sent: | ||
409 | |||
410 | {{code language="json"}} | ||
411 | { | ||
412 | "lanePlan": { | ||
413 | "url": string, | ||
414 | "period": { | ||
415 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
416 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
417 | } | ||
418 | }, | ||
419 | "type": "bb.lanePlan", | ||
420 | "id": string, | ||
421 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
422 | } | ||
423 | {{/code}} | ||
424 | |||
425 | |=Field Name|=Description|=Example | ||
426 | |id|Unique identifier of the event|{{code language="json"}}"1018a935-a60e-43a6-a13b-59022852fe07"{{/code}} | ||
427 | |type|Event type identifier, will always be bb.lanePlan|{{code language="json"}}"bb.lanePlan"{{/code}} | ||
428 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:25:29.1017705+00:00"{{/code}} | ||
429 | |lanePlan.url|URL on the Better Airport API where the lane plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/border/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29"{{/code}} | ||
430 | |lanePlan.period|Time period the lane plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
431 | |||
432 | Example: | ||
433 | |||
434 | {{code language="json"}} | ||
435 | { | ||
436 | "lanePlan": { | ||
437 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/border/checkpoints/654b94074c3abbf7dfbe3fc0/2023-11-29", | ||
438 | "period": { | ||
439 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
440 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
441 | } | ||
442 | }, | ||
443 | "type": "bb.lanePlan", | ||
444 | "id": "d1bc6a77-f8ff-454f-9511-037120a27c7f", | ||
445 | "timestamp": "2024-03-01T11:25:29.1017705+00:00" | ||
446 | } | ||
447 | {{/code}} | ||
448 | |||
449 | === Staff Plan Published === | ||
450 | |||
451 | When a staff plan has been published, an event with the following type will be sent: | ||
452 | |||
453 | {{code language="json"}} | ||
454 | { | ||
455 | "staffPlan": { | ||
456 | "url": string, | ||
457 | "period": { | ||
458 | "fromTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz", | ||
459 | "toTime": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
460 | } | ||
461 | }, | ||
462 | "type": "bb.staffPlan", | ||
463 | "id": string, | ||
464 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
465 | } | ||
466 | {{/code}} | ||
467 | |||
468 | |=(% id="cke_bm_63936S" style="display:none" %) Field Name|=Description|=Example | ||
469 | |id|Unique identifier of the event|{{code language="json"}}"d2458e4f-c44b-419b-ab26-6921581f0a6e"{{/code}} | ||
470 | |type|Event type identifier, will always be bb.staffPlan|{{code language="json"}}"bb.staffPlan"{{/code}} | ||
471 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T11:29:59.7871733+00:00"{{/code}} | ||
472 | |staffPlan.url|URL on the Better Airport API where the staff plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/border/StaffPlans/2023-11-29"{{/code}} | ||
473 | |staffPlan.period|Time period the staff plan covers|{{code language="json"}}{"fromTime": "2023-11-29T00:00:00+01:00", "toTime": "2023-11-29T23:59:59.9999999+01:00"}{{/code}} | ||
474 | |||
475 | Example: | ||
476 | |||
477 | {{code language="json"}} | ||
478 | { | ||
479 | "staffPlan": { | ||
480 | "url": "https://betterairport.eu/demo/api/o/79d9659e8d36/ResourceDemand/border/StaffPlans/2023-11-29", | ||
481 | "period": { | ||
482 | "fromTime": "2023-11-29T00:00:00+01:00", | ||
483 | "toTime": "2023-11-29T23:59:59.9999999+01:00" | ||
484 | } | ||
485 | }, | ||
486 | "type": "bb.staffPlan", | ||
487 | "id": "018bb9be-d249-409a-8060-5fa73c15d805", | ||
488 | "timestamp": "2024-03-01T11:29:59.7871733+00:00" | ||
489 | } | ||
490 | {{/code}} | ||
491 | |||
492 | == Better VQ == | ||
493 | |||
494 | === Flight Schedule Updated or Queue configuration Update or Eligibility Rule Updated === | ||
495 | |||
496 | When the Flight Schedule has been updated in Better forecast or a Queue Configuration or Eligibility Rules that affects eligible flights has been updated. NOTE: A separate event will be sent for each day a Flight Schedule, Queue configuration or Eligibility Rules has been updated. | ||
497 | |||
498 | {{code language="json"}} | ||
499 | { | ||
500 | "url": string, | ||
501 | "type": "bf.virtualQueue.flightScheduleUpdated", | ||
502 | "id": string, | ||
503 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
504 | } | ||
505 | {{/code}} | ||
506 | |||
507 | |=(% id="cke_bm_237000S" style="display:none" %) (% id="cke_bm_63936S" style="display:none" %) (%%)Field Name|=Description|=Example | ||
508 | |id|Unique identifier of the event|{{code language="json"}}"d2458e4f-c44b-419b-ab26-6921581f0a6e"{{/code}} | ||
509 | |type|Event type identifier, will always be bf.virtualQueue.flightScheduleUpdated|{{code language="json"}}"bf.virtualQueue.flightScheduleUpdated"{{/code}} | ||
510 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T12:59:39.0862725+00:00"{{/code}} | ||
511 | |url|URL on the Better Airport API where the flight schedule can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/04f332b5663f/Forecast/QueueReservations/flights/2024-03-01"{{/code}} | ||
512 | |||
513 | Example: | ||
514 | |||
515 | {{code language="json"}} | ||
516 | { | ||
517 | "url": "https://betterairport.eu/demo/api/o/04f332b5663f/Forecast/QueueReservations/flights/2024-03-01", | ||
518 | "type": "bf.virtualQueue.flightScheduleUpdated", | ||
519 | "id": "6dea0273-0cd2-4070-8670-10822c5d3b28", | ||
520 | "timestamp": "2024-03-01T12:59:39.0862725+00:00" | ||
521 | } | ||
522 | {{/code}} | ||
523 | |||
524 | === Slot Plans Update or Queue Configuration Update === | ||
525 | |||
526 | When the Slot Plan is updated or a Queue Configuration that affects the slot plan is updated. | ||
527 | |||
528 | {{code language="json"}} | ||
529 | { | ||
530 | "url": string, | ||
531 | "type": "bf.virtualQueue.slotPlansUpdated", | ||
532 | "id": string, | ||
533 | "timestamp": "yyyy-MM-ddTHH:mm:ss.fffffffzzz" | ||
534 | } | ||
535 | {{/code}} | ||
536 | |||
537 | |=(% id="cke_bm_663417S" style="display:none" %) (% id="cke_bm_237000S" style="display:none" %) (% id="cke_bm_63936S" style="display:none" %) (%%)Field Name|=Description|=Example | ||
538 | |id|Unique identifier of the event|{{code language="json"}}"d2458e4f-c44b-419b-ab26-6921581f0a6e"{{/code}} | ||
539 | |type|Event type identifier, will always be bf.virtualQueue.slotPlansUpdated|{{code language="json"}}"bf.virtualQueue.slotPlansUpdated"{{/code}} | ||
540 | |timestamp|Date and time of the event|{{code language="json"}}"2024-03-01T12:59:39.0862725+00:00"{{/code}} | ||
541 | |url|URL on the Better Airport API where the slot plan can be fetched|{{code language="json"}}"https://betterairport.eu/demo/api/o/04f332b5663f/Forecast/QueueReservations/plans/2024-03-01"{{/code}} | ||
542 | |||
543 | Example: | ||
544 | |||
545 | {{code language="json"}} | ||
546 | { | ||
547 | "url": "https://betterairport.eu/demo/api/o/04f332b5663f/Forecast/QueueReservations/plans/2024-03-01", | ||
548 | "type": "bf.virtualQueue.slotPlansUpdated", | ||
549 | "id": "bf47ad7f-8966-4a65-8270-5631a68ee40c", | ||
550 | "timestamp": "2024-03-01T13:34:04.2816973+00:00" | ||
551 | } | ||
552 | {{/code}} |