shrimpy-node-temp
Version:
Client for the Shrimpy API
273 lines (225 loc) • 8.62 kB
Markdown
# shrimpy-node
The official Node.js library for the Shrimpy Developer API https://developers.shrimpy.io/docs
## Installation
```bash
npm install shrimpy-node
```
You can learn about the API responses of each endpoint [by reading our documentation](https://developers.shrimpy.io/docs).
## Quick Start
All asynchronous methods return promises.
### Promise Example
```js
client
.getTicker('kucoin')
.then(data => {
// do something with the data
})
.catch(error => {
// handle the error
});
```
### Async Example
The promises can be used as expected in `async` functions in ES2017+ environments:
```js
async function yourFunction() {
try {
const ticker = await client.getTicker('kucoin');
// do something with the data
} catch (error) {
// handle the error
}
}
```
### Public Client
```js
const Shrimpy = require('shrimpy-node');
const publicClient = new Shrimpy.ShrimpyApiClient();
```
The public client can only use public methods.
### Private Client
```js
const publicKey = 'your_public_key'; // e.g. 12326758a39a720e15d064cab3c1f0a9332d107de453bd41926bb3acd565059e
const privateKey = 'your_private_key'; // e.g. 6991cf4c9b518293429db0df6085d1731074bed8abccd7f0279a52fac5b0c1a8a2f6d28e11a50fbb1c6575d1407e637f9ad7c73fbddfa87c5d418fd58971f829
const Shrimpy = require('shrimpy-node');
const privateClient = new Shrimpy.ShrimpyApiClient(publicKey, privateKey);
```
The private client can use public and private methods.
### Public Methods
* [`getTicker`](https://developers.shrimpy.io/docs/#get-ticker)
```js
const ticker = await client.getTicker(
'kucoin' // exchange
);
```
### User Methods
* [`getUsers`](https://developers.shrimpy.io/docs/#list-users)
```js
const users = await client.getUsers();
```
* [`getUser`](https://developers.shrimpy.io/docs/#get-a-user)
```js
const user = await client.getUser(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' //userId
);
```
* [`createUser`](https://developers.shrimpy.io/docs/#creating-a-user)
```js
const userId = await client.createUser();
```
* [`enableUser`](https://developers.shrimpy.io/docs/#enabling-a-user)
```js
await client.enableUser(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' //userId
);
```
* [`disableUser`](https://developers.shrimpy.io/docs/#disabling-a-user)
```js
await client.disableUser(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' //userId
);
```
### User API Keys Methods
* [`getApiKeys`](https://developers.shrimpy.io/docs/#get-api-keys)
```js
const publicKeys = await client.getApiKeys(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' //userId
);
```
* [`createApiKeys`](https://developers.shrimpy.io/docs/#create-api-keys)
```js
const apiKeys = await client.createApiKeys(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' // userId
);
```
* [`deleteApiKeys`](https://developers.shrimpy.io/docs/#delete-api-keys)
```js
const apiKeys = await client.deleteApiKeys(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
'51ac18b7d208f59b3c88acbb1ecefe6ba6be6ea4edc07e7a2450307ddc27ab80' // publicKey
);
```
* [`getPermissions`](https://developers.shrimpy.io/docs/#get-api-key-permissions)
```js
const permissions = await client.getPermissions(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
'51ac18b7d208f59b3c88acbb1ecefe6ba6be6ea4edc07e7a2450307ddc27ab80' // publicKey
);
```
* [`setPermissions`](https://developers.shrimpy.io/docs/#set-api-key-permissions)
```js
await client.setPermissions(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
'51ac18b7d208f59b3c88acbb1ecefe6ba6be6ea4edc07e7a2450307ddc27ab80', // publicKey
true, // enable account methods
false // enable trading methods
);
```
### Account Methods
* [`getAccounts`](https://developers.shrimpy.io/docs/#list-accounts)
```js
const accounts = await client.getAccounts(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8' // userId
);
```
* [`getAccount`](https://developers.shrimpy.io/docs/#get-an-account)
```js
const account = await client.getAccount(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123 // accountId
);
```
* [`createAccount`](https://developers.shrimpy.io/docs/#link-an-exchange-account)
```js
const accountId = await client.createAccount(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
'binance', // exchange
'GOelL5FT6TklPxAzICIQK25aqct52T2lHoKvtcwsFla5sbVXmeePqVJaoXmXI6Qd', // publicKey (a.k.a. apiKey)
'SelUuFq1sF2zGd97Lmfbb4ghITeziKo9IvM5NltjEdffatRN1N5vfHXIU6dsqRQw' // privateKey (a.k.a. secretKey
);
```
Note: The `createAccount` method accepts a fifth optional parameter: **passphrase**. The passphrase is only required for some exchanges, such as Coinbase Pro.
* [`deleteAccount`](https://developers.shrimpy.io/docs/#unlink-an-exchange-account)
```js
await client.deleteAccount(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
456 // accountId
);
```
### Trading Methods
* [`getBalance`](https://developers.shrimpy.io/docs/#get-balance)
```js
const balance = await client.getBalance(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123 // accountId
);
```
* [`rebalance`](https://developers.shrimpy.io/docs/#rebalancing)
```js
await client.rebalance(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123 // accountId
);
```
* [`getRebalancePeriod`](https://developers.shrimpy.io/docs/#get-the-rebalance-period)
```js
const rebalancePeriodHours = await client.getRebalancePeriod(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123 // accountId
);
```
* [`setRebalancePeriod`](https://developers.shrimpy.io/docs/#set-the-rebalance-period)
```js
await client.setRebalancePeriod(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // accountId
24 // rebalancePeriod in hours
);
```
* [`getStrategy`](https://developers.shrimpy.io/docs/#get-the-strategy)
```js
const strategy = await client.getStrategy(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123 // accountId
);
```
* [`setStrategy`](https://developers.shrimpy.io/docs/#set-the-strategy)
```js
await client.setStrategy(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // accountId
{ isDynamic: false, allocations: [{ symbol: 'BTC', percent: '50' }, { symbol: 'ETH', percent: '50' }] } // strategy
);
```
* [`allocate`](https://developers.shrimpy.io/docs/#allocating)
```js
await client.allocate(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // accountId
{ isDynamic: false, allocations: [{ symbol: 'USDT', percent: '100' }] } // strategy
);
```
* [`createTrade`](https://developers.shrimpy.io/docs/#creating-a-trade)
```js
const tradeId = await client.createTrade(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // accountId
'BTC', // fromSymbol
'ETH', // toSymbol
new Decimal('0.01') // amount of fromSymbol
);
```
* [`getTrade`](https://developers.shrimpy.io/docs/#get-trade-status)
```js
const trade = await client.getTrade(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // exchangeAccountId
'72dff099-54c0-4a32-b046-5c19d4f55758' // tradeId
);
```
* [`getActiveTrades`](https://developers.shrimpy.io/docs/#list-active-trades)
```js
const activeTrades = await client.getActiveTrades(
'701e0d16-1e9e-42c9-b6a1-4cada1f395b8', // userId
123, // exchangeAccountId
);
```