APIDOCS Oauth SNAP BI (Internal version v1.1)
Permudah Bisnis Anda dengan BRIAPI
Tonton videonya dan lihat bagaimana BRIAPI dapat membuat bisnis Anda lebih efisien dengan layanan SNAP API.
Access Token and Signature
Informasi API
Title | Oauth SNAP BI |
---|---|
Version | v1.0 |
URL Sandbox | https://sandbox.partner.api.bri.co.id |
URL Production |
Kendali Versi
Versi API | Tanggal | Tautan Dokumen | Deskripsi |
---|---|---|---|
v1.0 | 2 December 2021 | Halaman ini. | Baseline version. |
v1.0 |
18 April 2022 |
Halaman ini. |
Update Field Format |
v1.0 | 29 Agustus 2022 | Halaman ini | Update url path |
Produk Deskripsi
Gambaran Produk
Fitur ini berfungsi untuk mendapatkan access token yang berfungsi sebagai otentikasi saat ingin mengakses API yang lain
Endpoint
A. Get Token
Endpoint Deskripsi
Fitur ini digunakan untuk mendapatkan token akses yang berfungsi sebagai otentikasi saat Anda ingin mengakses API lain. Dalam fitur ini terdapat private_key dan public_key yang dihasilkan oleh mitra menggunakan format RSA 2048.
Kunci private_key disimpan di pihak mitra dan public_key ditambahkan melalui portal pengembang BRI dalam menu "Pengaturan Kunci SNAP". Nilai private_key yang dikirim oleh mitra akan divalidasi dengan public_key yang terkait sebelumnya. Kunci private_key sendiri digunakan oleh mitra untuk menghasilkan X-SIGNATURE saat ingin mendapatkan token, dan public_key digunakan oleh BRI untuk memvalidasi nilai X-SIGNATURE yang dikirim oleh mitra saat mendapatkan token.
General Information
HTTP Method | POST |
---|---|
Path | /snap/v1.0/access-token/b2b |
Tipe Format | JSON |
Authentication | Digital Signature |
Header Structure
Key |
Value |
Format |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|---|
X-SIGNATURE |
|
|
M |
|
Dengan algoritma asymmetric signature SHA256withRSA (Private_Key, stringToSign). stringToSign = client_ID + “|” + X-TIMESTAMP |
|
X-CLIENT-KEY |
|
Alphanumeric |
M |
|
Client’s client_id (Nama PJP) (diberikan pada saat proses registrasi selesai) |
|
X-TIMESTAMP |
|
Datetime |
M |
|
Waktu lokal klien saat ini yyyy-MM- ddTHH:mm:ss.SSSTZD format |
|
Content-Type |
application /json |
|
M |
|
|
|
Request Structure
Field |
Data Type |
Format |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|---|
grantType |
String |
Alphabet |
M |
“client_credentials” : klien dapat meminta token akses hanya menggunakan kredensial kliennya ( atau cara otentikasi lain yang didukung) ketika klien meminta akses ke sumber daya yang dilindungi di bawah kendalinya (OAuth 2.0: RFC 6749 & 6750) |
client_credentials |
Response Structure
Field |
Data Type |
Format |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|---|
responseCode |
String |
Numeric |
C |
|
Kode respon |
|
responseMessage |
String |
Alphabet |
C |
|
Respon deskripsi |
|
accessToken |
String |
Alphanumeric |
M |
|
Jenis token akses menyediakan klien dengan informasi yang diperlukan untuk berhasil menggunakan token akses untuk melindungi resource request (bersama dengan atribut tipe- spesifik) Tipe jenis token: • “Bearer”: termasuk token akses string saat request • “Mac”: mengeluarkan pesan kunci kode otentikasi (MAC) bersama dengan token akses yang digunakan untuk menandatangani komponen tertentu dari permintaan HTTP Referensi: OAuth2.0 RFC 6749 & 6750 |
|
TokenType |
String |
Alphabet |
M |
|
|
|
expiresIn |
String |
Alphanumeric |
M |
|
Sesi berakhir dalam hitungan detik : 900 (15 menit) |
|
Request & Response Payload Sample
Request :
{ "grantType": "client_credentials" }
Normal Response :
{ "accessToken": "jwy7GgloLqfqbZ9OnxGxmYOuGu85", "tokenType": "BearerToken", "expiresIn": "899" }
Error Response :
{ "responseCode": "4007301", "responseMessage": "Invalid Field Format" }
List of Error/Response Code
HTTP Status | Code | Status | Response Description | Deskripsi |
---|---|---|---|---|
200 | - | Success | - | |
400 | 4007300 | Failed | Bad Request | |
400 | 4007301 | Failed | Invalid Field Format | |
401 | 4017300 | Failed | Unauthorized Client | |
401 | 4017300 | Failed | Unauthorized stringToSign | |
401 | 4017300 | Failed | Unauthorized Signature | |
401 | 4017301 | Failed | Invalid Token (B2B) | |
500 | 500000 | Failed | General Error |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
B. Signature API Access
Signature memastikan data yang dikirimkan adalah asli dan tidak bisa disanggah. Signature dihasilkan oleh pemakai layanan dan diverifikasi oleh penerima layanan.
Signature dibentuk dari payload yang sudah ditentukan, dengan mengimplementasikan algoritma HMAC_SHA512 dengan clientSecret sebagai kuncinya.
Payload
Payload tergabung dari verb, path, token, timestamp, and body. Dengan format Symetric-Signature:
HMAC_SHA512 (clientSecret, stringToSign) dengan formula stringToSign = HTTPMethod+”:“+ EndpointUrl +":"+ AccessToken+":“
+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ +TimeStamp
Contoh payload:
POST:/snap/v1.0/dummy:muhpwhwOkPRU9nNXYnyYHj8t54x3:8b4e9e83b5231cff4f84358ec8ca81951cfe9f999f635b1566452a501d5c23b2:2021-11-29T09:22:18.172+07:00
Detailnya akan dijelaskan dibawah ini:
1. Path
Value pada path yaitu URL setelah hostname dan port tanpa Query Parameter
Contoh:
/snap/v1.0/dummy
2. Verb
HTTP method harus menggunakan huruf kapital, i.e. GET, POST, PUT, PATCH, and DELETE.
3. Token
Token yang digunakan diambil dari header Authorization.
Contoh:
Bearer R04XSUbnm1GXNmDiXx9ysWMpFWBr
4. Timestamp
Waktu saat mengirimkan request API. Format waktu harus mengikuti ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSZ).
Contoh:
2021-11-02T13:14:15.678+07:00
Timestamp must be in UTC or GMT +0 timezone.
5. Body
Body saat mengirimkan request API. Lowercase(HexEncode(SHA-256(minify(RequestBody))))
Contoh: &body={"hello":"world"}
Hasil SHA256 :93a23971a914e5eacbf0a8d25154cda309c3c1c72fbb9914d47c60f3cb681588
Jika tidak terdapat body request, contoh menggunakan metode GET, biarkan saja kosong.
Contoh: &body=