Token Authentication (Machine to Machine)
POST https://bakrypt.io/auth/exchange/
or https://testnet.bakrypt.io/auth/exchange/
The endpoint above provides an access token that is required for subsequent API calls, such as uploading files or creating assets. The Token is considered sensitive data and must be kept private to avoid unauthorized access. Typically, a backend service or API would manage the authentication process and return the access token to the interface or Single Page Application (SPA).
import express from 'express';
import axios from 'axios';
interface AccessToken {
access_token: string;
expires_in: number;
token_type: string;
scope: string;
refresh_token: string;
}
interface ErrorResponse {
error: string;
error_description?: string;
}
const app = express();
const externalApiUrl = 'https://bakrypt.io/auth/exchange/';
const authToken = `<paste-your-secret-token-here>`;
app.use(express.json());
app.post(externalApiUrl, async (req, res) => {
try {
const config = {
headers: {
'Content-Type': 'application/json',
'Authorization': `Token ${authToken}`
}
};
const response = await axios.post<AccessToken | ErrorResponse>(externalApiUrl, null, config);
res.send(response.data);
} catch (error) {
console.error(error);
// Handle error accordingly
res.status(500).send('Internal Server Error');
}
});
app.listen(3000, () => {
console.log('Server is listening on port 3000');
});
import requests
try:
from typing import TypedDict
except Exception as e:
from typing_extensions import TypedDict
class AccessToken(TypedDict):
access_token: str
expires_in: int
token_type: str
scope: str
refresh_token: str
class ErrorResponse(TypedDict):
error: str
error_description: str
AUTH_TOKEN = '<paste your secret token>'
access_token_request = requests.post(
'https://bakrypt.io/auth/exchange/',
headers={'content-type': "application/json", "authorization": f"token {AUTH_TOKEN}"})
if access_token_request.status_code in [200]:
access_token: AccessToken = access_token_request.json()
print(access_token)
else:
print("Error retrieving access token...")
print(access_token_request.text)
OAuth2.0 - Backend Service
POST https://bakrypt.io/auth/token/
or https://testnet.bakrypt.io/auth/token/
;
The endpoint above provides an access token that is required for subsequent API calls, such as uploading files or creating assets. The Client Id and Client Secret required for authentication contain sensitive data and must be kept private to avoid unauthorized access. Typically, a backend service or API would manage the authentication process and return the access token to the interface or Single Page Application (SPA).
e.g.,
import express from 'express';
import axios from 'axios';
interface AccessToken {
access_token: string;
expires_in: number;
token_type: string;
scope: string;
refresh_token: string;
}
interface ErrorResponse {
error: string;
error_description?: string;
}
const app = express();
const externalApiUrl = 'https://bakrypt.io/auth/token/' || 'https://testnet.bakrypt.io/auth/token/';
const clientId = `$client_id`;
const clientSecret = `$client_secret`;
app.use(express.json());
app.post(externalApiUrl, async (req, res) => {
try {
const { username, password } = req.body;
const payload = new URLSearchParams();
payload.append("client_id", clientId);
payload.append("client_secret", clientSecret);
payload.append("username", username);
payload.append("password", password);
payload.append("grant_type", "password");
const config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
const response = await axios.post<AccessToken | ErrorResponse>(externalApiUrl, payload, config);
res.send(response.data);
} catch (error) {
console.error(error);
// Handle error accordingly
res.status(500).send('Internal Server Error');
}
});
app.listen(3000, () => {
console.log('Server is listening on port 3000');
});
import requests
try:
from typing import TypedDict
except Exception as e:
from typing_extensions import TypedDict
class AccessToken(TypedDict):
access_token: str
expires_in: int
token_type: str
scope: str
refresh_token: str
class ErrorResponse(TypedDict):
error: str
error_description: str
CLIENT_ID = '$client_id'
CLIENT_SECRET = '$client_secret'
USERNAME = '$username'
PASSWORD = '$password'
payload = {
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'username': USERNAME,
'password': PASSWORD,
'grant_type': 'password'
}
access_token_request = requests.post(
'https://testnet.bakrypt.io/auth/token/',
data=payload,
headers={'content-type': "application/x-www-form-urlencoded"})
if access_token_request.status_code in [200]:
access_token: AccessToken = access_token_request.json()
print(access_token)
else:
print("Error retrieving access token...")
print(access_token_request.text)