> ## 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.

# Quick start

> Build your first interface

Your first milestone on the Channel Manager API is an endpoint on your side, ready to answer D-EDGE. This guide walks you through the smallest working piece of the integration: the **Get hotel** interface, the endpoint D-EDGE calls first to read a hotel's configuration from your system. Once it answers correctly, you have proven the whole mechanic of the API: an endpoint you host, a request D-EDGE sends, an XML response you return.

## Prerequisites

* A signed partnership agreement, and a dedicated D-EDGE Connectivity Project Manager. Both come out of the [integration journey](/overview/get-started/your-integration-journey.md).
* A server that can expose an HTTPS endpoint with a valid certificate and TLS 1.2 or higher.
* A test hotel configured on your platform, with at least three room types and three rates: the [test scenarios](/channel-manager-api/get-certified/test-scenarios.md) need them, so build it that way from the start.

There are no credentials to receive at this stage: **you define the credentials** D-EDGE will use to call your endpoints, and hand them over with your URLs. See [Authentication](/channel-manager-api/build/guidelines/authentication.md) for the two credential models.

## 1. Expose your Get hotel endpoint

Serve an HTTPS URL that accepts a `GET` request with a `hotelCode` query parameter and Basic Auth credentials. This is the request D-EDGE sends:

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

The `Authorization` header carries the login and password you defined, Base64-encoded. The `lang` parameter is optional: room and rate names in English are all that is required.

## 2. Return the hotel configuration

Answer with `200 OK`, a `Content-Type: application/xml` header, and the hotel's rooms and rates. Here is a minimal valid response for a hotel on the `PerDay` price model, with one room and two rates:

```xml 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" updateType="PRI" />
      <rate code="NR" name="Prepayment Rate" updateType="PRI" />
    </room>
  </rooms>
</message>
```

Three attributes in this response shape the whole integration:

* `priceModel` decides how prices will arrive in every future planning update, for the life of the connection. Choose it to match how your platform stores prices. See [Price models](/channel-manager-api/build/guidelines/price-models.md).
* `currency` announces the currency your platform expects for the hotel. Always return it: without it, D-EDGE sends prices in its own configured currency and raises no error.
* The `code` attributes are **your identifiers**. D-EDGE stores them as the mapping and uses them in every message from then on: you never handle D-EDGE identifiers, apart from the booking reference returned by Confirm bookings.

## 3. Test it yourself

You do not need D-EDGE to test. The [test scenarios collection](/channel-manager-api/get-certified/test-scenarios.md#run-them-yourself) runs D-EDGE's own scenarios against your endpoints. The [API collections](/overview/resources/api-collections.md) carry the calls of the documentation: set `channelManagerApi.yourBaseUrl` to your server and send the Get hotel request. Or simulate the call with any HTTP client and check your own response:

```bash theme={null}
curl --request GET \
  --url 'https://yourdomain.com/getHotel?hotelCode=1234&lang=EN' \
  --user 'testhotel:testpassword' \
  --header 'Accept: application/xml, text/xml'
```

Check that the response is XML only (no HTML wrapper), that the status is `200 OK`, and that a wrong password returns the failure envelope rather than an HTTP error:

```xml 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>
```

Returning errors inside a `200 OK` response is the rule across the whole API. See [Responses](/channel-manager-api/build/guidelines/responses.md).

## 4. Hand over your endpoints

When your four interfaces are ready, hand them over to your D-EDGE Connectivity Project Manager with the credentials you defined, your test hotel, and your questionnaire. The checklist is in [Certification steps](/channel-manager-api/get-certified/certification-steps.md), which then runs the [test scenarios](/channel-manager-api/get-certified/test-scenarios.md) against your endpoints in two phases.

Once certified, each hotel joins as described in [Connect a new hotel](/overview/run-your-integration/connect-a-new-hotel.md). D-EDGE calls Get hotel to build the mapping, then sends the initial synchronisation, up to two years of planning. From there, updates flow whenever something changes, and the booking interfaces close the loop.

## Common issues

| Symptom | Likely cause | Where to look |
| - | - | - |
| D-EDGE reports an unreadable response | The endpoint returned HTML or plain text instead of XML | [Responses](/channel-manager-api/build/guidelines/responses.md) |
| A push response is plain text instead of XML | An unexpected D-EDGE error; handle it like a `203` `InternalError` and retry later | [Push bookings](/channel-manager-api/build/reference/push-bookings.md#the-response-d-edge-returns) |
| Updates stop after an error | Your endpoint returned `<failure>`, which can stop the processing, and failed updates are not resent | [Responses](/channel-manager-api/build/guidelines/responses.md) |
| Parsing breaks on the first characters of a message | Messages D-EDGE sends can start with a byte order mark (BOM) | [Requests](/channel-manager-api/build/guidelines/requests.md) |
| Prices arrive in an unexpected shape | The `priceModel` returned in Get hotel does not match how your platform stores prices | [Price models](/channel-manager-api/build/guidelines/price-models.md) |

## Next steps

> **[Reference](/channel-manager-api/build/reference/get-hotel.md)**
>
> Every interface: the request we send, the response we expect.

> **[Guidelines](/channel-manager-api/build/guidelines/authentication.md)**
>
> Credentials, message conventions, error handling, and price models.

> **[Best practices](/channel-manager-api/build/best-practices.md)**
>
> Price models, payment amounts, and a clean booking flow.

> **[Certification steps](/channel-manager-api/get-certified/certification-steps.md)**
>
> The hand-over, the two test phases, and the pilot.


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