POSTVena Omni API · v1.0.0

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:

SkemaDipakai untukDeskripsi
partnerHmacEndpoint iniSignature HMAC-SHA256 lewat header X-SIGNATURE, dipasangkan dengan X-PARTNER-ID dan X-TIMESTAMP.
omniJwtProduct, File, Master Data, Webhook OrderBearer JWT hasil endpoint ini, diterbitkan oleh layanan api-auth.
venaBearerJwtOrder inquiryBearer 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.

HeaderTipeStatusDeskripsi
X-PARTNER-IDstringWajibID partner yang diberikan tim Vena saat proses onboarding.
X-CLIENT-IDuuidWajibUUID merchant yang diperoleh dari proses onboarding (clientId).
X-TIMESTAMPstringWajibWaktu 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-SIGNATUREstringWajibHMAC-SHA256 yang di-encode base64: base64(HMAC-SHA256(X-PARTNER-ID + X-TIMESTAMP, SECRET_KEY)).

Body Permintaan

Dikirim sebagai application/x-www-form-urlencoded.

FieldTipeStatusDeskripsi
grant_typestringWajibHanya 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
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.

200 OK · application/json
{
  "code": "000",
  "message": "Success",
  "data": {
    "accessToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6...",
    "tokenType": "Bearer",
    "expiresIn": 3600
  }
}
401 Unauthorized · application/json
{
  "code": "002",
  "message": "Invalid Signature"
}

Kode Status

200 OKAccess token berhasil diterbitkan.
400Header wajib tidak lengkap, format X-TIMESTAMP tidak valid, atau grant_type bukan client_credentials.
401Signature tidak cocok (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.

POST/omni/productBearer JWT · omniJwt

Contoh Body

FieldTipeContoh
sellerIduuidcd40a3ff-cea6-468f-8058-9ffb03303efd
categoryIduuidb2c3d4e5-0000-0000-0000-000000000002
unitIduuida1b2c3d4-0000-0000-0000-000000000001
namestringBeras Premium 5kg
skustringBERAS-5KG
minQtyinteger1
priceinteger75000
weight, length, width, heightnumberDimensi paket: 5, 30, 20, 10
imagesarrayMinimal 1 gambar
201 CreatedProduk berhasil dibuat; data.productId berisi ID produk final.