coinfalcon-nodejs
Version:
A complete API & WebSocket library for CoinFalcon.
1,158 lines (938 loc) • 25.2 kB
Markdown
# coinfalcon-nodejs [](https://travis-ci.org/coinfalcon-github/coinfalcon-nodejs) [](https://coveralls.io/github/coinfalcon-github/coinfalcon-nodejs)
Note: This wrapper uses Promises, if they are not supported in your environment, you might
want to add [a polyfill](https://github.com/stefanpenner/es6-promise) for them.
### Installation
yarn add coinfalcon-nodejs
or
npm install coinfalcon-nodejs
### Getting started
Import the module and create a new client. Passing api keys is optional only if
you don't plan on doing authenticated calls. You can create an api key
[here](https://coinfalcon.com/settings/api-access).
```js
import CoinFalcon from 'coinfalcon-nodejs'
const client = CoinFalcon()
// Authenticated client, can make signed calls
const client2 = CoinFalcon({
apiKey: '...',
apiSecret: '...',
})
client.markets().then(data => console.log(data))
```
If you do not have an appropriate babel config, you will need to use the basic commonjs requires.
```js
const CoinFalcon = require('coinfalcon-nodejs').default
```
Every API call returns a Promise, making this library [async await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) ready.
Following examples will use the `await` form, which requires some configuration you will have to lookup.
### Table of Contents
- [Public API Calls](#public-api-calls)
- [markets](#markets)
- [orderbook](#orderbook)
- [tradebook](#tradebook)
- [Authenticated API Calls](#authenticated-api-calls)
- [fetchAccountBalances](#fetchaccountbalances)
- [fetchUserFees](#fetchuserfees)
- [fetchAllTrades](#fetchalltrades)
- [fetchAllOrders](#fetchallorders)
- [fetchOrder](#fetchorder)
- [createOrder](#createorder)
- [cancelOrder](#cancelorder)
- [fetchDeposits](#fetchdeposits)
- [fetchDeposit](#fetchdeposit)
- [fetchDepositAddress](#fetchdepositaddress)
- [fetchWithdrawals](#fetchwithdrawals)
- [fetchWithdrawal](#fetchwithdrawal)
- [createWithdrawal](#createwithdrawal)
- [cancelWithdrawal](#cancelwithdrawal)
- [Public Websockets](#public-websockets)
- [ticker](#ticker)
- [orderbook](#orderbook-1)
- [tradebook](#tradebook-1)
- [Authenticated Websockets](#authenticated-websockets)
- [accountBalances](#accountbalances)
- [userTrades](#usertrades)
- [userOrders](#userorders)
### Public API Calls
#### markets
Get data for all open markets
```js
// definition: markets()
console.log(await client.markets())
```
<details>
<summary>Output</summary>
```js
[
{
"name": "IOT-BTC",
"precision": 8,
"min_volume": "0.00000001",
"min_price": "0.00000001",
"volume": "0.07844506",
"last_price": "0.00007221",
"change_in_24h": "-0.37",
"size_precision": 8,
"price_precision": 8
},
{
"name": "ETH-BTC",
"precision": 6,
"min_volume": "0.00000001",
"min_price": "0.000001",
"volume": "0.821696",
"last_price": "0.031064",
"change_in_24h": "-1.7",
"size_precision": 8,
"price_precision": 6
},
...
]
```
</details>
#### orderbook
Get a list of open orders for a market. The amount of detail shown can be customized with the level parameter.
```js
// definition: orderbook(market, level)
console.log(await client.orderbook('BTC-USDT', 1))
```
Parameter | Default | Description
--------- | ------- | -----------
market | required | Get only orders from specific market e.g. `BTC-USDT`
level | 1 | Defines the level of the request
Level | Description
--------- | -------
1 | Only the best bid and ask
2 | Top 50 bids and asks
3 | Full order book
<details>
<summary>Output</summary>
```js
{
"bids": [
{
"price": "6225.0",
"size": "0.01"
},
{
"price": "6220.14",
"size": "1.31"
},
...
],
"asks": [
{
"price": "6400.0",
"size": "0.38493686"
},
{
"price": "6400.07",
"size": "0.0303693"
},
...
]
}
```
</details>
#### tradebook
List the latest trades for a market.
```js
// definition: tradebook(market, since_time, start_time, end_time)
console.log(await client.tradebook('ETH-BTC'))
```
Parameter | Default | Description
--------- | ------- | -----------
market | required | Get only orders from specific market e.g. `ETH-BTC`
since_time | optional | Returns orders since the given datetime
start_time | optional | Returns orders beginning with the given datetime
end_time | optional | Returns orders ending with the given datetime
<details>
<summary>Output</summary>
```js
[
{
"id": "13f33ced-0652-4f30-a11b-d380844c50b2",
"price": "0.066",
"size": "0.01",
"market_name": "ETH-BTC",
"side": "buy",
"created_at": "2018-04-06T10:14:33.009320Z"
},
{
"id": "f46248d9-326f-405d-bfca-508e949116ad",
"price": "0.066",
"size": "0.01",
"market_name": "ETH-BTC",
"side": "buy",
"created_at": "2018-04-06T10:13:57.709221Z"
},
...
]
```
</details>
### Authenticated API Calls
#### fetchAccountBalances
Get your account balances
```js
// definition: fetchAccountBalances()
console.log(await client.fetchAccountBalances())
```
<details>
<summary>Output</summary>
```js
[
{
"id": "12345678-1234-1234-1234-123456789012",
"balance": "0.0",
"available_balance": "0.0",
"hold_balance": "0.0",
"currency_code": "usdt",
"currency_name": "TetherUS"
},
{
"id": "12345678-1234-1234-1234-123456789012",
"balance": "0.0",
"available_balance": "0.0",
"hold_balance": "0.0",
"currency_code": "btc",
"currency_name": "Bitcoin"
},
...
]
```
</details>
#### fetchUserFees
Get fees for taker & maker order along with your 30 days trading volume
```js
// definition: fetchUserFees()
console.log(await client.fetchUserFees())
```
<details>
<summary>Output</summary>
```js
{
"maker_fee": "0.0",
"taker_fee": "0.25",
"btc_volume_30d": "0.0"
}
```
</details>
#### fetchAllTrades
Get your trades for market
```js
// definition fetchAllTrades(market, since_time, start_time, end_time)
console.log(await client.fetchAllTrades('BTC-EUR'))
```
Parameter | Default | Description
--------- | ------- | -----------
market | required | Get only trades from specific market e.g. `BTC-EUR`
since_time | optional | Returns trades since the given datetime
start_time | optional | Returns trades beginning with the given datetime
end_time | optional | Returns trades ending with the given datetime
<details>
<summary>Output</summary>
```js
[
{
"id": "74fcd4e5-a472-4482-92cf-70be8c44bda4",
"price": "7541.6",
"size": "0.00091",
"market_name": "BTC-EUR",
"order_id": "97aa8719-4e69-422f-86f8-7485170f0055",
"side": "sell",
"fee": "0.0",
"liquidity": "M",
"created_at": "2018-04-24T13:46:04.597195Z"
},
...
]
```
</details>
#### fetchAllOrders
Get your orders for market
```js
// definition fetchAllOrders(market, status, since_time, start_time, end_time)
console.log(await client.fetchAllOrders('BTC-USDT'))
```
Parameter | Default | Description
--------- | ------- | -----------
market | required | Get only orders from specific market e.g. `BTC-EUR`
status | optional | Use `all` to get all types of statuses
since_time | optional | Returns orders since the given datetime
start_time | optional | Returns orders beginning with the given datetime
end_time | optional | Returns orders ending with the given datetime
(Note: If status is not specified, all pending, open & partial orders will be returned)
<details>
<summary>Output</summary>
```js
[
{
"id": "a7ed361d-bf39-4b70-a456-e18eadc1b494",
"market_name": "BTC-EUR",
"price": "6420.0",
"size": "0.1",
"size_filled": "0.1",
"fee": "0.00025",
"funds": "642.0",
"status": "fulfilled",
"order_type": "buy",
"post_only": false,
"operation_type": "market_order",
"created_at": "2017-11-06T09:54:42.723945Z"
},
{
"id": "de45bc37-7440-40a3-b5ba-a08dc463e387",
"market_name": "BTC-EUR",
"price": "6419.0",
"size": "0.1",
"size_filled": "0.1",
"fee": "0.00025",
"funds": "641.9",
"status": "fulfilled",
"order_type": "buy",
"post_only": false,
"operation_type": "market_order",
"created_at": "2017-11-06T09:53:08.383210Z"
}
]
```
</details>
#### fetchOrder
Get order by id
```js
// definition: fetchOrder(id)
console.log(await client.fetchOrder('a7ed361d-bf39-4b70-a456-e18eadc1b494'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | Order id
<details>
<summary>Output</summary>
```js
{
"id": "a7ed361d-bf39-4b70-a456-e18eadc1b494",
"market": "BTC-EUR",
"price": "7263.0",
"size": "0.01",
"size_filled": "0.0",
"fee": "0.0",
"funds": "0.01",
"status": "canceled",
"order_type": "sell",
"post_only": false,
"operation_type": "limit_order",
"created_at": "2018-02-04T05:07:59.801504Z"
}
```
</details>
#### createOrder
Place an order
```js
// definition: createOrder(market, operation_type, order_type, size, price, extra_params)
console.log(await client.createOrder('ETH-BTC', 'limit_order', 'buy', 1, 0.03993, { post_only: true }))
```
Parameter | Default | Description
--------- | ------- | -----------
market | required | Create order for specific market e.g. `BTC-EUR`
operation_type | required | `market_order` or `limit_order`
order_type | required | `buy` or `sell` left currency of market
size | required | Amount of currency to buy or sell
price | required | Set the price for `limit_order`
Extra paramas is an object which can have following attributes
Extra Parameter | Description
--------- | -----------
post_only | `true` or `false`
funds | how much amount to spend in right currency for `market_order`
(Note: `size` & `price` both are required for `limit_order`. As for `market_order`, either `size` or `extra_params.funds` is required, but not both.)
<details>
<summary>Output</summary>
```js
{
"id": "4cc9835d-3aad-4e3b-aa76-538e6f18247a",
"market": "ETH-BTC",
"price": "0.03993",
"size": "1.0",
"size_filled": "0.0",
"fee": "0.0",
"funds": "0.03993",
"status": "pending",
"order_type": "buy",
"post_only": true,
"operation_type": "limit_order",
"created_at": "2017-11-03T08:46:14.354945Z"
}
```
</details>
#### cancelOrder
Cancel open order
```js
// definition: cancelOrder(id)
console.log(await client.cancelOrder('a7ed361d-bf39-4b70-a456-e18eadc1b494'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | Order id
<details>
<summary>Output</summary>
```js
{
"id": "a7ed361d-bf39-4b70-a456-e18eadc1b494",
"market": "BTC-EUR",
"price": "7263.0",
"size": "0.01",
"size_filled": "0.0",
"fee": "0.0",
"funds": "0.01",
"status": "canceled",
"order_type": "sell",
"post_only": false,
"operation_type": "limit_order",
"created_at": "2018-02-04T05:07:59.801504Z"
}
```
</details>
#### fetchOrderTrades
Get trades for particular order id
```js
// definition: fetchOrderTrades(id)
console.log(await client.fetchOrderTrades('97aa8719-4e69-422f-86f8-7485170f0055'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | Order id
<details>
<summary>Output</summary>
```js
[
{
"id": "74fcd4e5-a472-4482-92cf-70be8c44bda4",
"price": "7541.6",
"size": "0.00091",
"market_name": "BTC-EUR",
"order_id": "97aa8719-4e69-422f-86f8-7485170f0055",
"side": "sell",
"fee": "0.0",
"liquidity": "M",
"created_at": "2018-04-24T13:46:04.597195Z"
},
{
"id": "a7ed361d-bf39-4b70-a456-e18eadc1b494",
"price": "7541.7",
"size": "0.00096",
"market_name": "BTC-EUR",
"order_id": "97aa8719-4e69-422f-86f8-7485170f0055",
"side": "sell",
"fee": "0.0",
"liquidity": "M",
"created_at": "2018-04-24T13:46:09.597195Z"
}
]
```
</details>
#### fetchDeposits
Get deposit history
```js
// definition: fetchDeposits(currency, status, since_time, start_time, end_time)
console.log(await client.fetchDeposits('btc'))
```
Parameter | Default | Description
--------- | ------- | -----------
currency | optional | currency code e.g. `btc`
status | optional | [pending, completed]
since_time | optional | Returns deposits since the given datetime
start_time | optional | Returns deposits beginning with the given datetime
end_time | optional | Returns deposits ending with the given datetime
<details>
<summary>Output</summary>
```js
[
{
"id": "030c7377-32e5-4078-a1ca-18322250bfd5",
"amount": "0.01",
"status": "completed",
"currency_code": "btc",
"txid": "3caa72cc139505f7e20f17f825c323c6e5888553098df2efe296362d79b7dcd8",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "deposit"
},
{
"id": "2ee9a009-4c3c-4942-a73b-bbe893199beb",
"amount": "0.01",
"status": "completed",
"currency_code": "btc",
"txid": "6f230aa0493b46d54ab82125ff50ff77bde419c0986660dc175060e367ca0a5a",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "deposit"
}
]
```
</details>
#### fetchDeposit
Get deposit details
```js
// definition: fetchDeposit(id)
console.log(await client.fetchDeposit('e30a3ac8-33b1-46ed-8f54-1112417de581'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | deposit id
<details>
<summary>Output</summary>
```js
{
"id": "e30a3ac8-33b1-46ed-8f54-1112417de581",
"amount": "0.01",
"status": "completed",
"currency_code": "btc",
"txid": "782c9be82488e791a93facf7dff2809a8e32e8ec02ee723f0da7d4f72558d82e",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "deposit"
}
```
</details>
#### fetchDepositAddress
Get deposit address for currency
```js
// definition: fetchDepositAddress(currency)
console.log(await client.fetchDepositAddress('xrp'))
```
Parameter | Default | Description
--------- | ------- | -----------
currency | required | currency code e.g. `btc`
(Note: deposit tag will also be returned along with address if required)
<details>
<summary>Output</summary>
```js
{
"address": "r3qasmoPKKpoH3b3zWWq6R2V849bPDZosJ",
"tag": "2575700108"
}
```
</details>
#### fetchWithdrawals
Get withdrawal history
```js
// definition: fetchWithdrawals(currency, status, since_time, start_time, end_time)
console.log(await client.fetchWithdrawals('btc'))
```
Parameter | Default | Description
--------- | ------- | -----------
currency | optional | currency code e.g. `btc`
status | optional | [pending, completed] |
since_time | optional | Returns deposits since the given datetime
start_time | optional | Returns deposits beginning with the given datetime
end_time | optional | Returns deposits ending with the given datetime
<details>
<summary>Output</summary>
```js
[
{
"id": "4f408bea-abf0-46f7-9ae3-c19edbbd38e9",
"amount": "1.0",
"status": "completed",
"fee": "0.000441",
"currency_code": "btc",
"txid": "15d0ea80886ed8518373475bd621db5a04d05645bad13bf785b3032830cdb5f5",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "withdraw"
},
{
"id": "7db1dd7e-bcdd-4b6d-b31c-3699d1ef4a95",
"amount": "0.01",
"status": "completed",
"fee": "0.000441",
"currency_code": "btc",
"txid": "5c569352ae4d55c5f31a4087329bf4e38d57129f8522dd0e6ecccda355bbd570",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "withdraw"
}
]
```
</details>
#### fetchWithdrawal
Get Withdrawal Detail
```js
// definition: fetchWithdrawal(id)
console.log(await client.fetchWithdrawal('9b25877a-35ae-4812-8d89-953ed4c55094'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | withdrawal id
<details>
<summary>Output</summary>
```js
{
"id": "9b25877a-35ae-4812-8d89-953ed4c55094",
"amount": "0.01",
"status": "completed",
"fee": "0.00000662",
"currency_code": "btc",
"txid": "af88900ee9b99b468bf3159be757d6d1be6ef4c2e0fb993e80acb8a2b733742d",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "withdraw"
}
```
</details>
#### createWithdrawal
Create a withdrawal
```js
// definition: createWithdrawal(currency, amount, address, tag)
console.log(await client.createWithdrawal('btc', 0.001, '2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6'))
```
Parameter | Default | Description
--------- | ------- | -----------
currency | required | currency code like `btc`
address | required | withdraw address
amount | required | withdraw amount
tag | optional | withdraw tag for currencies like XRP
<details>
<summary>Output</summary>
```js
{
"id": "641e12db-699e-410e-8b3d-6fff4669119c",
"amount": "0.001",
"status": "pending",
"fee": "0.000441",
"currency_code": "btc",
"txid": "nil",
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "withdraw"
}
```
</details>
#### cancelWithdrawal
Cancel a withdrawal
```js
// definition: cancelWithdrawal(id)
console.log(await client.cancelWithdrawal('8b591a8a-6c4f-4ab6-bef4-f156c0311346'))
```
Parameter | Default | Description
--------- | ------- | -----------
id | required | withdrawal id
<details>
<summary>Output</summary>
```js
{
"id": "8b591a8a-6c4f-4ab6-bef4-f156c0311346",
"amount": "0.001",
"status": "canceled",
"fee": "0.000441",
"currency_code": "btc",
"txid": null,
"address": "2NBoxXmc9E8Fa6TPfFLip6ifDUMcB3Nwsc6",
"type": "withdraw"
}
```
</details>
### Public Websockets
Every websocket utility returns a function you can call to close the opened connection and avoid memory issues. See the ticker example for how to use it.
#### ticker
Provides real-time price updates every time a match happens.
```
// definition: ws.ticker(market, callback)
const close = client.ws.ticker('BTC-EUR', function(data) { console.log(data) })
// After you're done
close()
```
<details>
<summary>Message</summary>
```js
{
"channel": "TickerChannel",
"market": "BTC-EUR",
"market_info": {
"id": 9,
"d1_btc_volume": "2.16905549",
"d1_price_volume": "12137.875346739",
"d1_volume": "2.16905549",
"latest_trade_price": "6499.94",
"middle_price": "5567.905",
"percent_change_24h": "17.010621062106210621",
"right_currency_sign": "€",
"price_precision": 2,
"size_precision": 8
}
}
```
</details>
#### orderbook
Provides real-time updates on orders
```
// definition: ws.orderbook(market, callback)
client.ws.orderbook('ETH-BTC', function(data) { console.log(data) })
```
Upon successful connection, the websocket will send the snapshot of the existing book
<details>
<summary>Snapshot Message</summary>
```js
{
"channel": "OrderbookChannel",
"market": "ETH-BTC",
"init": {
"bids": [
{"price": "0.075", "size": "1.56307"},
{"price": "0.07491", "size": "0.011"},
{"price": "0.0747", "size": "1.0"},
...
],
"asks": [
{"price": "0.08975", "size": "0.98998"},
{"price": "0.0899", "size": "0.5"},
{"price": "0.0913", "size": "0.19231"},
...
],
"price_precision": 5,
"size_precision": 5
}
}
```
</details>
After this, the connection will send the updates which are to be applied on the existing orderbook
<details>
<summary>Update Message</summary>
```js
{
"channel": "OrderbookChannel",
"market": "ETH-BTC",
"update": {
"key": "asks",
"value": [
{
"price": "0.00022168",
"size": "447.66944"
}
]
}
}
```
</details>
#### tradebook
Provides real-time updates on trades
```
// definition: ws.tradebook(market, callback)
client.ws.tradebook('LTC-BTC', function(data) { console.log(data) })
```
Upon successful connection, the websocket will send the snapshot of the recent trades
<details>
<summary>Snapshot Message</summary>
```js
{
"channel": "TradesChannel",
"market": "LTC-BTC",
"init": {
"trades": [
{
"id": "8b591a8a-6c4f-4ab6-bef4-f156c0311346",
"price": "0.02384",
"size": "0.112",
"market_name": "LTC-BTC",
"side": "buy",
"created_at": "2018-04-24T11:40:01.876812Z"
},
{
"id": "641e12db-699e-410e-8b3d-6fff4669119c",
"price": "0.02390",
"size": "0.231",
"market_name": "LTC-BTC",
"side": "buy",
"created_at": "2018-04-24T11:41:05.986121Z"
},
...
]
}
}
```
</details>
After this, the connection will send the new trades one by one as it happens
<details>
<summary>New Trade Message</summary>
```js
{
"channel": "TradesChannel",
"market": "LTC-BTC",
"trade": {
"id": "d40d9f77-dbf3-4ffe-ba97-65eeacc8ebc7",
"price": "0.02394",
"size": "0.31",
"market_name": "LTC-BTC",
"side": "buy",
"created_at": "2018-04-24T13:46:05.121966Z"
}
}
```
</details>
### Authenticated Websockets
#### accountBalances
Get live data of account balance updates
```js
// definition: ws.accountBalances(callback)
client.ws.accountBalances(function(data) { console.log(data) })
```
Upon successful connection, the websocket will send the snapshot of all account balances
<details>
<summary>Snapshot Message</summary>
```js
{
channel: 'AccountChannel',
balances: [
{
id: '1eb8c31f-a617-483e-ac3c-ad1260952cee',
balance: '0.45',
available_balance: '0.0',
hold_balance: '0.45',
usable_balance: '0.0000776024',
currency_code: 'eur',
currency_name: 'Euro'
},
{
id: 'cbdbd292-9620-4452-9c5b-617e907a71bb',
balance: '0.0',
available_balance: '0.0',
hold_balance: '0.0',
usable_balance: '0.0',
currency_code: 'btc',
currency_name: 'Bitcoin'
},
...
]
}
```
</details>
After this, the connection will send the balance update for individual account in real-time
<details>
<summary>Update Message</summary>
```js
{
channel: 'AccountChannel',
balances: [
{
available_balance: '0.45',
balance: '0.45',
currency_code: 'eur',
currency_name: 'Euro',
hold_balance: '0.0',
id: '1eb8c31f-a617-483e-ac3c-ad1260952cee',
usable_balance: '0.4571813374'
}
]
}
```
</details>
#### userTrades
Provides real-time updates for your trades for a market
```js
// definition: ws.userTrades(market, callback)
client.ws.userTrades('BTC-EUR', function(data) { console.log(data) })
```
Upon successful connection, the websocket will send the snapshot of previous trades
<details>
<summary>Snapshot Message</summary>
```js
{
channel: 'UserTradesChannel',
market: 'BTC-EUR',
init: {
trades: [
{
id: 'd3670f95-c186-40fd-9f8c-57bce8c73730',
price: '5660.0',
size: '0.00106008',
market_name: 'BTC-EUR',
order_id: 'b5f569a4-dde1-41f2-bdd6-558248a53549',
fee: '0.0',
liquidity: 'M',
created_at: '2018-10-27T07:15:03.784327Z',
order_type: 'buy',
volume: '0.00106008',
left_currency_code: 'BTC',
right_currency_code: 'EUR'
},
...
]
}
}
```
</details>
After this, the connection will send the balance update for new trades as they execute
<details>
<summary>Update Message</summary>
```js
{
channel: 'UserTradesChannel',
market: 'BTC-EUR',
trade: {
id: '1eb8c31f-a617-483e-ac3c-ad1260952cee',
price: '5660.0',
size: '0.001',
market_name: 'BTC-EUR',
order_id: 'b5f569a4-dde1-41f2-bdd6-558248a53549',
fee: '0.0',
liquidity: 'M',
created_at: '2018-10-27T07:15:12.241298Z',
order_type: 'buy',
volume: '0.001',
left_currency_code: 'BTC',
right_currency_code: 'EUR'
}
}
```
</details>
#### userOrders
Provides real-time updates for your orders for a market
```js
// definition: ws.userOrders(market, callback)
client.ws.userOrders('IOT-EUR', function(data) { console.log(data) })
```
Upon successful connection, the websocket will send the snapshot of existing open orders
<details>
<summary>Snapshot Message</summary>
```js
{
channel: 'UserOrdersChannel',
market: 'IOT-EUR',
init: {
open_orders: [
{
id: '6f6ae92b-71ef-4b11-b931-db8608fbcab7',
market: 'IOT-EUR',
price: '0.3',
size: '1.52367',
size_filled: '0.0',
fee: '0.0',
funds: '0.457101',
status: 'open',
order_type: 'buy',
post_only: false,
operation_type: 'limit_order',
created_at: '2018-10-31T10:02:02.332206Z'
},
...
]
}
}
```
</details>
After this, the connection will send the updates for individual orders whenever there is an update e.g. status change, change in filled size etc.
<details>
<summary>Update Message</summary>
```js
{
channel: 'UserOrdersChannel',
market: 'IOT-EUR',
order:{
created_at: '2018-10-31T10:02:02.332206Z',
fee: '0.0',
funds: '0.457101',
id: '6f6ae92b-71ef-4b11-b931-db8608fbcab7',
market: 'IOT-EUR',
operation_type: 'limit_order',
order_type: 'buy',
post_only: false,
price: '0.3',
size: '1.52367',
size_filled: '0.0',
status: 'canceled'
}
}
```
</details>