Dapatkan Access Token (M2M)
https://vena-v2-api.spesandbox.com/v1/omni/auth/token
Menghasilkan JWT access token untuk merchant yang sudah terdaftar, memakai pola machine-to-machine (M2M). Token ini dipakai sebagai Bearer pada seluruh endpoint omni partner lain — Master Data, Product, File, dan Webhook Order.
Ringkasan
Gunakan endpoint ini di awal integrasi untuk menukar kredensial partner menjadi access token. Vena Omni API memiliki tiga skema keamanan yang dipakai bergantian:
| Skema | Dipakai untuk | Deskripsi |
|---|---|---|
| partnerHmac | Endpoint ini | Signature HMAC-SHA256 lewat header X-SIGNATURE, dipasangkan dengan X-PARTNER-ID dan X-TIMESTAMP. |
| omniJwt | Product, File, Master Data, Webhook Order | Bearer JWT hasil endpoint ini, diterbitkan oleh layanan api-auth. |
| venaBearerJwt | Order inquiry | Bearer JWT standar Vena untuk endpoint pengecekan pesanan. |
Header Wajib
Endpoint ini memakai skema partnerHmac — bukan Bearer token, karena justru endpoint inilah yang menerbitkan token tersebut.
| Header | Tipe | Status | Deskripsi |
|---|---|---|---|
| X-PARTNER-ID | string | Wajib | ID partner yang diberikan tim Vena saat proses onboarding. |
| X-CLIENT-ID | uuid | Wajib | UUID merchant yang diperoleh dari proses onboarding (clientId). |
| X-TIMESTAMP | string | Wajib | Waktu permintaan format ISO 8601 / RFC 3339, mis. 2026-06-12T08:00:00Z. Selisih maksimal ±5 menit dari waktu server — pastikan jam sistem tersinkron NTP. |
| X-SIGNATURE | string | Wajib | HMAC-SHA256 yang di-encode base64: base64(HMAC-SHA256(X-PARTNER-ID + X-TIMESTAMP, SECRET_KEY)). |
Body Permintaan
Dikirim sebagai application/x-www-form-urlencoded.
| Field | Tipe | Status | Deskripsi |
|---|---|---|---|
| grant_type | string | Wajib | Hanya menerima nilai client_credentials; nilai lain ditolak. Nama field alternatif grantType juga diterima. |
Contoh Permintaan
Signature dan timestamp dihitung ulang setiap kali endpoint ini dipanggil.
curl -X POST "https://vena-v2-api.spesandbox.com/v1/omni/auth/token" \
-H "X-PARTNER-ID: BGN001" \
-H "X-CLIENT-ID: cd40a3ff-cea6-468f-8058-9ffb03303efd" \
-H "X-TIMESTAMP: 2026-06-12T08:00:00Z" \
-H "X-SIGNATURE: rU8p3z...==" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials"Contoh Respons
accessToken dipakai sebagai header Authorization: Bearer <accessToken> pada endpoint omni lainnya, dan berlaku selama expiresIn detik sejak diterbitkan.
{
"code": "000",
"message": "Success",
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6...",
"tokenType": "Bearer",
"expiresIn": 3600
}
}{
"code": "002",
"message": "Invalid Signature"
}Kode Status
X-TIMESTAMP tidak valid, atau grant_type bukan client_credentials.code: 002), X-PARTNER-ID tidak ditemukan (code: 003), atau X-CLIENT-ID tidak terdaftar untuk partner tersebut (code: 005).Endpoint Lainnya: Buat Produk
Setelah access token di atas didapat, gunakan sebagai Bearer JWT untuk membuat produk seller baru. Produk diteruskan ke sistem omnichannel untuk menghasilkan ID produk final. Minimal satu gambar wajib disertakan.
Contoh Body
| Field | Tipe | Contoh |
|---|---|---|
| sellerId | uuid | cd40a3ff-cea6-468f-8058-9ffb03303efd |
| categoryId | uuid | b2c3d4e5-0000-0000-0000-000000000002 |
| unitId | uuid | a1b2c3d4-0000-0000-0000-000000000001 |
| name | string | Beras Premium 5kg |
| sku | string | BERAS-5KG |
| minQty | integer | 1 |
| price | integer | 75000 |
| weight, length, width, height | number | Dimensi paket: 5, 30, 20, 10 |
| images | array | Minimal 1 gambar |
data.productId berisi ID produk final.