Changelog
reserve-answer now carries use_point, the points the user chose for the attempt; a point-only change sends use_point with an empty answers: [], since answers stays required. The attempt keeps the amount, and reserve-confirm resends it as payment.use_point only on the catch_pay branch, while the points branch confirms with {method: "points"} alone.
The bound transition runs from the 2026-10-14 contract to the 2026-10-21 release. (1) Request: optional use_point (KRW, 0 or at least 100) records the points the user stated for this attempt; reserve-confirm resends it as payment.use_point only on the catch_pay branch, while the points branch confirms with payment {method: \"points\"} alone and does not resend the stored amount. answers stays required and may be sent empty ([]) for a point-only change; otherwise send the new answers, as before. An answer's quantity applies to add-ons and to menu items whose option carries default_quantity or max_quantity; such menu items may be answered together, one answer per item with its quantity, and an absent quantity counts the item's default_quantity. (2) Response, needs_input: add-on valid_options add unit_price_krw (KRW per unit) and age_verification_required (CatchTable marks the item 19+). (3) Response, ready summary: payment_methods may list catch_pay, only when reserve declared it in accepted_payment_methods; points is no longer listed, because points are an amount the user chooses rather than a confirmation method, and points_applicable_krw is no longer returned. payment_amount_krw is the reservation form total before any deposit-free consent. The summary adds zero_deposit_available, meal_auto_pay_supported and time_is_next_day (a slot CatchTable lists under date but shows as the next day). For attempts declaring accepted_payment_methods it also adds shop_name, attempt_expires_at, points_balance_krw, catch_pay_card_ready, pay_now_amount_krw, pay_now_after_points_krw (when the chosen points apply), zero_deposit_pay_now_amount_krw, free_cancellation_until and, when the booking has a deposit, CatchTable's deposit_refund_policy and zero_deposit_cancellation_fee_policy tables with zero_deposit_fee_notice; catch_pay_status and penalty_option_available appear when catch_pay is listed. Show these terms to the user before reserve-confirm. (4) Errors: new ATTEMPT_EXPIRED_UNSENT (400, the attempt expired before anything was sent; start a new reserve), PERSON_OUT_OF_RANGE (409, the party is outside the sizes the shop takes online that day) and ONLINE_RESERVATION_UNAVAILABLE (409, no online reservation that day). No field or error code was removed.