If you are self-hosting APTRA Advance (on-prem or private cloud), follow the installation checklist from Chapter 3 of the guide:
# Sample Docker run command from the guide
docker run -d \
--name aptra-advance-ndc \
-p 8080:8080 \
-e NDC_AGGREGATOR_TYPE=DUFFEL \
-e DUFFEL_API_KEY=sk_test_xxxx \
-e LOG_LEVEL=DEBUG \
ncr/aptra-advance:ndc-latest
For cloud-hosted (SaaS), you only need to configure API keys via the Admin Console.
Unlike legacy GDS workflows, NDC offers are dynamic and time-sensitive. The developer guide stresses two critical aspects: aptra advance ndc developer-s guide
The Developer’s Guide organizes NDC interactions into four primary workflows. Each maps to an IATA NDC message pair.
POST /developer/webhooks
"url": "https://your-app.com/webhooks/aptra",
"events": ["order.ticketed", "order.cancelled", "offer.expired", "schedule.change"],
"secret": "your_verification_secret"
A sample webhook payload:
"event": "schedule.change",
"orderID": "ORD-98765",
"data":
"oldDeparture": "2025-06-15T14:00Z",
"newDeparture": "2025-06-15T16:30Z",
"actionRequired": "ACCEPT_OR_REFUND"
Your webhook listener must respond with 200 OK within 5 seconds; otherwise Aptra Advance retries up to 5 times with exponential backoff.
Each Offer includes a TimeToLive (e.g., 240 seconds). Never cache an offer beyond its TTL. Your integration must: If you are self-hosting APTRA Advance (on-prem or
Aptra Advance provides a POST /ndc/shopping/revalidate endpoint to check if an existing OfferID is still valid.
Many NDC processes are not synchronous, especially group bookings, schedule changes, and automated check-in. Aptra Advance uses webhooks to push events to your system. For cloud-hosted (SaaS), you only need to configure
The sandbox environment includes a “Chaos Mode” (Section 8.4). Set header X-APTRA-Simulate: NDC-2015 to test how your app handles offer expiration.