npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

hollaex-node-lib

v2.19.4

Published

hollaex api and websocket library for nodejs

Readme

hollaex-node-lib

Nodejs library for HollaEx Kit enabled exchanges.

This library is specifically for end users and traders to connect to HollaEx Kit exchanges. It connects to HollaEx Pro by default.

Usage

const hollaex = require('hollaex-node-lib');

const client = new hollaex();

You can pass custom apiURL, wsURL and baseURL of the HollaEx-Enabled exchange to connect to. apiURL is https://api.hollaex.com for HollaEx Pro and for your custom exchange it would be something like https://myexchange.com/api. wsURL is the websocket URL for the socket connection and you should pass your stream URL. For HollaEx Pro it is wss://api.hollaex.com/stream and for your exchange it would be something like wss://myexchange.com/stream. baseURL is not required and it is set by default to /v2 unless you need to connect to an older version of HollaEx.

You can also pass your apiKey and apiSecret generated from the HollaEx-Enabled exchange to use private requests that require authentication. For public endpoints apiKey and apiSecret are not required.

const client = new hollaex({
	apiURL: '<EXCHANGE_API_URL>',
	wsURL: '<EXCHANGE_WS_URL>',
	apiKey: '<MY_API_KEY>',
	apiSecret: '<MY_API_SECRET>'
});

You can also pass the field apiExpiresAfter which is the length of time in seconds each request is valid for. The default value is 60.

Example:

const client = new hollaex({
	apiURL: '<EXCHANGE_API_URL>',
	wsURL: '<EXCHANGE_API_URL>',
	apiKey: '<MY_API_KEY>',
	apiSecret: '<MY_API_SECRET>'
});

client
	.getTicker('xht-usdt')
	.then((res) => {
		console.log('The volume is: ', res.volume);
	})
	.catch((err) => {
		console.log(err);
	});

client
	.getTrades({ symbol: 'xht-usdt' })
	.then((res) => {
		console.log('Public trades: ', res);
	})
	.catch((err) => {
		console.log(err);
	});

Available functions:

| Command | Parameters | Description | | - | - | - | | getKit | | Get exchange information e.g. name, valid languages, description, etc. | | getConstants | | Tick size, min price, max price, min size and max size of each symbol pair and coin | | getTicker | symbol: HollaEx trading symbol e.g. xht-usdt | Last, high, low, open and close price and volume within the last 24 hours | | getTickers | | Last, high, low, open and close price and volume within the last 24 hours for all symbols | | getOrderbook | symbol: HollaEx trading symbol e.g. xht-usdt | Orderbook containing list of bids and asks | | getOrderbooks | | Orderbook containing list of bids and asks for all symbols | | getTrades | opts: Object with additional paramsopts.symbol: (optional) HollaEx trading symbol e.g. xht-usdt | List of last trades | | getUser | | User's personal information | | getBalance | | User's wallet balance | | getDeposits | opts: Object with additional paramsopts.currency: (optional) Filter data set by assetopts.status: (optional) Filter data set statusopts.dismissed: (optional) Filter data set dismissedopts.rejected: (optional) Filter data set rejectedopts.processing: (optional) Filter data set processingopts.waiting: (optional) Filter data set waitingopts.limit: (optional, default=50, max=50) Number of items to getopts.page: (optional, default=1) Page number of dataopts.orderBy: (optional) Field to order data byopts.order: (optional, enum=[asc, desc]) Specify ascending or descending orderopts.startDate: (optional, format=ISO8601) Start date of data setopts.endDate: (optional, format=ISO8601) End date of data setopts.transactionId: (optional) Filter data set by TXIDopts.address: (optional) Filter data set by address | User's list of all deposits | | getWithdrawals | opts: Object with additional paramsopts.currency: (optional) Filter data set by assetopts.status: (optional) Filter data set statusopts.dismissed: (optional) Filter data set dismissedopts.rejected: (optional) Filter data set rejectedopts.processing: (optional) Filter data set processingopts.waiting: (optional) Filter data set waitingopts.limit: (optional, default=50, max=50) Number of items to getopts.page: (optional, default=1) Page number of dataopts.orderBy: (optional) Field to order data byopts.order: (optional, enum=[asc, desc]) Specify ascending or descending orderopts.startDate: (optional, format=ISO8601) Start date of data setopts.endDate: (optional, format=ISO8601) End date of data setopts.transactionId: (optional) Filter data set by TXIDopts.address: (optional) Filter data set by address | User's list of all withdrawals | | makeWithdrawal | currency: Currency code e.g. xhtamount: Withdrawal amountaddress: Address to withdrawal toopts: Object with additional paramsopts.network: (required if asset has multiple networks) Blockchain network to create address for e.g. trx | Create a new withdrawal request | | getUserTrades | opts: Object with additional paramsopts.symbol: (optional) HollaEx trading symbol e.g. xht-usdtopts.limit: (optional, default=50, max=50) Number of items to getopts.page: (optional, default=1) Page number of dataopts.orderBy: (optional) Field to order data byopts.order: (optional, enum=[asc, desc]) Specify ascending or descending orderopts.startDate: (optional, format=ISO8601) Start date of data setopts.endDate: (optional, format=ISO8601) End date of data set | User's list of all trades | | getOrder | orderId: HollaEx Network Order ID | Get specific information about a certain order | | getOrders | opts: Object with additional paramsopts.symbol: (optional) HollaEx trading symbol e.g. xht-usdtopts.side: (optional, enum=[buy, sell]) Order sideopts.status: (optional) Filter data set statusopts.limit: (optional, default=50, max=50) Number of items to getopts.page: (optional, default=1) Page number of dataopts.orderBy: (optional) Field to order data byopts.order: (optional, enum=[asc, desc])opts.startDate: (optional, format=ISO8601) Start date of data setopts.endDate: (optional, format=ISO8601) End date of data set | Get the list of all user orders. It can be filter by passing the symbol | | createOrder | symbol: HollaEx trading symbol e.g. xht-usdtside (enum=[buy, sell]): Order sidesize: Size of order to placetype: (enum=[market, limit] Order typeprice: (required if limit order type) Order priceopts: Object with additional paramsopts.stop: (optional) Stop price for orderopts.meta: (optional) Object with additional meta configurationsopts.meta.post_only: (optional, default=false) Make post only order opts.meta.note: (optional) Custom note for order | Create a new order | | cancelOrder | orderId: HollaEx Network order ID | Cancel a specific order with its ID | | cancelAllOrders | symbol: HollaEx trading symbol e.g. xht-usdt | Cancel all the active orders of a user, filtered by currency pair symbol | | getMiniCharts | assets: The list of assets to get the mini charts foropts.from: (optional) Start Dateopts.to: (optional) End Dateopts.quote: (optional) Quote asset to receive prices based on | Get trade history HOLCV for all pairs | | getQuickTradeQuote | spending_currency: Currency symbol of the spending currencyreceiving_currency: Currency symbol of the receiving currencyopts.spending_amount: (optional) Spending amountopts.receiving_amount: (optional) Receiving amount | Get Quick Trade Quote | | executeOrder | token: Token | Execute Order |

Available admin functions:

| Command | Parameters | Description | | - | - | - | | getExchangeInfo | | Get admin exchange information | getExchangeDeposits | opts.userId: The identifier of the user to filter byopts.currency: The currency to filter by, pass undefined to receive data on all currenciesopts.limit: Amount of deposits per page. Maximum: 50. Default: 50opts.page: Page of deposit data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format.opts.status: Confirmed status of the deposits to get. Leave blank to get all confirmed and unconfirmed depositsopts.dismissed: Dismissed status of the deposits to get. Leave blank to get all dismissed and undismissed depositsopts.rejected: Rejected status of the deposits to get. Leave blank to get all rejected and unrejected depositsopts.processing: Processing status of the deposits to get. Leave blank to get all processing and unprocessing deposits opts.waiting: Waiting status of the deposits to get. Leave blank to get all waiting and unwaiting depositsopts.transactionId: Deposits with specific transaction ID.opts.address: Deposits with specific address.opts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve list of the user's deposits by admin | | getExchangeWithdrawals | opts.userId: The identifier of the user to filter byopts.currency: The currency to filter by, pass undefined to receive data on all currenciesopts.status: Confirmed status of the withdrawals to get. Leave blank to get all confirmed and unconfirmed withdrawalsopts.dismissed: Dismissed status of the withdrawals to get. Leave blank to get all dismissed and undismissed withdrawalsopts.rejected: Rejected status of the withdrawals to get. Leave blank to get all rejected and unrejected withdrawalsopts.processing: Processing status of the withdrawals to get. Leave blank to get all processing and unprocessing withdrawalsopts.waiting: Waiting status of the withdrawals to get. Leave blank to get all waiting and unwaiting withdrawalsopts.limit: Amount of withdrawals per page. Maximum: 50. Default: 50opts.page: Page of withdrawal data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format.opts.transactionId: Withdrawals with specific transaction ID.opts.address: Withdrawals with specific address.opts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve list of the user's withdrawals by admin | | getExchangeBalance | | Retrieve admin's wallet balance | | transferExchangeAsset | senderId: The identifier of the senderreceiverId: The identifier of the receivercurrency: The currency to specifyamount: The amount to specifyopts.description: The description fieldopts.email: The email field | Transfer exchange asset by admin | | mint (createExchangeDeposit) | userId: The identifier of the usercurrency: The currency to specifyamount: The amount to specifyopts.transactionId: deposit with specific transaction ID.opts.status: The status field to confirm the depositopts.email: The email fieldopts.fee: The fee to specify | Create exchange deposit by admin | | updateMint (updateExchangeDeposit) | transactionId: Deposits with specific transaction ID.opts.updatedTransactionId: Deposits with updated transaction idopts.updatedAddress: Deposits with updated addressopts.status: Confirmed status of the deposits to set. opts.dismissed: Dismissed status of the deposits to set.opts.rejected: Rejected status of the deposits to set. opts.processing: Processing status of the deposits to set. opts.waiting: Waiting status of the deposits to set.opts.email: Email | Update exchange deposit by admin | | burn (createExchangeWithdrawal) | userId: The identifier of the usercurrency: The currency to specifyamount: The amount to specifyopts.transactionId: Withdrawal with specific transaction ID.opts.status: The status field to confirm the withdrawalopts.email: The email fieldopts.fee: The fee to specify | Create exchange withdrawal by admin | | updateBurn (updateExchangeWithdrawal) | transactionId: Withdrawals with specific transaction ID.opts.updatedTransactionId: Withdrawals with updated transaction idopts.updatedAddress: Withdrawals with updated addressopts.status: Confirmed status of the withdrawals to set. opts.dismissed: Dismissed status of the withdrawals to set.opts.rejected: Rejected status of the withdrawals to set. opts.processing: Processing status of the withdrawals to set.opts.waiting: Waiting status of the withdrawals to set.opts.email: Email | Update Exchange Withdrawal | | checkExchangeDepositStatus | userId: The identifier of the usercurrency: The currency to filter by, pass undefined to receive data on all currenciestransactionId: Deposits with specific transaction ID.address: Deposits with specific address.network: The network infoopts.isTestnet: The info on whether it's a testnet or not | Check exchange deposit status | | settleExchangeFees | opts.userId: The identifier of the user | Set exchange fees by admin | | getExchangeTrades | opts.userId: The identifier of the useropts.side: The order side (buy or side)opts.limit: Amount of trades per page. Maximum: 50. Default: 50opts.page: Page of trades data. Default: 1opts.symbol: The symbol-pair to filter by, pass undefined to receive data on all currenciesopts.orderBy: The field to trade data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format.opts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve user's trades by admin | | getExchangeOrders | opts.userId: The identifier of the useropts.side: The order side (buy or side)opts.status: The order's status e.g open, filled, canceled etcopts.open: The info on whether the order is active or not opts.side: The order side (buy or side)opts.limit: Amount of orders per page. Maximum: 50. Default: 50opts.page: Page of order data. Default: 1opts.symbol: The symbol-pair to filter by, pass undefined to receive data on all currenciesopts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format. | Retrieve user's orders by admin | | cancelExchangeUserOrder | userId: The identifier of the userorderId: The identifier of the order | Cancel user's order by order id | | getExchangeUsers | opts: Optional parametersopts.id: The identifier of the user to filter byopts.userId: The identifier of the user to filter byopts.search: The search text to filter by, pass undefined to receive data on all fieldsopts.pending: The pending field to filter by, pass undefined to receive all dataopts.pendingType: Th pending type info to filter by, pass undefined to receive dataopts.limit: Amount of users per page. Maximum: 50. Default: 50opts.page: Page of user data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format.opts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve list of the user info by admin | | createExchangeUser | email: The mail address for the userpassword: The password for the useropts.referral: The referral code for the user | Create exchange user | | updateExchangeUser | userId: The identifier of the user to filter byopts.meta: The field to update user meta infoopts.overwrite: the field to set overwrite option along with meta objectopts.role: The field to update user role ('admin', 'supervisor', 'support', 'kyc', 'communicator', 'user')opts.note: The field to update user note opts.verification_level: The field to set user's verification level | Update exchange user | | deleteExchangeUser | user_id: The id for the user | Delete exchange user | | createExchangeUserWallet | userId: The identifier of the usercrypto: The coin for the wallet e.g btc, ethopts.network: The network info | Create wallet for exchange user | | getExchangeUserWallet | opts.userId: The identifier of the user to filter byopts.limit: Amount of users per page. Maximum: 50. Default: 50opts.currency: The currency to filter byopts.page: Page of user data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format.opts.address: Address of cryptoopts.isValid: Specify whether or not wallet is validopts.network: Crypto network of currencyopts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve users' wallets by admin | | getExchangeUserBalance | userId: The identifier of the user | Retrieve user's login info by admin | | createExchangeUserBank | userId: The identifier of the userbankAccount: Array of objects with bank account info | Create bank account for user by admin | | getExchangeUserLogins | opts.userId: The identifier of the useropts.limit: Amount of logins per page. Maximum: 50. Default: 50opts.page: Page of referral data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format. | Retrieve user's login info by admin | | deactivateExchangeUser | userId: The identifier of the user to deactivate their exchange account | Deactivate exchange user account by admin | | deactivateExchangeUserOtp | userId: The identifier of the user to deactivate their otp | Deactivate user otp by admin | | getExchangeUserReferrals | userId: The identifier of the user to filter byopts.limit: Amount of referrals per page. Maximum: 50. Default: 50opts.page: Page of referral data. Default: 1opts.orderBy: The field to order data by e.g. amount, id.opts.order: Ascending (asc) or descending (desc).opts.startDate: Start date of query in ISO8601 format.opts.endDate: End date of query in ISO8601 format. | Retrieve user's referrals info by admin | | getExchangeUserReferrer | userId: The identifier of the user to filter by | Retrieve user's referer info by admin | | sendExchangeUserEmail | userId: The identifier of the usermailType: The mail type for the email payloaddata: The content of the mail | Send email to exchange user account by admin | | sendRawEmail | receivers: The array of emails to send mailhtml: The stringified html contentopts.title: The title of the mailopts.text: The text of the mail | Send email to users with custom html by admin | | getOraclePrice | assets: Assets to convertopts.quote: Quote coin to convert toopts.amount: Amount to convert | Retrieve price conversion | | getExchangeUserBalances | opts.userId: The identifier of the user to filter byopts.currency: The currency to filter by, pass undefined to receive data on all currenciesopts.format: Custom format of data set. Enum: ['all', 'csv'] | Retrieve user's balances by admin | | createOrderByAdmin | user_id: User id for the ordersymbol: Currency symbol of the order e.g. xht-usdtsize: Amount of the orderside: Order Side, buy or selltype: Order Type, limit or marketprice: Order Price | Create order on behalf of user | | createTradeByAdmin | maker_id: User id for the makeruser_id: User id for the takeruser_id: fee in percentage for the makeruser_id: fee in percentage for the takersymbol: Currency symbol of the order e.g. xht-usdtsize: Amount of the orderside: Order Side, buy or sellprice: Order Price | Create order on behalf of user | | createWithdrawalByAdmin | user_id: User id for the withdrawal processaddress: Specific address for the withdrawalamount: Size of the withdrawalcurrency: Currency symbol of the withdrawalopts.network: Blockchain network | Create withdrawal on behalf of users | | getExchangeStakesByAdmin | opts.limit: Number of elements to return. Default: 50. Maximum: 100opts.page: Page of data to retrieveopts.order_by: Field to order dataopts.order: Direction to order (asc/desc)opts.start_date: Starting date of queried data in ISO8601 formatopts.end_date: Ending date of queried data in ISO8601 formatopts.format: Specify data format (csv/all) | Get exchange stakes for admin | | createExchangeStakesByAdmin | name: Name of the stake pool user_id: User ID associated with the stake poolcurrency: Currency of the stake poolaccount_id: Account IDapy: Annual Percentage Yieldmin_amount: Minimum stake amountmax_amount: Maximum stake amountearly_unstake: Whether early unstake is allowedstatus: Pool status (uninitialized/active/paused/terminated)opts.reward_currency: Currency for rewardsopts.duration: Duration in daysopts.slashing: Whether slashing is enabledopts.slashing_earning_percentage: Slashing percentage for earningsopts.slashing_principle_percentage: Slashing percentage for principleopts.onboarding: Whether pool is for onboardingopts.disclaimer: Disclaimer text | Create exchange stakes for admin | | updateExchangeStakesByAdmin | id: ID of the stake pool to updateopts.name: Name of the stake pool opts.user_id: User ID associated with the stake poolopts.currency: Currency of the stake poolopts.reward_currency: Currency for rewardsopts.account_id: Account IDopts.apy: Annual Percentage Yieldopts.duration: Duration in daysopts.slashing: Whether slashing is enabledopts.slashing_earning_percentage: Slashing percentage for earningsopts.slashing_principle_percentage: Slashing percentage for principleopts.early_unstake: Whether early unstake is allowedopts.min_amount: Minimum stake amountopts.max_amount: Maximum stake amountopts.status: Pool status (uninitialized/active/paused/terminated)opts.onboarding: Whether pool is for onboardingopts.disclaimer: Disclaimer text | Update exchange stakes for admin | | deleteExchangeStakesByAdmin | id: ID of the stake pool to delete | Delete exchange stakes for admin | | getExchangeStakersByAdmin | opts.id: Unique identifier for the staker entryopts.user_id: The ID of the user who has locked funds and stakedopts.stake_id: The ID of the stake poolopts.currency: The currency in which the user stakedopts.reward: The amount the user has received as rewardsopts.slashed: The amount slashedopts.limit: Number of elements to return. Default: 50. Maximum: 100opts.page: Page of data to retrieveopts.order_by: Field to order dataopts.order: Direction to order (asc/desc)opts.start_date: Starting date of queried data in ISO8601 formatopts.end_date: Ending date of queried data in ISO8601 formatopts.format: Specify data format (csv/all) | Get exchange stakers of users for admin | | getStakeAnalyticsByAdmin | No parameters needed | Get staking and unstaking amounts | | disableUserWithdrawalByAdmin | user_id: The ID of the user to disable withdrawals foropts.expiry_date: ISO date‑time string when the block expires | Block a user’s withdrawal ability |

Websocket

Functions

You can connect and subscribe to different websocket channels for realtime updates.

To connect, use the connect function with the channels you want to subscribe to in an array as the parameter. The connection will reconnect on it's own unless you call disconnect.

client.connect(['orderbook', 'trade']);

To disconnect the websocket, call disconnect.

client.disconnect();

To subscribe to more channels after connection, use subscribe.

client.subscribe(['order', 'wallet']);

To unsubscribe from channels after connection, use unsubscribe.

client.unsubscribe(['orderbook']);

Channels

Here is the list of channels you can subscribe to:

  • orderbook (Available publicly)
  • trade (Available publicly)
  • order (Only available with authentication. Receive order updates)
  • usertrade (Only available with authentication. Receive user trades)
  • wallet (Only available with authentication. Receive balance updates)
  • deposit (Only available with authentication. Receive deposit notifications)
  • withdrawal (Only available with authentication. Receive withdrawal notifications)
  • admin (Only available with authentication for the exchange administrator. Receive exchange operations such as deposits and withdrawals of all users)

For public channels (orderbook, trade), you can subscribe to specific symbols as follows: orderbook:xht-usdt, trade:xht-usdt. Not passing a symbol will subscribe to all symbols.

Events

After connecting to the websocket, you can listen for events coming from the server by using the on function for the ws property of the client. The events available are default websocket events e.g. message, open, close, error, unexpected-response, etc.

client.ws.on('message', (data) => {
	data = JSON.parse(data);
	console.log(data);
});

These are exapmles of data responses from the server.

  • orderbook: Updates related to the user's private information are as follows:

    {
    	"topic": "orderbook",
    	"action": "partial",
    	"symbol": "xht-usdt",
    	"data": {
    		"bids": [
    			[0.1, 0.1],
    			...
    		],
    		"asks": [
    			[1, 1],
    			...
    		],
    		"timestamp": "2020-12-15T06:45:27.766Z"
    	},
    	"time": 1608015328
    }
  • trade: Updates related to the user's private information are as follows:

    {
    	"topic": "trade",
    	"action": "partial",
    	"symbol": "xht-usdt",
    	"data": [
    		{
    			"size": 0.012,
    			"price": 300,
    			"side": "buy",
    			"timestamp": "2020-12-15T07:25:28.887Z"
    		},
    		...
    	],
    	"time": 1608015328
    }
  • wallet: Updates related to the user's private information are as follows:

    {
    	"topic": "wallet",
    	"action": "partial",
    	"user_id": 1,
    	"data": {
    		"usdt_balance": 1,
    		"usdt_available": 1,
    		"xht_balance": 1,
    		"xht_available": 1,
    		"xmr_balance": 1,
    		"xmr_available": 1,
    		"btc_balance": 1,
    		"btc_available": 1,
    		"eth_balance": 1,
    		"eth_available": 1,
    		...,
    		"updated_at": "2020-12-15T08:41:24.048Z"
    	},
    	"time": 1608021684
    }
  • order: Websocket messages relating the the user's orders.

    • The status of the order can be new, pfilled, filled, and canceled.

    • The action of the data determines what caused it to happen. All three are explained below:

    • partial: All previous and current orders. Is the first order data received when connecting. Max: 50. Descending order.

      {
      	"topic": "order",
      	"action": "partial",
      	"user_id": 1,
      	"data": [
      		{
      			"id": "7d3d9545-b7e6-4e7f-84a0-a39efa4cb173",
      			"side": "buy",
      			"symbol": "xht-usdt",
      			"type": "limit",
      			"size": 0.1,
      			"filled": 0,
      			"price": 1,
      			"stop": null,
      			"status": "new",
      			"fee": 0,
      			"fee_coin": "xht",
      			"meta": {},
      			"fee_structure": {
      				"maker": 0.1,
      				"taker": 0.1
      			},
      			"created_at": "2020-11-30T07:45:43.819Z",
      			"created_by": 1
      		},
      		...
      	],
      	"time": 1608022610
      }
    • insert: When user's order is added. The status of the order can be either new, pfilled, or filled.

      {
      	"topic": "order",
      	"action": "insert",
      	"user_id": 1,
      	"symbol": "xht-usdt",
      	"data": [
      		{
      			"id": "7d3d9545-b7e6-4e7f-84a0-a39efa4cb173",
      			"side": "buy",
      			"symbol": "xht-usdt",
      			"type": "limit",
      			"size": 0.1,
      			"filled": 0,
      			"price": 1,
      			"stop": null,
      			"status": "new",
      			"fee": 0,
      			"fee_coin": "xht",
      			"meta": {},
      			"fee_structure": {
      				"maker": 0.1,
      				"taker": 0.1
      			},
      			"created_at": "2020-11-30T07:45:43.819Z",
      			"updated_at": "2020-12-15T08:56:45.066Z",
      			"created_by": 1
      		},
      		...
      	],
      	"time": 1608022610
      }
    • update: When user's order status is updated. Status can be pfilled, filled, and canceled.

      {
      	"topic": "order",
      	"action": "insert",
      	"user_id": 1,
      	"symbol": "xht-usdt",
      	"data": [
      		{
      			"id": "7d3d9545-b7e6-4e7f-84a0-a39efa4cb173",
      			"side": "buy",
      			"symbol": "xht-usdt",
      			"type": "limit",
      			"size": 0.1,
      			"filled": 0,
      			"price": 1,
      			"stop": null,
      			"status": "new",
      			"fee": 0,
      			"fee_coin": "xht",
      			"meta": {},
      			"fee_structure": {
      				"maker": 0.1,
      				"taker": 0.1
      			},
      			"created_at": "2020-11-30T07:45:43.819Z",
      			"updated_at": "2020-12-15T08:56:45.066Z",
      			"created_by": 1
      		},
      		...
      	],
      	"time": 1608022610
      }
  • deposit: Updates related to the user's private information are as follows:

    {
    	"topic": "deposit",
    	"action": "insert",
    	"user_id": 1,
    	"data": {
    		"amount": 1,
    		"currency": "xht",
    		"status": "COMPLETED",
    		 "transaction_id": "123",
    		...
    	},
    	"time": 1608021684
    }
  • withdrawal: Updates related to the user's private information are as follows:

    {
    	"topic": "withdrawal",
    	"action": "insert",
    	"user_id": 1,
    	"data": {
    		"amount": 1,
    		"currency": "xht",
    		"status": "COMPLETED",
    		 "transaction_id": "123",
    		...
    	},
    	"time": 1608021684
    }

Example

You can run the example by going to example folder and running:

node example/hollaex.js

Documentation

For adding additional functionalities simply go to index.js and add more features. You can read more about api documentation at https://apidocs.hollaex.com You should create your token on the platform in setting->api keys