Request parameters explained

Parameters and response fields that are commonly misunderstood.

Terms: PSS (Passenger Service System); the airline reservation or host system holding the ticket. Where the ticket is held in a GDS (Global Distribution System) such as Amadeus, Sabre or Travelport rather than an airline host, read the same guidance as applying to the GDS. EMD (Electronic Miscellaneous Document); a document for ancillary services (seats, baggage), as opposed to an e-ticket for flights.

isEmd

A routing hint only; it does not control how a document is treated. Deal Engine determines the real document type from PSS data (the presence of an RFISC, the service code identifying an EMD):

  • isEmd: true on an actual e-ticket is not rejected and produces no error.
  • The engine silently corrects the flag and processes the document as its real type.
  • The response reflects the actual document type.

You cannot force EMD treatment through isEmd. Trust the PSS-derived type in the response.

Related document references

Document responses may reference other tickets. All are read-only context; the refund is always keyed to the ticketNum you requested, and none require action:

FieldWhat it isYour action
conjunctionTicketNumContinuation ticket, used when an itinerary has more segments than fit one ticketIgnore for refund handling
parentTicketNumPrevious ticket in an exchange/reissue chain; used internally for correct refund mathNone
parentIssueDateIssue date of that previous ticketNone
associatedTicketNum (EMD)The flight ticket the EMD belongs toNone

The Sync header

Behaves differently per mutation; the part most integrators get wrong:

  • createQuote: Sync: true waits and returns an array of document-shaped quote results (ticket metadata, nested quote with fulfillment/taxes, segments, request context). Genuinely synchronous, but the wait is PSS-dependent, capped at 3 minutes. Worst cases (a purged reservation, private fares, or many reschedules on the itinerary) push closer to that cap. If an item times out, don't treat that as a failed quote; see the timeout section below.
  • processRefund: Sync: true only delays the response. The body remains the enqueue acknowledgment:
{ "success": true, "message": "Queued for processing" }

That is not the refund outcome; it means the ticket passed basic validation and entered the queue.

🚧

This is the summary-only shape. processRefund is also documented returning a per-ticket array, { success, message, results[] }; see Reading the processRefund response. Treat results as optional, branch on the booleans rather than on message strings, and reconcile per ticketNum.

Never read the refund outcome from the processRefund response. Use webhooks or status polling; see Refund lifecycle & statuses.

Sync timeout on createQuote

If the quote is not ready within the 3-minute deadline, that item returns a timeout instead of a document:

{
  "error": "Failed due to timeout",
  "message": "Quote result timeout, call query document."
}

A timeout is not a definitive quote failure; the work may still finish in the background. Call document(ticketNum) (or wait for refund_request.status_updated) to read the stored quote. See Quote workflow.

Sending it

The header is a normal HTTP header on the GraphQL request. Omit it (or send Sync: false) for the asynchronous default.

🚧

The examples below use the production endpoint. For a first integration, substitute your Sandbox URL; see Environments & access. A quote against production reads a live ticket.

Synchronous quote; document-shaped results in the response:

curl https://api.deal-engine.com/v3 \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Sync: true" \
  -d '{
    "query": "mutation CreateQuote($request: [quoteRequest]!) { createQuote(request: $request) }",
    "variables": { "request": [{ "ticketNum": "1282132019309" }] }
  }'

Asynchronous quote (default); header omitted:

curl https://api.deal-engine.com/v3 \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation CreateQuote($request: [quoteRequest]!) { createQuote(request: $request) }",
    "variables": { "request": [{ "ticketNum": "1282132019309" }] }
  }'

Response shapes for both modes: API usage & integration.

📘

Asynchronous is the recommended default. Pair it with the refund_request.status_updated webhook instead of blocking on the response; see Quote workflow and the Webhooks guide.


Did this page help you?
All rights reserved © 2025 deal-engine.com.