Skip to main content
Endpoint database butuh database:read (baca) atau database:write (ubah). Semua jawaban yang memuat password juga butuh database:write. Key lama tanpa scope tidak punya akses database sama sekali. Lihat Scope.

Buat database

1

Pilih engine, versi, dan paket

Dengan zone_id, versi yang available: false belum ada di zona itu; pilih zona lain (zone_ids) atau versi lain. Harga paket dalam Rupiah per database.
2

Buat

Database ditagih seperti dari dashboard; saldo diperiksa lebih dulu.
3

Tunggu running

Status provisioning sampai running (beberapa menit). Pantau GET /databases/{id}.
4

Ambil info koneksi

Berisi URI, host, port, nama database, user admin, dan password admin. Butuh database:write. Jangan simpan jawaban ini di log.
Field pembuatan lain:

Start, stop, restart

Password admin

POST /databases/{id}/reset-password membuat password admin baru dan mengembalikannya sekali di jawaban (setelah itu hanya lewat info koneksi). 200 dengan applied: true = sudah berlaku; 202 dengan applied: false = masih diterapkan, password lama berlaku sampai selesai.

User dan database logis

  • User dan database logis dibuat secara asinkron (202): status creating sampai active.
  • Password user baru dikembalikan sekali di jawaban POST …/users. Simpan saat itu juga.
  • PUT /databases/{id}/users/{username}/grants dengan {"databases": [...]} menggantikan seluruh daftar database logis yang boleh diakses user (hak ALL); [] mencabut semuanya.
  • POST /databases/{id}/users/{username}/rotate-password membuat password baru (atau pakai new_password), dikembalikan sekali. Password lama berlaku sampai status user kembali active.
  • User admin tidak bisa dihapus, dan database logis awal tidak bisa dihapus.
  • Perubahan user, backup, atau penghapusan saat task sebelumnya masih berjalan ditolak 409; ulangi beberapa detik kemudian.
Pada replay Idempotency-Key, field password berisi null. Bila password hilang, buat yang baru dengan reset/rotate. Lihat Idempotency.

Backup dan restore

Point-in-Time Recovery (PostgreSQL)

  • GET /databases/{id}/pitr: status dan jendela pemulihan (earliest_restorable_at … latest_restorable_at).
  • PUT /databases/{id}/pitr: menyalakan PITR sebagai metode backup (backup harian dimatikan; database direstart sekali, 202), atau mengubah retention_days / full_backup_interval_hours bila sudah menyala (200).
  • DELETE /databases/{id}/pitr: hanya bila ada metode backup lain; bila PITR satu-satunya metode → 422.
Restore ke titik waktu tertentu belum tersedia lewat API.

Read replica (PostgreSQL)

  • Hanya untuk PostgreSQL yang sedang berjalan. Replica ditagih seperti database dengan paketnya (plan_id kosong = paket primary).
  • Replica hanya baca; login dengan user dan password primary (credentials_from di info koneksi). Keadaan replikasi ada di replication.state.
  • POST /databases/{id}/replicas/{replica_id}/promote melepas replica menjadi database mandiri yang bisa ditulis. Tidak bisa dibatalkan.
  • Replica juga tampil di GET /databases dengan role: replica.

Akses publik

1

Isi allowlist

Menggantikan seluruh daftar. Selama akses publik menyala, daftar tidak boleh kosong.
2

Nyalakan

Memasang IP publik (ditagih per jam) yang hanya bisa dihubungi dari allowed_ips. Database di subnet privat tidak bisa punya akses publik.

Hapus database

DELETE /databases/{id} menghapus database beserta VM, disk, dan alamat publiknya, dan menghentikan tagihannya. Hapus read replica-nya dulu. Jawaban 202; database deleting (tidak ditagih) lalu hilang (404).

Belum tersedia lewat API

Resize database, failover HA manual, restore PITR ke titik waktu, perubahan konfigurasi engine, metrik, dan sertifikat CA.