joyso
v0.4.1
Published
JOYSO API client library for trading.
Downloads
17
Readme
JOYSO
JOYSO API client library for trading.
Notice
v0.3.0 has breaking changes. Please see CHANGELOG v0.3.0
Installation
You can use this command to install:
npm install joyso
Usage
Setup and connect to JOYSO
const Joyso = require('joyso');
async function start() {
const joyso = new Joyso({
// your private key
key: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
});
await joyso.connect();
}
subscribeOrderBook(pair, callback)
Subscribe order book, notify if change.
const subscription = joyso.subscribeOrderBook('JOY_ETH', orderBook => {
console.log(JSON.stringify(orderBook));
});
Result:
{
"buy":[
{
"price":0.000123456,
"amount":"8.5"
},
{
"price":0.000123455,
"amount":"98.5"
}
],
"sell":[
{
"price":0.00012346,
"amount":"100"
},
{
"price":0.00012347,
"amount":"500"
}
]
}
- amount is BigNumber object.
subscribeTrades(pair, callback)
Subscribe market trades, notify if change, return last 100 records.
const subscription = joyso.subscribeTrades('JOY_ETH', trades => {
console.log(JSON.stringify(trades.slice(0, 2)));
});
Result
[
{
"id":317,
"side":"sell",
"price":0.000123456,
"amount":"2",
"pair":"JOY_ETH"
},
{
"id":315,
"side":"buy",
"price":0.00012347,
"amount":"1",
"pair":"JOY_ETH"
}
]
- amount is BigNumber object.
subscribeBalances(callback)
Subscribe balances, notify if change.
const subscription = joyso.subscribeBalances(balances => {
console.log(JSON.stringify(balances));
});
Result
{
"JOY":{
"inOrder":"0",
"available":"4.5"
},
"ETH":{
"inOrder":"0.001447757819",
"available":"0.097815997145"
}
}
- inOrder and available are BigNumber objects.
subscribeOrders(callback)
Subscribe open orders, notify if change.
const subscription = joyso.subscribeOrders(orders => {
console.log(JSON.stringify(orders));
});
Result
[
{
"id":353,
"status":"active",
"side":"buy",
"price":0.000123481,
"amount":"1",
"fill":"0",
"pair":"T00_ETH"
},
{
"id":326,
"status":"partial",
"side":"buy",
"price":0.000123456,
"amount":"12",
"fill":"3.5",
"pair":"JOY_ETH"
}
]
- amount and fill are BigNumber objects.
- status could be
active
orpartial
subscribeMyTrades(callback)
Subscribe my trades, notify if change, return last 100 records.
const subscription = joyso.subscribeMyTrades(trades => {
console.log(JSON.stringify(trades.slice(0, 2)));
});
Result
[
{
"id":317,
"status":"done",
"txHash":"0xcf0aeb815200951559a38650a84f8eefa46411224e5e4076d6313ab47c7f9bb5",
"side":"sell",
"price":0.000123456,
"amount":"2",
"pair":"JOY_ETH",
"fee":"ETH",
"gasFee":"0",
"txFee":"2.46912e-7"
},
{
"id":316,
"status":"done",
"txHash":"0x582cc7a84e8aa7e28e44b11e22f24169a34776915ebbc95a88fa0e77c44faf4c",
"side":"sell",
"price":0.00012347,
"amount":"1",
"pair":"JOY_ETH",
"fee":"ETH",
"gasFee":"0.000105",
"txFee":"2.4694e-7"
}
]
- amount, gasFee and txFee are BigNumber objects.
subscribeFunds(callback)
Subscribe funds, notify if change, return last 100 records.
const subscription = joyso.subscribeFunds(funds => {
console.log(JSON.stringify(funds));
});
Result
[
{
"id":192,
"status":"done",
"txHash":"0x4dbc49ae4735b1c230244d41377cf6aeccd70c5181df048e3be8306af8a487e6",
"type":"withdraw",
"amount":"0.0099",
"token":"ETH",
"fee":"ETH",
"withdrawFee":"0.0001",
"timestamp":1537434044,
"blockId":null
},
{
"id":191,
"status":"done",
"txHash":"0x8435bf9f69dd908373d50353ebab343b625527cd8ea44532eb01c8b0a5642879",
"type":"withdraw",
"amount":"0.001",
"token":"ETH",
"fee":"JOY",
"withdrawFee":"0.809841",
"timestamp":1537433888,
"blockId":null
}
]
- amount and withdrawFee are BigNumber objects.
- status could be
pending
,processing
,done
orfailed
- type could be
deposit
,withdraw
ortransfer
buy({ pair, price, amount, feeByJoy })
Place buying order
try {
let order = await joyso.buy({
pair: 'JOY_ETH',
price: '0.000123481',
amount: 1,
feeByJoy: true
});
console.log(JSON.stringify(order));
} catch (e) {
if (e.statusCode === 400) {
console.log(e.error.error);
} else {
console.log(e.message);
}
}
Options
|Name|Required|Description|
|---|---|---|
|pair|O|Pair to trade, format is ${base}_${quote}
, eg: JOY_ETH|
|price|O|Order price, minimum is 0.000000001|
|amount|O|Quote amount|
|feeByJoy||Specify how to pay fee. true
will pay by JOY. false
will pay by quote token(ETH if pair XXX_ETH). Default is false
|
Result
{
"id":361,
"status":"complete",
"side":"buy",
"price":0.000123481,
"amount":"1",
"fill":"1",
"pair":"JOY_ETH"
}
- amount and fill are BigNumber objects.
- status could be
active
,partial
orcomplete
sell({ pair, price, amount, feeByJoy })
Place selling order
let order = await joyso.sell({
pair: 'JOY_ETH',
price: '0.000123481',
amount: 100
});
Options and result are same with buy.
trade({ pair, price, amount, feeByJoy, side })
Place order
let order = await joyso.trade({
side: 'buy',
pair: 'JOY_ETH',
price: '0.000123481',
amount: 100
});
Options and result are same with buy. One extra options
|Name|Required|Description|
|---|---|---|
|side|O|buy
or sell
|
withdraw({ token, amount, fee })
Withdraw
await joyso.withdraw({
token: 'ETH',
amount: 0.01,
fee: 'eth'
});
Options
|Name|Required|Description|
|---|---|---|
|token|O|Token to withdraw|
|amount|O|Amount to withdraw|
|fee|O|Specify how to pay fee. eth
, joy
or token
. token
can only be used when token is quote token.|
getMyTrades({ from, to, quote, base, side, before, limit })
Get my trades
await joyso.getMyTrades({
quote: 'ETH',
base: 'JOY',
side: 'sell',
from: 1539129600,
to: 1539216000,
before: 123,
limit: 10
});
Options
|Name|Required|Description|
|---|---|---|
|quote||Quote token|
|base||Base token|
|side||Specify side. buy
, sell
or blank. Blank means both.|
|from||From time (included). Unix timestamp|
|to||To time (excluded). Unix timestamp|
|before||Only return Trade ID before this. (excluded)|
|limit||Specify size of records to return. Default 100, max 1000|
Results are same with subscribeMyTrades.
disconnect()
Disconnect from JOYSO.
subscription.unsubscribe()
Unsubscribe
subscription.unsubscribe();
License
The project is released under the MIT license.
Contact
The project's website is located at https://github.com/Joyso-io/joyso-api