REST API Docs

Semua endpoint di bawah butuh header x-api-key: sk_xxx (dibuat lewat dashboard) kecuali disebutkan lain. Base URL = domain worker kamu.

Autentikasi

Ada dua cara login ke API ini:

POST/auth/login

{ "username": "admin", "password": "secret" }
→ { "token": "...", "user": { "id": 1, "username": "admin", "role": "admin" } }

Data (dipakai project PHP/JS kamu)

MethodPathKeterangan
GET/api/:tableList baris. Query: limit, offset, orderBy, order, kolom=nilai
GET/api/:table/:idAmbil satu baris
POST/api/:tableInsert baris baru (body: JSON)
PUT/api/:table/:idUpdate baris (body: JSON)
DELETE/api/:table/:idHapus baris
GET/tablesList semua tabel
GET/tables/:table/columnsStruktur kolom tabel

Admin only (butuh JWT admin)

MethodPathKeterangan
GET/apikeysList API key
POST/apikeysBuat API key baru: { "name": "..." }
DELETE/apikeys/:idRevoke API key
POST/queryJalankan raw SQL: { "sql": "...", "params": [] }
GET/tools/statsJumlah baris per tabel (badge sidebar dashboard)
GET/tools/db-infoInfo storage D1 (page_size, page_count, used_bytes)
GET/tools/tables/:table/exportExport tabel: ?format=json|csv (CSV pakai BOM UTF-8)
POST/tools/import/:tableImport baris: { "rows": [...], "mode": "insert|upsert" } (upsert butuh kolom id)
POST/tools/duplicate/:table/:idDuplicate satu baris (tanpa id-nya)
GET/tools/audit-logsAudit log: ?table=&action=CREATE|UPDATE|DELETE&limit=&offset= → { "logs": [...], "total": n }

Endpoint /tools/* khusus dashboard (butuh JWT admin) — dipakai fitur Tools & Audit di UI. Semua mutasi lewat /api/* otomatis tercatat di tabel audit_logs (lihat tab Tools & Audit).

Contoh pakai dari PHP

<?php
$ch = curl_init("https://your-worker.workers.dev/api/posts");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: sk_xxx"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$posts = json_decode(curl_exec($ch), true);

// Insert
$ch = curl_init("https://your-worker.workers.dev/api/posts");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: sk_xxx", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["title" => "Halo", "body" => "Isi post"]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$created = json_decode(curl_exec($ch), true);

Contoh pakai dari JS

const res = await fetch("https://your-worker.workers.dev/api/posts", {
  headers: { "x-api-key": "sk_xxx" }
});
const posts = await res.json();

await fetch("https://your-worker.workers.dev/api/posts", {
  method: "POST",
  headers: { "x-api-key": "sk_xxx", "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Halo", body: "Isi post" })
});