Egencia Reporting API (BI Transactions)

Consolidated booking transaction data out of Egencia, and the closest thing in the estate to a documented exit path. POST /v1/transactions creates a filtered report over a date range and returns pagination links; GET /v1/transactions/{reportId} pages the result. Line-of-business variants cover air, hotel, car, train, ground and fees, with segment, leg and ticketing detail. The response schemas carry portable industry identifiers - pnr and record_locator, marketing, operating and ticketing carrier codes, hotel_chain_code, ticket_code, confirmation_number and invoice_number - alongside Egencia's own itinerary_number. A separate GET /v1/egencia_iata returns the IATA agency code for a given point of sale, and an is_ndc flag records whether an air booking was made through NDC.

OpenAPI Specification

amex-gbt-reporting-api-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"description":"<h1>Terms & Conditions</h1>\n<p>All details on this document are copyrighted and are protected by Egencia copyright laws. Any unauthorized use of any\n    part of this document may violate copyright laws and may lead to legal actions. By accepting the terms and\n    conditions, you acknowledge and agree that Egencia have the right, in its sole discretion, to modify these terms.\n    Egencia will notify you about material changes to this Agreement by sending a notice to the email address, fax\n    number, or other address that you provided to us or by placing a prominent notice on the APIs and SPIs. Customers\n    will be responsible for reviewing and becoming familiar with any such modifications.\n    Egencia will notify Consumer and Shared Client of the availability of new major versions and provide the timeframe\n    for the Consumer to upgrade.</p>\n<h2>Versions</h2>\n<p>Egencia will release new version of the software with backward compatibility only when there is significant\n    change(s). These changes can be structural, and can contain enhancements, major bug fixes, or change of behavior,\n    new fields added, or fields removed.</p>\n<h1>Introduction to the Document</h1>\n<p>This document provides a reference for both query and response for the BI Transactions API version 1.0. This document\n    includes a series of notes and instructions that outline the BI Transactions API version 1. The API provides users\n    with a simple, standardised, resource-oriented, RESTful interface with JSON-formatted responses that make it easy to\n    fetch, filter and retrieve Transaction data. To have a secure data transfer and streamlined integration, we use the\n    HTTPs protocol for API calls.</p>\n<p>To help you find what you're looking for, this documentation is divided into three sections: API, Authentication and\n    Resources.</p>\n<ul>\n    <li><strong>Authentication</strong>: This section explains how to authenticate your requests to the API using OAuth\n        2.0.\n    </li>\n    <li><strong>API</strong>: This section introduces general elements of the API, including requests, responses and\n        rate limits.\n    </li>\n    <li><strong>Resources</strong>: This section describes the resources and actions available via the API, including\n        the possible parameters with example requests and responses.\n    </li>\n</ul>\n\n<h2>Audience</h2>\n<p>This document is aimed for BI Transactions API customers, partners and software developers who would like to consume\n    the BI Transactions API.</p>\n\n<h1>Introduction to BI Transaction API</h1>\n<p>BI Transactions API offers an interface for customers and partners to retrieve consolidated booking transaction data\n    from Egencia. The BI Transactions API is organised around REST /JSON over HTTPS for transaction data retrieval. This\n    API accepts JSON requests and returns JSON responses, and uses standard HTTPs response codes, authentication, and\n    verbs. The following offerings are available:</p>\n<div>\n    <table>\n        <thead>\n        <th>\n            <div>Transaction Type</div>\n        </th>\n        <th>\n            <div>Description</div>\n        </th>\n        </tr></thead>\n        <thead>\n        <div>Description</div>\n        </th></tr></thead>\n        <tbody>\n        <tr>\n            <td>All Line of business transactions (summary)</td>\n            <td>Offers booking transaction data for all line of businesses which gives a consolidated summary view.</td>\n        </tr>\n        <tr>\n            <td>Air transactions</td>\n            <td>Offers booking transaction data for specifically Air transactions.</td>\n        </tr>\n        <tr>\n            <td>Air transactions including segment information</td>\n            <td>Offers booking transaction data for specifically Air including segment level information.</td>\n        </tr>\n        <tr>\n            <td>Air transactions including ticketing information</td>\n            <td>Offers booking transaction data for specifically Air including ticketing level information.</td>\n        </tr>\n        <tr>\n            <td>Hotel transactions</td>\n            <td>Offers booking transaction data for specifically Hotel transactions.</td>\n        </tr>\n        <tr>\n            <td>Train transactions</td>\n            <td>Offers booking transaction data for specifically Train transactions.</td>\n        </tr>\n        <tr>\n            <td>Train transactions including segment information</td>\n            <td>Offers booking transaction data for specifically Train transactions including segment level information.\n            </td>\n        </tr>\n        <tr>\n            <td>Train transactions including leg information</td>\n            <td>Offers booking transaction data for specifically Train transactions including leg level information.\n            </td>\n        </tr>\n        <tr>\n            <td>Car transactions</td>\n            <td>Offers booking transaction data for specifically Car transactions.</td>\n        </tr>\n        <tr>\n            <td>Fee transactions</td>\n            <td>Offers booking transaction data for specifically Fee transactions.</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h2 id=\"versioning\">Versioning</h2>\n<p>Egencia will notify the Client about the availability of new major versions and provide the timeframe for the\n    upgrades. Major version is a new version of the software with a significant change(s). Minor version is a new\n    version of the software with possible backward compatibility and with a minor degree of change. The changes can be\n    structural, and can contain enhancements, major bug fixes, or change of behavior, endpoint changes, new fields\n    added, or fields removed. The version change log will list all the changes included in the corresponding version\n    from the previous one.</p>\n\n<h3>Version Change Log</h3>\n<p>You can also see a full API version change log under this heading.</p>\n<div>\n    <table>\n        <tbody>\n        <tr>\n            <td><strong>Change log</strong></td>\n        </tr>\n        <tr>\n            <td><strong>API</strong></td>\n            <td><strong>Current Version</strong></td>\n            <td><strong>What has changed?</strong></td>\n        </tr>\n        <tr>\n            <td>Reporting</td>\n            <td>Version 1</td>\n            <td>First stable version.</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h2>Implementation method</h2>\n<p>Public BI Transactions API is a generic and secure solution to allow clients to access their previous booking\n    transaction data dynamically for different dates and other user query filters such as ob, locale, currency code or\n    report level.</p>\n<div>\n    <table style=\"padding: 0px;\">\n        <colgroup>\n            <col style=\"width: 87.0px;\">\n            <col style=\"width: 134.0px;\">\n        </colgroup>\n        <thead style=\"position: static; margin-top: 0px; left: 325px; z-index: 3; width: 250px; top: 40px;\">\n        <tr style=\"margin-left: 30.0px;\">\n            <th colspan=\"1\"\n                data-column=\"0\" tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\"\n                aria-sort=\"none\" aria-label=\"Endpoint: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none; min-width: 8px; max-width: none;\">\n                <div>Endpoint</div>\n            </th>\n            <th data-column=\"1\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"/v1/transactions: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none; min-width: 8px; max-width: none;\">\n                <div><p><strong>/v1/transactions</strong></p></div>\n            </th>\n        </tr>\n        </thead>\n        <thead style=\"display: none;\">\n        <tr style=\"margin-left: 30.0px;\" role=\"row\">\n            <th colspan=\"1\"\n                data-column=\"0\" tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\"\n                aria-sort=\"none\" aria-label=\"Endpoint: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div>Endpoint</div>\n            </th>\n            <th data-column=\"1\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"/v1/transactions: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div><p><strong>/v1/transactions</strong></p></div>\n            </th>\n        </tr>\n        </thead>\n        <tbody style=\"margin-left: 30.0px;\" aria-live=\"polite\" aria-relevant=\"all\">\n        <tr style=\"margin-left: 30.0px;\" role=\"row\">\n            <td colspan=\"1\"><span style=\"color: rgb(80,80,80);\">Method</span></td>\n            <td colspan=\"1\"><strong>POST</strong></td>\n        </tr>\n        <tr style=\"margin-left: 30.0px;\" role=\"row\">\n            <td colspan=\"1\"><span\n                    style=\"color: rgb(80,80,80);\">Content-type</span><strong>&nbsp;</strong></td>\n            <td colspan=\"1\"><strong>application/json</strong></td>\n        </tr>\n        <tr style=\"margin-left: 30.0px;\" role=\"row\">\n            <td colspan=\"1\"><span style=\"color: rgb(80,80,80);\">Accept</span></td>\n            <td colspan=\"1\"><strong>application/hal+json</strong></td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h2>Base Endpoint URL</h2>\n<p>The Endpoint URL for communicating with the Transaction API system is:</p>\n<div>\n    <table>\n        <tbody>\n        <tr>\n            <strong>POST {{transactionUrl}}</strong>\n        </tr>\n        </tbody>\n    </table>\n</div>\n<p>Please note the use of the https protocol. This ensures that all data that travels between the server and your\n    program are encrypted. This protects your credentials and the transmitted data.</p>\n\n<h1 id=\"authentication\">Authentication</h1>\n<p>Before you can access the BI Transactions API, you need to authenticate and authorise who you are. Our API uses the\n    OAuth 2.0 standard for authentication.</p>\n<p>\n    <em>Note: All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without\n        authentication will also fail.</em>\n</p>\n<p>Before calling Transaction data API the client should be successfully authorized with Egencia's Authentication\n    service. The access token generated within authorization step should be provided in the further call(s) to the API.\n</p>\n<h2>Authorization</h2>\n<p>Egencia transaction data API supports access token based on OAuth2.0 protocol. A client ID and Client Secret ID will\n    be generated and shared to the client.</p>\n\n<h2>Client IDs and Secrets</h2>\n<p>The Client ID and Client Secret are like a username and password that authenticate your application. They aren't used\n    directly in making most API requests, instead, they are exchanged for tokens, which are used to make the actual\n    requests.</p>\n<p>All requests to the OAuth 2.0 endpoint must be given your credentials in the form of Basic authentication. To comply\n    with the <a href=\"http://tools.ietf.org/html/rfc2617#page-5\">HTTP requirements</a>, your Client ID\n    and Secret should be encoded in base 64.\n</p>\n<p>Make sure to keep the client secret secure - anyone who has it can impersonate your application!</p>\n<div>\n    <table role=\"grid\" resolved=\"\"\n           style=\"padding: 0px;\">\n        <thead style=\"position: static; margin-top: 0px; left: 325px; z-index: 3; width: 642px; top: 92px;\">\n        <tr role=\"row\">\n            <th style=\"text-align: left; user-select: none; min-width: 8px; max-width: none;\"\n                data-column=\"0\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Endpoint: No sort applied, activate to apply an ascending sort\">\n                <div>Endpoint</div>\n            </th>\n            <th style=\"text-align: left; user-select: none; min-width: 8px; max-width: none;\"\n                data-column=\"1\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Headers: No sort applied, activate to apply an ascending sort\">\n                <div>Headers</div>\n            </th>\n            <th style=\"text-align: left; user-select: none; min-width: 8px; max-width: none;\"\n                data-column=\"2\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"HTTP method: No sort applied, activate to apply an ascending sort\">\n                <div>HTTP method</div>\n            </th>\n        </tr>\n        </thead>\n        <thead style=\"display: none;\">\n        <tr role=\"row\">\n            <th style=\"text-align: left; user-select: none;\"\n                data-column=\"0\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Endpoint: No sort applied, activate to apply an ascending sort\">\n                <div>Endpoint</div>\n            </th>\n            <th style=\"text-align: left; user-select: none;\"\n                data-column=\"1\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Headers: No sort applied, activate to apply an ascending sort\">\n                <div>Headers</div>\n            </th>\n            <th style=\"text-align: left; user-select: none;\"\n                data-column=\"2\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"HTTP method: No sort applied, activate to apply an ascending sort\">\n                <div>HTTP method</div>\n            </th>\n        </tr>\n        </thead>\n        <tbody aria-live=\"polite\" aria-relevant=\"all\">\n        <tr role=\"row\">\n            <td>/auth/v1/tokens</td>\n            <td><span>Authorization:</span>&nbsp;Basic\n                base64encode(client_id:client_secret)<br><span>Content-Type:</span>&nbsp;application/x-www-form-urlencoded\n            </td>\n            <td>Post</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n<p>\n    Post the client_id and client_secret to the URL\n    <a href=\"{{authUrl}}\" rel=\"nofollow\">{{authUrl}}</a> to\n    obtain an access token which you can then use to call BI Transactions APIs.&nbsp;</span>\n</p>\n\n<h3>Examples</h3>\n<p>Request</p>\n<div>\n    <table>\n        <tbody>\n        <tr>\n            <strong>{ \"client_id\":\"lliz84o5554csgss8s48gss\", \"grant_type\":\"client_credentials\" }</strong>\n        </tr>\n        </tbody>\n    </table>\n</div>\n<p>Response (status code = 200)</p>\n<div>\n    <table>\n        <tbody>\n        <tr>\n            <strong>{ \"access_token\": \"JWT access token\", \"expires_in\": 3600, \"token_type\": \"Bearer\" }</strong>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<p>The access token generated within Authorization call kept alive within expiration time provided in the successful\n    authorization response, no need to generate new access token each time the Client calls BI Reporting API until\n    it expires. Expiration time provided in seconds.</p>\n<p><span>NOTE:</span></p>\n<ul>\n    <li>The values for client id and client secret will be provided to the Client after on-boarding to Egencia API\n        platform.\n    </li>\n    <li>All the fields provided in the request-response samples are mandatory.</li>\n</ul>\n\n<h1>Overview Of BI Transactions API</h1>\n<p>The Egencia BI Transactions API is the new solution that is being offered to clients for accessing their booking data\n    in a programmatic method. With the help of the Egencia BI Transactions API you can</p>\n<ul>\n    <li>Retrieve data for your custom reports programmatically in JSON format</li>\n    <li>Apply filters as request parameters and automate reporting tasks</li>\n</ul>\n<h2>Pagination</h2>\n<p>Doing a POST of BI API will return the metadata (hyperlinks) of the resource from where all the qualified\n    transactions will be fetched in a paginated manner. You can page through the resource by making a GET request to the\n    \"next\" URL provided in the paginated response. If there are no more pages, \"next\" will be set null. The users can\n    page through any valid page number at any time using the Get request.</p>\n\n<h1>Request &amp; Response</h1>\n<h2>Sample Request</h2>\n<p>This API call allows the client to submit a request for retrieving transactions for a specified search criterion.</p>\n<div>\n    <table>\n        <thead>\n        <tr>\n            <th>Method</th>\n            <th>Endpoints</th>\n            <th>Description</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for all LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/air</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for air LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/car</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for car LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/train</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for train LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/hotel</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for hotel LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/fees</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for fee LOBs.</span></td>\n        </tr>\n        <tr>\n            <td>Post</td>\n            <td><span>/v1/transactions/ground</span></td>\n            <td>Creates paginated transaction queries and metadata based on search criteria for ground LOBs.</span></td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h3>Request Parameters</h3>\n<div>\n    <table style=\"letter-spacing: 0px; width: 92.2059%; padding: 0px;\" role=\"grid\" resolved=\"\">\n        <colgroup>\n            <col style=\"width: 9.1853%;\">\n            <col>\n            <col style=\"width: 7.7476%;\">\n            <col style=\"width: 83.0671%;\">\n        </colgroup>\n        <thead>\n        <tr>\n            <th data-column=\"0\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Attribute: No sort applied, activate to apply an ascending sort\" style=\"user-select: none;\">\n                <div>Attribute</div>\n            </th>\n            <th colspan=\"1\"\n                data-column=\"1\" tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\"\n                aria-sort=\"none\" aria-label=\"Required/optional: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div>Required/optional</div>\n            </th>\n            <th colspan=\"1\"\n                data-column=\"2\" tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\"\n                aria-sort=\"none\" aria-label=\"Type: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div>Type</div>\n            </th>\n            <th data-column=\"3\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"Description: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div>Description</div>\n            </th>\n        </tr>\n        </thead>\n        <tbody aria-live=\"polite\" aria-relevant=\"all\">\n        <tr>\n            <td>start_date, end_date</td>\n            <td>Required</td>\n            <td>String</td>\n            <td>Specific date range for which the transaction data is requested.The date range to fetch the booking\n                transactions data. Timestamp in format: YYYY-MM-DD HH:MM:SS. (Example:\"2020-05-05 09:00:00\")\n                These should come as a pair.Note: Future date is only allowed if the date_type is set as travel_date.\n                <ul>\n                    <li>Both start and end date is mandatory. If either start date or end date is missing it will it\n                        throw an error\n                    </li>\n                    <li>Default timezone is UTC</li>\n                </ul>\n            </td>\n        </tr>\n        <tr>\n            <td>locale</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>Locale represents the supported language to get the report. Accepted values are: nb-NO, de-DE, en-US,\n                en-CA, es-ES, fr-CA, it-IT, nl-NL, sv-SE, en-AU, da-DK, fr-FR, en-GB (Defult locale is en-US)\n                Note: This value is case sensitive.\n            </td>\n        </tr>\n        <tr>\n            <td>currency_code</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>3 character currency code to get the amount in given currency. Accepted Values are: CHF, ARS, MXN, CLP,\n                ZAR, INR, VND, CNY, THB, AUD, ILS, JPY, PLN, GBP, IDR, PHP, TRY, RUB, AED, HKD, EUR, COP, DKK, CAD, MYR,\n                USD, NOK, SGD, CZK, SEK, NZD, BRL, UAH\n            </td>\n        </tr>\n        <tr>\n            <td>includes</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>Value: [“cdf”]. To include custom data fields in the  response.  Custom  data  fields will  now come  in\n                response  only  when  requested  by users in the include option. Values: [“cdf”].\n                Includes [“co2”]only for LOB Air. To include co2 emission details in the response for air (ticket, leg\n                and segment). Co2 emission values will now come in the air response only when requested by users in the\n                include option. Values: [“co2”]\n            </td>\n        </tr>\n        <tr>\n            <td>report_level</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>Report level for the LOB's air and train to retrieve data for a specific report level.\n                \"ticket, segment, leg\" are the three different requests configured by report_level field.\n                If this data is not provided Ticket Level data will be returned by default.\n            </td>\n        </tr>\n        <tr>\n            <td>date_type</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>The date type to search the records. You can search for records based on travel date as well as issue\n                date. \"Issue date\" and \"travel date\" will provide data based on issue date and travel date respectively.\n                If no value is passed as datetype, issue date will be considered by default.\n                Note : Issue date cannot be future date. However, travel date can be a future date or past date.\n            </td>\n        </tr>\n        <tr>\n            <td>active_records_only </td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>A string to select only the records with active ticket status or all records, present for a given start\n                and end date. The possible values for the string are \"true\" or \"false\". By default, it is set as\n                false which would show all the records for a time period. By passing true, you can exclude\n                bookings and items that have been cancelled, exchanged, voided, or refunded.\n            </td>\n        </tr>\n        <tr>\n            <td>client_ids</td>\n            <td>Optional</td>\n            <td>List&lt;String&gt; </td>\n            <td>With this parameter, it becomes possible for a client or a partner to specify the\n                companies for which they want the reporting data. It accepts a list of the client ids given in string format.\n                If no value is given, by default data will be returned for all associated companies for the client.\n                Note: Passing incorrect company Id values or non numeric values would return an error.\n            </td>\n        </tr>\n        <tr>\n            <td>reconciled_records_only&nbsp;</td>\n            <td>Optional</td>\n            <td>String</td>\n            <td>A string to select only the reconciled records, present for a given start\n                and end date. The possible values for the string are \"true\" or \"false\". By default, it is set as\n                false which would show all the records for a time period. By passing true, you recieve only the records undergoing\n                reconciliation process.\n            </td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h3>Request Body</h3>\n<div>\n    <table role=\"grid\" resolved=\"\">\n        <colgroup>\n            <col>\n        </colgroup>\n        <thead>\n        <tr role=\"row\">\n            <th data-column=\"0\"\n                tabindex=\"0\" scope=\"col\" role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n                aria-label=\"POST {{transactionUrl}}: No sort applied, activate to apply an ascending sort\"\n                style=\"user-select: none;\">\n                <div>\n                    <pre><code>POST {{transactionUrl}}</code></pre>\n                </div>\n            </th>\n        </tr>\n        </thead>\n        <tbody aria-live=\"polite\" aria-relevant=\"all\">\n        <tr role=\"row\">\n            <td><pre>\n            {\n                \"start_date\": \"2019-01-01 09:00:00\",\n                \"end_date\": \"2020-05-05 09:00:00\",\n                \"locale\": \"en-US\",\n                \"currency_code\": \"USD\",\n                \"includes\":[\"cdf\"],\n                \"report_level\":\"leg\"\n                \"date_type: \"issue_date\",\n                \"active_records_only\":\"true\",\n                \"client_ids\":[\"10098\",\"13882\",\"19120\"],\n                \"reconciled_records_only\":\"true\"\n             }\n             </pre>\n            </td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h2>Sample Response</h2>\n<h3>Response Parameters</h3>\n<div>\n    <table>\n        <thead>\n        <tr>\n            <th>\n               Attribute\n            </th>\n            <th>\n                Type\n            </th>\n            <th>\n                Description\n            </th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr><td colspan=\"3\"><strong>metadata</strong></td></tr>\n        <tr>\n            <td>page_limit</td>\n            <td>Integer</td>\n            <td>The maximum number of records allowed in a single page.</td>\n        </tr>\n        <tr>\n            <td>total_records</td>\n            <td>Integer</td>\n            <td>Total number of records in the response.</td>\n        </tr>\n        <tr>\n            <td>total_pages</td>\n            <td>Integer</td>\n            <td>Total Pages in the response.</td>\n        </tr>\n        <tr>\n            <td>report_id</td>\n            <td>String</td>\n            <td>Unique identifier for the Report. Example: \"ec49a1c4-4a49-4916-b60e-81c1bcf8b07b\"\n            </td>\n        </tr>\n        <tr>\n            <td>latest_reconciled_date</td>\n            <td>String</td>\n            <td>The latest reconciled date of the records in the response.\"\n            </td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h3>Success Response</h3>\n<div>\n    <table>\n        <thead>\n        <tr>\n            <th>Code</th>\n            <th>Description</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr>\n            <td>200</td>\n            <td>Ok</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h3>Sample Response</h3>\n<div>\n    <table>\n        <tbody aria-live=\"polite\" aria-relevant=\"all\">\n        <tr role=\"row\">\n            <td><pre>\n            {\n                \"metadata\": {\n                    \"page_limit\": 100,\n                    \"total_records\": 8592,\n                    \"total_pages\": 86,\n                    \"latest_reconciled_date\": \"2020-04-19 00:00:00\"\n                },\n                \"_links\": {\n                    \"next\": {\n                        \"href\": \"{{transactionUrl}}/c1eb18d8-35e0-464f-b94e-0d371c1cb41b?page=1\"\n                    },\n                    \"last\": {\n                        \"href\": \"{{transactionUrl}}/c1eb18d8-35e0-464f-b94e-0d371c1cb41b?page=84\"\n                    }\n                },\n                \"report_id\": \"c1eb18d8-35e0-464f-b94e-0d371c1cb41b\"\n            }\n             </pre>\n            </td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n\n<h2>Request for Retrieving Data</h2>\n<div>\n    <table>\n        <thead>\n        <tr>\n            <th>Method</th>\n            <th>Endpoint</th>\n            <th>Description</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr>\n            <td>GET</td>\n            <td>/v1/transactions/{id}?page={page_number}</td>\n            <td>Creates detailed transaction reports based on search criteria</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n<h3>Request Parameters</h3>\n<div>\n    <table>\n        <thead>\n        <tr>\n            <th>Attribute</th>\n            <th>Type</th>\n            <th>Description</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr>\n            <td>report_id</td>\n            <td>String</td>\n            <td>Report ID used to fetch transaction records based on the search criteria and metadata</td>\n        </tr>\n        <tr>\n            <td>page_number</td>\n            <td>String</td>\n            <td>Page number the user wants to access</td>\n        </tr>\n        </tbody>\n    </table>\n</div>\n<h2>Response</h2>\n<h3>Response Parameters</h3>\n<div class=\"table-wrap\">\n    <table class=\"relative-table\" style=\"width: 90.8088%;\" resolved=\"\">\n        <colgroup>\n            <col style=\"width: 16.7747%;\">\n            <col style=\"width: 4.86224%;\">\n            <col style=\"width: 78.363%;\">\n        </colgroup>\n        <tbody>\n        <tr>\n            <th colspan=\"1\">Attribute</th>\n            <th colspan=\"1\">Type</th>\n            <th colspan=\"1\">Description</th>\n        </tr>\n        <tr>\n            <th colspan=\"3\">Transactions: Transaction response based on different user filters</th>\n        </tr>\n        <tr>\n            <td colspan=\"1\">advance_purchase_days</td>\n            <td colspan=\"1\">String</td>\n            <td colspan=\"1\">Advance purchase days.</td>\n        </tr>\n        <tr>\n            <td colspan=\"1\">booking_method</td>\n            <td colspan=\"1\">String</td>\n            <td colspan=\"1\">Online or Agent-assisted. Online indicates a booking made through\n                the Egencia website or mobile app without the assistance of an Egencia travel consultant. Agent-assisted\n                indicates bookings made offline with the assistance of an Egencia travel consultant.</td>\n        </tr>\n        <tr>\n            <td colspan=\"1\">cabin_class</td>\n            <td colspan=\"

# --- truncated at 32 KB (215 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amex-gbt/refs/heads/main/openapi/amex-gbt-reporting-api-openapi.json