# Query Order

{% hint style="info" %}
💬 **Need help?** If you're stuck, ask Eva on ATRIP for instant diagnostics.

<a href="https://www.atriptech.com/" class="button primary" data-icon="comments">Ask Eva</a>
{% endhint %}

## Retrieve Booking

> \*\*Dependency:\*\*\
> \`Order\` function should be called in prior to this call.\
> \
> \> Please refer to the below information for the usage of the queryOrderDetails.do API.\
> \>   1. All the parameters can be used together, if required.\
> \>   2. “OrderNo” is “required” if “airlinePNR” and “carrier” cannot be provided upon calling the API. Inversely, “airlinePNR” and “carrier” are “required” if “OrderNo” cannot be provided. All remaining fields in the request are optional.\
> \>   3. The PNR (Passenger Name Record) for an airline ticket order or a luggage purchase order must be kept consistent, as per airline regulations.\
> \>   4. The input parameters orderNo, airlinePNR, carrier, and other optional fields will be validated together to ensure they belong to the same order data source. If any of these input parameters do not match with others, the API will return an error.\
> \>   5. Airline ticket orders and associated post-booking ancillary orders can be retrieved using the following methods: (airline ticket orders + post-booking ancillary orders):\
> \>      \* orderNo\
> \>      \* airlinePNR + carrier\
> \>      \* orderNo + airlinePNR + carrier\
> \>      \* orderNo + airlinePNR + carrier + other optional parameters\
> \>   6. In case the parameters of “airlinePNR” and “carrier” cannot identify an unique order (e.g BC - PNR is made up with 4 number), customer needs to enter additional parameters such as "name" for identification. In such scenarios, API will respond with error msg ”Multi-orderNos are identified, please request again with extra parameters added.”\
> \
> \*\*Endpoint:\*\*\
> <https://sandbox.atriptech.com/queryOrderDetails.do>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"Shopping and Ticketing"}],"security":[],"paths":{"/queryOrderDetails.do":{"post":{"summary":"Retrieve Booking","deprecated":false,"description":"**Dependency:**\n`Order` function should be called in prior to this call.\n\n> Please refer to the below information for the usage of the queryOrderDetails.do API.\n>   1. All the parameters can be used together, if required.\n>   2. “OrderNo” is “required” if “airlinePNR” and “carrier” cannot be provided upon calling the API. Inversely, “airlinePNR” and “carrier” are “required” if “OrderNo” cannot be provided. All remaining fields in the request are optional.\n>   3. The PNR (Passenger Name Record) for an airline ticket order or a luggage purchase order must be kept consistent, as per airline regulations.\n>   4. The input parameters orderNo, airlinePNR, carrier, and other optional fields will be validated together to ensure they belong to the same order data source. If any of these input parameters do not match with others, the API will return an error.\n>   5. Airline ticket orders and associated post-booking ancillary orders can be retrieved using the following methods: (airline ticket orders + post-booking ancillary orders):\n>      * orderNo\n>      * airlinePNR + carrier\n>      * orderNo + airlinePNR + carrier\n>      * orderNo + airlinePNR + carrier + other optional parameters\n>   6. In case the parameters of “airlinePNR” and “carrier” cannot identify an unique order (e.g BC - PNR is made up with 4 number), customer needs to enter additional parameters such as \"name\" for identification. In such scenarios, API will respond with error msg ”Multi-orderNos are identified, please request again with extra parameters added.”\n\n**Endpoint:**\nhttps://sandbox.atriptech.com/queryOrderDetails.do","tags":["Shopping and Ticketing"],"parameters":[{"name":"Accept","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"x-atlas-client-id","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"x-atlas-client-secret","in":"header","description":"","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orderNo":{"type":"string","description":"Order number of the order you want to retrieve","nullable":true},"pnrCode":{"type":"string","description":"The pnrCode is the single reference for the booking. This is the Atlas PNR.","nullable":true}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/RetrieveBookingResponseStatus","description":"- 800: Order not exists\n- 701: Multi-order are identified, please request again with extra parameters added\n- 702: airlinePNR and carrier are mandatory to fill in for order retrieval, please check and request again\n- 703: No order found, please check the parameter\n- 704: Parameters don't match, please check and retry\n- 705: Timeout"},"msg":{"$ref":"#/components/schemas/ResponseMessage","nullable":true},"orderNo":{"type":"string","description":"Order number"},"pnrCode":{"type":"string","description":"The pnrCode is the single reference for the booking. This is the Atlas PNR."},"orderStatus":{"type":"string","description":"Order status\n-`0`: Unpaid\n-`1`: Ticketing-in-Process\n-`2`: Ticketed\n-`-3`: Cancelled"},"ticketStatus":{"type":"string","description":"Ticket status\n-`0`: Ticket not issued\n-`1`: Ticket issued"},"paxTicketInfos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Echo the passenger's name, in the format of last name/first name"},"passengerType":{"description":"Echo the passenger's type.\n- 0: Adult\n- 1: Child\n- 2: Infant","$ref":"#/components/schemas/PassengerType"},"birthday":{"type":"string","description":"Echo the passenger's birthday"},"gender":{"type":"string","description":"Echo the passenger's gender"},"cardNum":{"type":"string","description":"Echo the passenger's  identity document number","nullable":true},"cardType":{"type":"string","description":"Echo the passenger's  identity document type","nullable":true},"cardIssuePlace":{"type":"string","description":"Echo the country where the passenger's identification document was issued.","nullable":true},"cardExpired":{"type":"string","description":"Echo the expiration date of the passenger's identification document.","nullable":true},"nationality":{"type":"string","description":"Echo the passenger's nationality","nullable":true},"ticketNos":{"type":"array","items":{"type":"string"},"description":"If the ticket has been issued, the ticket number of the passenger will be included here. The number of elements corresponds to the number of airline ticket numbers. In cases where there are multiple airline PNRs, for example, when the round-trip tickets are issued **separately**, they respectively correspond to the ticket numbers of the outbound journey(the first element) and the return journey(the second element).\n\n**Note**: If and only if the round trip is split into two tickets, the array will contain 2 elements (corresponding to the tickets for the outbound trip and the return trip respectively); in all other cases, it will contain only one element."},"airlinePNRs":{"type":"array","items":{"type":"string"},"description":"The airline PNRs will be included here if they are generated. The number of elements corresponds to the number of airline's PNR. In cases where there are multiple airline PNRs, for example, when the round-trip tickets are issued separately, they respectively correspond to the PNRs of the outbound journey(the first element) and the return journey(the second element).\n\n**Note**: If and only if the round trip is split into two PNRs(or tickets), the array will contain 2 elements (corresponding to the PNRs for the outbound trip and the return trip respectively); in all other cases, it will contain only one element."},"ancillaries":{"type":"array","items":{"type":"object","properties":{"productCode":{"type":"string","description":"Unique identifier for the ancillary product."},"segmentIndex":{"type":"integer","description":"The index of segment the ancillary applies to."},"currency":{"type":"string","description":"The currency in which Atlas settles transactions with you"},"ancillaryPrice":{"type":"number","description":"Price for this ancillary."},"auxBaggageElement":{"type":"object","properties":{"isAllWeight":{"type":"boolean","description":"Mark whether the`weight`field restricts the total weight or the weight of a single piece.\n- `true`: The weight is for all the pieces\n- `false`: The weight is for each piece"},"piece":{"type":"integer","description":"The maximum number of pieces that can be purchased per person.\n- `0`: No Limitation about piece\n- `>0`: Maximum pieces"},"size":{"type":"string","description":"Maximum size for the baggage","nullable":true},"weight":{"type":"integer","description":"The maximum weight that can be purchased per person.\n- `0`: No limitation for weight\n- `>0`: Weight limit (KG)"}},"description":"Baggage specification limitations. This node is valid only when the ancillary type (`categoryCode`) is baggage.","required":["isAllWeight","piece","weight"],"nullable":true},"auxSeatElement":{"type":"object","properties":{"row":{"type":"string","description":"Seat row"},"column":{"type":"string","description":"Seat column"}},"required":["row","column"],"description":"Seat selection for the specific passenger","nullable":true},"vendorCurrency":{"type":"string","description":"The currency in which the vendor charges for the ancillary. If the fare does not allow for the VCC pass-through or BYOA payment, this information will be`null`."},"vendorPrice":{"type":"integer","description":"The price charged by the vendor for the ancillary. If the fare does not allow for the VCC pass-through or BYOA payment, this information will be`null`."},"displayCurrency":{"type":"string","description":"Display currency","nullable":true},"displayPrice":{"type":"number","description":"Display price","nullable":true}},"required":["currency","ancillaryPrice","productCode","segmentIndex"]},"description":"Ancillaries selection for the specific passenger","nullable":true},"contactEmails":{"type":"array","items":{"type":"string"},"description":"The contact email used for the actual ticket issuance which may differ from the contact email provided by the customer when creating the order (when using an Atlas email). If and only if round trips are issued separately, the array will contain 2 elements, corresponding to the contact email for the outbound trip and the contact email for the return trip respectively.","nullable":true},"contactPhones":{"type":"array","items":{"type":"string"},"description":"The contact phone used for the actual ticket issuance which may differ from the contact phone provided by the customer when creating the order (when using an Atlas email). If and only if round trips are issued separately, the array will contain 2 elements, corresponding to the contact phone for the outbound trip and the contact phone for the return trip respectively.","nullable":true}},"required":["name","passengerType","birthday","gender","ticketNos","airlinePNRs"]},"description":"Ticket information for passengers, the same format as the PAXTicketInfo in order response."},"totalPrice":{"type":"number","description":"Total price(not include the technical service fee) of this order in the currency TheAtlas settled with you."},"currency":{"type":"string","description":"The currency TheAtlas settled with you."},"tktLimitTime":{"type":"string","description":"Payment deadline for this order. This time will be displayed in SGT (GMT +8). The format is:`yyyy-MM-dd HH:mm:ss`"},"vendorTotalPrice":{"type":"number","description":"Total price of this order in the vendor's currency, reference for you to generate the specific credit card. If the order does not support VCC passthrough or BYOA, this fare will not be displayed.","nullable":true},"vendorCost":{"type":"number","description":"The actual price charged by the airline, which is denominated in the airline's currency(`vendorCurrency`). We will only display the actual amount charged by the airline if the order supports VCC passthrough or BYOA, otherwise, this field will be`null`.","nullable":true},"vendorTotalAncillaryPrice":{"type":"number","description":"Total ancillary price of this order in the vendor's currency. If the order does not support VCC passthrough or BYOA, this fare will not be displayed.","nullable":true},"vendorCurrency":{"type":"string","description":"Vendor's currency.","nullable":true},"adultTotalFare":{"type":"number","description":"Total adult price of this order in the currency TheAtlas settled with you."},"childTotalFare":{"type":"number","description":"Total child price of this order in the currency TheAtlas settled with you."},"infantTotalFare":{"type":"number","description":"Total infant price of this order in the currency TheAtlas settled with you.","nullable":true},"totalAncillaryPrice":{"type":"number","description":"Total ancillary price of this order in the currency TheAtlas settled with you.","nullable":true},"totalTransactionFee":{"type":"number","description":"Total technical fees for this order in the currency TheAtlas settled with you."},"supportPaymentMethod":{"type":"number","description":"This tag shows which payment method is supported for that particular booking.\n-`1`: Prepayment Only\n-`3`: Both Credit Card Payment and Prepayment Available\n\nThis field has been deprecated, pls use`supportPaymentMethods` instead.","deprecated":true},"supportPaymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethod"},"description":"The payment methods supported by the order."},"paymentMethod":{"$ref":"#/components/schemas/PaymentMethod","nullable":true,"description":"This is the mode of payment used to pay for the booking. If the order is not paid, this field will be`null`."},"routing":{"$ref":"#/components/schemas/Routing","description":"Route and fare details. The structure is the same format as \"Routing\" in search response."},"airlineBookings":{"type":"array","items":{"type":"object","properties":{"airlineCode":{"type":"string","description":"2 character IATA airline code."},"airlineName":{"type":"string","description":"Name of the airline.","nullable":true},"airlinePnr":{"type":"string","description":"The record locator of the airline. If the airline PNR has not been generated, `null`will be displayed.","nullable":true},"airlineWebSiteAddress":{"type":"string","description":"The URL of the public airline website.","nullable":true},"mmbEmail":{"type":"string","description":"The email id to be used in the airline's MMB (Manage my Booking) section."},"tailDigitsOfPaymentCard":{"type":"string","description":"The last four digits of the VCC card number paid by the airline.","nullable":true}},"required":["airlineCode","mmbEmail"]},"description":"Airline booking information. If the round-trip tickets are issued separately, the array will contain 2 elements, corresponding to the relevant information of the outgoing and return trips respectively."},"itineraryDownload":{"type":"string","description":"The link to download the itinerary of the trip."},"contact":{"description":"Contact information of the order","type":"object","properties":{"name":{"type":"string","description":"Contact name, please follow this format: Family Name/Given Name. The contact name can only accept Latin letters, /, and spaces."},"address":{"type":"string","description":"Contact address.","nullable":true},"postcode":{"type":"string","description":"Contact post code.","nullable":true},"email":{"type":"string","description":"Contact email.","nullable":true},"mobile":{"type":"string","description":"Contact mobile, please follow this format : XXXX(digital country code)-XXXXXXXX(phone number), here're the examples: 0001-87291810, 0086-13928109091, 0971-19201998","nullable":true}},"required":["name"]},"errorCode":{"$ref":"#/components/schemas/TicketErrorCodes","description":"An error code used to indicate the specific reason for ticket issuance failure. Note that this error code will only be displayed when the order is canceled due to ticket issuance failure."},"errorMessage":{"type":"string","description":"A brief message used to explain the`errorCode`."},"airlineMessage":{"type":"string","description":"A piece of error message on the airline side that is used to explain the`errorCode`."},"refundRules":{"type":"array","items":{"$ref":"#/components/schemas/RefundRule2"},"description":"Refund rules for the tickets","nullable":true},"ifSeatOccupied":{"$ref":"#/components/schemas/IfSeatOccupied","nullable":true,"description":"Configuration of ordering when the seat is occupied."},"paymentOptions":{"type":"array","items":{"$ref":"#/components/schemas/PaymentOption"},"description":"Available payment options for this order. If the order is paid, then it will be`null`.","nullable":true},"payment":{"$ref":"#/components/schemas/PaymentOption","nullable":true,"description":"The information about the actual payment method used for the order and the deduction method. Only will be displayed when order is paid."},"paymentAttempted":{"type":"boolean","description":"Only used for VCC transparent transmission, indicating whether Atlas has initiated payment operations with the airline using your VCC. true/false/null (meaningless).\n-`true`: Atlas has previously initiated a payment operation with the airline.\n-`false`: Atlas has not initiated a payment operation with the airline.\n-`null`: meaningless\n**Note:**\n`true` only indicates that Atlas has previously initiated a payment operation with the airline, and does not represent the payment result (successful or failed)","nullable":true}},"required":["orderNo","pnrCode","orderStatus","ticketStatus","paxTicketInfos","totalPrice","currency","tktLimitTime","adultTotalFare","childTotalFare","totalTransactionFee","supportPaymentMethod","supportPaymentMethods","routing","airlineBookings","contact","errorCode","status","itineraryDownload"]}}},"headers":{}}}}}},"components":{"schemas":{"RetrieveBookingResponseStatus":{"type":"integer","enum":[800,701,702,703,704,705]},"ResponseMessage":{"type":"string","description":"It serves as an additional description of the response result. Especially when the interface reports an error (`status` !=`0`), it is usually a human-readable error message. Note: Do not use this field in any programming scenarios. For example, do not judge whether the interface responds successfully based on this field. Instead, you should only determine it by checking whether the status is equal to`0`at any time."},"PassengerType":{"type":"integer","enum":[0,1,2]},"PaymentMethod":{"type":"integer","enum":[1,3,4,5],"title":""},"Routing":{"type":"object","properties":{"routingIdentifier":{"type":"string","description":"This unique string identifier is used to verify requests for a particular route.\n**Note:**\nHas a certain validity period (generally not exceeding 6 hours)."},"supportCreditTransPayment":{"type":"string","description":"This tag is used to identify if the fare is support to be paid using the client's credit card(known as vcc passthrough). This field has been deprecated, please use `supportPaymentMethods` instead.","deprecated":true,"enum":["0","1"]},"supportPaymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethod"},"description":"Support payment methods for this fare. If payment is not supported in any way, this will be `null`or`[]`. Each item in this array is one of the following:\n- 1: deposit\n- 3: vcc passthrough\n- 4: BYOA(Bring Your Own Account)\n- 5: MoR"},"currency":{"type":"string","description":"The currency in which Atlas settles transactions with you."},"adultPrice":{"type":"number","description":"Adult fare per passenger."},"adultTax":{"type":"number","description":"Adult tax per passenger."},"adultDetails":{"type":"array","items":{"$ref":"#/components/schemas/PriceItem"},"description":"Details of the adult price composition.","nullable":true},"childPrice":{"type":"number","description":"Child fare per passenger."},"childTax":{"type":"number","description":"Child tax per passenger."},"childDetails":{"type":"array","items":{"$ref":"#/components/schemas/PriceItem"},"description":"Details of the child price composition.","nullable":true},"infantPrice":{"type":"number","description":"Infant fare per passenger."},"infantTax":{"type":"integer","description":"Infant tax per passenger."},"infantDetails":{"type":"array","items":{"$ref":"#/components/schemas/PriceItem"},"description":"Details of the child infant composition.","nullable":true},"infantAllowed":{"type":"boolean","description":"Since `infantPrice` and `infantTax` will never be `null`, when the fare does not support infants or is free for infants, both `infantPrice` and `infantTax` display `0`. In this case, you need this field to distinguish which situation it is.\n**Scenario description:**\n- `true`: infants is supported by this fare, `infantPrice` and `infantTax` will >= `0`\n- `false`: infants is not supported by this fare, `infantPrice` and `infantTax`will be displayed as `0`","nullable":true},"childMandatorySeatingFee":{"type":"number","description":"Only valid for FR integration.\n\n**FR Seat Selection Rules:**\n- Children under 12 years old are provided with free seats.\n- Children must be seated in the same row as an adult.\n- Each adult may accompany up to 4 children.\n\nFor fare families that do not include seat selection fees (e.g., Basic or Family Plus), FR offers discounted seat selection fees for adults traveling with children. The`childMandatorySeatingFee`field displays this discounted fee.\nFor fare families that already include seat selection fees, this field will be `null`.\n\n**Handling by Atlas for Fare Families Without Seat Selection Fees:**\n- The number of children cannot exceed 4.\n- Customers cannot select seats manually.\n- Atlas will automatically assign seats randomly to one adult and all children according to FR's rules. The adult will be charged the `childMandatorySeatingFee` for their seat.\n\n**For Fare Families That Include Seat Selection Fees:**\n- Seat selection is free.\n- Users may call the seat map API to select seats; otherwise, Atlas will automatically assign seats.","nullable":true},"transactionFeePerPax":{"type":"number","deprecated":true,"description":"Technical service fee per passenger. This field has been deprecated and final total transaction fee will calculated based on `transactionFee` and `transactionFeeMode`."},"transactionFee":{"type":"number","description":"Technical service fee as per `transactionFeeMode`. The following lists the calculation methods for the final technical service fee in various situations.\n- `transactionFeeMode`=`PER_SEGMENT`:`transactionFee` * number of passengers * number of segments.\n- `transactionFeeMode`=`PER_TICKET`:`transactionFee` * number of passengers * number of orders on airline side.\n- `transactionFeeMode`=`PER_PAX`:`transactionFee` * number of passengers.\n- `transactionFeeMode`=`PER_BOOKING`:`transactionFee`."},"transactionFeeMode":{"$ref":"#/components/schemas/TransactionFeeMode","description":"Calculation method for technical service fee.\n- PER_SEGMENT: Calculate based on the number of segments in the order (number of travel segments * number of passengers)\n- PER_TICKET: Calculate based on the number of orders on the airline's side\n- PER_PAX: Calculate based on the number of passengers\n- PER_BOOKING: Calculate based on each order"},"fromSegments":{"type":"array","items":{"$ref":"#/components/schemas/RoutingSegment"},"description":"For outbound segments."},"retSegments":{"type":"array","items":{"$ref":"#/components/schemas/RoutingSegment"},"description":"For inbound segments. For one-way, this field will be `null` or `[]`.","nullable":true},"rule":{"type":"object","properties":{"hasBaggage":{"type":"integer","description":"This tag is used to identify if the fare includes free checked-in or cabin baggage.\n- `0`: Not included\n- `1`: Included"},"baggageElements":{"type":"array","items":{"type":"object","properties":{"segmentNo":{"type":"integer","description":"The index of segment the baggage allowance applies to."},"baggageType":{"$ref":"#/components/schemas/AncillaryCategory","description":"Type of the baggage."},"passengerType":{"$ref":"#/components/schemas/PassengerType","description":"The type of passenger the baggage allowance applies to.\n- 0: Adult\n- 1: Child\n- 2: Infant\n"},"baggagePiece":{"type":"integer","description":"Baggage pieces:\n- `0`: No limitation\n- `>0`: Maximum pieces"},"baggageWeight":{"type":"integer","description":"Baggage Weight, with the unit of KG.\n- `0`: No Free baggage\n- `-1`: No limitation on weight\n- `>0`: Maximum weight"},"baggageSize":{"type":"string","description":"Baggage Size:\nlength＊width＊height and units. eg. `56＊36＊23cm`, `18＊14＊8inch`.\nOr Total dimensions (length + width + height) of each piece. eg. `L+W+H<=158cm`.\nEmpty means no limitation."},"isAllWeight":{"type":"boolean","description":"Baggage is all weight: true or false","nullable":true}},"required":["segmentNo","baggageType","passengerType","baggagePiece","baggageWeight","baggageSize"]},"description":"The free baggage allowance"},"refundRules":{"type":"array","items":{"type":"object","properties":{"refundType":{"type":"integer","description":"Type of refund allowed.\n- 0: Wholly unused ticket\n- 1: Partially used ticket (For example, when the passenger has used an outbound flight and wants to refund an inbound flight.)"},"refundStatus":{"description":"Refund rule types (for the most restrictive condition).\n- T: Non refundable\n- H: Refundable with restrictions\n- F: Full refundable\n","$ref":"#/components/schemas/RefundStatus"},"refundFee":{"type":"integer","description":"Refund penalty amount (for the most restrictive condition)","nullable":true},"currency":{"type":"string","description":"The currency of refund penalty","nullable":true},"refNoshow":{"type":"string","description":"Indicates if a no-show affects refunds (for the most restrictive condition).\n- T: Non refundable\n- H: Refundable with restrictions\n- F: Free for refund"},"refNoShowCondition":{"type":"integer","description":"Time before scheduled flight departure","default":0},"refNoshowFee":{"type":"number","description":"Total refund fee (for the most restrictive condition): If refNoshow = H, it should not be \"null\". This value includes the refund fee and no-show penalty"},"refundMethod":{"type":"string","description":"Refund method: CashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment.\n- Voucher: Refund in the form of a voucher.","enum":["CashBackToOriginalPayment","Voucher"],"default":"CashBackToOriginalPayment","nullable":true},"ruleDetailList":{"type":"array","items":{"$ref":"#/components/schemas/AirlineRuleRes"}}},"required":["refundType","refNoshow","refNoShowCondition","refNoshowFee"]},"description":"This node is used to fetch the refund rules of the fare. There is only one array element for one way, and two elements for round-trip. The first element is for the outbound, and the second element is for the inbound."},"changesRules":{"type":"array","items":{"type":"object","properties":{"changesType":{"type":"integer","description":"Change flight type.\n- `0`: Wholly unused ticket\n- `1`: Partially used ticket (For example. When the passenger has used an outbound flight and wants to change an inbound flight)"},"changesStatus":{"$ref":"#/components/schemas/ChangeStatus","description":"Change flight rule type (for the most restrictive condition):\n- T: Non changeable\n- H: Changeable with restrictions\n- F: Free rescheduling"},"changesFee":{"type":"number","description":"Change flight fee (for the most restrictive condition):\n- If`changesStatus`=`H`, it should not be`null`\n- If`changesStatus`=`T/F`, it can be`null`","nullable":true},"currency":{"type":"string","description":"The currency of change flight fee","nullable":true},"revNoshow":{"type":"string","description":"Indicates if a no-show affects changes (for the most restrictive condition).\nValid values:\n- T: Non changeable\n- H: Changeable with restrictions\n- F: Free flight change","default":"T"},"revNoShowCondition":{"type":"integer","description":"Time before scheduled flight departure.","default":0},"revNoshowFee":{"type":"number","description":"The total fee charged to change flight in case of no show. If revNoshow = H, it should not be \"null.\" This value includes the change flight fee and no-show penalty.","default":0},"ruleDetailList":{"type":"array","items":{"type":"object","properties":{"status":{"description":"Level of refund/change.\n- T: Non refundable\n- H: Refundable with restrictions\n- F: Full refundable","$ref":"#/components/schemas/RefundStatus"},"startMinute":{"type":"string","description":"Starting time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"endMinute":{"type":"string","description":"Ending time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"amount":{"type":"string","description":"Penalty amount for refund/change. If the`status`indicates free refund/change, then this field will be either`0`or`null`.","nullable":true},"currency":{"type":"string","description":"The currency of penalty","nullable":true}},"required":["status","startMinute","endMinute"]},"description":"Change conditions"}},"required":["changesType","revNoshow","revNoShowCondition","revNoshowFee"]},"description":"This node is used to fetch the change rules of the fare. There is only one array element for one way, and two elements for round-trip. The first element is for the outbound, and the second element is for the inbound."},"serviceElements":{"type":"array","items":{"type":"object","properties":{"hasFreeSeat":{"type":"integer","description":"A marker used to indicate whether free seat selection is included.\n- `0`: Not included\n- `1`: Included\n- `2`: Partially free"},"hasFreeMeal":{"type":"integer","description":"A marker used to indicate whether free meals are included.\n- `0`: Not included\n- `1`: Included"}}},"description":"This function is used to fetch the other service rules of the fare. There is only one array for one way, and two arrays for round-trip. The first array is for the outbound, and the second array is for the inbound.","nullable":true}},"required":["hasBaggage","baggageElements","refundRules","changesRules"]},"ancillaryProductElements":{"type":"array","items":{"$ref":"#/components/schemas/AncillaryProduct"},"nullable":true},"vendorFare":{"type":"object","properties":{"vendorAdultPrice":{"type":"number","description":"Adult fare per passenger in vendor’s currency"},"vendorAdultTax":{"type":"number","description":"Adult tax per passenger in vendor’s currency"},"vendorChildPrice":{"type":"number","description":"Child fare per passenger in vendor’s currency"},"vendorChildTax":{"type":"number","description":"Child tax per passenger in vendor’s currency"},"vendorInfantPrice":{"type":"number","description":"Infant fare per passenger in vendor’s currency"},"vendorInfantTax":{"type":"integer","description":"Infant tax per passenger in vendor’s currency"},"vendorCurrency":{"type":"string","description":"Vendor’s currency"}},"required":["vendorAdultPrice","vendorAdultTax","vendorChildPrice","vendorChildTax","vendorInfantPrice","vendorInfantTax","vendorCurrency"],"description":"To identify the vendor’s fare with vendor’s currency. It is only available when`supportPaymentMethods`contains`3`or`4`."},"links":{"description":"The terms and conditions links of the airlines. Will only return in verify response.","$ref":"#/components/schemas/TAndCLink"},"separateBookings":{"type":"boolean","description":"When the outbound and inbound of round trip need to be booked separately, it will be true."},"refreshTime":{"type":"string","description":"If the fare is from the cache of Atlas, this field is used to indicate the refresh time of the cache. The time is a certain moment in the past (UTC), and the format is:`yyyy-MM-dd'T'HH:mm:ss'Z'`."},"expireTime":{"type":"string","description":"If the current fare comes from the cache of Atlas, this field is used to indicate the estimated expiration time of the cache. This time is a certain moment in the future (UTC), and the format is:`yyyy-MM-dd'T'HH:mm:ss'Z'`.\n**Note:** \nThis time is estimated, which means Atlas may refresh the cache before or after that time."},"ancillarySupported":{"type":"array","items":{"type":"string"},"description":"A list of ancillary service types that the fare allows for additional purchase. Possible value contains:\n- `luggage`\n- `seat`: You can carry out the subsequent seat selection process through our seat map interface."},"cardChargeList":{"type":"array","items":{"$ref":"#/components/schemas/CardCharge"},"description":"Payment handling fee for MoR/VCC","nullable":true}},"required":["routingIdentifier","supportCreditTransPayment","supportPaymentMethods","currency","adultPrice","adultTax","childPrice","childTax","infantPrice","infantTax","transactionFeePerPax","transactionFee","transactionFeeMode","fromSegments","rule","vendorFare","links","separateBookings","refreshTime","expireTime","ancillarySupported"]},"PriceItem":{"type":"object","properties":{"code":{"type":"string","description":"Machine readable code used to identify this price item."},"type":{"type":"string","description":"Type of this price item.","enum":["base","tax","fee"]},"amount":{"type":"number"},"description":{"type":"string","description":"Human-readable description for this price item.","nullable":true}},"required":["code","type","amount"]},"TransactionFeeMode":{"type":"string","enum":["PER_SEGMENT","PER_TICKET","PER_PAX","PER_BOOKING"],"title":""},"RoutingSegment":{"type":"object","properties":{"aircraftCode":{"type":"string","description":"IATA Code of aircraft type","nullable":true},"arrAirport":{"type":"string","description":"3-letter iata code for the arrival airport at which the segment is scheduled to arrive."},"arrTerminal":{"type":"string","description":"The terminal at the destination airport where the segment is scheduled to arrive.","nullable":true},"arrTime":{"type":"string","description":"The datetime at which the segment is scheduled to arrive, in the arrival airport timezone. The format is `YYYYMMDD`."},"cabin":{"type":"string","description":"RBD(known as Reservation Booking Designator) displayed by the airline.","nullable":true},"cabinClass":{"$ref":"#/components/schemas/CabinClass","description":"Cabin class of the segment.\n- 1: economy\n- 2: business\n- 3: first\n- 4: premium economy"},"carrier":{"type":"string","description":"IATA code of marketing carrier."},"codeShare":{"type":"boolean","description":"A flag used to identify whether it is a code share flight."},"depAirport":{"type":"string","description":"3-letter iata code for the airport at which the segment is scheduled to depart."},"depTerminal":{"type":"string","description":"The terminal at the departure airport from which the segment is scheduled to depart.","nullable":true},"depTime":{"type":"string","description":"The datetime at which the segment is scheduled to depart, in the departure airport timezone. The format is`YYYYMMSS`."},"duration":{"type":"integer","description":"The duration of the segment in munites."},"fareFamily":{"type":"string","description":"Fare Family as per the information received from the airline"},"flightNumber":{"type":"string","description":"Marketing flight number. The format is: CA123 or TR021 or FR1290, with the first two letters representing the carrier and the following number representing the flight number."},"operatingCarrier":{"type":"string","description":"2-letter iata code for the operating carrier. The airline actually operating this segment. This may differ from the marketing carrier in the case of a \"codeshare\", where one airline sells flights operated by another airline.","nullable":true},"operatingFlightnumber":{"type":"string","description":"Operating flight number.","nullable":true},"seatCount":{"type":"integer","description":"Max booking seats for the fare."},"segmentIndex":{"type":"integer","description":"Segment sequence. Starts from 1. If it is return trip, sequence for outbound trip and inbound trip would be together. The segment index also represents the flight sequence of the segment."},"stopCities":{"type":"string","description":"IATA code/Name of cities from where the passengers will take stopover flights. Include IATA code of cities and use a comma in case of multiple cities to separate transfer airports count is higher than 1. For example: `CGK, SUB`. \n`null` or blank means non-stop flight.","nullable":true}},"required":["arrAirport","arrTime","cabinClass","carrier","codeShare","depAirport","depTime","duration","fareFamily","flightNumber","seatCount","segmentIndex"]},"CabinClass":{"type":"integer","enum":[1,2,3,4],"title":""},"AncillaryCategory":{"type":"string","enum":["StandardCheckInBaggage","CabinBaggage","CabinBaggageUnderSeat","CabinBaggageOverheadLocker"]},"RefundStatus":{"type":"string","enum":["T","H","F"]},"AirlineRuleRes":{"type":"object","properties":{"status":{"description":"Level of refund/change.\n- T: Non refundable\n- H: Refundable with restrictions\n- F: Full refundable","$ref":"#/components/schemas/RefundStatus"},"startMinute":{"type":"string","description":"Starting time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"endMinute":{"type":"string","description":"Ending time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"amount":{"type":"string","description":"Penalty amount for refund/change. If the`status`indicates free refund/change, then this field will be either`0`or`null`.","nullable":true},"currency":{"type":"string","description":"The currency of penalty","nullable":true},"refundMethod":{"type":"string","description":"Refund method: CashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment.\n- Voucher: Refund in the form of a voucher.","enum":["CashBackToOriginalPayment","Voucher"],"default":"CashBackToOriginalPayment","nullable":true}},"required":["status","startMinute","endMinute"]},"ChangeStatus":{"type":"string","enum":["T","H","F"]},"AncillaryProduct":{"type":"object","properties":{"ancillaryCode":{"type":"string","description":"A code that is relatively readable by humans and contains information about auxiliary business specifications (such as weight and quantity limitations of luggage). \n**Note:** \nThis content is only for display purposes and should not be used for programming purposes. That is to say, do not attempt to parse the information about auxiliary business specifications from this code. If you want to access the auxiliary business specifications, please use structured fields. For example, for luggage, please use`auxBaggageElement`."},"auxBaggageElement":{"type":"object","properties":{"isAllWeight":{"type":"boolean","description":"Mark whether the`weight`field restricts the total weight or the weight of a single piece.\n- `true`: The weight is for all the pieces\n- `false`: The weight is for each piece"},"piece":{"type":"integer","description":"The maximum number of pieces that can be purchased per person.\n- `0`: No Limitation about piece\n- `>0`: Maximum pieces"},"size":{"type":"string","description":"Maximum size for the baggage","nullable":true},"weight":{"type":"integer","description":"The maximum weight that can be purchased per person.\n- `0`: No limitation for weight\n- `>0`: Weight limit (KG)"}},"description":"Baggage specification limitations. This node is valid only when the ancillary type (`categoryCode`) is baggage.","required":["isAllWeight","piece","weight"],"nullable":true},"canPurchasePostTicket":{"type":"integer","description":"A flag used to mark if this ancillary product can be purchased in the post-ticketing flow.\n- `0`: No\n- `1`: Yes"},"canPurchaseWithTicket":{"type":"integer","description":"A flag used to mark if this ancillary product can be purchased during the booking flow.\n- `0`: No\n- `1`: Yes"},"categoryCode":{"description":"Type of the ancillary.\n\n- StandardCheckInBaggage: Standard Check-in Baggage.\n- CabinBaggage: Usually refers to the Cabin Baggage Overhead Locker. Transition value. It will gradually transition to `CabinBaggageOverheadLocker`.\n- CabinBaggageOverheadLocker: Cabin Baggage Overhead Locker.\n- CabinBaggageUnderSeat: Cabin Baggage Under Seat. Usually refers to the personal item.","$ref":"#/components/schemas/AncillaryCategory"},"clientTechnicalServiceFee":{"type":"number","description":"The service fee charged by Atlas for the purchase of the ancillary.","nullable":true},"currency":{"type":"string","description":"The currency in which Atlas settles transactions with you"},"maxQty":{"type":"integer","description":"The maximum number of purchases allowed per person per flight segment"},"minQty":{"type":"integer","description":"The minimum quantity allowed to be purchased per person per flight segment."},"price":{"type":"number","description":"Price for this ancillary."},"productCode":{"type":"string","description":"Unique identifier for the ancillary product. It would be used in the order request."},"segmentIndex":{"type":"integer","description":"The index of segment the ancillary applies to."},"vendorCurrency":{"type":"string","description":"The currency in which the vendor charges for the ancillary. If the fare does not allow for the VCC pass-through or BYOA payment, this information will be`null`."},"vendorPrice":{"type":"integer","description":"The price charged by the vendor for the ancillary. If the fare does not allow for the VCC pass-through or BYOA payment, this information will be`null`."}},"required":["ancillaryCode","canPurchasePostTicket","canPurchaseWithTicket","categoryCode","currency","maxQty","minQty","price","productCode","segmentIndex","vendorCurrency","vendorPrice"]},"TAndCLink":{"type":"object","properties":{"carrier":{"type":"string","description":"IATA code for the airline"},"kind":{"type":"string","description":"always:`terms`"},"link":{"type":"string","description":"URL to the carrier's terms and conditions"},"description":{"type":"string","description":"Carrier terms and conditions"}},"required":["carrier","kind","link","description"]},"CardCharge":{"type":"object","properties":{"cardType":{"description":"Card types, such as Visa, MasterCard","$ref":"#/components/schemas/CardType"},"percentage":{"type":"number","description":"Percentage of payment handling fee","nullable":true},"charge":{"type":"number","description":"The amount of payment handling fee","nullable":true},"currency":{"type":"string","description":"Currency of `charge`","nullable":true}},"required":["cardType"]},"CardType":{"type":"string","enum":["Amex","Visa","MasterCard","JCB","Discover","DinersClub"]},"TicketErrorCodes":{"type":"string","enum":["601","602","603","604","605","6051","606","607","608","609","611","613","614","615","616","617","618","619","620","621","623","624","625","626","627","628","629","630","631","632","633","634","698","699"]},"RefundRule2":{"type":"object","properties":{"airline":{"type":"string","description":"IATA code of the airline"},"ruleType":{"$ref":"#/components/schemas/RefundRuleType","description":"Type of refund rule"},"passengerType":{"type":"string","description":"The passenger types(separated by`/`) to which the rule applies, .`null`means that it is applicable to all passenger types.\n-`ADT`\n-`CHD`\n-`INF`","nullable":true},"penaltyAmount":{"type":"number","description":"The absolute amount of the penalty"},"penaltyPercent":{"type":"number","description":"The percentage of the penalty"},"penaltyPercentBase":{"type":"string","description":"The percentage base of the penalty","enum":["fare+tax","fare"]},"airlineFee":{"type":"number","description":"Airline ticket refund fee"},"taxRefundable":{"type":"boolean","description":"Whether tax can be refunded"},"fareRefundable":{"type":"boolean","description":"Whether fare can be refunded"},"refundableAncillaries":{"type":"array","items":{"type":"string"},"description":"Ancillary service types that can be refunded together with the ticket.","nullable":true},"startMinute":{"type":"integer","description":"Starting time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"endMinute":{"type":"integer","description":"Ending time of rule application. Positive numbers represent XXX minutes before departure. Negative numbers represent XXX minutes after departure."},"refundMethod":{"$ref":"#/components/schemas/RefundMethod","description":"The method of fund refund","nullable":true}},"required":["airline","ruleType","taxRefundable","fareRefundable","startMinute","endMinute"]},"RefundRuleType":{"type":"string","enum":["0","1","2"]},"RefundMethod":{"type":"string","enum":["CashBackToOriginalPayment","Voucher"]},"IfSeatOccupied":{"type":"string","enum":["SIMILAR_SEAT","STOP_SEAT","STOP_TICKET"]},"PaymentOption":{"type":"object","properties":{"paymentMethod":{"$ref":"#/components/schemas/PaymentMethod","description":"Payment method.\n- 1: balance\n- 3: vcc passthrough\n- 4: BYOA\n- 5: MoR"},"ticketFare":{"$ref":"#/components/schemas/PaymentOptionDetail","description":"It is used to describe the total ticket price and how the deduction will be made."},"serviceFee":{"$ref":"#/components/schemas/PaymentOptionDetail","nullable":true,"description":"It is used to describe the total service and how the deduction will be made."},"paymentFee":{"$ref":"#/components/schemas/PaymentOptionDetail","nullable":true,"description":"It is used to describe the payment fee and how the deduction will be made."},"cardType":{"type":"string","description":"Only for MoR. Echo the card type you sent in order request.","nullable":true}},"required":["paymentMethod","ticketFare"]},"PaymentOptionDetail":{"type":"object","properties":{"amount":{"type":"number","description":"Total amount will be deducted."},"currency":{"type":"string","description":"Currency of the`amount`"},"deductFrom":{"type":"string","enum":["DEPOSIT","CARD"],"description":"Deduction method"}},"required":["amount","currency","deductFrom"]}}}}
```
