Architecture overview
Client → Apigee X → AWS Lambda (Quarkus) → PostgreSQL
Apigee X acts as the API gateway, handling OAuth 2.0 token validation, CORS, and routing. Requests are forwarded to an AWS Lambda function built with Quarkus, which queries a PostgreSQL data source populated from the TUI crew tracking system. For large or explicitly requested result sets, the Lambda writes the response to Amazon S3 and returns a pre-signed download link instead of the inline JSON body.
Base URLs
| Environment | Base URL |
|---|---|
| Development | https://dev.api.tui/aviation-airline |
| SIT / Test | https://test.api.tui/aviation-airline |
| Production | https://prod.api.tui/aviation-airline |
Authentication
This API uses OAuth 2.0 Client Credentials flow. Available scopes are
aviation-airline.all, aviation-airline.read, and
aviation-airline.write.
Obtaining a token (non-production)
curl -X POST https://test.api.tui/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=aviation-airline.read"
Obtaining a token (production)
curl -X POST https://prod.api.tui/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=aviation-airline.read"
Calling the API with the token
curl https://test.api.tui/aviation-airline/roster-codes?owner=TUI \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Rate limits
There are no explicit rate limits enforced on this API today.
Large response handling
If a query would return more data than fits within the Lambda payload
limit (5,000,000 bytes), or if the request includes responseFile=true,
the response is written to Amazon S3 as a JSON file instead of being
returned inline. The API response body then contains a pre-signed URL to
download the file. The pre-signed URL is valid for 10 minutes.
Data freshness and date range
Data is sourced from the TUI crew tracking system and refreshed at
five-minute intervals, so responses can be up to five minutes behind the
live source system. Endpoints that accept startDate and endDate
parameters return records that are valid within that date range.
Correlation ID
Requests can carry an id or X-Correlation-Id header for tracing. If
neither is present, the API generates a correlation ID for the request.
This ID is also used to name any file written to S3 for large response
handling, which makes it easier to trace a specific request end to end.
Error handling
| Status | Meaning |
|---|---|
| 200 | Success |
| 204 | No matching data found for the given parameters |
| 400 | Bad request, typically an invalid or missing parameter |
| 401 | Not authorized, the access token is missing or invalid |
| 403 | Forbidden, the token does not have the required scope |
| 500 | Internal server error |
| 504 | Gateway timeout |
See the interactive API reference for full error response schemas.
Requesting access
To request access to this API, raise a request at https://tui-air-links.com. The AOPS Tech team will provision client credentials for your application.
Support
- Team: AOPS Tech (airtech-integration)
- Support portal: https://tui-air-links.com
