> ## Documentation Index
> Fetch the complete documentation index at: https://docs.d-edge.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This site documents the D-EDGE APIs for technology partners (web agencies, OTAs, PMS and RMS vendors, booking and CRM tools). It is written for developers integrating with hotels that use the D-EDGE platform.
> Seven APIs, grouped by domain. Connectivity: Channel Manager API (distribute a hotel's inventory to your channel and send bookings back). Pricing & Availability: Best Price API (best offers to highlight), Quotation API (all bookable offers for a stay), Daily Rates API (daily availability between two dates). Booking: Booking Engine API (a hotel's full direct booking funnel), Gift Shop API (gift vouchers from catalogue to payment). Guest Management: CRM API (guest profiles).
> Pick the API by the need: to display prices, use the Best Price API or the Daily Rates API; to quote a specific stay, use the Quotation API; to book, use the Booking Engine API; to sell gift vouchers, use the Gift Shop API; to manage guest profiles, use the CRM API; to receive hotel inventory and send bookings back as a distribution channel, use the Channel Manager API.
> Base URLs, hotel identifiers, and credentials are delivered by the D-EDGE partnership team during onboarding. Do not invent base URLs, endpoints, parameters, or example credentials that do not appear on these pages.
> Authentication differs per API: OAuth 1.0 for Best Price, Quotation, Daily Rates, and Booking Engine; an X-API-KEY header for Gift Shop; OAuth 2.0 client credentials for CRM; partner-defined credentials carried in the XML message for the Channel Manager API. Read each API's Authentication page before writing code.
> A mock environment returns realistic but fictitious data without credentials. The Postman and Insomnia collections on the API collections page target it by default. Use it for exploration and tests, never for production traffic.
> Use the official names exactly: D-EDGE, D-EDGE platform, Channel Manager API, partnership team. Do not use Back Office or Extranet.
> Each API has a Changelog page. Check it for the current behaviour before relying on an older answer. For questions these pages do not answer, direct the reader to the Contact us page.

# Get hotel

> D-EDGE reads a hotel's configuration from your system

> [!NOTE]
>
> D-EDGE sends an HTTP `GET` request to the URL you provide, authenticated with [Basic Auth](/channel-manager-api/build/guidelines/authentication.md). The hosting model is described in [the introduction](/channel-manager-api/get-started/introduction.md#an-api-that-runs-on-your-endpoints).

Get hotel is how D-EDGE learns a hotel's configuration on your platform: its room types, rates, and, when relevant, detailed occupancies. The response feeds the mapping stored on the D-EDGE side, and its `priceModel` attribute decides the shape of every future [planning update](/channel-manager-api/build/reference/planning-updates.md). On the technical side, connecting a new hotel takes nothing more than your credentials and the hotel code; the steps are in [Connect a new hotel](/overview/run-your-integration/connect-a-new-hotel.md).

D-EDGE calls this interface when a hotel is connected, and again on request when its configuration changes. The retrieval is never triggered automatically: when you add, rename, or remove a room or rate, the hotel must ask D-EDGE to redo the mapping.

## The request we send

**hotelCode** `string` *required*

The hotel identifier or code on your platform. Maximum 50 characters.

**lang** `string`

Requested language for room and rate names, as a 2-letter ISO code such as `EN`, `FR`, `ES`, or `DE`. When absent, English is expected, and English names are the only requirement.

```http Request we send theme={null}
GET /getHotel?hotelCode=1234&lang=EN HTTP/1.1
Authorization: Basic dGVzdGhvdGVsOnRlc3RwYXNzd29yZA==
Accept: application/xml, text/xml
Host: yourdomain.com
```

## The response we expect

Return `200 OK` with `Content-Type: application/xml` and the structure below. On an error, return the [failure envelope](/channel-manager-api/build/guidelines/responses.md) instead, still with `200 OK`.

**message** `element` *required*

The root element.

**child elements**

**rooms** `element` *required*

The list of room types.

**attributes and children**

**hotelId** `attribute · string` *required*

The hotel identifier or code, echoing the requested `hotelCode`. Maximum 50 characters.

**hotelName** `attribute · string`

The hotel name.

**priceModel** `attribute · enum`

How D-EDGE must send prices for this hotel: `PerDay` (default when absent), `PerPerson`, or `PerOccupancy`. See [Price models](/channel-manager-api/build/guidelines/price-models.md).

**currency** `attribute · string`

The currency your platform expects for the hotel, as a 3-letter ISO code. Return it in every response, so that prices reach you in a currency you know in advance. Declare the currency the hotel prices in on D-EDGE. A hotel can price rates in several currencies there, D-EDGE recommends one per hotel, and only the rates in the currency you declare are connected. Should a price still reach you in another currency, refuse the update with `IncorrectPriceCurrency`. See [Currency](#currency) below.

**room** `element · 1..n` *required*

A room type.

**attributes and children**

**code** `attribute · string` *required*

The room type identifier or code on your platform. Maximum 50 characters.

**name** `attribute · string` *required*

The room type name.

**minOccupancy** `attribute · integer`

The room type minimum occupancy, at least 1. **Required** when `priceModel` is `PerPerson` or `PerOccupancy`.

**maxOccupancy** `attribute · integer`

The room type maximum occupancy, at least 1, excluding extra beds. **Required** when `priceModel` is `PerPerson` or `PerOccupancy`. The hotel must set a price for an occupancy this large in D-EDGE, otherwise D-EDGE holds the updates until the room configuration is aligned: see [How D-EDGE picks each price](/channel-manager-api/build/guidelines/price-models.md#how-d-edge-picks-each-price).

**occupancies** `element · 0..1`

The detailed occupancy combinations of the room type. **Required** when `priceModel` is `PerOccupancy`, with at least one `occupancy`.

**child elements**

**occupancy** `element · 1..n`

One combination D-EDGE must price.

**attributes**

**adultCount** `attribute · integer` *required*

The adult count, at least 1: a combination cannot have 0 adults.

**childCount** `attribute · integer` *required*

The child count.

**rate** `element · 1..n` *required*

A rate on your platform. If your system has no rate notion, or handles a single price line per room, declare exactly one `rate` with a default code of your choice.

**attributes**

**code** `attribute · string` *required*

The rate identifier or code on your platform. Maximum 50 characters.

**name** `attribute · string` *required*

The rate name.

**regime** `attribute · string`

A free description of the meal regime, such as `Bed Only` or `Bed and breakfast`.

**updateType** `attribute · enum`

What this room and rate combination can receive. `PRI` (default when absent): prices, restrictions, and inventory. `InvRest`: inventory and restrictions only. `Inv`: inventory only, at room or room and rate level. `NoUpdate`: nothing. See [Update types](#update-types) below.

```xml PerDay theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <rooms hotelId="1234" hotelName="My test hotel"
         priceModel="PerDay" currency="EUR">
    <room code="CLA" name="Classic Room">
      <rate code="BAR" name="Flexible Rate"
            regime="Bed Only" updateType="PRI" />
      <rate code="NR" name="Prepayment Rate"
            regime="Bed Only" updateType="InvRest" />
    </room>
    <room code="SUP" name="Superior Room">
      <rate code="BAR" name="Flexible Rate"
            regime="Bed Only" updateType="PRI" />
      <rate code="BB" name="Breakfast included"
            regime="Bed and breakfast" updateType="PRI" />
    </room>
    <room code="SUI" name="Suite">
      <rate code="BB" name="Breakfast included"
            regime="Bed and breakfast" updateType="PRI" />
    </room>
  </rooms>
</message>
```

```xml PerPerson theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <rooms hotelId="1234" hotelName="My test hotel"
         priceModel="PerPerson" currency="EUR">
    <room code="CLA" name="Classic Room"
          minOccupancy="1" maxOccupancy="1">
      <rate code="BAR" name="Flexible Rate"
            regime="Bed Only" updateType="PRI" />
      <rate code="NR" name="Prepayment Rate"
            regime="Bed Only" updateType="InvRest" />
    </room>
    <room code="SUP" name="Superior Room"
          minOccupancy="1" maxOccupancy="2">
      <rate code="BAR" name="Flexible Rate"
            regime="Bed Only" updateType="PRI" />
      <rate code="NR" name="Prepayment Rate"
            regime="Bed Only" updateType="Inv" />
    </room>
    <room code="SUI" name="Suite"
          minOccupancy="1" maxOccupancy="4">
      <rate code="BAR" name="Flexible Rate"
            regime="Bed Only" updateType="NoUpdate" />
      <rate code="BB" name="Breakfast included"
            regime="Bed and breakfast" updateType="PRI" />
    </room>
  </rooms>
</message>
```

```xml PerOccupancy theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <rooms hotelId="1234" hotelName="My test hotel"
         priceModel="PerOccupancy" currency="EUR">
    <room code="SUP" name="Superior Room"
          minOccupancy="1" maxOccupancy="2">
      <occupancies>
        <occupancy adultCount="1" childCount="0" />
        <occupancy adultCount="1" childCount="1" />
        <occupancy adultCount="2" childCount="0" />
      </occupancies>
      <rate code="BAR" name="Flexible Rate" regime="Bed Only" />
      <rate code="NR" name="Prepayment Rate" regime="Bed Only" />
    </room>
    <room code="SUI" name="Suite"
          minOccupancy="1" maxOccupancy="4">
      <occupancies>
        <occupancy adultCount="1" childCount="0" />
        <occupancy adultCount="1" childCount="1" />
        <occupancy adultCount="2" childCount="2" />
        <occupancy adultCount="4" childCount="0" />
      </occupancies>
      <rate code="BAR" name="Flexible Rate" regime="Bed Only" />
      <rate code="BB" name="Breakfast included"
            regime="Bed and breakfast" />
    </room>
  </rooms>
</message>
```

```xml Failure theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <failure type="3" message="BadAuthentication">
    <comment><![CDATA[Credentials are invalid for this Hotel (1234)]]></comment>
  </failure>
</message>
```

## Price models

The `priceModel` you return here is the most consequential attribute of the response: D-EDGE keeps it for the life of the connection and shapes every [planning update](/channel-manager-api/build/reference/planning-updates.md) from it. Decide it before you build the response, from how your platform stores prices, and keep the room attributes consistent with it: `minOccupancy` and `maxOccupancy` with `PerPerson`, plus the `occupancies` list with `PerOccupancy`. Changing it later means asking the hotel to have the mapping redone. The three models are compared on the [Price models](/channel-manager-api/build/guidelines/price-models.md) page.

## Currency

Return the `currency` attribute in every response. It tells D-EDGE which currency your platform expects for the hotel, so every planning update reaches you in a currency you know in advance and can check. Without it, D-EDGE sends prices in the currency configured for the hotel on its side, and nothing tells you which one: a difference with your platform's currency shows up only when the prices are wrong on your side. Declare the currency the hotel prices in on D-EDGE, one per hotel, and refuse any price reaching you in another currency with `IncorrectPriceCurrency`.

## Update types

Declare an `updateType` other than `PRI` when a room and rate combination must not receive full updates. Tell the hotels you connect about the restriction, so their teams know why some updates do not reach your platform. Before using `NoUpdate`, discuss it with your D-EDGE Connectivity Project Manager: a combination with no inventory synchronisation at all is an overbooking risk.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.