Skip to content

Latest commit

 

History

History
183 lines (161 loc) · 13.8 KB

README.md

File metadata and controls

183 lines (161 loc) · 13.8 KB

Bitmex REST APIs for Go

Overview

This bitmexgo package enables golang clients to call REST APIs for the Bitmex crypto trading platform. It fixes critical bugs in the swagger-generated code and enhances its usability.

Notable changes:

  • Fixed the authentication logic and API endpoint
  • Fixed form data encoding
  • Renamed the package from swagger to bitmexgo
  • Removed all external dependencies (golang.org/x/oauth2 and github.com/antihax/optional)
  • Added a local optional package with mutable states to simplify parameter assignment
  • Fixed many type issues and removed the obsolete XAny type

This package also differs from an alternative library at https://github.com/qct/bitmex-go in the following ways:

  • bitmexgo employs strongly-typed structs for API parameters instead of map[string]interface{}.
  • bitmexgo is forked from a more recent version of the swagger-generated code.
  • bitmexgo depends on no external packages and is compatible with Google App Engine.

Installation

go get github.com/zmxv/bitmexgo

Usage

import "github.com/zmxv/bitmexgo"

// Get your API key/secret pair at https://www.bitmex.com/app/apiKeys
apiKey := "..."
apiSecret := "..."

// Create an authentication context
auth := bitmexgo.NewAPIKeyContext(apiKey, apiSecret)

// Create a shareable API client instance
apiClient := bitmexgo.NewAPIClient(bitmexgo.NewConfiguration())

// Create a testnet API client instance
testnetClient := bitmexgo.NewAPIClient(bitmexgo.NewTestnetConfiguration())

// Call APIs without parameters by passing the auth context.
// e.g. getting exchange-wide turnover and volume statistics:
stats, res, err := apiClient.StatsApi.StatsGet(auth)

// Call APIs with default parameters by passing the auth context and a nil.
// e.g. getting all open positions:
pos, res, err := apiClient.PositionApi.PositionGet(auth, nil)

// Call APIs with additional parameters by constructing a corresponding XXXOpts struct.
// e.g. submitting a limit order to buy 20000 contracts of XBTUSD at $6000.5:
var params bitmexgo.OrderNewOpts
params.OrdType.Set("Limit")
params.Side.Set("Buy")
params.OrderQty.Set(20000)
params.Price.Set(6000.5)
order, res, err := apiClient.OrderApi.OrderNew(auth, "XBTUSD", &params)

Documentation for API Endpoints

All URIs are relative to https://www.bitmex.com/api/v1

Class Method HTTP request Description
APIKeyApi APIKeyDisable Post /apiKey/disable Disable an API Key.
APIKeyApi APIKeyEnable Post /apiKey/enable Enable an API Key.
APIKeyApi APIKeyGet Get /apiKey Get your API Keys.
APIKeyApi APIKeyNew Post /apiKey Create a new API Key.
APIKeyApi APIKeyRemove Delete /apiKey Remove an API Key.
AnnouncementApi AnnouncementGet Get /announcement Get site announcements.
AnnouncementApi AnnouncementGetUrgent Get /announcement/urgent Get urgent (banner) announcements.
ChatApi ChatGet Get /chat Get chat messages.
ChatApi ChatGetChannels Get /chat/channels Get available channels.
ChatApi ChatGetConnected Get /chat/connected Get connected users.
ChatApi ChatNew Post /chat Send a chat message.
ExecutionApi ExecutionGet Get /execution Get all raw executions for your account.
ExecutionApi ExecutionGetTradeHistory Get /execution/tradeHistory Get all balance-affecting executions. This includes each trade, insurance charge, and settlement.
FundingApi FundingGet Get /funding Get funding history.
InstrumentApi InstrumentGet Get /instrument Get instruments.
InstrumentApi InstrumentGetActive Get /instrument/active Get all active instruments and instruments that have expired in <24hrs.
InstrumentApi InstrumentGetActiveAndIndices Get /instrument/activeAndIndices Helper method. Gets all active instruments and all indices. This is a join of the result of /indices and /active.
InstrumentApi InstrumentGetActiveIntervals Get /instrument/activeIntervals Return all active contract series and interval pairs.
InstrumentApi InstrumentGetCompositeIndex Get /instrument/compositeIndex Show constituent parts of an index.
InstrumentApi InstrumentGetIndices Get /instrument/indices Get all price indices.
InsuranceApi InsuranceGet Get /insurance Get insurance fund history.
LeaderboardApi LeaderboardGet Get /leaderboard Get current leaderboard.
LeaderboardApi LeaderboardGetName Get /leaderboard/name Get your alias on the leaderboard.
LiquidationApi LiquidationGet Get /liquidation Get liquidation orders.
NotificationApi NotificationGet Get /notification Get your current notifications.
OrderApi OrderAmend Put /order Amend the quantity or price of an open order.
OrderApi OrderAmendBulk Put /order/bulk Amend multiple orders for the same symbol.
OrderApi OrderCancel Delete /order Cancel order(s). Send multiple order IDs to cancel in bulk.
OrderApi OrderCancelAll Delete /order/all Cancels all of your orders.
OrderApi OrderCancelAllAfter Post /order/cancelAllAfter Automatically cancel all your orders after a specified timeout.
OrderApi OrderClosePosition Post /order/closePosition Close a position. [Deprecated, use POST /order with execInst: 'Close']
OrderApi OrderGetOrders Get /order Get your orders.
OrderApi OrderNew Post /order Create a new order.
OrderApi OrderNewBulk Post /order/bulk Create multiple new orders for the same symbol.
OrderBookApi OrderBookGetL2 Get /orderBook/L2 Get current orderbook in vertical format.
PositionApi PositionGet Get /position Get your positions.
PositionApi PositionIsolateMargin Post /position/isolate Enable isolated margin or cross margin per-position.
PositionApi PositionTransferIsolatedMargin Post /position/transferMargin Transfer equity in or out of a position.
PositionApi PositionUpdateLeverage Post /position/leverage Choose leverage for a position.
PositionApi PositionUpdateRiskLimit Post /position/riskLimit Update your risk limit.
QuoteApi QuoteGet Get /quote Get Quotes.
QuoteApi QuoteGetBucketed Get /quote/bucketed Get previous quotes in time buckets.
SchemaApi SchemaGet Get /schema Get model schemata for data objects returned by this API.
SchemaApi SchemaWebsocketHelp Get /schema/websocketHelp Returns help text & subject list for websocket usage.
SettlementApi SettlementGet Get /settlement Get settlement history.
StatsApi StatsGet Get /stats Get exchange-wide and per-series turnover and volume statistics.
StatsApi StatsHistory Get /stats/history Get historical exchange-wide and per-series turnover and volume statistics.
StatsApi StatsHistoryUSD Get /stats/historyUSD Get a summary of exchange statistics in USD.
TradeApi TradeGet Get /trade Get Trades.
TradeApi TradeGetBucketed Get /trade/bucketed Get previous trades in time buckets.
UserApi UserCancelWithdrawal Post /user/cancelWithdrawal Cancel a withdrawal.
UserApi UserCheckReferralCode Get /user/checkReferralCode Check if a referral code is valid.
UserApi UserConfirm Post /user/confirmEmail Confirm your email address with a token.
UserApi UserConfirmEnableTFA Post /user/confirmEnableTFA Confirm two-factor auth for this account. If using a Yubikey, simply send a token to this endpoint.
UserApi UserConfirmWithdrawal Post /user/confirmWithdrawal Confirm a withdrawal.
UserApi UserDisableTFA Post /user/disableTFA Disable two-factor auth for this account.
UserApi UserGet Get /user Get your user model.
UserApi UserGetAffiliateStatus Get /user/affiliateStatus Get your current affiliate/referral status.
UserApi UserGetCommission Get /user/commission Get your account's commission status.
UserApi UserGetDepositAddress Get /user/depositAddress Get a deposit address.
UserApi UserGetMargin Get /user/margin Get your account's margin status. Send a currency of &quot;all&quot; to receive an array of all supported currencies.
UserApi UserGetWallet Get /user/wallet Get your current wallet information.
UserApi UserGetWalletHistory Get /user/walletHistory Get a history of all of your wallet transactions (deposits, withdrawals, PNL).
UserApi UserGetWalletSummary Get /user/walletSummary Get a summary of all of your wallet transactions (deposits, withdrawals, PNL).
UserApi UserLogout Post /user/logout Log out of BitMEX.
UserApi UserLogoutAll Post /user/logoutAll Log all systems out of BitMEX. This will revoke all of your account's access tokens, logging you out on all devices.
UserApi UserMinWithdrawalFee Get /user/minWithdrawalFee Get the minimum withdrawal fee for a currency.
UserApi UserRequestEnableTFA Post /user/requestEnableTFA Get secret key for setting up two-factor auth.
UserApi UserRequestWithdrawal Post /user/requestWithdrawal Request a withdrawal to an external wallet.
UserApi UserSavePreferences Post /user/preferences Save user preferences.
UserApi UserUpdate Put /user Update your password, name, and other attributes.

Documentation For Models

Bitmex customer support

[email protected]