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

# Search criteria

> The fields a search criterion can target and the operators each one accepts

**Search guests**, **Count guests**, **Browse guests**, **Browse bookings**, and the segments share the query model described under [Search queries](/crm-api/build/guidelines/requests.md#search-queries). A criterion carries a `field`, an `operator`, and a `value`, all three as strings. Write `"2"` for a stay length, `"2026-01-01"` for a date, and an empty string for the operators that take no value.

```json theme={null}
{"field": "staylength", "operator": ">", "value": "2"}
```

Which operators a field accepts depends on the field: the tables below list the pairs to build a query from.

## Operators

| Operator | Meaning | Value |
| - | - | - |
| `=` / `!=` | Equals / does not equal | The value to match |
| `>` / `<` | Greater than / lower than | A number, or a date as `YYYY-MM-DD` or as a day keyword |
| `F` / `!F` | Filled / not filled | None |
| `%` / `!%` | Contains / does not contain | A fragment of the text |
| `S` / `!S` | Starts with / does not start with | The beginning of the text |
| `Y` / `N` | Yes / no | None |
| `&=` | On the day of a keyword | `yesterday`, `today`, or `tomorrow` |
| `&<%` / `&>%` | Before / after a day keyword | `yesterday`, `today`, or `tomorrow` |
| `+` / `-` | More than / less than | A number |
| `DOW` | On a day of the week | `1` (Monday) to `7` (Sunday) |
| `1` / `!1` / `C` | Had a session / never had one / has one now | None |

On a number field, `+` and `-` return the same guests as `>` and `<`.

In the tables below, **date operators** stands for `=`, `!=`, `>`, `<`, `&=`, `&<%`, and `&>%`, and **text operators** for `=`, `!=`, `F`, `!F`, `%`, and `!%`. With `=` and `!=`, a date is written `YYYY-MM-DD`.

## Guest fields

| Field | Type | Operators |
| - | - | - |
| `lastname` | text | text operators |
| `email` | text | text operators |
| `emaildomain` | text | text operators |
| `preferredEmail` | text | text operators |
| `hasPersonnalEmail` | boolean | `Y` `N` |
| `phone` | text | text operators |
| `city` | text | text operators |
| `zipcode` | text | `=` `!=` `S` `!S` |
| `country` | code | `=` `!=` `F` `!F` |
| `nationality` | code | `=` `!=` `F` `!F` |
| `langs` | code | `=` `!=` `F` `!F` |
| `preferredLanguage` | text | text operators |
| `company` | text | text operators |
| `birthdate` | date | date operators |
| `birthday` | recurring date | `=` `!=` `&=` |
| `guestTags` | text | `=` `!=` `F` `!F` |
| `guestCreatedAt` | date | date operators |
| `sourceType` | text | text operators |
| `sourceImport` | text | text operators |
| `bwrewardsstatus` | text | text operators |
| `hasfacebook` | boolean | `Y` `N` |
| `hastwitter` | boolean | `Y` `N` |
| `haslinkedin` | boolean | `Y` `N` |
| `linkedinfollowers` | number | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `twitterfollowers` | number | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `optoutmarketing` | opt-in | `Y` `N` `F` `!F` |
| `optoutprestay` | opt-in | `Y` `N` `F` `!F` |
| `optoutcustomeraccount` | opt-in | `Y` `N` `F` `!F` |
| `optouttrackingpixel` | opt-in | `Y` `N` `F` `!F` |
| `optoutsendinblue` | opt-in | `Y` `N` `F` `!F` |
| `emailcollected` | boolean | `Y` `N` |

## Guest fields behind a feature

| Field | Feature | Type | Operators |
| - | - | - | - |
| `optoutloyalty` | loyalty programme | opt-in | `Y` `N` `F` `!F` |
| `loyaltyLevels` | loyalty programme | code | `=` `!=` `F` `!F` |
| `loyaltySignupEntity` | loyalty programme | identifier | `=` `!=` `F` `!F` |
| `loyaltySignupChannel` | loyalty programme | code | `=` `!=` `F` `!F` |
| `loyaltyEnrolledAt` | loyalty programme | date | date operators |
| `guestLastReviewDate` | surveys | date | date operators |
| `guestLastGlobalRating` | surveys | number | `=` `!=` `>` `<` |
| `guestAvgGlobalRating` | surveys | number | `=` `!=` `>` `<` |

## Booking fields

| Field | Type | Operators |
| - | - | - |
| `arrival` | date | date operators |
| `departure` | date | date operators |
| `arrivaldow` | day of week | `DOW` |
| `departuredow` | day of week | `DOW` |
| `instaydate` | date | `=` `!=` `>` `<` `&=` `DOW` |
| `instay` | boolean | `Y` |
| `weekend` | boolean | `Y` `N` |
| `bookingdate` | date | date operators |
| `bookingarrival` | number of days | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `staylength` | number of nights | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `paxadults` | number | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `paxchildren` | number | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `paxbabies` | number | `=` `!=` `>` `<` `+` `-` `F` `!F` |
| `fare` | amount | `=` `!=` `>` `<` `F` `!F` |
| `fareratio` | ratio | `=` `!=` `>` `<` `F` `!F` |
| `balance` | amount | `=` `!=` `>` `<` `F` `!F` |
| `touristtax` | amount | `=` `!=` `>` `<` `F` `!F` |
| `roomtype` | text | text operators |
| `roomnumber` | text | text operators |
| `farecode` | text | text operators |
| `channel` | text | text operators |
| `partner` | text | text operators |
| `idresa` | text | text operators |
| `idmasterresa` | text | text operators |
| `tags` | text | `=` `!=` `F` `!F` |
| `bookingPurpose` | code | `=` `!=` `F` `!F` |
| `bookingstatus` | code | `=` `!=` |
| `bookingId` | identifier | `=` |
| `lastconnexion` | date | `=` `!=` `>` `<` `1` `!1` `C` |
| `updatedAt` | date | `>` `<` |
| `bookingLastReviewDate` | date, surveys feature | date operators |
| `bookingLastGlobalRating` | number, surveys feature | `=` `!=` `>` `<` |
| `bookingAvgGlobalRating` | number, surveys feature | `=` `!=` `>` `<` |

`bookingarrival` is the booking window: the number of days between the booking date and the arrival. On `bookingdate`, `>` and `<` take a plain date rather than a day keyword.


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