Réservations
Prévisualisation (Public)
Calculer le prix avant réservation :
POST /reservations/preview
Body
{
"property_id": 1,
"checkin_date": "2024-06-01",
"checkout_date": "2024-06-07",
"rooms": [
{
"room_type_id": 1,
"rate_plan_id": 1,
"rooms_count": 1
}
],
"promo_code": "SUMMER20"
}
Réponse
{
"success": true,
"data": {
"property_id": 1,
"checkin_date": "2024-06-01",
"checkout_date": "2024-06-07",
"nights": 6,
"currency": "EUR",
"base_price_per_night": 120.00,
"base_total": 720.00,
"cleaning_fee": 50.00,
"service_fee_total": 72.00,
"tax_amount": 42.10,
"promo_discount": 50.00,
"total": 834.10
}
}
Créer une réservation
POST /reservations
Authorization: Bearer <token>
Body
{
"property_id": 1,
"checkin_date": "2024-06-01",
"checkout_date": "2024-06-07",
"guests": {
"adults": 2,
"children": 1
},
"special_requests": "Arrivée tardive prévue",
"promo_code": "SUMMER20"
}
Réponse
{
"success": true,
"data": {
"id": 123,
"booking_ref_code": "BK-ABC123",
"status": "pending",
"checkin_date": "2024-06-01",
"checkout_date": "2024-06-07",
"price_details": { ... },
"total": "834.10",
"payment_url": "https://checkout.stripe.com/..."
}
}
Liste des réservations
GET /reservations?page=1&per_page=15
Authorization: Bearer <token>
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| page | int | Numéro de page |
| per_page | int | Éléments par page |
| status | string | Filtrer par statut |
| property_id | int | Filtrer par propriété |
| start_date | date | Date de début |
| end_date | date | Date de fin |
Détail d'une réservation
GET /reservations/{id}
Authorization: Bearer <token>
Modifier une réservation
PUT /reservations/{id}
Authorization: Bearer <token>
Body
{
"checkin_date": "2024-06-02",
"checkout_date": "2024-06-08",
"guests": {
"adults": 2,
"children": 0
}
}
Réponse (avec supplément)
{
"success": true,
"data": {
"id": 123,
"needs_additional_payment": true,
"additional_due": 120.00,
"old_total": 834.10,
"new_total": 954.10,
"pricing": {
"old_total": 834.10,
"new_total": 954.10,
"paid_amount": 834.10,
"additional_due": 120.00,
"refund_due": 0
}
}
}
Annuler une réservation
POST /reservations/{id}/cancel
Authorization: Bearer <token>
Body
{
"reason": "Changement de plans"
}
Remboursements (Propriétaire)
Approuver un remboursement
POST /reservations/{id}/approve-refund
Authorization: Bearer <token>
Refuser un remboursement
POST /reservations/{id}/reject-refund
Authorization: Bearer <token>
Réservations avec un client (Propriétaire)
GET /reservations/with-client/{client_id}?status=paid&limit=20
Authorization: Bearer <token>
Statuts de réservation
| Statut | Description |
|---|---|
| pending | En attente de paiement |
| paid | Payée et confirmée |
| confirmed | Confirmée |
| cancelled | Annulée |
| refunded | Remboursée |
| completed | Terminée |