Mulai Cepat
Dari daftar sampai punya link booking yang hidup dalam beberapa langkah: masuk dengan Google, buat satu layanan, atur jam operasional, lalu bagikan atau pasang link booking-nya. Tiap langkah cocok dengan tampilan dashboard dan punya endpoint API yang sesuai.
/api/*; partner API memakai /v1/* secara terpisah. Semua timestamp memakai epoch milidetik UTC (akhiran _at_ms).Ringkasan langkah#
Lima langkah membawa Anda dari nol ke booking pertama. Anda bisa mengerjakannya lewat dashboard, lewat API, atau campuran keduanya.
- Masuk dengan GoogleLogin OIDC Google membuat sesi dashboard.
- Buat layanan pertamaTetapkan nama, durasi, dan harga lewat Katalog → Layanan.
- Atur jam operasionalTentukan jam buka mingguan, blokir waktu, dan hari libur.
- Bagikan atau embed linkSebar link booking publik atau pasang widget di website mana pun.
- Terima booking pertamaPelanggan memilih slot dan submit tanpa perlu akun.
1. Masuk dengan Google#
Termilo memakai login Google (OIDC) untuk dashboard. Setelah masuk, sesi disimpan sebagai cookie HttpOnly __Host-termilo_session selama 30 hari. Semua permintaan yang mengubah data di /api/* memerlukan header CSRF X-Termilo-CSRF yang Anda ambil dari GET /api/session (csrfToken).
Shard tenant ditentukan dari workspace aktif sesi Anda — bukan dari id tenant yang dikirim pemanggil. Peran tenant_owner dan tenant_admin boleh menulis; tenant_staff dan tenant_viewer hanya membaca.
2. Buat layanan pertama#
Di dashboard: buka Katalog → Layanan → Tambah layanan. Isi Nama, Kategori, dan Deskripsi; nyalakan “Aktif untuk dibooking”. Atur Durasi (menit) dan Buffer setelah (menit), lalu set Harga (Rp). Simpan.
Setiap aksi simpan dipetakan ke POST /api/services. Hanya tiga field yang wajib:
Membuat layanan lewat API langsung:
3. Atur jam operasional#
Buka Operasional → Jam operasional. Atur jam buka–tutup per hari (Sen–Min, langkah 30 menit) dan pakai “Salin ke semua hari” agar cepat. Nyalakan “Tutup otomatis saat libur nasional”, lalu tambahkan “Pengecualian & hari libur” bila perlu.
Pemetaan endpoint: jendela mingguan ke POST /api/availability-rules (sebagai weekday, startMinute, endMinute, timezone), blokir waktu satu kali ke POST /api/blocked-times, dan penutupan tenant ke POST /api/holidays. Validasi mensyaratkan startMinute < endMinute.
finalAuthority: booking_create_recheck_under_lock.4. Bagikan atau embed link#
Begitu ada layanan aktif dan jam operasional, halaman booking publik Anda hidup di /book/akun-anda (ganti akun-anda dengan slug tenant Anda). Bagikan langsung, atau pasang sebagai widget di website mana pun lewat custom element <termilo-booking>.
Widget mengambil konfigurasinya dari atribut data-termilo-* atau lewat window.Termilo.init(...). Mode inline menanam form di halaman; mode modal membukanya dari tombol pemicu:
source: "embed" dan memicu event serta audit yang sama seperti booking dari halaman publik (source: "public_page"). Panduan Embed di Website membahas semua atribut dan opsi tampilan.5. Terima booking pertama#
Pelanggan tidak perlu akun. Aplikasi membaca slot publik (tanpa auth), lalu mengirim booking. Endpoint availability mengembalikan kandidat slot beserta capacityRemaining; jendela maksimal 31 hari:
Untuk membuat booking, kirim serviceSlug, startsAtMs, source, dan objek customer dengan email atau telepon. Header Idempotency-Key wajib:
Respons mengembalikan objek booking ditambah manageToken dan manageUrl agar pelanggan bisa mengelola booking-nya sendiri. Status awal selalu held dengan hold_expires_at_ms = sekarang + 10 menit.
BOOKING_SLOT_UNAVAILABLE (409). Status 201 untuk booking baru, 200 untuk replay idempoten.Selesai. Dari dashboard, Anda lalu menjalankan siklus booking lewat /api/bookings/:bookingId/confirm, …/cancel, …/complete, …/no-show, dan …/reschedule.
Lanjut ke panduan lengkap#
Sudah punya link booking yang hidup? Dalami tiap langkah: