7.5 KiB
📖 API Enroll Documentation
Base URL: http://localhost:8080
Endpoint: /api/enroll
Seluruh operasi CRUD dilakukan melalui satu endpoint ini, cukup dengan GET dan POST.
🔐 Authentication
Semua request ke /api/enroll wajib menyertakan header:
Authorization: Bearer <token>
| Info | Nilai |
|---|---|
| Token default | secret123 |
| Letak config | app.py → variabel API_TOKEN |
Response 401 Unauthorized (tanpa header)
{
"error": "missing or invalid Authorization header"
}
Response 401 Unauthorized (token salah)
{
"error": "invalid token"
}
📊 Database Schema
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INTEGER | Primary key, auto-increment |
type |
TEXT | Tipe enrollment — hanya boleh Annually atau Monthly |
service |
TEXT | Paket layanan — hanya boleh Lite, Value, atau Pro |
user |
TEXT | Nama pengguna (contoh: alice) |
🏠 Routes
| Route | Method | Auth | Fungsi |
|---|---|---|---|
/ |
GET | ❌ | Halaman playground (UI web) |
/api/enroll |
GET | ✅ | List / Detail enrollment |
/api/enroll |
POST | ✅ | Add / Edit / Remove enrollment |
1️⃣ List — Mendapatkan semua data
Request
GET /api/enroll
Authorization: Bearer secret123
Contoh curl
curl -H "Authorization: Bearer secret123" \
http://localhost:8080/api/enroll
Response 200 OK
{
"data": [
{
"id": 2,
"type": "Monthly",
"service": "Lite",
"user": "bob"
},
{
"id": 1,
"type": "Annually",
"service": "Pro",
"user": "alice"
}
]
}
2️⃣ Detail — Mendapatkan satu data
Request
GET /api/enroll?id=<id>
Authorization: Bearer secret123
Parameter Query
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
id |
integer | ✅ | ID enrollment |
Contoh curl
curl -H "Authorization: Bearer secret123" \
http://localhost:8080/api/enroll?id=1
Response 200 OK
{
"data": {
"id": 1,
"type": "Annually",
"service": "Pro",
"user": "alice"
}
}
Response 404 Not Found
{
"error": "not found"
}
3️⃣ Add — Menambah data baru
Request
POST /api/enroll
Authorization: Bearer secret123
Content-Type: application/x-www-form-urlencoded
Form Data
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
type |
string | ✅ | Hanya boleh Annually atau Monthly |
service |
string | ✅ | Hanya boleh Lite, Value, atau Pro |
user |
string | ✅ | Nama pengguna |
⚠️ Jangan kirim field
id— kalauidterkirim, ini akan dianggap Edit.
Contoh curl
curl -X POST http://localhost:8080/api/enroll \
-H "Authorization: Bearer secret123" \
-d "type=Annually" \
-d "service=Pro" \
-d "user=alice"
Response 201 Created
{
"message": "created",
"id": 1
}
Response 400 Bad Request (type/service tidak valid)
{
"error": "type must be one of: Annually, Monthly"
}
{
"error": "service must be one of: Lite, Value, Pro"
}
4️⃣ Edit — Mengubah data yang sudah ada
Request
POST /api/enroll
Authorization: Bearer secret123
Content-Type: application/x-www-form-urlencoded
Form Data
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
id |
integer | ✅ | ID yang ingin diubah |
type |
string | ✅ | Hanya boleh Annually atau Monthly (baru) |
service |
string | ✅ | Hanya boleh Lite, Value, atau Pro (baru) |
user |
string | ✅ | Nama pengguna (baru) |
💡 Cukup sertakan
idpada form POST, sistem otomatis tahu ini adalah operasi Edit.
Contoh curl
curl -X POST http://localhost:8080/api/enroll \
-H "Authorization: Bearer secret123" \
-d "id=1" \
-d "type=Monthly" \
-d "service=Value" \
-d "user=bob"
Response 200 OK
{
"message": "updated",
"id": 1
}
Response 400 Bad Request (type/service tidak valid)
{
"error": "type must be one of: Annually, Monthly"
}
{
"error": "service must be one of: Lite, Value, Pro"
}
5️⃣ Remove — Menghapus data
Request
POST /api/enroll
Authorization: Bearer secret123
Content-Type: application/x-www-form-urlencoded
Form Data
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
id |
integer | ✅ | ID yang ingin dihapus |
action |
string | ✅ | Harus bernilai "remove" (sebagai penanda) |
Contoh curl
curl -X POST http://localhost:8080/api/enroll \
-H "Authorization: Bearer secret123" \
-d "id=1" \
-d "action=remove"
Response 200 OK
{
"message": "removed",
"id": 1
}
Response 400 Bad Request (tanpa id)
{
"error": "id is required for remove"
}
📋 Ringkasan Logika POST
POST /api/enroll
│
├── action = "remove" → hapus data (butuh id)
├── ada id → edit data (butuh type, service, user)
└── tidak ada id → tambah data baru (butuh type, service, user)
🔑 Ringkasan Response Error
| Status | Kondisi | Body |
|---|---|---|
401 |
Tanpa header Authorization | {"error": "missing or invalid …"} |
401 |
Token salah | {"error": "invalid token"} |
400 |
Field wajib kosong | {"error": "… are required"} |
400 |
Type bukan Annually/Monthly | {"error": "type must be one of: Annually, Monthly"} |
400 |
Service bukan Lite/Value/Pro | {"error": "service must be one of: Lite, Value, Pro"} |
404 |
ID tidak ditemukan | {"error": "not found"} |
🎮 Playground UI
Setelah server jalan, buka browser ke:
http://localhost:8080
Anda akan diarahkan ke halaman Playground yang memudahkan pengujian semua endpoint langsung dari browser:
- Isi token di bar atas (default:
secret123) - Status otomatis berubah: ✅ authenticated / ❌ wrong token
- Isi form, klik tombol, lihat response JSON secara realtime
🚀 Quick Start
# masuk ke folder project
cd api-playground
# install dependency
pip3 install -r requirements.txt
# jalankan server
python3 app.py
# buka di browser
# http://localhost:8080
Server akan berjalan di http://0.0.0.0:8080 dengan reloader=True (auto-restart saat kode diubah).