DokumentasiAPI Anesa StoreProduk
API ANESA STORE

Produk

GET

Menampilkan daftar produk Anesa Store. Data bisa dicari dan difilter dengan parameter yang tersedia.

GET/v1/developer/products
01
REQUEST

Autentikasi

Setiap request harus menyertakan header autentikasi berikut.

Simpan API Key dengan aman.Gunakan API Key hanya di sisi server dan jangan masukkan ke kode frontend.
HeaderDeskripsi
X-usernameUsername yang digunakan untuk mengakses Developer API.
X-API-KeyAPI Key yang digunakan untuk autentikasi request dan pembuatan signature.
X-TimestampUnix timestamp saat request dibuat.
X-SignatureSignature HMAC-SHA256 dengan prefix sha256=.

Query parameter

ParameterDeskripsi
typeJenis produk: prepaid atau postpaid. Default: prepaid.
pageNomor halaman. Default: 1.
per_pageJumlah produk per halaman. Default: 100, maksimal: 1000.
searchMencari berdasarkan nama, anesa_sku_code, atau description.
brandFilter berdasarkan brand/operator. Pencocokan tidak membedakan huruf besar dan kecil.
categoryFilter berdasarkan category. Pencocokan tidak membedakan huruf besar dan kecil.
subcategoryFilter berdasarkan subcategory. Pencocokan tidak membedakan huruf besar dan kecil.
02
SIGNATURE

Signature

Gunakan formula berikut untuk membuat signature HMAC-SHA256.

MESSAGEUSERNAME + API_KEY + GET + PATH + QUERY_STRING + TIMESTAMP
HMAC-SHA256HMAC-SHA256(message, API_KEY)
IP server developer harus sudah terdaftar pada whitelist.
Timestamp request harus masih dalam batas waktu yang diterima API.
Scope yang diperlukan: product.read.
03
CONTOH REQUEST

cURL

Contoh request menggunakan endpoint dan parameter yang tersedia di API Anesa Store.

cURLbash
curl -i "https://api.showanesa.my.id/v1/developer/products?type=prepaid&page=1&per_page=1000"   -H "X-username: USERNAME_ANDA"   -H "X-API-Key: API_KEY_ANDA"   -H "X-Timestamp: TIMESTAMP_ANDA"   -H "X-Signature: sha256=SIGNATURE_ANDA"
04
RESPONSE

Response

Berikut contoh response yang dikembalikan setelah request berhasil.

HTTP 200 — products retrieved
application/jsonjson
Sukses — HTTP 200

{
  "rc": 200,
  "status": "success",
  "message": "products retrieved",
  "data": {
    "items": [
      {
        "anesa_sku_code": "PLN10000",
        "name": "Pulsa PLN 10000",
        "description": "Contoh produk",
        "normal_price": 10200,
        "discount_price": null,
        "status": "active",
        "multi": null,
        "start_cut_off": null,
        "end_cut_off": null,
        "brand": "PLN",
        "category": "PLN",
        "subcategory": "Token PLN",
        "product_type": "prepaid",
        "target_type": "customer_number"
      }
    ],
    "pagination": {
      "page": 1,
      "per_page": 1000,
      "total": 1,
      "total_pages": 1,
      "has_prev": false,
      "has_next": false,
      "pages": [1]
    },
    "filters": {
      "brands": ["PLN"],
      "categories": ["PLN"],
      "subcategories": ["Token PLN"],
      "category_groups": [
        {
          "category": "PLN",
          "operators": [
            {
              "brand": "PLN",
              "subcategories": ["Token PLN"]
            }
          ]
        }
      ]
    },
    "version": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
  }
}

Gagal — HTTP 400

{
  "rc": 400,
  "status": "error",
  "message": "parameter type harus prepaid atau postpaid"
}

Gagal — HTTP 500

{
  "rc": 500,
  "status": "error",
  "message": "products could not be loaded"
}
FieldKeterangan
itemsDaftar produk pada halaman yang diminta.
paginationInformasi halaman: page, per_page, total, total_pages, has_prev, has_next, dan pages.
filters.brandsDaftar brand yang tersedia pada katalog.
filters.categoriesDaftar category yang tersedia pada katalog.
filters.subcategoriesDaftar subcategory yang tersedia pada katalog.
filters.category_groupsHubungan category, brand/operator, dan subcategory.
versionVersi katalog yang digunakan saat response dibuat.
05
CATATAN

Catatan

Beberapa hal yang perlu diperhatikan saat menggunakan endpoint ini.

Default type adalah prepaid. Default per_page adalah 100 dan maksimal 1000.
Jika page lebih besar dari jumlah halaman yang tersedia, Sistem Anesa Store akan menyesuaikan page ke halaman terakhir.
Urutan produk pada Developer API menggunakan harga terendah ke tertinggi. Jika harga sama, nama produk digunakan sebagai urutan berikutnya.
discount_price dapat bernilai null. Gunakan normal_price jika discount_price tidak tersedia.
target_type menunjukkan jenis data pelanggan yang dibutuhkan saat transaksi, seperti phone, game_id, game_id_server, atau customer_number.
Pagination hanya membagi data per halaman. Untuk mencegah duplikat saat sinkronisasi, simpan anesa_sku_code sebagai unique key. Jika SKU sudah ada, perbarui data; jika belum ada, buat record baru.
version dapat disimpan sebagai penanda versi katalog untuk membantu menentukan kapan sinkronisasi perlu dijalankan kembali.
Signature harus dibuat dari query string yang sama persis dengan yang dikirim pada URL: USERNAME + API_KEY + GET + PATH + QUERY_STRING + TIMESTAMP.
IP server developer harus sudah terdaftar pada whitelist dan credential harus memiliki scope product.read.
Timestamp request harus masih dalam batas waktu yang diterima API.