Installer API
Documentation.
PUTRAOFFICIAL Installer API menyediakan endpoint untuk instalasi Windows/RDP pada VPS existing, deployment cloud tertentu, manajemen cloud account, server actions, monitoring status, result, log, dan cancel job.
https://installer.tokoputra.id/v1Authentication
Semua endpoint kecuali /health membutuhkan API key aktif. Kirim key pada header Authorization.
API key otomatis dinonaktifkan saat masa subscription berakhir. Jangan menaruh API key di frontend browser, query string, repository publik, atau log.
Quick Start
1. Check service
2. Read catalog
3. Create a job
Subscription status
Endpoint ini menampilkan status subscription, plan, tanggal expired, dan sisa hari akses. Riwayat akses subscription juga tersedia di GET /ledger. Semua plan menyediakan unlimited total installation selama subscription aktif; concurrency dan batas per-request tetap mengikuti limit sistem/provider.
Catalog
Ambil catalog sebelum membuat instalasi. Gunakan version_key, region, plan, dan port rules dari respons. Jangan hard-code pilihan yang dapat berubah.
Cloud Accounts
Cloud account disimpan terisolasi per API key. Customer hanya melihat credential_id lokal miliknya sendiri.
Add Linode account
Add UpCloud account
Add OVHcloud account
List / delete accounts
Server Actions
Lihat server dari cloud credential yang dimiliki API key tersebut.
Start, stop, reboot
Ganti reboot menjadi start atau stop. Untuk delete, kirim {"action":"delete","confirm":true}.
Create Installation
Gunakan mode existing untuk VPS yang sudah ada. Mode deploy tersedia pada provider yang menyediakan deployment melalui cloud credential.
| Field | Required | Description |
|---|---|---|
| cloud | Yes | digitalocean, linode, vultr, upcloud, ovh, other |
| mode | Yes | existing atau deploy |
| targets | Existing | IP dan ssh_port VPS Linux |
| source_credential | Depends | credential_id lokal atau username/password SSH |
| windows.version_key | Yes | Ambil dari catalog |
| rdp.password | Yes | Minimal 8 karakter |
| rdp.port | Recommended | Ikuti port rules dari catalog |
Deploy example
Job Status
Poll setiap sekitar 3 detik atau ikuti next_poll_after_seconds. Berhenti saat terminal=true.
| Status | Meaning |
|---|---|
| accepted / validating | Request diterima dan divalidasi |
| queued | Menunggu antrean |
| preparing | Server/launcher disiapkan |
| installing | Windows sedang dipasang |
| finishing | Finalisasi Windows |
| completed | Berhasil |
| failed | Gagal |
| cancelled | Dibatalkan |
Installation Result
Ketika job selesai, result berisi endpoint RDP, username, password yang kamu request, versi Windows, durasi, dan data target yang tersedia.
Logs
Cancel Job
Job hanya dapat dibatalkan saat state engine masih memungkinkan.
SSH & RDP Ports
targets[].ssh_port adalah port SSH Linux sebelum instalasi. rdp.port adalah port Remote Desktop setelah Windows selesai. Keduanya berbeda dan harus mengikuti aturan terbaru dari catalog.
Idempotency
Setiap POST installation wajib membawa header Idempotency-Key unik 8-128 karakter. Jika network timeout, ulangi payload dengan key yang sama. Payload berbeda dengan key yang sama akan ditolak.
Error Reference
| HTTP | Code | Action |
|---|---|---|
| 400 | invalid_idempotency_key | Periksa header Idempotency-Key |
| 401 | invalid_api_key | Periksa API key |
| 403 | api_key_expired | Perpanjang subscription |
| 404 | job_not_found | Periksa job ID dan key owner |
| 404 | cloud_account_not_found | Ambil ulang daftar cloud accounts |
| 409 | idempotency_conflict | Gunakan payload lama atau key baru |
| 409 | confirm_required | Delete server membutuhkan confirm=true |
| 422 | validation_error | Perbaiki payload sesuai catalog/docs |
| 429 | active_job_limit | Tunggu job aktif berkurang |
| 502/503 | installer_error | Retry bertahap |
Production Security
- Simpan API key sebagai environment variable atau secret manager.
- Jangan panggil endpoint ber-key dari browser milik customer bila secret akan terekspos.
- Jangan log password SSH, RDP, cloud token, atau API key.
- Gunakan HTTPS dan buat Idempotency-Key unik per order.
- Rotasi API key jika dicurigai bocor.