Déplacer une réservation
POST /api/v1/bookings/{bookingId}/reschedule
Déplace une réservation à l’heure par date/heure/durée, ou une nuitée par ses dates d’arrivée et de départ.
Le prix est conservé. Un priceAmount absent du corps n’est pas écrit — le prix figé reste.
L’envoyer est une renégociation explicite.
La réservation est exclue de sa propre vérification de collision : la décaler d’une heure sur la même villa n’est pas un conflit. Déplacer dans le passé est autorisé — enregistrer un créneau qui a bougé hier est un vrai travail — et les horaires d’ouverture et les collisions s’appliquent toujours.
Autorisation
| Rôle dans l’organisation | Cet endpoint |
|---|---|
owner | Autorisé |
admin | Autorisé |
member | Autorisé |
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
propertyId | uuid | oui | Villa cible, active, dans la même organisation |
date | chaîne | SHOOT | Jour local YYYY-MM-DD |
startMinute | entier | SHOOT | Minutes depuis minuit local |
durationMinutes | entier | SHOOT | Doit être tarifée pour la villa cible |
checkInDay | chaîne | OVERNIGHT | Jour d’arrivée YYYY-MM-DD |
checkOutDay | chaîne | OVERNIGHT | Jour de départ, strictement après l’arrivée |
priceAmount | entier ou null | non | Nouveau prix explicite ; absent ou null, le prix figé est conservé |
Exemple
curl -X POST -H "x-api-key: $VILLASLOT_API_KEY" -H "content-type: application/json" \
-d '{"propertyId":"1f0a…","date":"2026-09-13","startMinute":600,"durationMinutes":120}' \
"https://villaslot.app/api/v1/bookings/5b2c…/reschedule"Pour une nuitée existante, envoyez :
{
"propertyId": "<target-villa-uuid>",
"checkInDay": "2026-09-10",
"checkOutDay": "2026-09-12"
}Le serveur lit le type de la réservation et les checkInMinute /
checkOutMinute actuels de la villa cible. Une villa en 14:00 / 11:00 produit deux nuits civiles, du 10 à
14:00 au 12 à 11:00 dans le fuseau horaire de l’organisation. La règle du séjour minimum et
les vérifications de conflit entre séjours s’appliquent ; les nuitées gardent un battement nul et ne demandent aucun tarif
horaire. Les heures historiques restent inchangées tant qu’un déplacement n’a pas réussi. La même
transaction préserve le registre des paiements et enregistre l’historique avant/après.
Mélanger les deux formes de corps, ou envoyer l’une pour l’autre sorte de réservation, est rejeté.
Réponse
200 OK— la réservation déplacée.
Ce qu’il refuse
409 Conflict— le créneau cible, ou son battement, est pris ;detailnomme ce qui bloque.422 Unprocessable Entity— la réservation n’est ni une option ni confirmée, la villa cible n’est pas réservable, la durée n’y a pas de tarif, les dates sont invalides ou plus courtes que le séjour minimum, ou le corps ne correspond pas au type de réservation enregistré.401 Unauthorized— clé absente ou invalide, ou clé dont le porteur a quitté l’organisation.404 Not Found— identifiant inconnu, ou identifiant appartenant à une autre organisation. Les deux sont volontairement indiscernables.429 Too Many Requests— plus de 120 requêtes en une minute pour cette clé.