Getting started
How do I get access to the APIs?
How do I get access to the APIs?
Can I try the APIs before I have credentials?
Can I try the APIs before I have credentials?
baseUrl variable to the live base URL. On the Channel Manager API, most interfaces run on your endpoints, so the collection plays D-EDGE. Its requests go to a mock standing in for your server, then to your own server once you set channelManagerApi.yourBaseUrl, as its Quick start shows.What credentials does D-EDGE deliver?
What credentials does D-EDGE deliver?
X-API-KEY header. The CRM API uses OAuth 2.0 client credentials: a client ID, a client secret, and the token endpoint that issues your bearer tokens. D-EDGE also delivers the identifier of the entity your integration works on. The base URL of the environment is delivered alongside. The Channel Manager API works the other way round: you define the credentials D-EDGE uses to call your endpoints, and D-EDGE only issues the credentials of its Push bookings endpoint. See each API’s Authentication page for the details.Choosing the right API
Which API fits my use case?
Which API fits my use case?
- Channel Manager API: a hotel’s availability, prices, and restrictions pushed to your platform, and your bookings sent back. Right for OTAs, wholesalers, tour operators, and any distribution system with its own planning database.
- Best Price API: cheapest available offer across stay dates. Right for guest-facing pricing surfaces (calendars, listings, “from” prices).
- Quotation API: every bookable room and rate combination for a known stay. Right for booking funnels and chatbots.
- Daily Rates API: full daily breakdown in one call. Right for nightly sync pipelines and back-office dashboards.
- Booking Engine API: the full direct booking funnel in one stateful session. Right for building a hotel’s direct booking experience end to end.
- Gift Shop API: a hotel’s online gift shop, from catalogue to payment. Right for voucher storefronts and gifting experiences.
- CRM API: the guest profiles a hotel or group holds in the D-EDGE CRM. Right for guest data sync, personalisation, and privacy workflows.
How is the Booking Engine API different from the pricing APIs?
How is the Booking Engine API different from the pricing APIs?
Can I use multiple APIs in the same integration?
Can I use multiple APIs in the same integration?
Channel Manager API
Who hosts the endpoints?
Who hosts the endpoints?
Why do I need both Get bookings and Push bookings?
Why do I need both Get bookings and Push bookings?
Why must my endpoints return 200 OK on errors?
Why must my endpoints return 200 OK on errors?
200 OK. Errors travel inside the <message> envelope as a <failure> with a type and a message, still under 200 OK; a 5xx is reserved for a service that is genuinely down. A <failure> on a planning update also means the update is not resent, so reserve it for messages you could not apply. See Responses.Which price model should I declare?
Which price model should I declare?
PerDay for one price per room and day, PerPerson for one price per person count, PerOccupancy for one price per adult and child combination. D-EDGE keeps the model for the life of the connection and shapes every planning update from it, so choose from your data rather than from the richest option. See Price models.Why do I receive the same price for several occupancies?
Why do I receive the same price for several occupancies?
PerPerson and PerOccupancy, D-EDGE fills each occupancy you declared from the smallest hotel occupancy that can hold the guests, so a hotel with a single price sends that price everywhere. Hotels with prices on alternative occupancies send distinct prices. The rules and worked examples are in How D-EDGE picks each price.How are meal plans included in the prices D-EDGE sends?
How are meal plans included in the prices D-EDGE sends?
unitPrice of a planning update is always the total room price, meals included. When the meal plan feature is enabled, the rate carries a mealPlanType and the mealPlan elements give the price of one adult or child meal, for information. What D-EDGE adds to the room price depends on the price model. Under PerDay, it adds the adult meal price times the room’s default occupancy; under PerPerson, the adult meal price times the person count of each occupancy line; under PerOccupancy, the adult and child meal prices times the adult and child counts. Infants never count. See Meal plans.My platform has no closed-to-arrival restriction. What should I do?
My platform has no closed-to-arrival restriction. What should I do?
noArrival is acceptable: D-EDGE tells hotels the restriction is not available on your platform, which can limit the rates or hotels opened to you. There is a workaround. When you receive noArrival="true", set your minimum stay to the highest value your system accepts, 99 for instance, instead of the minimumStay sent in the message. No stay can start on that day, so it behaves as closed to arrival. See Restrictions you do not support.Does D-EDGE send room descriptions, photos, or cancellation policies?
Does D-EDGE send room descriptions, photos, or cancellation policies?
<distributor> comments of the booking message. See What the API covers.How fast must my endpoints answer?
How fast must my endpoints answer?
What happens when my endpoint is down or refuses an update?
What happens when my endpoint is down or refuses an update?
<failure> is not resent, and during a full synchronisation D-EDGE may stop the rest of the stream. A 5xx is acceptable only when your service is genuinely down. Keep outages short, and once your endpoint is back, contact us to agree how to resynchronise the hotels concerned. See Always 200 OK.How much data does the initial synchronisation send?
How much data does the initial synchronisation send?
What happens to the card details I send in a booking?
What happens to the card details I send in a booking?
000 before the booking enters the D-EDGE platform. The real card goes to the D-EDGE PCI vault, where it is read or passed on under strict rules. The detection covers the whole message, so a card number or verification code written into a comment or any other element is replaced too, and so is a value that only looks like one. See Card data.How does certification work on the Channel Manager API?
How does certification work on the Channel Manager API?
How long does certification take?
How long does certification take?
Can I check my endpoints before D-EDGE tests them?
Can I check my endpoints before D-EDGE tests them?
Do my endpoint URLs change between certification and production?
Do my endpoint URLs change between certification and production?
Booking Engine API
How long does a session last?
How long does a session last?
X-AVP-SessionDuration header when you create the session. When a call returns 400 with Code: InvalidSessionId, the session has expired: create a fresh one and replay the guest’s context. See Best practices.How do I avoid creating duplicate bookings?
How do I avoid creating duplicate bookings?
POST, PATCH, DELETE) are not idempotent, so do not blindly retry them: a retry can add a room twice or confirm a booking twice. Retry only when you are sure the previous call never reached the server, reconcile the basket with the basket endpoint first, and re-quote right before confirmation. See Best practices.Does D-EDGE handle payment, or do I collect card details?
Does D-EDGE handle payment, or do I collect card details?
redirectionUrl to a D-EDGE-hosted page where the guest enters their card, so you never touch card data. After payment, the guest returns to a confirmation. See Best practices.Can I show the booking confirmation on the hotel's own website?
Can I show the booking confirmation on the hotel's own website?
GET /v2/booking/{sessionId}/confirmation returns the stay, customer, room, and payment details for your own page. Fetch it on the redirect rather than polling. See Branded confirmation page.Can I run promotions or apply a promo code?
Can I run promotions or apply a promo code?
GET /v2/{sessionId}/promotion, and unlock a private rate or offer by seeding the code into context.promoCode when you create the session. The session scope then reports which rates the code granted. See Promotional campaigns.Can I recover an abandoned booking?
Can I recover an abandoned booking?
Gift Shop API
What is the difference between the two kinds of gift shop products?
What is the difference between the two kinds of gift shop products?
usage field. Direct is a value voucher: the beneficiary spends it on the hotel’s or group’s online booking engine, where the code deducts its value from the total at payment; its price always appears on the voucher. Indirect is a service, such as a spa session: the beneficiary redeems the code with the shop owner, at the hotel or within the group, which marks it as used in the D-EDGE platform; its price can be hidden. See Two kinds of products.Can a gift card pay for a booking?
Can a gift card pay for a booking?
Does the Gift Shop API use OAuth 1.0?
Does the Gift Shop API use OAuth 1.0?
X-API-KEY header on every request. D-EDGE delivers it with the shop’s configuration. See Authentication.Who receives the voucher after payment?
Who receives the voucher after payment?
sendTo choice made in the cart: the voucher goes by email to the beneficiary the shopper designated, or to the shopper themselves. The shopper always receives the purchase confirmation, and on Indirect products the voucher document can hide the price (a Direct voucher always shows its value). See Voucher for a friend.CRM API
What is an entity?
What is an entity?
Where does a guest profile's data come from?
Where does a guest profile's data come from?
from field, and your integration writes its own contributions the same way. See Sourced attributes.How do I handle duplicate profiles?
How do I handle duplicate profiles?
composedWith, and reading a source identifier afterwards returns the merged profile, so the identifiers you stored keep working. Unmerge a guest splits it back apart when the match turns out to be wrong. See Best practices.Can I delete a guest profile?
Can I delete a guest profile?
Why does a merge answer with an empty body?
Why does a merge answer with an empty body?
How do I know what an update stored?
How do I know what an update stored?
location header. An attribute whose value the API does not accept is left out and the status code stays 200, so the response alone does not confirm what landed. See Best practices.Authentication
I'm getting 401 errors. What should I check?
I'm getting 401 errors. What should I check?
- Wrong credentials: confirm you’re using the values delivered by D-EDGE for the environment you’re hitting.
- Clock drift: OAuth signing includes a timestamp. If your server clock drifts more than five minutes from D-EDGE’s, signatures reject. Sync with NTP.
- Reused nonce: every request must carry a unique nonce. Generating a UUID per call avoids replay rejections.
401 means the X-API-KEY header is missing, invalid, or does not give access to the operation. See its Authentication page.On the CRM API, a 401 means the bearer token is missing, invalid, expired (tokens live 300 seconds), or without access to the entity. Request a fresh token and check the entity identifier. See its Authentication page.On the Channel Manager API, D-EDGE authenticates to your endpoints with the credentials you defined. When they do not match, answer with the BadAuthentication failure (type 3) inside a 200 OK response, never with a 401. See its Authentication page.Why OAuth 1.0 and not OAuth 2.0?
Why OAuth 1.0 and not OAuth 2.0?
Data and traffic
How real-time is the data?
How real-time is the data?
Are there rate limits?
Are there rate limits?
Can I cache API responses?
Can I cache API responses?
Operations
How do I get support?
How do I get support?
- Pricing APIs (Best Price, Quotation, and Daily Rates): the
traceId. - Booking Engine API: the
MessageandCode. - Gift Shop API: the problem details fields (
title,detail, andinstance). - CRM API: the error
codeandmessage. - Channel Manager API: the
<failure>type and message, with the hotel and booking identifiers.
How do I connect a new hotel once my integration is live?
How do I connect a new hotel once my integration is live?
I want to change my integration. What should I do?
I want to change my integration. What should I do?
What's the SLA?
What's the SLA?
Compliance
Are the APIs GDPR and PCI DSS compliant?
Are the APIs GDPR and PCI DSS compliant?
Localisation
Which currencies are supported?
Which currencies are supported?
filter.currency (Best Price), filter.currencies (Quotation, Daily Rates), or the session’s display.currency (Booking Engine API). Gift Shop API prices come back with each catalogue product, in the currency the shop sells in. On the Channel Manager API, each hotel’s prices arrive in the currency your Get hotel response declares for that hotel, which must be the hotel’s currency in D-EDGE.Can the APIs convert prices into another currency?
Can the APIs convert prices into another currency?