# API RT (Rukun Tetangga) Documentation

Base URL: `http://127.0.0.1:8000/api/v1/rt`

Semua endpoint memerlukan authentication token (Bearer Token).

## 📋 Data Warga

### 1. List Warga
```
GET /api/v1/rt/warga
```

**Query Parameters:**
- `rt` - Filter by RT number
- `status_warga` - Filter by status (Aktif, Pindah, Meninggal)
- `search` - Search by nama, NIK, atau KK
- `page` - Pagination

**Response:**
```json
{
  "data": [
    {
      "id": 1,
      "nik": "3201012345678901",
      "kk": "3201011234567890",
      "nama": "Ahmad Suryadi",
      "jenis_kelamin": "L",
      "tempat_lahir": "Jakarta",
      "tanggal_lahir": "1990-05-15",
      "alamat": "Jl. Merdeka No. 10",
      "rt": "001",
      "rw": "005",
      "telepon": "081234567890",
      "status_warga": "Aktif"
    }
  ],
  "links": {...},
  "meta": {...}
}
```

### 2. Tambah Warga
```
POST /api/v1/rt/warga
```

**Request Body:**
```json
{
  "nik": "3201012345678901",
  "kk": "3201011234567890",
  "nama": "Ahmad Suryadi",
  "jenis_kelamin": "L",
  "tempat_lahir": "Jakarta",
  "tanggal_lahir": "1990-05-15",
  "alamat": "Jl. Merdeka No. 10",
  "rt": "001",
  "rw": "005",
  "kelurahan": "Kebon Jeruk",
  "kecamatan": "Kebon Jeruk",
  "kota": "Jakarta Barat",
  "provinsi": "DKI Jakarta",
  "telepon": "081234567890",
  "email": "ahmad@example.com",
  "status_perkawinan": "Kawin",
  "pekerjaan": "Wiraswasta"
}
```

### 3. Detail Warga
```
GET /api/v1/rt/warga/{id}
```

### 4. Update Warga
```
PUT /api/v1/rt/warga/{id}
```

### 5. Hapus Warga
```
DELETE /api/v1/rt/warga/{id}
```

### 6. Mutasi Warga
```
POST /api/v1/rt/warga/mutasi
```

**Request Body:**
```json
{
  "warga_id": 1,
  "jenis_mutasi": "Pindah Keluar",
  "tanggal_mutasi": "2026-02-09",
  "alamat_tujuan": "Jl. Baru No. 20, Bandung",
  "keterangan": "Pindah karena pekerjaan"
}
```

**Jenis Mutasi:**
- Pindah Masuk
- Pindah Keluar
- Meninggal
- Lahir

### 7. Import Warga (Excel/CSV)
```
POST /api/v1/rt/warga/import
```

---

## 📄 Administrasi Surat

### 1. List Surat
```
GET /api/v1/rt/administrasi/surat
```

**Query Parameters:**
- `status` - Filter by status (Pending, Disetujui, Ditolak)
- `jenis_surat` - Filter by jenis surat
- `warga_id` - Filter by warga

### 2. Buat Surat
```
POST /api/v1/rt/administrasi/surat
```

**Request Body:**
```json
{
  "jenis_surat": "Keterangan Domisili",
  "warga_id": 1,
  "tanggal_surat": "2026-02-09",
  "keperluan": "Untuk keperluan pembuatan KTP",
  "keterangan": "Warga aktif sejak 2020"
}
```

**Jenis Surat:**
- Pengantar KTP
- Pengantar KK
- Keterangan Domisili
- Keterangan Usaha
- Keterangan Tidak Mampu
- Keterangan Kelahiran
- Keterangan Kematian
- Lainnya

### 3. Detail Surat
```
GET /api/v1/rt/administrasi/surat/{id}
```

### 4. Update Status Surat
```
PUT /api/v1/rt/administrasi/surat/{id}
```

**Request Body:**
```json
{
  "status": "Disetujui",
  "keterangan": "Surat telah disetujui"
}
```

### 5. Hapus Surat
```
DELETE /api/v1/rt/administrasi/surat/{id}
```

### 6. Generate Nomor Surat
```
GET /api/v1/rt/administrasi/surat/nomor
```

**Response:**
```json
{
  "nomor_surat": "001/RT/SKT/2026"
}
```

---

## 💰 Keuangan - Iuran

### 1. List Iuran
```
GET /api/v1/rt/keuangan/iuran
```

**Query Parameters:**
- `bulan` - Filter by bulan (1-12)
- `tahun` - Filter by tahun
- `status` - Filter by status (Belum Bayar, Sudah Bayar)
- `jenis_iuran` - Filter by jenis iuran

### 2. Tambah Iuran
```
POST /api/v1/rt/keuangan/iuran
```

**Request Body:**
```json
{
  "warga_id": 1,
  "jenis_iuran": "Iuran Kebersihan",
  "bulan": 2,
  "tahun": 2026,
  "nominal": 50000,
  "status": "Belum Bayar"
}
```

### 3. Update Iuran (Pembayaran)
```
PUT /api/v1/rt/keuangan/iuran/{id}
```

**Request Body:**
```json
{
  "tanggal_bayar": "2026-02-09",
  "status": "Sudah Bayar",
  "keterangan": "Bayar via transfer"
}
```

### 4. Laporan Iuran
```
GET /api/v1/rt/keuangan/iuran/laporan?bulan=2&tahun=2026
```

**Response:**
```json
{
  "bulan": 2,
  "tahun": 2026,
  "summary": [
    {
      "jenis_iuran": "Iuran Kebersihan",
      "total_warga": 50,
      "sudah_bayar": 35,
      "belum_bayar": 15,
      "total_terkumpul": 1750000,
      "total_target": 2500000
    }
  ]
}
```

---

## 💵 Keuangan - Kas RT

### 1. List Transaksi Kas
```
GET /api/v1/rt/keuangan/kas
```

**Query Parameters:**
- `jenis` - Filter by jenis (Pemasukan, Pengeluaran)
- `kategori` - Filter by kategori
- `tanggal_dari` - Filter tanggal mulai
- `tanggal_sampai` - Filter tanggal akhir

### 2. Tambah Transaksi Kas
```
POST /api/v1/rt/keuangan/kas
```

**Request Body:**
```json
{
  "tanggal": "2026-02-09",
  "jenis": "Pengeluaran",
  "kategori": "Kebersihan",
  "nominal": 200000,
  "keterangan": "Beli alat kebersihan"
}
```

### 3. Update Transaksi Kas
```
PUT /api/v1/rt/keuangan/kas/{id}
```

### 4. Hapus Transaksi Kas
```
DELETE /api/v1/rt/keuangan/kas/{id}
```

### 5. Laporan Kas
```
GET /api/v1/rt/keuangan/kas/laporan?bulan=2&tahun=2026
```

**Response:**
```json
{
  "bulan": 2,
  "tahun": 2026,
  "pemasukan": 5000000,
  "pengeluaran": 2000000,
  "saldo": 3000000,
  "detail_pemasukan": [
    {
      "kategori": "Iuran Warga",
      "total": 4000000
    }
  ],
  "detail_pengeluaran": [
    {
      "kategori": "Kebersihan",
      "total": 1000000
    }
  ]
}
```

---

## 📢 Informasi - Pengumuman

### 1. List Pengumuman
```
GET /api/v1/rt/informasi/pengumuman
```

**Query Parameters:**
- `kategori` - Filter by kategori
- `is_active` - Filter by status aktif (true/false)

### 2. Buat Pengumuman
```
POST /api/v1/rt/informasi/pengumuman
```

**Request Body:**
```json
{
  "judul": "Gotong Royong Minggu Depan",
  "isi": "Dihimbau kepada seluruh warga untuk mengikuti gotong royong...",
  "kategori": "Kebersihan",
  "prioritas": "Tinggi",
  "tanggal_mulai": "2026-02-10",
  "tanggal_selesai": "2026-02-15"
}
```

**Kategori:**
- Umum
- Keamanan
- Kebersihan
- Iuran
- Acara
- Lainnya

**Prioritas:**
- Rendah
- Sedang
- Tinggi

### 3. Detail Pengumuman
```
GET /api/v1/rt/informasi/pengumuman/{id}
```

### 4. Update Pengumuman
```
PUT /api/v1/rt/informasi/pengumuman/{id}
```

### 5. Hapus Pengumuman
```
DELETE /api/v1/rt/informasi/pengumuman/{id}
```

---

## 📅 Informasi - Agenda

### 1. List Agenda
```
GET /api/v1/rt/informasi/agenda
```

**Query Parameters:**
- `jenis` - Filter by jenis
- `status` - Filter by status
- `bulan` - Filter by bulan
- `tahun` - Filter by tahun

### 2. Buat Agenda
```
POST /api/v1/rt/informasi/agenda
```

**Request Body:**
```json
{
  "judul": "Rapat RT Bulanan",
  "deskripsi": "Membahas program kerja bulan depan",
  "tanggal_mulai": "2026-02-15 19:00:00",
  "tanggal_selesai": "2026-02-15 21:00:00",
  "lokasi": "Balai RT",
  "jenis": "Rapat",
  "peserta": "Pengurus RT dan Ketua RW"
}
```

**Jenis Agenda:**
- Rapat
- Gotong Royong
- Acara
- Ronda
- Lainnya

**Status:**
- Terjadwal
- Berlangsung
- Selesai
- Dibatalkan

### 3. Detail Agenda
```
GET /api/v1/rt/informasi/agenda/{id}
```

### 4. Update Agenda
```
PUT /api/v1/rt/informasi/agenda/{id}
```

### 5. Hapus Agenda
```
DELETE /api/v1/rt/informasi/agenda/{id}
```

---

## 🔔 Notifikasi

### 1. List Notifikasi
```
GET /api/v1/rt/informasi/notifikasi
```

**Query Parameters:**
- `is_read` - Filter by status baca (true/false)

### 2. Tandai Sudah Dibaca
```
PUT /api/v1/rt/informasi/notifikasi/{id}/read
```

### 3. Tandai Semua Sudah Dibaca
```
PUT /api/v1/rt/informasi/notifikasi/read-all
```

### 4. Jumlah Notifikasi Belum Dibaca
```
GET /api/v1/rt/informasi/notifikasi/unread-count
```

**Response:**
```json
{
  "unread_count": 5
}
```

---

## 🔐 Authentication

Semua endpoint memerlukan Bearer Token di header:

```
Authorization: Bearer {your-token}
```

Untuk mendapatkan token, login terlebih dahulu:

```
POST /api/v1/auth/login
```

**Request Body:**
```json
{
  "email": "admin@masjid.com",
  "password": "password"
}
```

---

## 📊 Status Codes

- `200` - Success
- `201` - Created
- `422` - Validation Error
- `401` - Unauthorized
- `403` - Forbidden
- `404` - Not Found
- `500` - Server Error
