---
title: "Update Hotel Search Booking Session"
method: PATCH
path: "/hotel-search/booking-sessions/{session_id}"
tags: ["hotel-search"]
---

# Update Hotel Search Booking Session

`PATCH /hotel-search/booking-sessions/{session_id}`

Patch an existing hotel-search booking session.

## Path parameters

- `session_id` string, uuid, required

## Request body

- HotelSearchBookingSessionUpdate — Patch a persisted hotel-search checkout session.
  - `checkout_step` 'review' | 'guests' | 'membership' | 'payment' | 'processing' | 'confirmed' | 'failed', nullable
  - `status` 'active' | 'processing' | 'completed' | 'failed' | 'abandoned', nullable
  - `is_valid` boolean, nullable
  - `payload` object, nullable
  - `booking_id` string, nullable
  - `hotel_purchase_id` string, nullable
  - `confirmation_code` string, nullable
  - `failure_reason` string, nullable
  - `replacement_for_booking_id` string, nullable
  - `conv_trip_id` string, nullable

## Response `200`

Successful Response

- HotelSearchBookingSessionResponse — Persisted hotel-search checkout session.
  - `id` string, uuid, required
  - `user_id` string, uuid, required
  - `hotel_id` integer, required
  - `quote_id` string, required
  - `check_in` string, date, required
  - `check_out` string, date, required
  - `checkout_step` 'review' | 'guests' | 'membership' | 'payment' | 'processing' | 'confirmed' | 'failed', required
  - `status` 'active' | 'processing' | 'completed' | 'failed' | 'abandoned', required
  - `is_valid` boolean, required
  - `payload` object, required
  - `booking_id` string, nullable, required
  - `hotel_purchase_id` string, nullable, required
  - `confirmation_code` string, nullable, required
  - `failure_reason` string, nullable, required
  - `replacement_for_booking_id` string, nullable
  - `conv_trip_id` string, nullable
  - `hotel_name` string, nullable
  - `room_type` string, nullable
  - `price_amount` integer, nullable
  - `price_currency` string, nullable
  - `cancellation_policy` string, nullable
  - `fees_at_property_amount` integer, nullable
  - `fees_at_property_currency` string, nullable
  - `retail_price_amount` integer, nullable
  - `retail_price_currency` string, nullable
  - `guest_names` string[] — Guest names extracted from guest_rooms in payload
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
    - `amount` integer, required
    - `currency` string, required
  - `fees_at_property` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
    - `amount` integer, required
    - `currency` string, required
  - `retail_price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
    - `amount` integer, required
    - `currency` string, required
  - `price_breakdown` HotelPriceBreakdown, required — Computed price breakdown for frontend display.
    - `nights` integer, required
    - `nightly_rate_cents` integer, required
    - `nightly_rate_currency` string, required
    - `subtotal_cents` integer, required
    - `fees_at_property_cents` integer, nullable
    - `fees_at_property_currency` string, nullable
    - `total_cents` integer, nullable
    - `total_currency` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) · [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/helloaxel/client-api-gateway/revisions/7ffb16b1c40d/schema)
