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
tobitmexgo
- Removed all external dependencies (
golang.org/x/oauth2
andgithub.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 ofmap[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.
go get github.com/zmxv/bitmexgo
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", ¶ms)
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 "all" 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. |
- AccessToken
- Affiliate
- Announcement
- ApiKey
- Chat
- ChatChannel
- ConnectedUsers
- ErrorError
- Execution
- Funding
- IndexComposite
- InlineResponse200
- InlineResponse2001
- Instrument
- InstrumentInterval
- Insurance
- Leaderboard
- Liquidation
- Margin
- ModelError
- Notification
- Order
- OrderBookL2
- Position
- Quote
- Settlement
- Stats
- StatsHistory
- StatsUsd
- Trade
- TradeBin
- Transaction
- User
- UserCommission
- UserPreferences
- UserWithdrawalFees
- Wallet