Reference
Integration checklist
The seven steps, in order.
GET /ping— key works, and checkserver_timeagainst your clock.GET /whoami— confirm your scopes and thatmapped_propertiesis not 0.GET /mapping/hotels— get your hotel codes. Never use a Staylah id. Needscontent.read, which the push preset does not include — ask for it.GET /mapping/hotels/{code}— get room type and rate plan codes plus occupancy bounds.- Pull:
availability/search→availability/rates→bookings/quote→POST /bookingswith apartner_referenceyou can reproduce on retry. Then retry that exact call and confirm you get200withis_duplicate: truerather than a second booking — that is the single most important behaviour to verify before going live. - Push:
PUT /ari→GET /ari/batches/{id}to confirm what applied; deliver reservations withsell_amountand watchdata.intake_stateon the response. - Handle
429withRetry-After, and branch onerror.code— never onerror.message. - Handle the three business outcomes you cannot avoid:
no_availability(the room went between quoting and booking — quotes do not hold inventory),rate_changed(your total disagrees with ours — re-quote, never re-send the same figure), and an expired quote (booked anyway, at the live price; comparequote.quoted_totalwithquote.booked_total).
