ProductGETKT-86Pagination
List Produk
Mengambil seluruh produk yang terdaftar di katalog Vendira — termasuk SKU, harga beli, harga jual, dan gambar. Mendukung filter dan pagination.
GET
/admin/products
Endpoint ini memerlukan permission
product.read. Jika user tidak punya permission tersebut, response akan status: false dengan message "Forbidden". Untuk role non-Admin, data otomatis difilter berdasarkan client_id user yang login.
Contoh Request
GET https://andromeda.kasolusi.com/admin/products
?page=1&limit=12&category=10&product=pop+mie
Authorization: Bearer <token>
cURL
curl -X GET \
'https://andromeda.kasolusi.com/admin/products?page=1&limit=12' \
-H 'Authorization: Bearer <token>' \
-H 'Accept: application/json'
Query Parameters
| Parameter | Tipe | Keterangan |
|---|---|---|
| page | opsional | Nomor halaman — default 1 |
| limit | opsional | Jumlah item per halaman — default 12 |
| product | opsional | Pencarian berdasarkan nama produk (LIKE search) |
| category | opsional | Filter berdasarkan ID kategori produk |
| machine | opsional | Filter produk yang terpasang di mesin tertentu (by machine ID) |
| client | opsional | Filter berdasarkan ID client. Hanya berlaku untuk role Admin |
Response 200 — OK
{
"status": true,
"message": "Berhasil",
"data": {
"data": [
{
"id": 134,
"name": "Cap Panda Sarang Burung",
"image": "https://kiwari-assets.oeltimacreation.com/...",
"sku": "8995227500582",
"harga_beli": 1,
"harga_jual": 7000
}
],
"page": 1,
"total": 10,
"totalAll": 120
}
}
Keterangan Field Response
id
number
ID produk internal
name
string
Nama produk
image
string (URL)
URL gambar produk dari asset server Kiwari
sku
string
Barcode / SKU produk (format EAN/UPC)
harga_beli
number
Harga pokok/beli produk (IDR). Dari kolom
price di databaseharga_jual
number
Harga jual ke konsumen (IDR). Dari kolom
cost_price di databasepage
number
Halaman saat ini
total
number
Total halaman berdasarkan limit
totalAll
number
Total seluruh produk yang sesuai filter
Perhatian penamaan field: Kolom database bernama
price (harga pokok) dan cost_price (harga jual), namun API mengembalikannya sebagai harga_beli dan harga_jual. Pastikan mapping ini konsisten di frontend.
Contoh — Dashboard (Nuxt)
Fetch dengan filter
const resp = await this.$api.$get(
`/products?page=1&limit=12&category=${catId}&product=${query}`
);
const products = resp?.data?.data ?? [];
const totalAll = resp?.data?.totalAll ?? 0;