Authentication
To interact with the Bermuda Commercial Bank RESTful Open Banking API, all requests must be authenticated using JWT (JSON Web Token) access tokens. This guide outlines how to obtain and use these tokens securely.
🔐 Overview
- Authentication is performed using JWT tokens.
- Tokens are issued by submitting a
POST
request with your client credentials. - Tokens are valid for 40 minutes.
- Note: The API does not support refresh tokens. You must request a new token after expiry.
🚀 Steps to Authenticate
1. Request a JWT Access Token
Send a POST
request to the authentication endpoint with your clientId
and clientSecret
.
Endpoint:
POST https://api.bcb.bm/auth/token
📘 For more details, refer to the Token endpoint documentation.
Sample Payload:
{
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}
Sample Response:
{
"token": "your-jwt-access-token"
}
2. Use the Access Token in API Requests
Include the token in the Authorization
header of every API request:
Authorization: Bearer YOUR_ACCESS_TOKEN
📦 Sample: Requesting a JWT Token
async function getToken() {
try {
const response = await fetch('https://api.bcb.bm/auth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
clientId: 'your-client-id',
clientSecret: 'your-client-secret'
})
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Token request failed: ${errorData.message || response.statusText}`);
}
const data = await response.json();
console.log('JWT Token:', data.token);
// Store the token securely
localStorage.setItem('jwt', data.token);
} catch (error) {
console.error('Error obtaining token:', error.message);
}
}
getToken();
🔍 Sample: Making an Authenticated API Call
async function fetchAccountDetails(accountNumber) {
try {
const token = localStorage.getItem('jwt');
const response = await fetch(`https://api.bcb.bm/v1/accounts/${accountNumber}`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Request failed: ${errorData.message || response.statusText}`);
}
const data = await response.json();
console.log('Account details:', data);
} catch (error) {
console.error('Error fetching account details:', error.message);
}
}
fetchAccountDetails('YOUR_ACCOUNT_NUMBER');
✅ Best Practices
- Store tokens securely (e.g., in memory or secure storage).
- Avoid exposing tokens in frontend code or version control.
- Handle
401 Unauthorized
errors by requesting a new token. - Implement token expiration checks and renewal logic if needed.