Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fireblocks/fireblocks-sdk-js

Typescript & Javascript SDK for developers using Fireblocks API
https://github.com/fireblocks/fireblocks-sdk-js

blockchain crypto fireblocks javascript nodejs sdk typescript

Last synced: 6 days ago
JSON representation

Typescript & Javascript SDK for developers using Fireblocks API

Awesome Lists containing this project

README

        

## The Official Javascript & Typescript SDK for Fireblocks API
[![npm version](https://badge.fury.io/js/fireblocks-sdk.svg)](https://badge.fury.io/js/fireblocks-sdk)

> The current version of the SDK has changed the minimum supported Node.js version from v12 to v16.
>
> Versions older than v16 are no longer maintained by the Node.js community and are considered EOL.

### About
This repository contains the official Javascript & Typescript SDK for Fireblocks API.
For the complete API reference, go to [API reference](https://developers.fireblocks.com/reference/api-overview).

## v4 Migration
Please read the [following guide](./docs/V4-MIGRATION.md) for migration.

## Usage
#### Before You Begin
Make sure you have the credentials for Fireblocks API Services. Otherwise, please contact Fireblocks support for further instructions on how to obtain your API credentials.

#### Requirements
- [Node.js](https://nodejs.org) v16 or higher.

#### Installation
`npm install fireblocks-sdk --save`

or

`yarn add fireblocks-sdk`

#### Importing Fireblocks SDK
JavaScript:
```javascript
const FireblocksSDK = require("fireblocks-sdk").FireblocksSDK;
const fireblocks = new FireblocksSDK(privateKey, apiKey);
```

TypeScript:
```typescript
import { FireblocksSDK } from "fireblocks-sdk";
const fireblocks = new FireblocksSDK(privateKey, apiKey);
```

You can also pass additional options:
```typescript
const baseUrl = "https://api.fireblocks.io";
const authProvider: IAuthProvider = { /* Custom implementation */ };
const fireblocks = new FireblocksSDK(privateKey, apiKey, baseUrl, authProvider, options);
```
The `options` argument has the following structure:
```typescript
interface SDKOptions {
/** HTTP request timeout */
timeoutInMs?: number;

/** Proxy configurations */
proxy?: AxiosProxyConfig | false;

/** Whether to remove platform from User-Agent header */
anonymousPlatform?: boolean;

/** Additional product identifier to be prepended to the User-Agent header */
userAgent?: string;

/** TravelRule Provider options to initialize PII Client for PII encryption */
travelRuleOptions?: TravelRuleOptions;
}
```

#### Axios Interceptor
You can provide the sdk options with an [axios response interceptor](https://axios-http.com/docs/interceptors):
```ts
new FireblocksSDK(privateKey, userId, serverAddress, undefined, {
customAxiosOptions: {
interceptors: {
response: {
onFulfilled: (response) => {
console.log(`Request ID: ${response.headers["x-request-id"]}`);
return response;
},
onRejected: (error) => {
console.log(`Request ID: ${error.response.headers["x-request-id"]}`);
throw error;
}
}
}
}
});
```

#### Error Handling
The SDK throws `AxiosError` upon http errors for API requests.

You can read more about axios error handling [here](https://axios-http.com/docs/handling_errors).

You can get more data on the Fireblocks error using the following fields:

- `error.response.data.code`: The Fireblocks error code, should be provided on support tickets
- `error.response.data.message`: Explanation of the Fireblocks error
- `error.response.headers['x-request-id']`: The request ID correlated to the API request, should be provided on support tickets / Github issues