Établissement et catalogue
Les endpoints du catalogue sont en lecture seule et décrivent ce que vous pouvez vendre : l'établissement lui-même, ses types de chambres, les disponibilités en temps réel et les tarifs qu'un client a le droit de réserver.
GET /propertyRenvoie les métadonnées de l'établissement auquel la clé est liée. N'importe quelle clé authentifiée peut l'appeler.
curl "$VRDN_BASE/property" -H "Authorization: Bearer $VRDN_KEY"{
"id": "p_8f2a1c",
"slug": "sunrise-bay",
"name": "Sunrise Bay Resort",
"currency": "USD",
"timezone": "Pacific/Fiji",
"child_max_age": 12,
"infant_max_age": 2
}| Champ | Type | Notes |
|---|---|---|
id | string | Identifiant de l'établissement. |
slug | string | Slug d'URL. |
name | string | Nom affiché. |
currency | string | La devise de base de l'établissement (ISO 4217). |
timezone | string | Fuseau horaire IANA, utilisé pour « aujourd'hui » dans les fenêtres tarifaires. |
child_max_age | integer | Les clients de cet âge ou moins sont tarifés comme des enfants. |
infant_max_age | integer | Les clients de cet âge ou moins sont tarifés comme des bébés. |
GET /room-typesPortée : availability:read
Chaque type de chambre avec ses données de présentation : description, capacité, équipements, configurations de lits et photos (la photo principale en premier).
curl "$VRDN_BASE/room-types" -H "Authorization: Bearer $VRDN_KEY"{
"data": [
{
"id": "9b2f6c3e-8d1a-4f5b-a7c9-4e0d2b8f1a63",
"name": "Deluxe Ocean Villa",
"description": "A private villa over the lagoon.",
"max_occupancy": 3,
"currency": "USD",
"amenities": ["Ocean view", "Private deck"],
"bed_configs": [{ "id": "bc_king", "label": "1 King" }],
"photos": ["https://cdn.veridien.app/p_8f2a1c/deluxe-1.jpg"]
}
]
}GET /availabilityPortée : availability:read
Le nombre minimum de chambres disponibles sur toutes les nuits de la période, par type de chambre. Seuls les types de chambres dont le max_occupancy accueille le groupe sont renvoyés.
| Paramètre de requête | Requis | Notes |
|---|---|---|
check_in | oui | YYYY-MM-DD. |
check_out | oui | YYYY-MM-DD, après check_in. Les séjours sont plafonnés à 30 nuits. |
adults | oui | Entier ≥ 1. |
children | non | Entier ≥ 0, 0 par défaut. |
child_ages | non | Âges des enfants séparés par des virgules (par exemple 5,7). |
curl "$VRDN_BASE/availability?check_in=2026-08-01&check_out=2026-08-04&adults=2" \
-H "Authorization: Bearer $VRDN_KEY"{
"check_in": "2026-08-01",
"check_out": "2026-08-04",
"data": [
{
"room_type_id": "9b2f6c3e-8d1a-4f5b-a7c9-4e0d2b8f1a63",
"name": "Deluxe Ocean Villa",
"description": "A private villa over the lagoon.",
"max_occupancy": 3,
"available": 4,
"currency": "USD",
"amenities": ["Ocean view", "Private deck"],
"bed_configs": [{ "id": "bc_king", "label": "1 King" }],
"photos": ["https://cdn.veridien.app/p_8f2a1c/deluxe-1.jpg"]
}
]
}available est le nombre que vous pouvez encore réserver. 0 signifie complet sur au moins une nuit de la période.
GET /ratesPortée : availability:read
Chaque type de chambre avec ses tarifs visibles et un détail de prix par nuit sur la période. C'est l'endpoint qu'un moteur de réservation affiche.
| Paramètre de requête | Requis | Notes |
|---|---|---|
check_in | oui | YYYY-MM-DD. |
check_out | oui | YYYY-MM-DD, après check_in. |
adults | oui | Entier ≥ 1. |
children | non | Entier ≥ 0, 0 par défaut. |
child_ages | non | Âges des enfants séparés par des virgules (par exemple 5,7). Quand il est présent, il fait foi pour le nombre d'enfants et pilote la tarification par tranche d'âge. |
guest_id | non | Débloque les tarifs propres à un client (résident local vérifié, niveau de fidélité). |
promo_code | non | Débloque les tarifs réservés à un code promo. |
La visibilité est appliquée côté serveur
Un tarif peut porter des règles : réservé aux résidents locaux, exige un code promo, durée de séjour minimum, fenêtre de réservation anticipée ou niveau de fidélité. L'API les évalue au regard du contexte de la requête et ne renvoie que les tarifs auxquels le client a droit. Les mêmes règles sont revérifiées quand vous créez un blocage, un tarif jamais affiché ne peut donc pas être réservé par son identifiant.
curl "$VRDN_BASE/rates?check_in=2026-08-01&check_out=2026-08-04&adults=2&promo_code=SUMMER" \
-H "Authorization: Bearer $VRDN_KEY"{
"check_in": "2026-08-01",
"check_out": "2026-08-04",
"data": [
{
"room_type_id": "9b2f6c3e-8d1a-4f5b-a7c9-4e0d2b8f1a63",
"name": "Deluxe Ocean Villa",
"description": "A private villa over the lagoon.",
"max_occupancy": 3,
"base_occupancy": 2,
"amenities": ["Ocean view", "Private deck"],
"bed_configs": [{ "id": "bc_king", "label": "1 King" }],
"photos": ["https://cdn.veridien.app/p_8f2a1c/deluxe-1.jpg"],
"rate_plans": [
{
"rate_plan_id": "5c1e8f4a-2b7d-4a9c-8e6f-1d3b9a5c7e02",
"name": "Flexible",
"currency": "USD",
"total": "1260.00",
"room_subtotal": "1260.00",
"base_occupancy": 2,
"extra_guest_charge": "0.00",
"single_occupancy_discount": "0.00",
"extra_guest_total": "0.00",
"taxes_total": "0.00",
"tax_breakdown": [
{ "title": "GST", "amount": "135.00", "is_inclusive": true, "rate": "12", "kind": "percent" }
],
"nightly_rates": [
{ "date": "2026-08-01", "day_of_week": 6, "rate": "420.00", "source": "base_price" },
{ "date": "2026-08-02", "day_of_week": 0, "rate": "420.00", "source": "base_price" },
{ "date": "2026-08-03", "day_of_week": 1, "rate": "420.00", "source": "base_price" }
]
}
]
}
]
}Chaque tarif de nuit indique son source : interval quand une période saisonnière a fixé le prix de ce jour, ou base_price quand il est retombé sur le prix de base du tarif.
Le type de chambre porte base_occupancy (le nombre de clients inclus avant que la tarification par personne supplémentaire ne s'applique) et ses bed_configs. Chaque tarif indique un détail de prix complet :
| Champ | Type | Notes |
|---|---|---|
total | string | Le total du séjour entièrement tarifé, y compris les taxes non incluses dans le prix. Il est égal au total du blocage. |
room_subtotal | string | Somme des tarifs de nuit avant ajustements d'occupation et taxes. |
base_occupancy | integer | Clients inclus dans le tarif de base ; au-delà, la tarification par personne supplémentaire s'applique. |
extra_guest_charge | string | Le montant par nuit du tarif pour chaque client au-delà de base_occupancy. |
single_occupancy_discount | string | Remise totale appliquée quand la chambre n'est occupée que par une personne. |
extra_guest_total | string | Supplément total pour personnes supplémentaires sur tout le séjour. |
taxes_total | string | Total des taxes non incluses ajoutées à total. Les taxes incluses ne sont pas comptées ici. |
tax_breakdown | array | Une ligne par frais : title, amount, is_inclusive, rate, kind. Les lignes incluses sont affichées par transparence et ne s'ajoutent pas à total. |
Comme le blocage est tarifé par le même moteur de frais, ce total est toujours égal au total que vous renvoie POST /holds.
GET /servicesPortée : availability:read
Les extras réservables par le client (par exemple un transfert aéroport), pour l'étape « Ajouter à votre chambre » d'un moteur de réservation. Ne renvoie que les services actifs et réservables par le client, avec leurs modifiers (les options et champs de saisie que le client remplit). Passez ?category= pour filtrer par catégorie.
| Paramètre de requête | Requis | Notes |
|---|---|---|
category | non | Ne renvoyer que les services de cette catégorie (par exemple, transport). |
curl "$VRDN_BASE/services?category=transport" -H "Authorization: Bearer $VRDN_KEY"{
"data": [
{
"id": "f1c8e5a3-6b2d-4c9f-8a7e-3d0b5c2f6e94",
"name": "Airport transfer",
"category": "transport",
"provider_name": "Harbour Transfers",
"image_url": "https://cdn.veridien.app/p_8f2a1c/transfer.jpg",
"short_description": "Private speedboat from the international airport.",
"currency": "USD",
"is_taxable": true,
"modifiers": []
}
]
}| Champ | Type | Notes |
|---|---|---|
id | string | Identifiant du service, référencé sous service_id dans les add_ons d'un blocage. |
name | string | Nom affiché. |
category | string | null | Libellé de catégorie utilisé par le filtre ?category=. |
provider_name | string | null | Le prestataire qui assure le service. |
image_url | string | null | Image de présentation. |
short_description | string | null | Description en une ligne. |
currency | string | Devise de tarification ; par défaut, la devise de base de l'établissement. |
is_taxable | boolean | Si des taxes s'appliquent à cet extra. |
modifiers | array | Les options et champs de saisie (listes déroulantes tarifées, champs date-heure ou texte) que le client renseigne en l'ajoutant à un blocage. |
Rattachez un service choisi à une réservation via le champ add_ons de POST /holds.
- Réservations : transformer un tarif en blocage puis en réservation confirmée.
- Tarifs : comment les tarifs et les périodes saisonnières se configurent.