{
    "info": {
        "name": "DubaiLand Travel API",
        "description": "Generated from the live contract. Set `client_id` and `client_secret` on the collection, then send.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "basic",
        "basic": [
            {
                "key": "username",
                "value": "{{client_id}}",
                "type": "string"
            },
            {
                "key": "password",
                "value": "{{client_secret}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "base_url",
            "value": "https://staging.dubailandtravel.com/partner/v1"
        },
        {
            "key": "client_id",
            "value": "sk_test_\u2026"
        },
        {
            "key": "client_secret",
            "value": ""
        }
    ],
    "item": [
        {
            "name": "Account",
            "item": [
                {
                    "name": "The account at a glance",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/account",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account"
                            ]
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Usage for a closed or current period",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/account/usage",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account",
                                "usage"
                            ]
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Every movement on the account in a period, with a running balance",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/account/statement",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account",
                                "statement"
                            ]
                        },
                        "description": "The running balance is what makes this reconcilable line by line rather\nthan only in total \u2014 a partner whose closing figure disagrees with ours\nneeds to find WHERE, not merely THAT."
                    }
                }
            ]
        },
        {
            "name": "Flights",
            "item": [
                {
                    "name": "Search flights",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/flights/search",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "flights",
                                "search"
                            ]
                        },
                        "description": "Returns offers already priced for the calling partner. A supplier\nfailing degrades the search rather than failing it.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"slices\": [\n        {\n            \"origin\": \"BGW\",\n            \"destination\": \"DXB\",\n            \"date\": \"2026-12-02\"\n        }\n    ],\n    \"passengers\": {\n        \"adults\": 1\n    }\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Read a held search",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/flights/search/{{searchId}}/results",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "flights",
                                "search",
                                "{{searchId}}",
                                "results"
                            ]
                        },
                        "description": "Cheap \u2014 the offers were computed once. Paging or filtering a result set\na partner already has must never cost another supplier call, and must\nnever consume their search rate limit either."
                    }
                },
                {
                    "name": "Confirm a price",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/flights/offers/{{offerId}}/confirm-price",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "flights",
                                "offers",
                                "{{offerId}}",
                                "confirm-price"
                            ]
                        },
                        "description": "Mandatory before an order. Airfare moves between search and booking\noften enough that ordering from a held price is a chargeback waiting to\nhappen \u2014 and in B2B it would be the partner absorbing it, which is worse.\n\nReturns a token bound to the offer and its final amount. Ordering\nwithout one is refused."
                    }
                }
            ]
        },
        {
            "name": "Hotels",
            "item": [
                {
                    "name": "Search hotels",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/hotels/search",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "hotels",
                                "search"
                            ]
                        },
                        "description": "Returns rates already priced for the calling partner. A supplier failing\ndegrades the search rather than failing it.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"city_code\": \"DXB\",\n    \"check_in\": \"2026-12-02\",\n    \"check_out\": \"2026-12-05\",\n    \"rooms\": 1,\n    \"adults\": 2\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Read a held search",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/hotels/search/{{searchId}}/results",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "hotels",
                                "search",
                                "{{searchId}}",
                                "results"
                            ]
                        },
                        "description": "Cheap \u2014 the rates were computed once. Paging or filtering a result set a\npartner already holds must never cost another supplier call, and must\nnever consume their search rate limit either."
                    }
                },
                {
                    "name": "Confirm a rate",
                    "request": {
                        "method": "POST",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/hotels/offers/{{offerId}}/confirm-price",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "hotels",
                                "offers",
                                "{{offerId}}",
                                "confirm-price"
                            ]
                        },
                        "description": "Mandatory before an order, and for more than the price: a cancellation\npolicy that changed between search and booking is a promise we would\notherwise make and not keep \u2014 and in B2B it is the partner who would\nhave made it to their customer.\n\nReturns a token bound to the offer and its final amount. Ordering\nwithout one is refused."
                    }
                }
            ]
        },
        {
            "name": "Orders",
            "item": [
                {
                    "name": "Place an order",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders"
                            ]
                        },
                        "description": "Requires an `Idempotency-Key`. Draws the total from the partner's\nbalance, creates the order with the supplier, and returns the\nconfirmation. A refusal at the supplier releases the hold immediately \u2014\nthe partner is never out of pocket for a booking that did not happen.\n\nA 402 means the balance and credit limit together do not cover it, and\nthe body states the shortfall.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"items\": [\n        {\n            \"type\": \"flight\",\n            \"offer_id\": \"{{offer_id}}\",\n            \"price_confirmation_token\": \"{{price_confirmation_token}}\"\n        }\n    ],\n    \"passengers\": [\n        {\n            \"type\": \"ADT\",\n            \"first_name\": \"Dana\",\n            \"last_name\": \"Aziz\",\n            \"date_of_birth\": \"1990-04-02\",\n            \"gender\": \"F\",\n            \"nationality\": \"IQ\",\n            \"is_lead\": true,\n            \"document\": {\n                \"type\": \"passport\",\n                \"number\": \"A1234567\",\n                \"issuing_country\": \"IQ\",\n                \"expires_on\": \"2031-11-02\"\n            }\n        }\n    ],\n    \"contact\": {\n        \"email\": \"traveller@example.com\",\n        \"phone\": \"+9647701234567\"\n    },\n    \"partner_reference\": \"your-own-id\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "List orders",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/orders",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders"
                            ]
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Read an order",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}"
                            ]
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Cancel an order",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}/cancel",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}",
                                "cancel"
                            ]
                        },
                        "description": "Returns the penalty the supplier actually charged and credits the\nremainder back to the partner's balance. On a prepaid model a refund is\na ledger entry rather than a gateway call that can fail, which is the\nsingle biggest operational advantage of settling this way.",
                        "body": {
                            "mode": "raw",
                            "raw": "[]",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Add a hotel to an order",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}/hotels",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}",
                                "hotels"
                            ]
                        },
                        "description": "Requires an `Idempotency-Key`: this changes what the partner owes, and a\nretry must not book the room twice.\n\nThe room is reserved and confirmed on its own. A property refusing\nleaves the flight exactly as it was \u2014 that is the whole reason items\ncarry independent lifecycles \u2014 and comes back as a 409 on the room\nrather than as a failure of the order.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"offer_id\": \"\",\n    \"price_confirmation_token\": \"\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Add a transfer to an order",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}/transfers",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}",
                                "transfers"
                            ]
                        },
                        "description": "Requires an `Idempotency-Key`: this changes what the partner owes, and a\nretry must not put a second car on the road.\n\nThe car is booked on its own. An operator refusing leaves the flight\nexactly as it was and comes back as a 410 on the transfer rather than a\nfailure of the order.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"offer_id\": \"\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "Transfers",
            "item": [
                {
                    "name": "Quote a transfer",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/transfers/search",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transfers",
                                "search"
                            ]
                        },
                        "description": "Returns every vehicle an operator will put on the journey, already\npriced for the calling partner and already filtered to those that can\nactually carry the party.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"origin_id\": \"{{origin_id}}\",\n    \"destination_id\": \"{{destination_id}}\",\n    \"pickup_at\": \"2026-12-02 14:30\",\n    \"adults\": 2\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Read a held quote",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/transfers/search/{{searchId}}/results",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transfers",
                                "search",
                                "{{searchId}}",
                                "results"
                            ]
                        },
                        "description": "Cheap \u2014 the quotes were computed once. Re-reading a result set a partner\nalready holds must never cost another operator call, and must never\nconsume their search rate limit either."
                    }
                },
                {
                    "name": "Places we can be driven to",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/transfers/locations",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transfers",
                                "locations"
                            ]
                        },
                        "description": "Transfers are quoted between identifiers from an operator's catalogue,\nnot between addresses \u2014 so without this endpoint a partner has nothing\nvalid to put in a search. It is part of the product rather than a\nconvenience."
                    }
                }
            ]
        }
    ]
}