Booking


Melakukan recheck dan booking.

{info} Endpoint ini membutuhkan session. Gunakan Inisiasi untuk mendapatkan session.

{success} Booking secara otomatis melakukan recheck untuk memastikan ketersediaan kamar dan tarif kamar.

{info} Jika status booking pending, update status berikutnya akan dikirim ke Webhook / Callback.

Endpoint

Attribute Value
Method POST

https://8stars.api.digiswitch.id/v1/user/api/hotel/booking

Request

Sign additional value: hotel.booking + ref_id

Contoh

{
  "username": "YOUR_USERNAME",
  "sign": "96e1028f6beaa817ee3670a39c01c69d",
  "code": "skuhotel",
  "session": "9c597acf-23b2-47c3-86b6-b078214257c4",
  "group_id": "023d8a83-b9ae-4622-8930-6d03d65bbd66",
  "ref_id": "refid123",
  "pax": {
    "salutation": "Ms",
    "first_name": "Jane",
    "last_name": "Doe"
  },
  "request_notes": "notes123",
  "auto_allow_price_change": false
}
Parameter Deskripsi Tipe Data Wajib
username Username yang didapatkan dari menu atur koneksi API String Ya
sign Signature dengan formula
md5(username + apiKey + "hotel.booking" + ref_id)
String Ya
code Kode produk hotel String Ya
lang Bahasa response. Default: id String Tidak
session Sesi pencarian String Ya
group_id ID tarif String Ya
ref_id ID unik dari Anda. Digunakan untuk cek status String Ya
pax Objek Tamu Utama Object Ya
pax.salutation Sapaan: Mr, Mrs, Ms String Ya
pax.first_name Nama depan tamu utama String Ya
pax.last_name Nama belakang tamu utama String Ya
request_notes Catatan kepada pemilik properti String Tidak
auto_allow_price_change Lanjutkan booking otomatis jika tarif berubah. Default: false Boolean Tidak

Parameter di bawah ini diperlukan jika terdapat perubahan tarif dan auto_allow_price_change bernilai false.

Parameter Deskripsi Tipe Data Wajib
total_new_price Total tarif terbaru hasil recheck Int Tidak

Response

Data

Parameter Deskripsi Tipe Data Catatan
reply_type Tipe reply: booking atau recheck String API mengembalikan recheck ketika tarif berubah, auto_allow_price_change bernilai false, dan total_new_price tidak dikirim
booking_data Data booking Object Gunakan ketika reply_type adalah booking
recheck_data Data recheck Object Gunakan ketika reply_type adalah recheck. Sama dengan response Recheck

Objek booking_data

Parameter Deskripsi Tipe Data Catatan
booking_number Nomor booking dari pemilik properti String
booking_ref Booking reference ID milik Anda String Sama dengan ref_id pada request
status Status booking Int Lihat Status Transaksi
check_in Tanggal check in YYYY-MM-DD String
check_out Tanggal check out YYYY-MM-DD String
total_price Total harga Int
request_notes Catatan kepada pemilik properti String Hanya muncul jika dikirim pada request
pax_count Objek Jumlah Tamu Object
property Data Properti yang dibooking Object
rooms Data kamar yang dibooking Array
rooms.*.name Nama kamar String
rooms.*.plan Kode paket kamar String
rooms.*.plan_label Definisi paket kamar String
rooms.*.total_price Harga per kamar Int
rooms.*.messages Pesan terkait kebijakan kamar Array of String Hanya muncul jika ada pesan
pax Tamu Utama Object Sama dengan pax pada request

Contoh tanpa perubahan tarif

{
  "message": "Sukses",
  "rc": "00",
  "user": {
    "code": "skuhotel",
    "balance": 99412887972
  },
  "data": {
    "reply_type": "booking",
    "booking_data": {
      "booking_number": "eWmvyIXzmUBChONn",
      "booking_ref": "refid123",
      "status": 1,
      "check_in": "2026-02-12",
      "check_out": "2026-02-14",
      "total_price": 2978927,
      "request_notes": "notes123",
      "pax_count": {
        "total_room": 1,
        "total_adult": 2
      },
      "property": {
        "id": "jkt1",
        "name": "Hotel Indonesia Kempinski Jakarta",
        "star": 5,
        "latitude": "6.82235700",
        "longitude": "-6.19561300",
        "main_photo": "https://ik.imagekit.io/vcrk/dev/hotel",
        "address": {
          "line_1": "Jalan MH Thamrin 1, Central Jakarta",
          "area": "City Center"
        },
        "check_in_time": "14:00:00",
        "check_out_time": "12:00:00",
        "website": "www.kempinski-jakarta.com",
        "facilities": [
          "Wi-Fi",
          "Parking Area",
          "Gym",
          "Restaurant",
          "Bar",
          "Pool"
        ]
      },
      "rooms": [
        {
          "name": "Deluxe King Bundaran HI View",
          "plan": "RO",
          "plan_label": "Hanya Kamar",
          "total_price": 2978927
        }
      ],
      "pax": {
        "salutation": "Ms",
        "first_name": "Jane",
        "last_name": "Doe"
      }
    },
    "recheck_data": null
  },
  "meta": {
    "session": "9c597acf-23b2-47c3-86b6-b078214257c4"
  }
}

Contoh terjadi perubahan tarif

{info} Response di bawah muncul jika auto_allow_price_change bernilai false dan total_new_price tidak dikirimkan.

{danger} Response ini mengembalikan HTTP status code 422. Lihat Response Code.

{
  "message": "Harga kamar/item telah berubah",
  "rc": "14",
  "data": {
    "reply_type": "recheck",
    "booking_data": null,
    "recheck_data": {
      "id": "jkt1",
      "name": "Hotel Indonesia Kempinski Jakarta",
      "star": 5,
      "type": "hotel",
      "rooms": [
        {
          "name": "DELUXE ROOM - INNER COURTYARD VIEW",
          "min_total_price": 3126484,
          "groups": [
            {
              "group_id": "jkt1g2-rate_changes",
              "plan": "BF",
              "plan_label": "With Breakfast",
              "cancel_plan": "NRF",
              "is_smoking": false,
              "total_price": 3126484,
              "details": [
                {
                  "price": 3126484,
                  "room_no": 1
                }
              ]
            }
          ]
        }
      ]
    }
  },
  "meta": {
    "session": "9c597acf-23b2-47c3-86b6-b078214257c4",
    "changes": [
      {
        "new_price": 3126484,
        "room_name": "DELUXE ROOM - INNER COURTYARD VIEW"
      }
    ]
  }
}

Untuk melanjutkan booking setelah tarif berubah, kirim ulang request booking dengan total_new_price sesuai meta.changes atau set auto_allow_price_change menjadi true.

Test Case

{info} Pada test case, group_id selalu sama. Pada production, group_id berbeda tiap sesi.

group_id Deskripsi
jkt1g1-pending Status pending
jkt1g1-success Status sukses
jkt1g1-failed Status gagal
jkt1g2-rate_changes Response dengan reply_type recheck (RC 14)

Contoh

{
  "username": "YOUR_USERNAME",
  "sign": "96e1028f6beaa817ee3670a39c01c69d",
  "code": "skuhotel",
  "session": "9c597acf-23b2-47c3-86b6-b078214257c4",
  "group_id": "jkt1g1-success",
  "ref_id": "refid123",
  "pax": {
    "salutation": "Ms",
    "first_name": "Jane",
    "last_name": "Doe"
  },
  "is_testing": true
}