🕌 TSA API Documentation

REST API untuk sistem manajemen TSA (Taman Spiritual Anak) dengan autentikasi API Key.

⚠️ API Key Required: Semua endpoint memerlukan API key yang dikirim melalui header X-API-Key atau parameter api_key.
Valid API Keys:

💸 Pengeluaran

GET /tsa-api/pengeluaran.php - Get all

GET /tsa-api/pengeluaran.php/{id} - Get by ID

POST /tsa-api/pengeluaran.php - Create

PUT /tsa-api/pengeluaran.php/{id} - Update

DELETE /tsa-api/pengeluaran.php/{id} - Delete

Catatan: Field created_by wajib mengacu ke anggota.id dan id_pengeluaran wajib mengacu ke kategori_pengeluaran.id.

Query params (opsional): ?created_by=1&id_pengeluaran=2&from=2025-01-01&to=2025-12-31&page=1&limit=50

🏷️ Kategori Pengeluaran

GET /tsa-api/kategori_pengeluaran.php - Get all

GET /tsa-api/kategori_pengeluaran.php/{id} - Get by ID

POST /tsa-api/kategori_pengeluaran.php - Create

PUT /tsa-api/kategori_pengeluaran.php/{id} - Update

DELETE /tsa-api/kategori_pengeluaran.php/{id} - Delete

📋 Available Endpoints

🔐 Authentication

POST /tsa-api/login.php

Login menggunakan nomor HP dan password dengan hashing bcrypt (kompatibel mundur dengan MD5; password lama akan otomatis dimigrasi ke bcrypt saat login sukses).

Request Body:
{
    "no_hp": "080000000000",
    "password": "Admin@12345"
}

POST /tsa-api/logout.php - Logout dan revoke token aktif

👥 Anggota Management

GET /tsa-api/anggota.php - Get all anggota

GET /tsa-api/anggota.php/{id} - Get anggota by ID

POST /tsa-api/anggota.php - Create new anggota

PUT /tsa-api/anggota.php/{id} - Update anggota

DELETE /tsa-api/anggota.php/{id} - Delete anggota

Catatan: Field sosial media baru: whatsapp, tiktok, facebook, instagram, youtube. Password kini disimpan menggunakan bcrypt.

PUT /tsa-api/anggota.php/{id}/password - Ganti password (butuh old_password), simpan sebagai bcrypt.

PUT /tsa-api/anggota.php/{id}/reset_password - Reset password (khusus Super Admin), tanpa old_password, simpan sebagai bcrypt.

💼 Jabatan Management

GET /tsa-api/jabatan.php - Get all jabatan

GET /tsa-api/jabatan.php/{id} - Get jabatan by ID

POST /tsa-api/jabatan.php - Create new jabatan

PUT /tsa-api/jabatan.php/{id} - Update jabatan

DELETE /tsa-api/jabatan.php/{id} - Delete jabatan

📊 Status Anggota Management

GET /tsa-api/status_anggota.php - Get all status anggota

GET /tsa-api/status_anggota.php/{id} - Get status anggota by ID

POST /tsa-api/status_anggota.php - Create new status anggota

PUT /tsa-api/status_anggota.php/{id} - Update status anggota

DELETE /tsa-api/status_anggota.php/{id} - Delete status anggota

📖 Penyaluran Quran Management

GET /tsa-api/penyaluran_quran.php - Get all penyaluran quran

GET /tsa-api/penyaluran_quran.php/{id} - Get penyaluran quran by ID

POST /tsa-api/penyaluran_quran.php - Create new penyaluran quran

PUT /tsa-api/penyaluran_quran.php/{id} - Update penyaluran quran

DELETE /tsa-api/penyaluran_quran.php/{id} - Delete penyaluran quran

📋 Status Pengajuan Management

GET /tsa-api/status_pengajuan.php - Get all status pengajuan

GET /tsa-api/status_pengajuan.php/{id} - Get status pengajuan by ID

POST /tsa-api/status_pengajuan.php - Create new status pengajuan

PUT /tsa-api/status_pengajuan.php/{id} - Update status pengajuan

DELETE /tsa-api/status_pengajuan.php/{id} - Delete status pengajuan

🛡️ Role Management

GET /tsa-api/role.php - Get all roles

GET /tsa-api/role.php/{id} - Get role by ID

POST /tsa-api/role.php - Create new role

PUT /tsa-api/role.php/{id} - Update role

DELETE /tsa-api/role.php/{id} - Delete role

💰 Penerimaan Infak

GET /tsa-api/penerimaan_infak.php - Get all

GET /tsa-api/penerimaan_infak.php/{id} - Get by ID

POST /tsa-api/penerimaan_infak.php - Create

PUT /tsa-api/penerimaan_infak.php/{id} - Update

DELETE /tsa-api/penerimaan_infak.php/{id} - Delete

Catatan: Field created_by wajib mengacu ke anggota.id.

Query params (opsional): ?created_by=1&from=2025-01-01&to=2025-12-31&page=1&limit=50

📚 Penerimaan Wakaf Mushaf

GET /tsa-api/penerimaan_wakaf_mushaf.php - Get all

GET /tsa-api/penerimaan_wakaf_mushaf.php/{id} - Get by ID

POST /tsa-api/penerimaan_wakaf_mushaf.php - Create

PUT /tsa-api/penerimaan_wakaf_mushaf.php/{id} - Update

DELETE /tsa-api/penerimaan_wakaf_mushaf.php/{id} - Delete

Catatan: Field created_by wajib mengacu ke anggota.id.

Query params (opsional): ?created_by=1&from=2025-01-01&to=2025-12-31&page=1&limit=50

💵 Penerimaan Wakaf Uang

GET /tsa-api/penerimaan_wakaf_uang.php - Get all

GET /tsa-api/penerimaan_wakaf_uang.php/{id} - Get by ID

POST /tsa-api/penerimaan_wakaf_uang.php - Create

PUT /tsa-api/penerimaan_wakaf_uang.php/{id} - Update

DELETE /tsa-api/penerimaan_wakaf_uang.php/{id} - Delete

Catatan: Field created_by wajib mengacu ke anggota.id.

Query params (opsional): ?created_by=1&from=2025-01-01&to=2025-12-31&page=1&limit=50

📝 Example Usage

Using cURL:

# Login (Default Super Admin)
curl -X POST "http://localhost/tsa-api/login.php" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tsa-api-key-2024" \
  -d '{"no_hp":"080000000000","password":"Admin@12345"}'

# Get all anggota
curl -X GET "http://localhost/tsa-api/anggota.php" \
  -H "X-API-Key: tsa-api-key-2024"

# Create new anggota
curl -X POST "http://localhost/tsa-api/anggota.php" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tsa-api-key-2024" \
  -d '{"nama":"John Doe","gender":"L","no_hp":"081234567890","password":"password123"}'
            

🔧 Database Schema

API ini menggunakan database dengan 11 tabel utama:

TableDescription
anggotaData anggota TSA
jabatanMaster data jabatan
status_anggotaMaster data status anggota
penyaluran_quranData penyaluran Al-Quran dan Iqra
status_pengajuanMaster data status pengajuan
roleMaster data role pengguna
penerimaan_infakData penerimaan infak (dengan created_by anggota)
penerimaan_wakaf_mushafData penerimaan wakaf mushaf (dengan created_by anggota)
penerimaan_wakaf_uangData penerimaan wakaf uang (dengan created_by anggota)
pengeluaranData pengeluaran kas (dengan created_by anggota)
kategori_pengeluaranKategori/jenis pengeluaran

📞 Response Format

Semua response menggunakan format JSON dengan struktur:

{
    "status": "success|error",
    "message": "Response message",
    "data": {} // Data object (optional)
}

Developed with ❤️ for TSA Management System