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=