Idempotency — สร้างการจองอย่างปลอดภัย

เมื่อสร้างการจอง (POST /partner/v1/bookings) หากการเชื่อมต่อหลุดหรือ timeout คุณอาจไม่แน่ใจว่าการจองถูกสร้างไปแล้วหรือยัง การส่งคำขอซ้ำโดยไม่ป้องกันอาจทำให้เกิด การจองซ้ำ

ป้องกันด้วยส่วนหัว Idempotency-Key — ค่าที่ไม่ซ้ำกันต่อหนึ่งการจองที่ตั้งใจสร้าง

วิธีใช้

curl -X POST "https://app.romnest.com/api/v1/partner/v1/bookings" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-2026-07-0001" \
  -d '{ "roomTypeId": "...", "checkin": "2026-07-01", "checkout": "2026-07-03", "adults": 2,
        "guest": { "firstName": "สมชาย", "lastName": "ใจดี", "email": "guest@example.com" } }'

พฤติกรรม

  • ครั้งแรกที่ส่งคีย์หนึ่ง → ระบบสร้างการจองและจดจำคีย์นั้นไว้
  • ส่งคำขอด้วย คีย์เดิมซ้ำ → ระบบจะคืน การจองเดิม กลับมา โดยไม่สร้างรายการใหม่

จึงปลอดภัยที่จะลองส่งซ้ำ (retry) เมื่อเจอ network error หรือ 5xx ตราบใดที่ใช้ Idempotency-Key เดิม

แนวทางที่ดี

  • สร้างคีย์ที่ไม่ซ้ำต่อหนึ่งคำสั่งจอง เช่น อ้างอิงเลขออเดอร์ในระบบของคุณ (order-12345)
  • ใช้คีย์ ใหม่ สำหรับการจองใหม่จริงๆ เท่านั้น
  • เก็บคีย์ไว้ฝั่งคุณ เพื่อใช้ค่าเดิมเมื่อต้อง retry

ขั้นถัดไป

คู่มือการใช้งาน — Romnest