Products

Fitur Products memungkinkan Anda mengelola beberapa produk dalam satu akun NxGate. Setiap lisensi dapat di-assign ke satu atau lebih produk, dan setiap product assignment dapat memiliki tanggal kadaluarsa tersendiri.

Konsep

Produk diidentifikasi dengan slug unik (huruf kecil, angka, dash). Slug tidak bisa diubah setelah dibuat karena akan break client yang sudah menggunakannya.

Sebuah lisensi bisa di-assign ke banyak produk. Saat verifikasi, Anda kirim productSlug dan server akan mengecek apakah lisensi tersebut memiliki akses ke produk tersebut.

Setiap product assignment dapat memiliki tanggal expiry sendiri, terpisah dari expiry lisensi utama. Jika product-level expiry habis, result akan PRODUCT_MISMATCH.

API Produk

POST/admin/products

Buat produk baru. Slug harus unik per akun dan tidak dapat diubah.

1# Buat produk baru
2# slug harus: huruf kecil, angka, dash. Contoh: "mc-premium", "plugin-v2"
3POST /admin/products
4Authorization: Bearer YOUR_API_KEY
5
6{
7 "slug": "mc-premium",
8 "name": "Minecraft Plugin Premium"
9}
10
11# Response
12{
13 "id": 1,
14 "slug": "mc-premium",
15 "name": "Minecraft Plugin Premium",
16 "createdAt": "2024-06-24T00:00:00.000Z"
17}
GET/admin/products

List semua produk milik akun.

1GET /admin/products
2Authorization: Bearer YOUR_API_KEY
3
4# Response
5[
6 {
7 "id": 1,
8 "slug": "mc-premium",
9 "name": "Minecraft Plugin Premium",
10 "createdAt": "2024-06-24T00:00:00.000Z"
11 }
12]

Assign / Unassign Produk ke Lisensi

1# Assign produk ke lisensi
2POST /admin/licenses/{licenseId}/products
3Authorization: Bearer YOUR_API_KEY
4
5{
6 "productId": 1
7}
8
9# Unassign produk dari lisensi
10DELETE /admin/licenses/{licenseId}/products/{productId}
11Authorization: Bearer YOUR_API_KEY

Atur Expiry per Produk

1# Atur expiry per-produk pada lisensi
2PATCH /admin/licenses/{licenseId}/products/{productId}/expiry
3Authorization: Bearer YOUR_API_KEY
4
5{
6 "expiresAt": "2025-12-31T00:00:00.000Z"
7}
8
9# Hapus expiry (set null)
10{
11 "expiresAt": null
12}

Verifikasi dengan Product Check

1# Verifikasi lisensi dengan product check
2GET /license/{userId}/{licenseKey}/verify?productSlug=mc-premium
3
4# Jika lisensi tidak di-assign ke produk ini, atau product-level expiry habis:
5{
6 "valid": false,
7 "result": "PRODUCT_MISMATCH"
8}
9
10# Jika valid:
11{
12 "valid": true,
13 "result": "VALID"
14}

Jika lisensi tidak memiliki product assignment sama sekali (belum di-assign ke produk apapun), maka productSlug di request tidak akan dicek. Product check hanya aktif jika lisensi memiliki minimal satu product assignment.

Slug tidak dapat diubah

Setelah slug produk dibuat dan sudah digunakan oleh client (di parameter productSlug saat verifikasi), slug tidak boleh diubah. Ini adalah breaking change. Hanya nama produk (name) yang bisa diupdate.