Aller au contenu principal

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ètreTypeDescription
pageintNuméro de page
per_pageintÉléments par page
statusstringFiltrer par statut
property_idintFiltrer par propriété
start_datedateDate de début
end_datedateDate 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

StatutDescription
pendingEn attente de paiement
paidPayée et confirmée
confirmedConfirmée
cancelledAnnulée
refundedRemboursée
completedTerminée