> ## Documentation Index
> Fetch the complete documentation index at: https://docs.leviacloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagination & filter

> Semua daftar dipaginasi dengan page/per_page dan bisa disaring di server.

## Pagination

Semua endpoint daftar menerima:

**page** `integer` (default: 1)

Halaman, mulai dari 1.

**per\_page** `integer` (default: 20)

Jumlah item per halaman, 1–100.

Jawaban daftar membawa objek `pagination`:

```json theme={null}
{
  "data": [ { "id": "…" } ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 42,
    "total_pages": 3,
    "next_page": 2
  }
}
```

`next_page` bernilai `null` di halaman terakhir. Daftar kosong dikirim sebagai `"data": []`. Daftar diurutkan dari yang terbaru, kecuali disebutkan lain di endpoint-nya.

```bash Membaca semua halaman theme={null}
page=1
while [ "$page" != "null" ]; do
  resp=$(curl -s "$LEVIA_API/vms?per_page=100&page=$page" -H "Authorization: Bearer $LEVIA_KEY")
  echo "$resp" | jq -r '.data[] | "\(.id) \(.name) \(.status)"'
  page=$(echo "$resp" | jq -r '.pagination.next_page')
done
```

## Filter

Filter diterapkan di server, jadi `pagination.total` sudah memperhitungkan filter. Nilai filter yang tidak valid (mis. `region_id` bukan UUID, `status` di luar daftar) → `422 validation_error`.

| Filter | Arti | Endpoint |
| - | - | - |
| `region_id` | Region | `vms`, `volumes`, `snapshots`, `vpcs`, `floating-ips`, `load-balancers`, `databases`, `images`, `plans` |
| `zone_id` | Zona | `volumes`, `floating-ips`, `load-balancers` (zona subnet-nya), `databases` (zona primary), `images`, `databases/engines` |
| `status` | Status; nilai yang diterima tercantum di tiap endpoint | `vms`, `volumes`, `snapshots`, `floating-ips`, `load-balancers`, `databases` |
| `name` | Nama memuat teks ini, tanpa membedakan huruf besar/kecil | `vms`, `volumes`, `snapshots`, `vpcs`, `security-groups`, `ssh-keys`, `load-balancers`, `databases` |

Filter khusus per endpoint:

| Filter | Endpoint |
| - | - |
| `vm_id` | `volumes`: volume yang terpasang ke VM ini |
| `source_type` (`vm` / `volume`), `source_id` | `snapshots` |
| `vpc_id` | `security-groups`, `load-balancers` |
| `engine` | `databases` |
| `group` | `plans` |

Contoh: volume yang belum terpasang di satu zona.

```bash theme={null}
curl -s "$LEVIA_API/volumes?zone_id=$ZONE&status=available&per_page=100" \
  -H "Authorization: Bearer $LEVIA_KEY"
```

> [!NOTE]
>
> Daftar VM tidak bisa disaring per zona (zona VM ditentukan oleh subnet-nya). Baca `zone` di setiap item, atau saring per `region_id`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.