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

# Responses

> The message envelope and error codes

Every exchange on the Channel Manager API, in both directions, answers inside the same `<message>` root, with the same envelope: `<success>` when all went well, `<failure>` or `<warning>` otherwise. Get hotel is the one interface whose successful answer is the configuration itself rather than a `<success>`; the plain-text exception on Push bookings is noted at the end of this page. This page describes the envelope, the golden rule on HTTP status codes, and the error codes each interface expects.

## Always 200 OK

**Return `200 OK` even when the request fails.** Errors are expressed inside the XML envelope, not through HTTP status codes: D-EDGE reads the error from the body, and only parses the body of a `200 OK`. The only accepted exception is a `5xx` when your service is genuinely down.

The consequences of a `<failure>` are real. On a planning update, D-EDGE may stop processing the rest of the stream, especially during a full synchronisation, and **an update that generated a failure is not resent**. Reserve failures for messages you could not apply. When only part of a message is invalid, the expected answer is still a `<failure>` with the precise error code, and D-EDGE recommends applying the valid parts anyway.

## The envelope

Success:

```xml theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success />
</message>
```

Failure, or warning with the same shape under `<warning>`:

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

**type** `string` *required*

The error code, from the tables below.

**message** `string`

The error name, from the tables below. `@type` and `@message` matter most: D-EDGE identifies the error from them.

**comment** `string or CDATA`

A free description you can customise. Never put a stack trace in it.

A `<failure>` means the request was refused; a `<warning>` reports a problem on a request that was otherwise processed. On [Get bookings](/channel-manager-api/build/reference/get-bookings.md), a `<success>` with no bookings is the normal answer for a quiet period.

## Error codes to return

Return these codes from your endpoints so D-EDGE can react precisely. Replace `[HotelCode]`, `[RoomCode]`, and `[RateCode]` with the real values. One case can match several codes. A missing `hotelCode` is reported as `1`, `2`, or `203` depending on whether your platform treats it as an unknown hotel, an inactive one, or a processing error; D-EDGE accepts all three.

### Get hotel

| Type | Message | Comment |
| - | - | - |
| `1` | `HotelNotLinked` | Hotel (\[HotelCode]) is not linked to D-EDGE Channel Manager or is unknown |
| `2` | `HotelNotActivated` | Hotel (\[HotelCode]) is not activated for D-EDGE Channel Manager |
| `3` | `BadAuthentication` | Credentials are invalid for this Hotel (\[HotelCode]) |
| `14` | `NoRooms` | Hotel (\[HotelCode]) does not have rooms created or configured |
| `15` | `NoRates` | Hotel (\[HotelCode]) does not have rates created or configured |
| `203` | `InternalError` | A processing error on your side, in your own words |

### Planning updates

| Type | Message | Comment |
| - | - | - |
| `1` | `HotelNotLinked` | Hotel (\[HotelCode]) is not linked to D-EDGE Channel Manager or is unknown |
| `2` | `HotelNotActivated` | Hotel (\[HotelCode]) is not activated for D-EDGE Channel Manager |
| `3` | `BadAuthentication` | Credentials are invalid for this Hotel (\[HotelCode]) |
| `4` | `RoomMappingError` | Room (\[RoomCode]) is invalid or not configured |
| `5` | `RateMappingError` | Rate (\[RateCode]) is invalid or not configured |
| `6` | `RoomRateMapping` | The combination of Room (\[RoomCode]) and Rate (\[RateCode]) is invalid or not configured |
| `13` | `IncorrectPriceCurrency` | Price given is not in the correct currency |
| `201` | `DomInvalidXML` | DOM validation parsing error |
| `202` | `InvalidXMLMessage` | A mandatory element is missing, in your own words |
| `203` | `InternalError` | A processing error on your side, in your own words |

### Get bookings

| Type | Message | Comment |
| - | - | - |
| `1` | `HotelNotLinked` | Hotel (\[HotelCode]) is not linked to D-EDGE Channel Manager or is unknown |
| `2` | `HotelNotActivated` | Hotel (\[HotelCode]) is not activated for D-EDGE Channel Manager |
| `3` | `BadAuthentication` | Credentials are invalid for this Hotel (\[HotelCode]) |
| `203` | `InternalError` | A processing error on your side, or a malformed query parameter, in your own words |

### Confirm bookings

Same envelope, same discipline: `<success>` when the acknowledgement is recorded, `<warning>` when it is recorded with a reservation. On a refusal, `<failure>` with `3` when the credentials do not match, or `201`, `202`, or `203` when the message could not be read.

## Error codes D-EDGE returns

On [Push bookings](/channel-manager-api/build/reference/push-bookings.md), the roles flip and D-EDGE answers your call with the same envelope:

| Failure or warning | Type | Message | Meaning |
| - | - | - | - |
| Failure | `1` | `HotelNotLinked` | The hotel is not linked or unknown |
| Failure | `2` | `HotelNotActivated` | The hotel is not activated |
| Failure | `3` | `BadAuthentication` | The Push bookings credentials are invalid |
| Failure | `201` | `DomInvalidXML` | The XML could not be parsed |
| Failure | `202` | `InvalidXMLMessage` | A mandatory element is missing |
| Failure | `203` | `InternalError` | A D-EDGE internal error: [contact us](/overview/resources/contact-us.md) |
| Warning | `204` to `208` | `ExtraIntegrationError` | An extra was dropped because `unitPrice`, `extraCode`, `quantity`, `inclusive`, or `pricingType` was missing; the booking itself was read |

A `<success>` on a push means the booking **was read**, not that it is integrated. Integration is asynchronous, and the definitive signal is the [Confirm bookings](/channel-manager-api/build/reference/confirm-bookings.md) message. A booking sent for an unknown hotel is refused with `HotelNotLinked`; a booking for an unknown room, or in the past, does not raise an error at push time.

On an unexpected D-EDGE error, the push response may be plain text instead of this envelope. The [Push bookings](/channel-manager-api/build/reference/push-bookings.md#the-response-d-edge-returns) page says how to handle it.


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