Introduction
This API covers the User-category calls in version 3.3 of the GreenX Exchange software. It includes calls required for log-in and authentication.
IMPORTANT NOTICE
Please use NEW endpoint address >
wss://api.greenx.alphaprod.net/wsgateway
API calls can be made via wss://api.greenx.alphaprod.net/wsgateway
The calls have been organized
roughly to correspond to similar functions you would find in other trading venues.
3.4.1 New Endpoints
RegisterNewDevice
GetUserDevices
GetValidate2FARequiredEndpoints
Validate2FA
Revised Calls 3.4.1
SendOrder
Request Payload changed for Market Buy Value - if Buy order and Value (decimal) parameter is supplied, the Market order will execute up to the value specified.
GetExchangeServiceIds
Old GetExchangeServiceIDs Response An array of strings representing service ids.
New GetExchangeServiceIds Response Array hard coded with a single entry: "Matching Engine"
[
{
"Name": "V2ExchangeCore|1",
"ServiceId": "Matching Engine"
"URI": null
}
]
GetExchanges
Old GetExchangeServiceIds Response A list of exchanges within a specified exchange service id.
New GetExchangeServiceIds Response Retrieves exchanges from "THE" mathcing engine as there can only ever be one as of 3.4
Validate2FA
Behavior change, no longer has public permissions specified.
AddInstrument (DEPRECATED)
Behavior change, endpoint returns with bad request message specifying the endpoint is deprecated.
UpdateInstrument (DEPRECATED)
Behavior change, endpoint returns with bad request message specifying the endpoint is deprecated.
RemoveOperatorUser
Behavior change from “Deprecated” to “Remove Association of Operator with User"
3.5.0 Behavior Changes
API Behavior Changes
Any query APIs that return these objects now have the below new fields and response value changes as listed.
AccountPosition
Key | Value |
---|---|
NotionalHoldAmount | decimal. Cross Product Amount on Hold from open orders |
NotionalRate | decimal. Current notional rate from base currency |
TotalDayDepositNotional | decimal. Total Calendar Day Deposit Notional |
TotalMonthDepositNotional | decimal. Total Calendar Month Deposit Notional |
TotalDayWithdrawNotional | decimal. Total Calendar Day Withdraw Notional |
TotalMonthWithdrawNotional | decimal. Total Calendar Month Withdraw Notional |
OrderTrade
Key | Value |
---|---|
CounterPartyClientUserId | int. Indicates counterparty source of trade (OMS, Remarketer, FIX) |
NotionalProductId | int. Notional product the notional value was captured in |
NotionalRate | decimal. Notional rate from base currency at time of trade |
NotionalValue | decimal. Notional value in base currency of venue at time of trade |
AccountInstrumentStatistics
Key | Value |
---|---|
NotionalProductId | int. Notional product the notional value was captured in |
DailyNotionalTradeVolume | decimal. Total Calendar Day Trading Notional |
MonthlyNotionalTradeVolume | decimal. Total Calendar Month Trading Notional |
YearlyNotionalTradeVolume | decimal. Total Calendar Year Trading Notional |
VerificationLevelInstruments
Key | Value |
---|---|
NotionalProductId | int. Notional product the notional value was captured in |
DailyNotionalLimit | decimal. Total Calendar Day Trading Notional |
MonthlyNotionalLimit | decimal. Total Calendar Month Trading Notional |
YearlyNotionalLimit | decimal. Total Calendar Year Trading Notional |
AccountStatistics
Key | Value |
---|---|
TotalDayDepositNotional | decimal. Total Calendar Day Deposit Notional |
TotalMonthDepositNotional | decimal. Total Calendar Month Deposit Notional |
TotalDayWithdrawNotional | decimal. Total Calendar Day Withdraw Notional |
TotalMonthWithdrawNotional | decimal. Total Calendar Month Withdraw Notional |
VerificationLevelProducts
Key | Value |
---|---|
DailyDepositNotionalLimit | decimal. Total Calendar Day Deposit Notional Limit |
MonthlyDepositNotionalLimit | decimal. Total Calendar Month Deposit Notional Limit |
DailyWithdrawNotionalLimit | decimal. Total Calendar Day Withdraw Notional Limit |
MonthlyWithdrawNotionalLimit | decimal. Total Calendar Month Withdraw Notional Limit |
OMSInfo
Key | Value |
---|---|
BaseNotionalProductId | int. Id of Base Product to be used in Notional Limits |
Fee
Key | Value |
---|---|
FeeTier | int. Id of the Fee Tier the fee belongs to. Matches AccountInfo FeeGroupId (previously existing field) |
Instrument
Key | Value |
---|---|
PriceCollarIndexDifference | decimal. The percent different from the index price that an order is allowed to execute at. Anything falling outside of the index price +/- (1 + PriceCollarIndexDifference) will be collared |
PriceCollarConvertToOtcEnabled | bool. Turns on/off conversion of collared orders to block trades |
PriceCollarConvertToOtcClientUserId | int. Internal System UserId to assign the collared otc orders to. Should alwaays be 1 in current implementation (default) |
PriceCollarConvertToOtcAccountId | int. Account Id to assign the collared orders to. This will effectively be a liability account that will need to have working block trades managed by operator. |
PriceCollarConvertToOtcThreshold | decimal. Threshold of remaining size of order to convert to block trade. If collared order does not have remaining quantity above this threshold the remainder will be cancelled. |
OtcConvertSizeEnabled | bool. Turns on/off auto conversion of 'large' limit orders converted to block trade orders upon receipt by the matching engine |
OtcConvertSizeThreshold | decimal. Threshold to convert limit order quantity to block trade automatically for discovery by block trade market participants |
Revised Calls 3.5.0
Support for additional fields has been added to the following requests:
- GetAccounts
- SubmitBlockTrade
- ModifyOrder
Additional fields have been added to the following responses:
- GetWithdrawFormTemplateTypes
- SubmitAccountLedgerEntry
- GetAllLedgerEntryTickets
- GetOpenWithdrawHolds
- GetOrderStatus
- TransferFunds
- GetLevel1 / Level1UpdateEvent / SubscribeLevel1
3.5.0 New Endpoints
GetAllAccountsConfigs
GetOMSFeeTiers
GetAllOpenTradeReports
SubscribeBlockTrades
UnsubscribeBlockTrades
Background Information
This section provides important information about the GreenX Exchange software.
Message Frame
A JSON-formatted frame object.
{
"m": 0,
"i": 0,
"n":"function name",
"o":"payload"
}
Wrap all calls in a JSON-formatted frame object. Responses from the server are similarly wrapped. The API calls are documented as payloads by function name.
Key | Value |
---|---|
m message type | integer. The type of the message. One of: 0 request 1 reply 2 subscribe-to event 3 event 4 unsubscribe-from event 5 error |
i sequence number | long integer. The sequence number identifies an individual request or
request-and-response pair, to your application. The system requires a non-zero sequence number, but the numbering scheme you use is up to you. No arbitrary sequence numbering scheme is enforced by GreenX. Best Practices: A client-generated API call (of message types 0, 2, and 4) should: Carry an even sequence number Begin at the start of each user session Be unique within each user session. Begin with 2 (as in 2, 4, 6, 8) Message types 1 (reply), 3 (event), and 5 (error) are generated by the server. These messages echo the sequence number of the message to which they respond. See the example, following. |
n function name | string. The function name is the name of the function being called or that the server is responding to. The server echoes your call. See the example, following. |
o payload | Payload is a JSON-formatted string containing the data being sent with the message. Payload may consist of request parameters (key-value pairs) or response parameters. |
Example 1
Example 1
var frame =
{
"m":0,
"i":0,
"n":"function name",
"o":""
};
var requestPayload =
{
"parameter1":"value",
"parameter2":0
};
frame.o = json.Stringify(requestPayload);
// Stringify escapes the payload's quotation marks automatically.
WS.Send(json.Sringify(frame)); // WS.Send escapes the frame
When sending a request in the frame to the software using JavaScript, a call looks like Example 1.
Example 2
Example 2
var frame = json.Parse(wsMessage);
if (frame.m == 1) // message of type reply
{
//This is a reply
if (frame.n == "WebAuthenticateUser")
{
var LoginReply = json.Parse(frame.o);
if (loginReply.Authenticated)
{
var user = LoginReplay.User;
}
}
}
When receiving a frame from the software, use the frame to determine the context, and then unwrap the content, as in Example 2.
Standard response objects and common error codes
A response to an API call usually consists of a specific response, but both successful and unsuccessful responses may consist of a generic response object that verifies only that the call was received, and not that the action requested by the call took place. A generic response to an unsuccessful call provides an error code. A generic response looks like Example 3.
Example 3
Example 3
{
"result":true,
"errormsg":"",
"errorcode": 0,
"detail":"",
}
Key | Value |
---|---|
result | Boolean. If the call has been successfully received by the Order Management System, result is true; otherwise it is false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call returns one of the following messages: Not Authorized (errorcode 20) Invalid Response (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. The content of this key is usually null. |
Modules
The GreenX software consists of several modules that include the Order Management System (OMS), the matching engine, and the Asset Manager. During installation, each is assigned an ID.
The Order Management System is the mechanism that manages access to the trading venue. The OMS controls permissions, accounts, and users. The OMS must be specified in many calls.
The order book resides on the GreenX matching engine.
A trading venue is a combination of OMS and matching engine that creates a place to access the market and trade. A venue maintains its order book and matching engine, and may access several Order Management Systems.
The Asset Manager controls the deposit and withdrawal of funds belonging to an account. These funds can be denominated in any product that the trading venue allows.
Users, Accounts, and Permissions
The GreenX software differentiates between user and account. A user is the person who logs in; an account represents the funds and trading that the user does — much like a bank account represents funds and checks.
As with a bank account, an individual user may have multiple Exchange accounts. Similarly, multiple users may trade through a single account. There may be users who have trading access to one set of accounts that overlap (but do not duplicate) the set of accounts that another user can access. There may be a many-to-many relationship where two or more users have access to a set of accounts.
The use case for this kind of "joint tenancy" is an active trading desk where a specific individual may not always be present. If User A will not be present, User B can monitor and trade on the market. User A may wish to cancel his pending trades for a specific account or instrument, but not those of his trading partner under the same account or for the same instrument.
Permissions handle the rules that determine what a user can access and do with orders, cancellations, and the other tasks of a trading venue. Most permissions encompass tasks such as trading, depositing, or withdrawing funds; but a permission can be set for each API call for each individual in the venue.
An administrator with Operator permission sets up a user's permissions on the OMS when the user joins the trading venue, and only an administrator with Operator permission or above can change them. A full discussion of permissions is not part of this API.
Products and Instruments
In GreenX software, a product is an asset that is tradable or paid out. A product might be a national currency, a crypto-currency, or something else such as a commodity. For example, a product might be a US Dollar or a New Zealand Dollar or a BitCoin or an ounce of gold. Transaction and withdrawal fees are denominated in products. (Products may be referred to as assets in some API calls.)
An instrument is a pair of exchanged products (or fractions of them). For example, US Dollar for BitCoin. In conventional investment parlance, a stock or a bond is called an instrument, but implicit in that is the potential exchange of one product for another (stock for dollars). GreenX software thinks of that exchange as explicit, and separates product from instrument.
Quotes and Orders
The GreenX API includes calls related to both quotes and orders. Quoting is not enabled for the retail end user of GreenX software. Only registered market participants or marketmakers may quote. Your trading venue may offer quotes separately from orders.
- A quote expresses a willingness to buy or sell at a given price.
- An order is a directive to buy or sell.
In this version of the GreenX matching engine software, quotes and orders are synonymous. They both can buy or sell. This is because the matching engine (like most matching engines) requires a "firm quote" — a guaranteed bid or ask.
For both quotes and orders, trading priority is the same, and no preference is given one over the other. In code, the matching engine flags a quote for eventual regulatory and compliance rules, but for current software operation and trade execution, quotes and orders behave equivalently.
Best Practices/Quotes and Orders
Use the order-related API calls in preference to quote-related calls unless you specifically require quote-related calls.
Time– and Date-Stamp Formats
GreenX software uses two different time– and date-stamp formats, POSIX and Microsoft Ticks. Where the value of a time field key is an integer or long, the value is in POSIX format; when the value of a time field key is a string, it is in Microsoft Ticks format (also called datetime).
- POSIX stores date/time values as the number of seconds since 1 January 1970 (long integer).
GreenX software often multiples this number by 1000 for the number of milliseconds since 1 January 1970.
Recognize POSIX format: POSIX format is a long integer. It is usually formatted like this:
1501603632000
- Microsoft Ticks (datetime) format represents the number of ticks that have elapsed since
00:00:00 UTC, 1 January 0001, in the Gregorian calendar. A single tick represents one hundred nanoseconds (one
ten-millionth of a second). There are 10,000 ticks in a millisecond; ten million ticks in a second. Ticks
format does not include the number of ticks attributable to leap-seconds. Recognize Ticks
format: Ticks format is a string. In GreenX software, it is usually formatted like this:
"2018-08-17T17:57:56Z"
Note that a T (for time) separates the initial date from the time. The trailing Z represents the time zone, in all cases in GreenX software, this is UTC (also called Zulu time).
The Trading Day
Most GreenX installations operate 24-hour computer-based trading venues. The trading day runs from UTC Midnight to UTC Midnight (essentially, London time, but without any summertime offset), regardless of the nominal location of the venue. Values such as open or close are those values as of UTC Midnight. Values for day, month, or annual periods run from UTC Midnight to UTC Midnight.
Users
These calls correspond roughly to the Users function of the Exchange Admin and Admin Guide.
Activate2FA
Category: Activation
Permissions: Public
Call Type: Synchronous
Request
{
"Code":"YourCode"
}
Completes the second half of a two-factor authentication by sending the 2FA code while registering for the exchange.
Key | Value |
---|---|
Code | string. The alphanumeric code you received for authentication. |
Response
{
"Activated": true,
"Error":"ErrorMessage"
}
Key | Value |
---|---|
Activated | Boolean. True if the activation code is accepted; false if not. |
Error | string. Error message from the server. |
AddUserAffiliateTag
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Associates a user affiliate tag to a user. An affiliate tag allows a user to encourage others to join the exchange and provides a way to track those new members back to the initiating user.
Request
{
"omsId":0,
"userId":0,
"affiliateId":0,
"affiliateTag":""
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the user operates. |
userId | integer. The user's ID. |
affiliateId | integer. The affiliate ID. |
affiliateTag | string. The alphanumeric tag used to identify new affiliating members. |
Response
{
"result":true,
"errormsg":"",
"errorcode":0,
"detail":""
}
Key | Value |
---|---|
result | Boolean. True signifies that the server has received the request to associate the affiliate tag with a specific user (not that it has done so); false signifies an error. |
errormsg | string. A successful response returns null; the errormsg parameter for an unsuccessful response returns one of the following messages: Not Authorized (errorcode 20), Invalid Request (errorcode 100), Operation Failed (errorcode 101), Server Error (errorcode 102), Resource Not Found (errorcode 104) |
errorcode | integer. A successful response returns 0. An unsuccessful response returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
Authenticate2FA
Category: Authentication
Permissions: Public
Call Type: Synchronous
Request
{
"Code": "YourCode"
}
Completes the second part of a two-factor authentication by sending the authentication token from the non-GreenX authentication system to the Order Management System. The call returns a verification that the user logging in has been authenticated, and a token.
Here is how the two-factor authentication process works:
- Call webauthenticateuser. The response includes values for TwoFAType and TwoFAToken. For example, TwoFAType may return "Google," and the TwoFAToken then returns a Google-appropriate token (which in this case would be a QR code).
- Enter the TwoFAToken into the two-factor authentication program, for example, Google Authenticator. The authentication program returns a different token.
- Call authenticate2FA with the token you received from the two-factor authentication program (shown as YourCode in the Request example below).
Key | Value |
---|---|
Code | string. Code holds the token obtained from the other authentication source. |
Response
{
"Authenticated": true,
"SessionToken": "YourSessionToken"
}
Key | Value |
---|---|
Authenticated | Boolean. A successful authentication returns true. Unsuccessful returns false. |
SessionToken | string. The SessionToken is valid during the current session for connections from the same IP address. If the connection is interrupted during the session, you can sign back in using the SessionToken instead of repeating the full two-factor authentication process. A session lasts one hour after the last-detected activity or until logout. |
To send a session token to re-establish an interrupted session:
{
"SessionToken": "YourSessionToken"
}
AuthenticateUser
Category: Authentication
Permissions: Public
CallType: Synchronous
Request
Use this request call
{
"UserName": "",
"Password": ""
}
Or you can use this request call
{
"APIKey": "28c68ac3fcfafc3d4e8d653fe57e5baf",
"Signature": "29c15c42e4fabcc9e229421e148e647903927c503ab4578ada55bb13a63a9636",
"UserId": "96",
"Nonce": "2247733562"
}
Authenticates a user for the current websocket session.
Key | Value |
---|---|
Username | string. The user's assigned user name. |
Password | string. The user's assigned password. |
or
Key | Value |
---|---|
APIKey | string. This is an GreenX-generated key used in user-identification. |
Signature | string. A long, alphanumeric string generated by GreenX by using the APIKey and Nonce. |
UserId | string. The ID of the user, stated as a string. |
Nonce | string. Any arbitrary number or random string used with the APIKey to generate a signature. |
Response
Authenticated response
{
"authenticated": true,
"user":
{ "userId": 0,
"userName": "",
"email": "",
"emailVerified": false,
"accountId": 0,
"omsId": 0,
"use2FA": false
},
"locked": false,
"requires2FA": false,
"twoFAType": "",
"twoFAToken": "",
"errormsg": ""
}
False authenticated response
{
"authenticated": false,
"locked": false,
"errormsg": "Invalid username or password"
}
Key | Value |
---|---|
authenticated | Boolean. True if the user is authenticated; false otherwise. |
user | JSON user object (below) |
locked | Boolean. True if this affiliated user is currently locked; false otherwise. A user may be locked by trying to log in too many times in rapid succession. He must be unlocked by an admin. |
requires2FA | Boolean. True if the user must use two-factor authentication; false otherwise. |
twoFAType | string. Returns the type of 2FA this user requires. For example, "Google." |
twoFAToken | string. Returns an appropriate token. In the case of Google, this is a QR code. |
errormsg | string. A successful receipt of the call returns null. |
JSON user object:
Key | Value |
---|---|
userId | integer. The ID of the user being authenticated on the exchange. |
userName | string. The name of the user. |
string. The email address of the user. | |
emailVerified | Boolean. Whether the email address has been verified by the registration process or directly by an Admin. |
accountId | integer. The ID of the account with which the user is associated (each user has a default account). |
omsId | integer. The ID of the Order Management System with which the user and account are associated. |
use2FA | Boolean. True if the user must use 2FA to log in; false otherwise. |
CancelUserReport
Category: Users
Permissions: Operator, Trading
Call Type: Synchronous
You can generate or schedule a variety of reports through this API on demand. This call cancels a scheduled report by its report ID. GetUserReportTickets can provide a list of GUIDs for scheduled reports.
Request
{
"UserReportId": guid-as-a-string //GUID not GUIDE
}
Key | Value |
---|---|
UserReport | string. The GUID is a globally unique ID string that identifies the user report to be canceled. The Order Management System provides this ID when you create a report. |
Response
{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}
The response to CancelUserReport verifies that the call was received, not that the user report has been canceled successfully. Individual event updates sent to the user show cancellations. To verify that a report has been canceled, call GetUserReportTickets or GetUserReportWriterResultRecords.
Key | Value |
---|---|
result | Boolean. A successful receipt of the cancellation returns true; and unsuccessful receipt of the cancellation (an error condition) returns false. |
errormsg | string. A successful receipt of the cancellation returns null; the errormsg parameter for an unsuccessful receipt returns one of the following messages: Not Authorized (errorcode 20, Invalid Request (errorcode 100), Operation Failed (errorcode 101), Server Error (errorcode 102), Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the cancellation returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
GetL2Snapshot
Category: User
Permissions: Public
Call Type:
Synchronous
Provides a current Level 2 snapshot of a specific instrument trading on an Order Management System to a user-determined market depth. The Level 2 snapshot allows the user to specify the level of market depth information on either side of the bid and ask.
Request
{
"OMSId": 1,
"InstrumentId": 1,
"Depth": 100
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the instrument is traded. |
InstrumentId | integer. The ID of the instrument that is the subject of the snapshot. |
Depth | integer. Depth of the market — the number of buyers and sellers at greater or lesser prices in the order book for the instrument. Defaults to 100. |
Response
[
[
0, // MDUpdateId
1, // Number of Unique Accounts
123,// ActionDateTime in Posix format X 1000
0, // ActionType 0 (New), 1 (Update), 2(Delete)
0.0, // LastTradePrice
0, // Number of Orders
0.0, //Price
0, // ProductPairCode
0.0, // Quantity
0, // Side
],
]
// This is how the response is sent:
[[0,1,123,0,0.0,0,0.0,0,0.0,0]]
The response is an array of elements for one specific instrument, the number of elements corresponding to the market depth specified in the Request. It is sent as an uncommented, comma-delimited list of numbers. The example is commented. The Level2UpdateEvent contains the same data, but is sent by the OMS whenever trades occur. To receive Level2UpdateEvents, a user must subscribe to Level2UpdateEvents.
Key | Value |
---|---|
MDUpdateID | integer. Market Data Update ID. This sequential ID identifies the order in which the update was created. |
Number of Unique Accounts | integer. Number of accounts that placed orders. |
ActionDateTime | long integer.. ActionDateTime identifies the time and date that the snapshot was taken or the event occurred, in POSIX format X 1000 (milliseconds since 1 January 1970). |
ActionType | integer. L2 information provides price data. This value shows whether this data
is: 0 new 1 update 2 deletion |
LastTradePrice | real. The price at which the instrument was last traded. |
Number of Orders | integer. Number of orders in the GetL2Snapshot. |
Price | real. Bid or Ask price for the Quantity (see Quantity below). |
ProductPairCode | integer. ProductPairCode is the same value and used for the same purpose as InstrumentID. The two are completely equivalent. InstrumentId 47 = ProductPairCode 47. |
Quantity | real. Quantity available at a given Bid or Ask price (see Price above). |
Side | integer. One of: 0 Buy 1 Sell 2 Short (reserved for future use) 3 Unknown (error condition) |
GetLevel1
Category: User
Permissions: GetLevel1, Trading
Call Type: Synchronous
Provides a current Level 1 snapshot (best bid, best offer) of a specific instrument trading on an Order Management System. The Level 1 snapshot does not allow the user to specify the level of market depth information on either side of the bid and ask.
Request
{
"OMSId":1,
"InstrumentId":1
}
Key | Value |
---|---|
OMSId | integer. The ID of the OMS on which the snapshot will be taken. |
InstrumentId | integer. The ID of the instrument whose Level 1 market snapshot will be taken. |
Response
productPairCode is the same as InstrumentId. The two are synonymous and refer to the same object.
{
"exchangeId": 0,
"productPairCode": 0,
"bestBid": 0.0,
"bestOffer": 0.0,
"volume": 0.0,
"lastTradedPx": 0.0,
"lastTradedVolume": 0.0,
"lastTradeTime": 0,
"timeStamp": 0,
"bidQty": 0.0,
"askQty": 0.0,
"bidOrderCt": 0,
"askOrderCt": 0,
"sessionOpen": 0.0,
"sessionHigh": 0.0,
"sessionLow": 0.0,
"sessionClose": 0.0,
"currentDayVolume": 0.0,
"currentDayNumTrades": 0.0,
"currentDayPxChange": 0.0,
"currentNotional": 0.0,
"rolling24HrNotional": 0.0,
"rolling24HrVolume": 0.0,
"rolling24NumTrades": 0.0,
"rolling24HrPxChange": 0.0,
"rolling24HrPxChangePercent": 0.0
}
Key | Value |
---|---|
exchangeId | integer. The ID of the exchange whose snapshot was taken. |
productPairCode | integer. The ID of the instrument (the product pair) whose prices, bids, asks, and volumes are being reported. |
bestBid | real. The current best bid for the instrument (product pair). |
bestOffer | real. The current best offer for the instrument (product pair). |
volume | real. The unit volume of the instrument traded, either during a true session (with a market open and close), or in 24-hour markets, it is the period from UTC Midnight to UTC Midnight, regardless of the nominal location of the market. |
lastTradedPX | real. The last-traded price for the instrument. |
lastTradedVolume | real. The last quantity that was traded. |
lastTradeTime | real. The last time that the instrument was traded. |
timeStamp | real. The date and time of this snapshot. |
bidQty | real. The quantity currently being bid. |
askQty | real. The quantity currently being asked. |
bidOrderCt | integer. The count of bid orders. |
askOrderCt | integer. The count of ask orders. |
sessionOpen | real. Opening price. In markets with openings and closings, this is the opening price for the current session; in 24-hour markets, it is the price as of UTC Midnight beginning the current day. |
sessionHigh | real. Highest price during the trading day, either during a true session (openings and closings) or UTC Midnight to UTC Midnight. |
sessionLow | real. Lowest price during the trading day, either during a true session (openings and closings) or UTC Midnight to UTC Midnight. |
sessionClose | real. The closing price. In markets that open and close, this is the closing price for the current or most recent session; for 24-hour markets, it is the price as of the most recent UTC Midnight. |
currentDayVolume | real. The unit volume of the instrument that is the subject of the snapshot, either during a true session (openings and closings) or in 24-hour markets, during the period UTC Midnight to UTC Midnight. |
currentDayNumTrades | integer. The number of trades during the current day, either during a true session (openings and closings) or in a 24-hour market the period from UTC Midnight to UTC Midnight. |
currentDayPxChange | real. Change in price over the current session or from UTC Midnight to UTC Midnight. |
currentNotional | decimal. Current day quote volume - resets at UTC Midnight. |
rolling24HrNotional | decimal. Rolling 24 hours quote volume. |
rolling24HrVolume | real. Unit volume of the instrument over the past 24 hours, regardless of time zone. This value recalculates continuously. |
rolling24HrNumTrades | real. Number of trades during the past 24 hours, regardless of time zone. This value recalculates continuously. |
rolling24HrPxChange | real. Price change during the past 24 hours, regardless of time zone. This value recalculates continuously. |
rolling24HrPxChangePercent | real. Percent change in price during the past 24 hours. |
GetUserAccountInfos
Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Returns a list of account information for all accounts belonging to the specified user.
Request
{
"OMSId": 0,
"UserId": 0,
"UserName": "",
}
Key | Value |
---|---|
OMSId | integer. The Order Management System on which the user has one ore more accounts. |
UserId | integer. The ID of the user whose accounts you want to return. |
UserName | string. The name of the user. |
Response
Returns a JSON list of account objects; one for each account associated with the user.
{
"OMSID": 0,
"AccountId": 0,
"AccountName": "",
"AccountHandle": "",
"FirmId": "",
"FirmName": "",
"AccountType": {
"Options":[
"Asset",
"Liability",
"ProfitLoss"
]
},
"FeeGroupID": 0,
"ParentID": 0,
"RiskType": {
"Options": [
"Unknown",
"Normal",
"NoRiskCheck",
"NoTrading"
]
},
"VerificationLevel": 0,
"FeeProductType": {
"Options": [
"BaseProduct",
"SingleProduct"
]
},
"FeeProduct": 0,
"RefererId": 0,
"SupportedVenueIds": [
0
],
}
Key | Value |
---|---|
OMSID | integer. The ID of the Order Management System on which the account resides. |
AccountId | integer. The ID of the account for which information was requested. |
AccountName | string. The name of the account. |
AccountHandle | string. AccountHandle is a unique user-assigned name that is checked at create time by the Order Management System. |
FirmId | string. An arbitrary identifier assigned by a trading venue operator to a trading firm as part of the initial company, user, and account set up process. For example, Smith Financial Partners might have the ID SMFP. |
FirmName | string. A longer, non-unique version of the trading firm’s name; for example, Smith Financial Partners. |
AccountType | string. The type of the account for which information is being returned. One of:
Asset Liability ProfitLoss Responses for this string/value pair for Market Participants are almost exclusively Asset. |
FeeGroupID | integer. Defines account attributes relating to how fees are calculated and assessed. Set by trading venue operator. |
ParentID | integer. Reserved for future development. |
RiskType | string. One of: Unkown (an error condition) Normal NoRiskCheck NoTrading Returns Normal for virtually all market participants. Other types indicate account configurations assignable by the trading venue operator. |
VerificationLevel | Integer. Verification level ID (how much verification does this account require) defined by and set by the trading venue operator for this account. |
FeeProductType | string. One of: BaseProduct SingleProduct Transaction fees may be charged by a trading venue operator. This value shows whether fees for this account’s trades are charged in the product being traded (BaseProduct, for example BitCoin) or whether the account has a preferred fee-paying product (SingleProduct, for example USD) to use in all cases and regardless of product being traded. |
FeeProduct | integer. The ID of the preferred fee product, if SingleProduct is the value of FeeProductType. |
RefererId | integer. Captures the ID of the person who referred this account to the trading venue, usually for marketing purposes. |
SupportedVenueIds | integer array. Comma-separated array. Reserved for future expansion. Currently returns 0. |
GetUserAccounts
Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Returns a list of account IDs for a given user. More than one user may be associated with a given account.
Request
{
"omsId": 0,
"userId": 0,
"userName": "",
}
Key | Value |
---|---|
OMSId | integer. The Order Management System on which the user has one ore more accounts. |
UserId | integer. The ID of the user whose accounts you want to return. |
UserName | string. The name of the user. |
Response
The response returns list of comma-separated account IDs.
{
0, // a list of account IDs
}
GetUserAffiliateCount
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Gets a count of users who have been referred to the exchange by the identified user.
Request
{
"OMSId":1,
"UserId":1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user operates. |
UserId | integer. The ID of the user. |
Response
{
"Count":0
}
Key | Value |
---|---|
Count | integer. The count of exchange users who have been referred to the exchange by the user identified by UserId in the request. |
GetUserAffiliateTag
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Returns an array of affiliate tags associated with the identified user. The exchange can use an affiliate tag to identify new users who join the exchange as a result of a recommendation from the identified user. A user may have multiple affiliate tags.
Request
{
"userId": 0,
"omsId": 0
}
Key | Value |
---|---|
userId | integer. The ID of the user whose affiliate tag you want to retrieve. |
omsId | integer. The ID of the Order Management System on which the user operates. |
Response
The response is an array of affiliate tag information, with an object for each affiliate tag associated with the user.
[
{
"omsId": 0,
"userId": 0,
"affiliateId": 0,
"affiliateTag": ""
},
]
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the user operates. This echoes the omsId in the request. |
userId | integer. The ID of the user whose affiliate tag is returned. Echoes the userId in the request. |
affiliateId | integer. The ID of the affiliate. |
affiliateTag | string. The tag that the user can share. |
GetUserConfig
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns an array of configuration key-value pairs for the specified user. Via Configuration this will return redacted values to minimize PII exposure. The array of key-value pairs is variable in number, as required by the Exchange. The value of both Key and Value KVPs are strings.
You can set the array of configuration pairs using SetUserConfig.
Request
{
"userId": 0,
"userName": ""
}
Key | Value |
---|---|
userId | integer. The ID of the user whose configuration key-value pairs you want to return. |
userName | string. The user name of the user whose configuration key-value pairs you want to return. |
Response
[
{
"Key": "Config1",
"Value": "Config1Val"
}
]
The Response returns an array of a variable number of elements, depending on the needs of the Exchange.
Key | Value |
---|---|
Key | string. The name of the key part of the key-value pair. |
Value | string. The value part of the key-value pair. The value must be a string. |
GetAllUnredactedUserConfigsForUser
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Gets all the unredacted configs for a user
Request
{
"userId": 0,
"userName": ""
}
Key | Value |
---|---|
userId | integer. The ID of the user whose configuration key-value pairs you want to return. |
userName | string. The user name of the user whose configuration key-value pairs you want to return. |
Response
[
{
"Key": "Config1",
"Value": "Config1Val"
}
]
The Response returns an array of a variable number of elements, depending on the needs of the Exchange.
Key | Value |
---|---|
Key | string. The name of the key part of the key-value pair. |
Value | string. The value part of the key-value pair. The value must be a string. |
GetUnredactedUserConfigByKey
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Gets an unredacted config for a user config
Request
{
"userId": 0,
"userName": ""
}
Key | Value |
---|---|
userId | integer. The ID of the user whose configuration key-value pairs you want to return. |
userName | string. The user name of the user whose configuration key-value pairs you want to return. |
Response
[
{
"Key": "Config1",
"Value": "Config1Val"
}
]
The Response returns an array of a variable number of elements, depending on the needs of the Exchange.
Key | Value |
---|---|
Key | string. The name of the key part of the key-value pair. |
Value | string. The value part of the key-value pair. The value must be a string. |
GetUserDevices
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Gets the Registered Device trail for the current session. Given the userId, action, date range or all 3
Request
{
"UserId": 1
}
Key | Value |
---|---|
UserId | integer. The user ID of the user requesting user devices. |
Response
[
{
"HashCode": 1,
"Location": "location",
"DeviceName": "name",
"IpAddress": "127.0.0.0",
"UserId": 1,
"IsTrusted": true,
"ExpirationTime": 637020116076891148
}
]
The Response is an array of devices associated with the user.
Key | Value |
---|---|
HashCode | integer. Hash code associated with the device. |
Location | string. Location of device |
DeviceName | string. Name of device |
IpAddress | string. IP address associated with the device |
UserID | integer. User ID associated with the device |
IsTrusted | boolean. If true, device is linked with location/ip address. |
ExpirationTime | long integer. Epoch time when device registration expires |
GetUserReportTickets
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Returns an array of user report tickets for a specific user ID. A user report ticket identifies a report requested or subscribed to by a user. Reports can run once or periodically.
Request
{
"UserId": 1
}
Key | Value |
---|---|
UserId | integer. The ID of the user whose user report tickets will be returned. |
Response
The response returns an array of tickets, each ticket representing a report.
[
{
{
"RequestingUser": 0,
"OMSId": 0,
"reportFlavor": {
"Options": [
"TradeActivity",
"Transaction",
"Treasury"
]
},
"createTime": "0001-01-01T05:00:00Z",
"initialRunTime": "0001-01-01T05:00:00Z",
"intervalStartTime": "0001-01-01T05:00:00Z",
"intervalEndTime": "0001-01-01T05:00:00Z",
"RequestStatus": {
"Options": [
"Submitted",
"Validating",
"Scheduled",
"InProgress",
"Completed",
"Aborting",
"Aborted",
"UserCancelled",
"SysRetired",
"UserCancelledPending"
]
},
"ReportFrequency": {
"Options": [
"onDemand",
"Hourly",
"Daily",
"Weekly",
"Monthly",
"Annually"
]
}
"intervalDuration": 0,
"RequestId": "I2nCtvyY8UuHsoSyrLe2QA==",
"lastInstanceId": "AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds": [
1
],
},
}
]
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the report. |
OMSId | integer. The ID of the Order Management System on which the report was run. |
reportFlavor | string. The type of report. One of Tradeactivity Transaction Treasury |
createTime | string. The time and date at which the request for the report was made, Microsoft Ticks format. |
initialRunTime | string. The time and date at which the report was first run, Microsoft Ticks format. |
intervalStartTime | string. The start of the period that the report will cover, Microsoft Ticks format. |
intervalEndTime | string. The end of the period that the report will cover, Microsoft Ticks format. |
RequestStatus | string. The status of the request for the report. Each status returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelPending |
ReportFrequency | string. When the report
runs: OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report looks backward relative to the run date, in POSIX format. The system calculates intervalDuration between intervalStartTime and intervalEndTime and reports it in POSIX format. For example, say that you specify a 90-day start-to-end-date window for a report. The intervalDuration value returns a value equivalent to 90 days and represents the backward-looking period of the report. Say that you have set up a weekly report to look back 90 days. When the report runs again in a week's time, it again looks back 90 days -- but now those 90 days are offset by a week from the first report. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. This will be null for a Generate~Report call, because generated reports are all on-demand. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
GetUserReportWriterResultRecords
Category: User
Permissions: Operator, Trading
Call
Type: Synchronous
The call returns an array of user report writer results. The results are the details of when reports have been run and the status of each report run.
Users with Trading permission can request user report writer result records only for their own user IDs; users with Operator permission can request any user's report writer result records.
Request
{
"userId":0,
"depth":50,
"startIndex":0
}
Key | Value |
---|---|
userId | integer. The ID of the user whose report writer result records will be returned. |
depth | integer. The count of records to be returned, beginning at startIndex and working backwards into the past. For example, for a startIndex of 100 and a depth of 50 GetUserReportWriterResultRecords will return records numbered between 100 and 149, inclusive. The value of depth defaults to 50. |
startIndex | integer. The record number at which the call starts returning records; from there, record return moves into the past. The most recent record is record 0. The value of startIndex defaults to 50. |
Response
[
{
"RequestingUser":1,
"urtTicketId":"mGzjUfylGEmqgJIxu651aQ==",
"descriptorId":"47TlpPQyTkKR4LKl9Hy1yA==",
"resultStatus":"SuccessComplete",
"reportExecutionStartTime":"2018-08-17T17:57:56Z",
"reportExecutionCompleteTime":"2018-08-17T17:57:57Z",
"reportOutputFilePathname":"",
"reportDescriptiveHeader":"TradeActivity|onDemand|2018-08-10T04:00:00.000Z|2018-08-10T05:00:00.000Z|2018-08-17T17:57:51.852Z|2018-08-17T17:57:56.840Z|0.19634 seconds"
},
]
Key | Value |
---|---|
RequestingUser | Integer. ID of the user requesting the report writer result records. |
urtTicketId | string. An alphanumeric string containing the unique report ID of the report. |
descriptorId | string. A GUID (globally-unique identifier) that describes the report separately from the report ticket. |
resultStatus | string. The status of each run of the reports. One of: 0 NotStarted 1 NotComplete 2 ErrorComplete 3 SuccessComplete 4 Cancelled |
reportExecutionStartTime | string. The time that the report writer began execution, in Microsoft Ticks format. |
reportExecutionCompleteTime | string. The time that the report writer completed the report, in Microsoft Ticks format. |
reportOutputFilePathname | string. The pathname (location) of the report output file. |
reportDescriptiveHeader | string. A string describing the report. |
GetValidate2FARequiredEndpoints
Category: System
Permissions: Public
Call Type:
Synchronous
Gets endpoints that require 2FA Validation
Request
{}
There is no payload.
Response
["createwithdrawticket", "createdepositticket", "adduserpermission"]
The response is a list of endpoints, all lowercase.
LogOut
Category: Authentication
Permissions: Public
Call Type: Synchronous
LogOut ends the current websocket session.
Request
There is no payload for a LogOut request.
{ }
Response
{
"result":true,
"errormsg":null,
"errorcode":0,
"detail":null
}
Key | Value |
---|---|
result | Boolean. A successful logout returns true; an unsuccessful logout (an error condition) returns false. |
errormsg | string. A successful logout returns null; the errormsg parameter for an
unsuccessful logout returns one of the following messages: Not Authorized (errorcode 20) Invalid Response (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Not Authorized and Resource Not Found are unlikely errors for a LogOut. |
errorcode | integer. A successful logout returns 0. An unsuccessful logout returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
RegisterNewDevice
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
RegisterNewDevice is the device register confirmation call. It will take the hashcode and validation code sent in an email to verify a device as trusted*RegisterNewDevice.*
Request
{
"HashCode": "",
"PendingEmailCode": ""
}
Key | Value |
---|---|
HashCode | string. Hash code associated with the device. |
PendingEmailCode | string. Email code to register device |
Response
{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": ""
}
The Response is a standard response object.
Key | Value |
---|---|
result | Boolean. If the hash code and validation code have successfully verified a device, result is true; otherwise it is false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call returns one of the following messages: Not Authorized (errorcode 20) Invalid Response (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. |
SubscribeAccountEvents
Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Subscribes the user to notifications about the status of account-level events: orders, trades, position updates, deposits, and withdrawals for a specific account on the Order Management System (OMS). The subscription reports all events associated with a given account; there is no filter at the call level to subscribe to some events and not others.
Account event information is supplied in comma-separated-value (CSV) format. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"AccountId": 1,
"OMSId": 1
}
Key | Value |
---|---|
AccountId | integer. The ID of the account for the logged-in user. |
OMSId | integer. The ID of the Order Management System to which the account belongs. |
Response
{
"Subscribe": true
}
Key | Value |
---|---|
Subscribe | Boolean. A successful subscription returns true; otherwise, false. |
The Events
When you call SubscribeAccountEvents, you subscribe to all of the following list of events. The Order Management System may supply them at irregular intervals and in any order; software must listen for these events. The system sends each of these events in a message frame.
AccountPositionEvent
AccountPositionEvent The balance in your account changes.
{
"OMSId":4, //The OMSId. [Integer]
"AccountId":4, // account id number. [Integer]
"ProductSymbol":"BTC", //The Product Symbol for this balance message. [String]
"ProductId":1, //The Product Id for this balance message. [Integer]
"Amount":10499.1, //The total balance in the account for the specified product. [Dec]
"Hold": 2.1, //The total amount of the balance that is on hold. Your available //balance for trading and withdraw is (Amount - Hold). [Decimal]
"PendingDeposits":0, //Total Deposits Pending for the specified product. [Decimal]
"PendingWithdraws":0, //Total Withdrawals Pending for the specified product. [Decimal]
"TotalDayDeposits":0, //The total 24-hour deposits for the specified product. UTC. [Dec]
"TotalDayWithdraws":0, //The total 24-hour withdraws for the specified product. UTC [Dec]
"NotionalHoldAmount": 0.0,
"NotionalRate": 0.0,
"TotalDayDepositNotional": 0.0,
"TotalMonthDepositNotional": 0.0,
"TotalDayWithdrawNotional": 0.0,
"TotalMonthWithdrawNotional": 0.0
}
Trigger: The balance in your account changes.
CancelAllOrdersRejectEvent
CancelAllOrdersRejectEvent All orders for your account are rejected.
{
"OMSId": 1, // OMS ID [Integer]
"AccountId": 4, // ID of the account being tracked [Integer]
"InstrumentId": 0, // ID of the instrument in the order [Long Integer]
"Status": "Rejected", // Accepted/Rejected [String]
"RejectReason": "Instrument not found." // Reason for rejection [String]
}
Trigger: All orders for your account are rejected.
CancelOrderRejectEvent
CancelOrderRejectEvent Your order is canceled.
{
"OMSId": 1, //OMS Id [Integer] Always 1
"AccountId": 4, //Your Account ID. [Integer]
"OrderId": 1, //The Order ID from your Cancel request. [64 Bit Integer]
"OrderRevision": 0, //The Revision of the Order, if any was found. [64 Bit Integer]
"OrderType": "Unknown", // See "Order Types" in Introduction
"InstrumentId": 1, // The InstrumentId from your Cancel request. [Integer]
"Status": "Rejected", //Always "Rejected" [String]
"RejectReason": "Order Not Found" //A message describing the reason for the rejection. // [String]
}
Trigger: Your order is canceled.
CancelReplaceOrderRejectEvent
CancelReplaceOrderRejectEvent Your order is rejected even if a cancel-replace order was placed.
{
"OMSId": 1, // ID of the OMS [integer]
"AccountId": 4, // ID of the account [integer]
"OrderId": 9342, // The ID of the rejected order [integer]
"ClientOrderId": 1234, // The client-supplied order ID [long integer]
"LimitPrice": 99.1, // The limit price of the order.
"OrderIdOCO": 0, // The ID of the other ordre to cancel if this is executed.
"OrderType": "Limit", // See "Order Types" in Introduction.
"PegPriceType": "Bid", // Where to peg the stop/trailing order.
"OrderIdToReplace": 9333, // The ID of the order being cancelled and replaced.
"InstrumentId": 1, // ID of the instrument traded in the order.
"ReferencePrice": 99.1, // used internally.
"Quantity": 1.0, // Quantity of the replacement order
"Side": "Buy", // Side of the order: Buy, Sell, Short (future)
"StopPrice":0, // The price at which to execute the new order.
"TimeInForce":"GTC", // Period when new order can be executed.
"Status":"Rejected", // Status of the order – always "rejected"
"RejectReason":"Order Not Found" // Reason the order was rejected.
}
Trigger: Your order is rejected even if a cancel-replace order was placed.
MarketStateUpdate
MarketStateUpdate The market state is altered administratively.
{
"ExchangeId":1, // Exchange Id [Integer]
"VenueAdapterId":1, // Internal [Integer]
"VenueInstrumentId":1, // Instrument Id on a specific venue [Integer]
"Action":"ReOpen",
// Market State Action [String] Values are
// "Pause", "Resume", "Halt", "ReOpen"
"PreviousStatus":"Stopped",
// Previous Market Status for Instrument [String] Values are
// "Running", "Paused", "Stopped", "Starting"
"NewStatus":"Running",
// Market Status for Instrument [String] Values are
// "Running", "Paused", "Stopped", "Starting"
"ExchangeDateTime":"2016-04-21T21:48:22Z"
// ISO 8601 format UTC time zone
}
Trigger: The market state is altered administratively.
NewOrderRejectEvent
NewOrderRejectEvent An order associated with your account is rejected.
{
"OMSId": 1, //OMS Id [Integer] Always 1
"AccountId": 4, //Your Account Id [Integer]
"ClientOrderId": 1234, //Your Client Order Id [64 Bit Integer]
"Status": "Rejected", //Always "Rejected"
"RejectReason": "No More Market" //A message describing the reason for the reject.
}
Trigger: An order associated with your account is rejected.
OrderStateEvent
OrderStateEvent The status changes for an order associated with your account.
{
"Side":"Sell",
// The side of your order. [String] Values are "Sell",
// "Buy", "Short"
"OrderId": 9849, //The Server-Assigned Order Id. [64-bit Integer]
"Price": 97, //The Price of your order. [Decimal]
"Quantity":1,
// The Quantity (Remaining if partially or fully executed) of
// your order. [Decimal]
"Instrument":1, // The InstrumentId your order is for. [Integer]
"Account":4, // Your AccountId [Integer]
"OrderType":"Limit",
// The type of order. [String] Values are "Market", "Limit",
// "StopMarket", "StopLimit", "TrailingStopMarket", and
// "TrailingStopLimit"
"ClientOrderId":0, // Your client order id. [64-bit Integer]
"OrderState":"Working", // The current state of the order. [String]
// Values are "Working", "Rejected", "FullyExecuted", "Canceled",
// "Expired"
"ReceiveTime":0, // Timestamp in POSIX format
"OrigQuantity":1, // The original quantity of your order. [Decimal]
"QuantityExecuted":0, // The total executed quantity. [Decimal]
"AvgPrice":0, // Avergage executed price. [Decimal]
"ChangeReason":"NewInputAccepted"
// The reason for the order state change. [String] Values are
// "NewInputAccepted", "NewInputRejected", "OtherRejected",
// "Expired", "Trade", SystemCanceled BelowMinimum",
// "SystemCanceled NoMoreMarket", "UserModified"
}
Trigger: The status changes for an order associated with your account.
OrderTradeEvent
OrderTradeEvent An order associated with your account results in a trade.
{
"OMSId":1, //OMS Id [Integer]
"TradeId":213, //Trade Id [64-bit Integer]
"OrderId":9848, //Order Id [64-bit Integer]
"AccountId":4, //Your Account Id [Integer]
"ClientOrderId":0, //Your client order id. [64-bit Integer]
"InstrumentId":1, //Instrument Id [Integer]
"Side":"Buy", //[String] Values are "Buy", "Sell", "Short" (future)
"Quantity":0.01, //Quantity [Decimal]
"Price":95, //Price [Decimal]
"Value":0.95, //Value [Decimal]
"TradeTime":635978008210426109, // TimeStamp in Microsoft ticks format
"ContraAcctId":3,
// The Counterparty of the trade. The counterparty is always
// the clearing account. [Integer]
"OrderTradeRevision":1, //Usually 1
"Direction":"NoChange", //"Uptick", "Downtick", "NoChange"
"CounterPartyClientUserId": 0, // [Integer] Indicates counterparty source of trade (OMS, Remarketer, FIX)
"NotionalProductId": 0, // [Integer] Notional product
"NotionalRate": 0.0, // Notional rate from base currency at time of trade [Decimal]
"NotionalValue": 0.0 // Notional value in base currency of venue at time of trade [Decimal]
}
Trigger: An order associated with your account results in a trade.
PendingDepositUpdate
PendingDepositUpdate Deposit pending on your account.
{
"AccountId": 4, // Your account id number. [Integer]
"AssetId": 1, // The ProductId of the pending deposit. [Integer]
"TotalPendingDepositValue": 0.01 //The value of the pending deposit. [Decimal]
"Requires2FA": false,
"TwoFAType": "",
"TwoFAToken": "",
}
Trigger: Deposit pending on your account.
SubscribeLevel1
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Retrieves the latest Level 1 Ticker information and then subscribes the user to ongoing Level 1 market data event updates for one specific instrument.
The SubscribeLevel1 call responds with the Level 1 response shown below. The OMS then periodically sends in the same format as this response Leve1UpdateEvent information when best-bid/best-offer issue, until you send the UnsubscribeLevel1 call.
Only a user with Operator permission can issue Level1MarketData permission using the call **AddUserMarketDataPermission.*
Request
You can identify the instrument with its ID or with its market symbol (string).
{
"OMSId": 1,
"InstrumentId": 0
}
Or
{
"OMSId": 1,
"Symbol": "BTCUSD"
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument trades. |
InstrumentId | integer. The ID of the instrument you’re tracking. Conditionally optional. |
Symbol | string. The symbol of the instrument you’re tracking. Conditionally optional. |
Response
The SubscribeLevel1 response and Level1UpdateEvent both provide the same information.
{
"OMSId": 1,
"InstrumentId": 1,
"BestBid": 6423.57,
"BestOffer": 6436.53,
"LastTradedPx": 6423.57,
"LastTradedQty": 0.96183964,
"LastTradeTime": 1534862990343,
"SessionOpen": 6249.64,
"SessionHigh": 11111,
"SessionLow": 4433,
"SessionClose": 6249.64,
"Volume": 0.96183964,
"CurrentDayVolume": 3516.31668185,
"CurrentDayNumTrades": 8529,
"CurrentDayPxChange": 173.93,
"CurrentNotional": 0.0,
"Rolling24HrNotional": 0.0,
"Rolling24HrVolume": 4319.63870783,
"Rolling24NumTrades": 10585,
"Rolling24HrPxChange": -0.4165607307408487,
"TimeStamp": "1534862990358"
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument trades. |
InstrumentId | integer. The ID of the instrument being tracked. |
BestBid | real. The current best bid for the instrument. |
BestOffer | real. The current best offer for the instrument. |
LastTradedPx | real. The last-traded price for the instrument. |
LastTradedQty | real. The last-traded quantity for the instrument. |
LastTradeTime | long integer. The time of the last trade, in POSIX format. |
SessionOpen | real. Opening price. In markets with openings and closings, this is the opening price for the current session; in 24-hour markets, it is the price as of UTC Midnight. |
SessionHigh | real. Highest price during the trading day, either during a session with opening and closing prices or UTC midnight to UTC midnight. |
SessionLow | real. Lowest price during the trading day, either during a session with opening and closing prices or UTC midnight to UTC midnight. |
SessionClose | real. The closing price. In markets with openings and closings, this is the closing price for the current session; in 24-hour markets, it is the price as of UTC Midnight. |
Volume | real. The last-traded quantity for the instrument, same value as LastTradedQty |
CurrentDayVolume | real. The unit volume of the instrument traded either during a session with openings and closings or in 24-hour markets, the period from UTC Midnight to UTC Midnight. |
CurrentDayNumTrades | integer. The number of trades during the current day, either during a session with openings and closings or in 24-hour markets, the period from UTC Midnight to UTC Midnight. |
CurrentDayPxChange | real. Current day price change, either during a trading session or UTC Midnight to UTC midnight. |
CurrentNotional | decimal. Current day quote volume - resets at UTC Midnight. |
Rolling24HrNotional | decimal. Rolling 24 hours quote volume. |
Rolling24HrVolume | real. Unit volume of the instrument during the past 24 hours, regardless of time zone. Recalculates continuously. |
Rolling24HrNumTrades | integer. Number of trades during the past 24 hours, regardless of time zone. Recalculates continuously. |
Rolling24HrPxChange | real. Price change during the past 24 hours, regardless of time zone. Recalculates continuously. |
TimeStamp | long integer. The time this information was provided, in POSIX format. |
SubscribeLevel2
Category: User
Permissions: Operator, Trading, Level2MarketData
Call Type: Synchronous
Retrieves the latest Level 2 Ticker information and then subscribes the user to Level 2 market data event updates for one specific instrument. Level 2 allows the user to specify the level of market depth information on either side of the bid and ask. The SubscribeLevel2 call responds with the Level 2 response shown below. The OMS then periodically sends Level2UpdateEvent information in the same format as this response until you send the UnsubscribeLevel2 call.
Only a user with Operator permission can issue a Level2MarketData permission using the call AddUserMarketDataPermission.
Request
{
"OMSId": 1,
"InstrumentId": 0
"Depth": 10
}
or
{
"OMSId": 1,
"Symbol": "BTCUSD"
"Depth": 10
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument trades. |
InstrumentId | integer. The ID of the instrument you’re tracking. Conditionally optional. |
Symbol | string. The symbol of the instrument you’re tracking. Conditionally optional. |
Depth | integer. The depth of the order book. The example request returns 10 price levels on each side of the market. |
Response
[
[
0, // MDUpdateId
1, // Number of Accounts
123,// ActionDateTime in Posix format X 1000
0, // ActionType 0 (New), 1 (Update), 2(Delete)
0.0, // LastTradePrice
0, // Number of Orders
0.0, //Price
0, // ProductPairCode
0.0, // Quantity
0, // Side
],
]
The response is an array of elements for one specific instrument, the number of elements corresponding to the market depth specified in the Request. It is sent as an uncommented, comma-delimited list of numbers. The example is commented.
Key | Value |
---|---|
MDUpdateID | integer. Market Data Update ID. This sequential ID identifies the order in which the update was created. |
Number of Accounts | integer. Number of accounts |
ActionDateTime | long integer.. ActionDateTime identifies the time and date that the snapshot was taken or the event occurred, in POSIX format X 1000 (milliseconds since 1 January 1970). |
ActionType | integer. L2 information provides price data. This value shows whether this data
is: 0 new 1 update 2 deletion |
LastTradePrice | real. The price at which the instrument was last traded. |
Number of Orders | integer. Number of orders |
Price | real. Bid or Ask price for the Quantity (see Quantity below). |
ProductPairCode | integer. ProductPairCode is the same value and used for the same purpose as InstrumentID. The two are completely equivalent. InstrumentId 47 = ProductPairCode 47. |
Quantity | real. Quantity available at a given Bid or Ask price (see Price above). |
Side | integer. One of: 0 Buy 1 Sell 2 Short (reserved for future use) 3 Unknown (error condition) |
SubscribeTicker
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Subscribes a user to a Ticker Market Data Feed for a specific instrument and interval. SubscribeTicker sends a response object as described below, and then periodically returns a TickerDataUpdateEvent that matches the content of the response object.
Only a user with Operator permission can issue a Level1MarketData permission using the call AddUserMarketDataPermission.
Request
{
"OMSId": 1,
"InstrumentId": 1,
"Interval": 60,
"IncludeLastCount": 100
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System |
InstrumentId | long integer. The ID of the instrument whose information you want to track. |
Interval | integer. Specifies in seconds how frequently to obtain ticker updates. Default is 60 — one minute. |
IncludeLastCount | integer. The limit of records returned in the ticker history. The default is 100. |
Response
[
[1501603632000, \\DateTime - UTC - Milliseconds since 1/1/1970
2700.33, \\High
2701.2687.01, \\Low
2687.01, \\Open
2687.01, \\Close
24.86100992, \\Volume
0, \\Inside Bid Price
2870.95, \\Inside Ask Price
1], \\InstrumentId
[1501604532000,2792.73,2667.95,2687.01,2700.81,242.61340767,0,2871,0]
]
The response returns an array of objects , each object an unlabeled, comma-delimited array of numbers. The Open price and Close price are those at the beginning of the tick — the Interval time subscribed to in the request. For 24-hour exchanges, the trading day runs from UTC midnight to UTC midnight; highs, lows, opens, closes, and volumes consider that midnight-to-midnight period to be the trading day. The data order is:
- date/time UTC in milliseconds since 1/1/1970
- high
- low
- open
- close
- volume
- inside bid price
- inside ask price
- instrument ID
A typical response might look like this:
[[1510719222970.21,6943.51,6890.27,6898.41,6891.16,0,6890.98,6891.98,1,1510718681956.34]],
SubscribeTrades
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Subscribes an authenticated user to the Trades Market Data Feed for a specific instrument. Each trade has two sides: Buy and Sell.
SubscribeTrades returns the response documented here for your immediate information, then periodically sends the OrderTradeEvent documented in SubscribeAccountEvents.
Only a user with Operator permission can issue the permission Level1MarketData using the call AddUserMarketDataPermission.
Request
{
"OMSId": 1,
"InstrumentId": 1,
"IncludeLastCount": 100
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument is traded. |
InstrumentId | long integer. The ID of the instrument whose trades will be reported. |
IncludeLastCount | integer. Specifies the number of previous trades to retrieve in the immediate snapshot. Default is 100. |
Response
Numerical keys reduce package transmission load. See Response table for an explanation.
[
{
0: 1713390,
1: 1,
2: 0.25643269,
3: 6419.77,
4: 203100209,
5: 203101083,
6: 1534863265752,
7: 2,
8: 1,
9: 0,
10: 0
}
]
The response returns an array of trades. The keys of each trade are numbers to reduce payload traffic.
Key | Value |
---|---|
0 (TradeId) | integer. The ID of this trade. |
1 (ProductPairCode) | integer. ProductPairCode is the same number and used for the same purpose as InstrumentID. The two are completely equivalent in value. InstrumentId 47 = ProductPairCode 47. |
2 (Quantity) | real. The quantity of the instrument traded. |
3 (Price) | real. The price at which the instrument traded. |
4 (Order1) | integer. The ID of the first order that resulted in the trade, either Buy or Sell. |
5 (Order2) | integer. The ID of the second order that resulted in the trade, either Buy or Sell. |
6 (Tradetime) | long integer. UTC trade time in Total Milliseconds. POSIX format. |
7 (Direction) | integer. Effect of the trade on the instrument’s market price. One of: 0 NoChange 1 UpTick 2 DownTick |
8 (TakerSide) | integer. Which side of the trade took liquidity? One of: 0 Buy 1 Sell The maker side of the trade provides liquidity by placing the order on the book (this can be a buy or a sell order). The other, taker, side takes the liquidity. It, too, can be buy-side or sell-side. |
9 (BlockTrade) | Boolean. Was this a privately negotiated trade that was reported to the OMS? A private trade returns 1 (true); otherwise 0 (false). Default is false. Block trades are not supported in exchange version 3.1 |
10 (order1ClientId or order2ClientId) | integer. The client-supplied order ID for the trade. Internal logic determines whether the program reports the order1ClientId or the order2ClientId. |
SubscribeBlockTrades
Category: User
Permissions: Trading, Manual Trader
Call Type: Synchronous
Retrieves the Open Trade Reports, only Block Trades, for the given instrumentid. ReceiveTime in POSIX format X 1000 (milliseconds since 1 January 1970). Identifying information of counterparty is removed.
SubscribeBlockTrades returns the response documented here for your immediate information, then subscribes the session to subsequent BlockTradeDataUpdateEvent messages.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument is traded. |
InstrumentId | long integer. The ID of the instrument whose trades will be reported. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The response returns an array of trades. The keys of each trade are numbers to reduce payload traffic.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format. |
ReceiveTimeTicks | long integer. Time stamp of the order in POSIX format. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
UnsubscribeBlockTrades
Category: User
Permissions: Trading, Manual Trader
Call Type: Synchronous
Unsubscribes session from BlockTradeDataUpdateEvents.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user has subscribed to a block trades market data feed. |
InstrumentId | long integer. The ID of the instrument being tracked by the block trades market data feed. |
Response
{
"result": true,
"errormsg": null,
"errorcode":0,
"detail": null
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
UnsubscribeLevel1
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Unsubscribes the user from a Level 1 Market Data Feed subscription.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user has subscribed to a Level 1 market data feed. |
InstrumentId | long integer. The ID of the instrument being tracked by the Level 1 market data feed. |
Response
{
"result": true,
"errormsg": null,
"errorcode":0,
"detail": null
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
UnsubscribeLevel2
Category: User
Permissions: Operator, Trading, Level2MarketData
Call Type: Synchronous
Unsubscribes the user from a Level 2 Market Data Feed subscription.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user has subscribed to a Level 2 market data feed. |
InstrumentId | long integer. The ID of the instrument being tracked by the Level 2 market data feed. |
Response
{
"result": true,
"errormsg": null,
"errorcode":0,
"detail": null
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
UnsubscribeTicker
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Unsubscribes the user from a Ticker Market Data Fee.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user has subscribed to a ticker market data feed. |
InstrumentId | long integer. The ID of the instrument being tracked by the ticker market data feed. |
Response
{
"result": true,
"errormsg": null,
"errorcode":0,
"detail": null
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
UnsubscribeTrades
Category: User
Permissions: Operator, Trading, Level1MarketData
Call Type: Synchronous
Unsubscribes the user from a Trades Market Data Feed
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the user has subscribed to a trades market data feed. |
InstrumentId | long integer. The ID of the instrument being tracked by the trades market data feed. |
Response
{
"result": true,
"errormsg": null,
"errorcode":0,
"detail": null
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
UpdateUserAffiliateTag
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Updates the user affiliate tag with new or revised information. An affiliate tag allows a user to encourage others to join the exchange and provides a way to track those new members back to the initiating user.
Request
{
"omsId":0,
"userId":0,
"affiliateId":0,
"affiliateTag":""
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the user and his affiliate tag operates. |
userId | integer. The ID of the user whose affiliate tag you are modifying. |
affiliateId | integer. The ID of the affiliate. |
affiliateTag | string. The alphanumeric tag used to identify new affiliating members. |
Response
{
"result":true,
"errormsg":"",
"errorcode":0,
"detail":""
}
Key | Value |
---|---|
result | Boolean. A successful receipt of the unsubscribe request returns true; and unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the unsubscribe request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the unsubscribe request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
Validate2FA
Category: System
Permissions:
Call Type:
Synchronous
Validate 2FA to get access to the 2FA required endpoints
Request
{
"TFaType":"TFATYPE",
"Code": "YourCode"
}
Key | Value |
---|---|
TFaType | string. Type of authentication |
Code | string. Authentication code |
Response
{
"TFaAuthenticated": true
}
Key | Value |
---|---|
TFaAuthenticated | Boolean. If authenticatation is successful, returns true |
Accounts
These calls correspond roughly to the Accounts function of the Exchange Admin and Admin Guide.
GenerateTradeActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Creates an immediate report on historical trade activity on a specific Order Management System for a list of accounts during a specified time interval.
A user with Trading permission can only generate reports for accounts with which he is associated; a user with Operator permission can generate reports for accounts associated with others.
The Trade Activity Report is delivered as a comma-separated (CSV) file. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"accountIdList": [
0 // one or more Account IDs
],
"omsId": 0,
"startTime": "0001-01-01T05:00:00Z",
"endTime": "0001-01-01T05:00:00Z",
}
Key | Value |
---|---|
accountIdList | integer array. A comma-delimited array of one ore more account IDs, each valid on a single Order Management System for the authenticated user. The account user may not be the only user of the account. |
omsId | integer. The ID of the Order Management System on which the array of account IDs exist. |
startTime | string. startTime identifies the time and date for the historic beginning of the trade activity report. |
endTime | string. endTime identifies the time and date for the historic end of the trade activity report. |
Response
{
"RequestingUser":1,
"OMSId":1,
"reportFlavor": {
"Options": [
"TradeActivity",
"Transaction",
"Treasury"
]
},
"createTime":"2018-08-17T15:34:20Z",
"initialRunTime":"2018-08-17T15:34:20Z",
"intervalStartTime":"2019-04-10T04:00:00Z",
"intervalEndTime":"2020-04-10T04:00:00Z",
"RequestStatus": {
"Options": [
"Submitted",
"Validating",
"Scheduled",
"InProgress",
"Completed",
"Aborting",
"Aborted",
"UserCancelled",
"SysRetired",
"UserCancelledPending"
]
},
"ReportFrequency": {
"Options": [
"onDemand",
"Hourly",
"Daily",
"Weekly",
"Monthly",
"Annually"
]
},
"intervalDuration":316224000000000,
"RequestId":"Moy/IpfPA0SLUHNYt54q4w==",
"lastInstanceId":"AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds":[1]
}
Similar objects are returned for Generate~Report and Schedule~Report calls. As a result, for an on-demand Generate~Report call, some string-value pairs such as initialRunTime may return the current time and ReportFrequency will always return OnDemand because the report is only generated once and on demand.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the trade activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the trade activity report will be run. |
reportFlavor | string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the trade activity report was made. |
initialRunTime | string. The time and date at which the trade activity report was first run. |
intervalStartTime | string. The start of the period that the report will cover. |
intervalEndTime | string. The end of the period that the report will cover. |
RequestStatus | string. The status of the request for the trade activity report. A Generate~Report
request will always return Submitted. Each request returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelled Pending |
ReportFrequency | string. When the report runs. For a Generate~Report call, this is
always OnDemand. One of: OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date. The
Generate~Report call requires a start time and an end time. The GreenX software
calculates the difference between them as intervalDuration. For example, say that you specify a 90-day start-date-to-end-date window for a report. The intervalDuration value returns a value equivalent to 90 days. If you have called Generate~Report, that value simply confirms the length of time that the on-demand report covers. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. Will be null for a Generate~Report call, because generated reports are on-demand. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
GenerateTransactionActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Generates an immediate report on account transaction activity for a list of accounts under a single Order Management System during a specified time. A user with Trading permission can only generate reports for accounts with which he is associated; a user with Operator permission can generate reports for accounts associated with others. There can be multiple users associated with an account.
The Transaction Activity Report is delivered as a comma-separated (CSV) file. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"accountIdList": [
0
],
"omsId": 0,
"startTime": "0001-01-01T05:00:00Z",
"endTime": "0001-01-01T05:00:00Z",
}
Key | Value |
---|---|
accountIdList | integer array. A comma-delimited array of one ore more account IDs, each valid on the same Order Management System on which the user is authenticated. |
omsId | integer. The ID of the Order Management System on which the array of account IDs exist. |
startTime | string. startTime identifies the time and date for the beginning of the transaction activity report, in ISO 8601 format. |
endTime | string. endTime identifies the time and date for the end of the transaction activity report, in ISO 8601 format. |
Response
{
"RequestingUser":1,
"OMSId":1,
"reportFlavor": {
"Options": [
"TradeActivity",
"Transaction",
"Treasury"
]
},
"createTime":"2018-08-17T15:46:07Z",
"initialRunTime":"2018-08-17T15:46:07Z",
"intervalStartTime":"2019-04-10T04:00:00Z",
"intervalEndTime":"2020-04-10T04:00:00Z",
"RequestStatus": {
"Options": [
"Submitted",
"Validating",
"Scheduled",
"InProgress",
"Completed",
"Aborting",
"Aborted",
"UserCancelled",
"SysRetired",
"UserCancelledPending"
]
},
"ReportFrequency": {
"Options": [
"onDemand",
"Hourly",
"Daily",
"Weekly",
"Monthly",
"Annually"
]
},
"intervalDuration":316224000000000,
"RequestId":"+QgyhnEFqEazyZ46Q902MA==",
"lastInstanceId":"AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds":[1]
}
Similar objects are returned for Generate~Report and Schedule~Report calls. As a result, for an on-demand Generate~Report call, some string-value pairs such as initialRunTime may return the current time and ReportFrequency will always return OnDemand because the report is only generated once and on demand.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the transaction activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the transaction activity report will be run. |
reportFlavor | string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the trade activity report was made. |
initialRunTime | string. The time and date at which the trade activity report was first run. Returns the current time for a Generate~Report call. |
intervalStartTime | string. The start of the period that the report will cover. |
intervalEndTime | string. The end of the period that the report will cover. |
RequestStatus | string. The status of the request for the trade activity report. A
Generate~Report request will always return Submitted. Each request returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelled Pending |
ReportFrequency | string. When the report runs. For a Generate~Report call, this is
always OnDemand. OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date. The
Generate~Report call requires a start time and an end time. The GreenX software
calculates the difference between them as intervalDuration. For example, say that you specify a 90-day start-date-to-end-date window for a report. The intervalDuration value returns a value equivalent to 90 days. If you have called Generate~Report, that value simply confirms the length of time that the on-demand report covers. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. Will be null for a Generate~Report call, because generated reports are on-demand. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
GenerateTreasuryActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Generates an immediate report on all company treasury activities related to the trading venue — those withdrawals, transfers, and funds movements that are unrelated to specific trades — over a specified period.
A user with Trading permission can only generate reports for accounts with which he is associated; a user with Operator permission can generate reports for accounts associated with others. There can be multiple users associated with an account.
The Trade Activity Report is delivered as a comma-separated (CSV) file. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"accountIdList": [
0
],
"omsId": 0,
"startTime": "0001-01-01T05:00:00Z",
"endTime": "0001-01-01T05:00:00Z",
}
Key | Value |
---|---|
accountIdList | integer array. A comma-delimited array of one ore more account IDs, each valid on a single Order Management System. For a user with Trading permission, the user must be associated with the accounts. The account user might not be the only user of the account. |
omsId | integer. The ID of the Order Management System on which the array of account IDs exists. |
startTime | string. startTime identifies the time and date for the historic beginning of the trade activity report. |
endTime | string. endTime identifies the time and date for the historic end of the trade activity report |
Response
{
"RequestingUser":1,
"OMSId":1,
"reportFlavor": {
"Options": [
"TradeActivity",
"Transaction",
"Treasury"
]
},
"createTime":"2018-08-17T15:38:59Z",
"initialRunTime":"2018-08-17T15:38:59Z",
"intervalStartTime":"2019-04-10T04:00:00Z",
"intervalEndTime":"2020-04-10T04:00:00Z",
"RequestStatus": {
"Options": [
"Submitted",
"Validating",
"Scheduled",
"InProgress",
"Completed",
"Aborting",
"Aborted",
"UserCancelled",
"SysRetired",
"UserCancelledPending"
]
},
"ReportFrequency": {
"Options": [
"onDemand",
"Hourly",
"Daily",
"Weekly",
"Monthly",
"Annually"
]
},
"intervalDuration":316224000000000,
"RequestId":"adduAIKE6Ee0eGxFM+ydsg==",
"lastInstanceId":"AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds":[1]
}
Similar objects are returned for Generate~Report and Schedule~Report calls. As a result, for an on-demand Generate~Report call, some string-value pairs such as initialRunTime may return the current time and ReportFrequency will always return OnDemand because the report is only generated once and on demand.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the treasury activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the transaction activity report will be run. Note capitalization change from the request. |
reportFlavor | string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the trade activity report was made. |
initialRunTime | string. The time and date at which the trade activity report was first run. Returns the current time for a Generate~Report call. |
intervalStartTime | string. The start of the period that the report will cover. |
intervalEndTime | string. The end of the period that the report will cover. |
RequestStatus | string. The status of the request for the trade activity report. A Generate~Report
request will always return Submitted. Each request returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelled Pending |
ReportFrequency | string. When the report runs. For a Generate~Report call, this is
always OnDemand. OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date. The
Generate~Report call requires a start time and an end time. The GreenX software calculates the difference
between them as intervalDuration. For example, say that you specify a 90-day start-date-to-end-date window for a report. The intervalDuration value returns a value equivalent to 90 days. If you have called Generate~Report, that value simply confirms the length of time that the on-demand report covers. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. Will be null for a Generate~Report call, because generated reports are on-demand. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
GetAccountInfo
Category: User
Permissions: Operator, Trading,
AccountReadOnly
Call Type: Synchronous
Returns detailed information about one specific account and existing on a specific Order Management System.
Request
{
"omsId":0,
"accountId":0
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the account exists. |
accountId | integer. The ID of the account on the Order Management System for which information will be returned. |
Response
{
"omsid":0,
"accountId":0,
"accountName":"",
"accountHandle":"",
"firmId":"",
"firmName":"",
"accountType": {
"Options": [
"Asset", // 0
"Liability", // 1
"ProfitLoss" // 2
]
},
"feeGroupID":0,
"parentID":0,
"riskType": {
"Options": [
"Unknown", // 0
"Normal", // 1
"NoRiskCheck", // 2
"NoTrading" // 3
]
},
"verificationLevel":0,
"feeProductType": {
"Options": [
"BaseProduct", // 0
"SingleProduct" // 1
]
},
"feeProduct":0,
"refererId":0,
"loyaltyProductId":0,
"loyaltyEnabled":false,
"marginEnabled":false,
"liabilityAccountId":0,
"lendingAccountId":0,
"profitLossAccountId":0
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the account resides. |
accountId | integer. The ID of the account for which information was requested. |
accountName | string. A non-unique name for the account assigned by the user. |
accountHandle | string. accountHandle is a unique user-assigned name that is checked at create time by the Order Management System to assure its uniqueness. |
firmId | string. An arbitrary identifier assigned by a trading venue operator to a trading firm as part of the initial company, user, and account set up process. For example, Smith Financial Partners might have the ID SMFP. |
firmName | string. A longer, non-unique version of the trading firm’s name; for example, Smith Financial Partners. |
accountType | integer. The type of the account for which information is being returned. One
of: Asset (0) Liability (1) ProfitLoss (2) Responses for this string/value pair for Market Participants are almost exclusively Asset. |
feeGroupID | integer. Defines account attributes relating to how fees are calculated and assessed. Set by trading venue operator. |
parentID | integer. Reserved for future development. |
riskType | integer. One of: Unkown (0) (an error condition) Normal (1) NoRiskCheck (2) NoTrading (3) Returns Normal for virtually all market participants. Other types indicate account configurations assignable by the trading venue operator. |
verificationLevel | integer. Verification level limits the amounts of deposits and withdrawals. It is defined by and set by the trading venue operator for each account and is part of the KYC ("Know Your Customer") process, which may be automated or manual. An account can earn a higher Verification Level over time. |
feeProductType | string. One of: BaseProduct SingleProduct Trading fees may be charged by a trading venue operator. (Withdrawal fees may also be charged, but that is a separate setting dependent on product and instrument.) This value shows whether fees for this account’s trades are charged in the product being traded (BaseProduct, for example BitCoin) or whether the account has a preferred fee-paying product (SingleProduct, for example USD) to use in all cases and regardless of product being traded. |
feeProduct | integer. The ID of the preferred fee product, if any. Defaults to 0. |
refererId | integer. Captures the ID of the entity who referred this account to the trading venue, usually captured for marketing purposes. |
loyaltyProductId | integer. The Loyalty Token is a parallel fee structure that replaces the general set of transaction fees. An exchange can promote activity on a specific cryptocurrency token by offering discounted transaction fees denominated in that token to customers who choose that fee structure. This key is the ID of the loyalty product chosen by the Exchange. There can be one Loyalty Token per OMS. |
loyaltyEnabled | Boolean. If true, this account has accepted the Loyalty Token fee structure. If false, the account has not accepted it. The default setting is false. |
marginEnabled | Boolean. If true, this account can trade on margin. If false, the account cannot trade on margin. The default is false. |
liabilityAccountId | integer. The ID of the liability account associated with the account named in the accountId key. A liability account is necessary for this account to trade on margin. Used internally. |
lendingAccountId | integer. The ID of the lending account associated with the account named in the accountId key. A lending account is necessary for this account to trade on margin. Used internally. |
profitLossAccountId | integer. The ID of the profit-and-loss account associated with the account named in the accountId key. A profit-and-loss account is necessary for this account to trade on margin. Used internally. |
GetAccountPositions
Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Retrieves a list of positions (balances) for a specific user account running under a specific Order Management System. The trading day runs from UTC Midnight to UTC Midnight.
Users with Trading or AccountReadOnly permission must specify an account ID with which they're associated on the Order Management System. Users with Operator permission can specify other accounts.
Request
{
"AccountId":4,
"OMSId": 1
}
Key | Value |
---|---|
AccountId | integer. The ID of the authenticated user’s account on the Order Management System for which positions will be returned. |
OMSId | integer. The ID of the Order Management System to which the user belongs. A user will belong only to one OMS. |
Response
[
{
"omsId":1,
"accountId":4,
"productSymbol":"BTC",
"productId":1,
"amount":0.0,
"hold":0.0,
"pendingDeposits":0.0,
"pendingWithdraws":0.0,
"totalDayDeposits":0.0,
"totalMonthDeposits":0.0,
"totalYearDeposits":0.0,
"totalYearDepositNotional":0.0,
"totalDayWithdraws":0.0,
"totalMonthWithdraws":0.0,
"totalYearWithdraws":0.0,
"totalYearWithdrawNotional":0.0,
"notionalHoldAmount": 0.0,
"notionalRate": 0.0,
"totalDayDepositNotional": 0.0,
"totalMonthDepositNotional": 0.0,
"totalDayWithdrawNotional": 0.0,
"totalMonthWithdrawNotional": 0.0
},
{
"omsId":1,
"accountId":4,
"productSymbol":"USD",
"productId":2,
"amount":0.0,
"hold":0.0,
"pendingDeposits":0.0,
"pendingWithdraws":0.0,
"totalDayDeposits":0.0,
"totalMonthDeposits":0.0,
"totalYearDeposits":0.0,
"totalYearDepositNotional":0.0,
"totalDayWithdraws":0.0,
"totalMonthWithdraws":0.0,
"totalYearWithdraws":0.0,
"totalYearWithdrawNotional":0.0,
"notionalHoldAmount": 0.0,
"notionalRate": 0.0,
"totalDayDepositNotional": 0.0,
"totalMonthDepositNotional": 0.0,
"totalDayWithdrawNotional": 0.0,
"totalMonthWithdrawNotional": 0.0
}
]
The response returns an array of one or more positions for the account. This example response has returned two positions.
Key | Value |
---|---|
omsId | Integer. The ID of the Order Management System (OMS) to which the user belongs. A user will only ever belong to one Order Management System. Note the change in capitalization from the request. |
accountId | integer. Returns the ID of the user’s account to which the positions belong. Note the change in capitalization from the request. |
productSymbol | string. The symbol of the product on this account’s side of the trade. For
example: BTC — BitCoin USD — US Dollar NZD — New Zealand Dollar Many other values are possible depending on the nature of the trading venue. |
productId | integer. The ID of the product being traded. The system assigns product IDs as they are entered into the system. Use GetProduct to return information about the product by its ID. |
amount | real. Unit amount of the product; for example, 10 or 138.5. |
hold | real. Amount of currency held and not available for trade. A pending trade of 100 units at $1 each will reduce the amount in the account available for trading by $100 and produce a $100 hold. Amounts on hold cannot be withdrawn while a trade is pending. |
pendingDeposits | real. Deposits accepted but not yet cleared for trade. |
pendingWithdraws | real. Withdrawals acknowledged but not yet cleared from the account. Amounts in PendingWithdraws are not available for trade. |
totalDayDeposits | real. Total deposits on today’s date. The trading day runs between UTC Midnight and UTC Midnight. |
totalMonthDeposits | real. Total deposits for the month as of today's date. |
totalYearDeposits | real. Total deposits for the year as of today's date. |
totalYearDepositNotional | real. Yearly amount for deposit of crypto-currencies. It is usually calculated
as value = (Amount * Bid/Ask Price). 10 BitCoin each at $6700 equals $67000. |
totalDayWithdraws | real. Total withdrawals on today’s date. The trading day runs between UTC Midnight and UTC Midnight. |
totalMonthWithdraws | real. Total withdrawals during this month to date. The trading day runs between UTC Midnight and UTC Midnight — likewise a month begins at UTC Midnight on the first day of the month. |
totalYearWithdraws | real. Total withdrawals during the current year to date. |
totalYearWithdrawNotional | real. Yearly withdrawals for crypto-currencies. It is usually calculated as value = (Amount * Bid/Ask Price). 10 BitCoin each at $6700 equals $67000. |
notionalHoldAmount | decimal. Cross Product Amount on Hold from open orders |
notionalRate | decimal. Current notional rate from base currency |
totalDayDepositNotional | decimal. Total Calendar Day Deposit Notional |
totalMonthDepositNotional | decimal. Total Calendar Month Deposit Notional |
totalDayWithdrawNotional | decimal. Total Calendar Day Withdraw Notional |
totalMonthWithdrawNotional | decimal. Total Calendar Month Withdraw Notional |
GetAllAccountConfigs
Category: System
Permissions: Operator
Call Type: Synchronous
Retrieves a list of Key/Value pairs of a key across all Accounts
Request
{
"key": "Config1",
}
Key | Value |
---|---|
key | string. The key to retrieve from all accounts. |
Response
[
{
"AccountId": 0,
"Key": "Config1",
"Value": "Config1Val",
},
]
The Response is an array of positions for the account by product.
Key | Value |
---|---|
accountId | integer. The ID of the account that holds this config. |
key | string. The key of the account config. |
value | string. The value of the account config. |
GetTreasuryProductsForAccount
Category: User
Permissions: Operator, Trading, Withdraw,
Deposit
Call Type: Synchronous
Returns a list of product symbols (BTC, USD, etc.) upon which the account named by AccountId is allowed to execute treasury operations.
Users with Trading, Withdraw, and Deposit permission must be associated with the account named by AccountId. Users with Operator permission can request the list of treasury products for any account.
Request
{
"AccountId": 1,
"OMSId": 1
}
Key | Value |
---|---|
AccountId | integer. The ID of the account whose permitted treasury products will be returned. |
OMSId | integer. The ID of the Order Management System where the account operates. |
Response
An array of code symbol lists.
[ { "LTC", "BTC", "USD" }, ]
The response returns an array of code symbol lists.
ScheduleTradeActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Schedules a series of trade activity reports to run for a list of accounts on a single Order Management System, starting at a specific date/time, and covering a specific time duration. The reports will run periodically until canceled.
Users with Trading permission can schedule reports for accounts with which they are associated; users with Operator permissions can schedule reports for any accounts.
Trade Activity Reports are delivered in comma-separated-value (CSV) format. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"frequency": {
"Options": [
"OnDemand", // 0
"Hourly", // 1
"Daily", // 2
"Weekly", // 3
"Monthly", // 4
"Annual" // 5
]
},
"accountIdList":[1],
"omsId":1,
"beginTime":"2018-08-10T04:00:00.000Z",
"intervalDuration":10
}
Key | Value |
---|---|
frequency | integer. How often the report will run. One of: 0 OnDemand 1 Hourly 2 Daily 3 Weekly 4 Monthly 5 Annually |
accountIdList | integer array. Comma-separated integers; each element an account ID on the Order Management System whose trade activity will be reported on. All accounts must be from the same OMS. |
omsId | integer. The ID of the Order Management System on which the accounts named in the list reside. |
beginTime | string. The time at which the periodic reports begin; the day and time when you want reporting to start, in Microsoft Ticks format. |
intervalDuration | integer. The length of time prior to the run time that the report covers, in days. For example, 90 for 90 days. Whatever the report's frequency, it looks back 90 days. A monthly report, for example, would look back 90 days; an annual report would look back 90 days. |
Response
{
"RequestingUser":1,
"OMSId":1,
"reportFlavor": { // enumerated string
"Options": [
"TradeActivity",
"Transaction",
"Treasury"
]
},
"createTime":"2018-08-17T17:57:51Z",
"initialRunTime":"2018-08-10T04:00:00Z",
"intervalStartTime":"2018-08-10T04:00:00Z",
"intervalEndTime":"2018-08-10T05:00:00Z",
"RequestStatus": { // enumerated string
"Options": [
"Submitted",
"Validating",
"Scheduled",
"InProgress",
"Completed",
"Aborting",
"Aborted",
"UserCancelled",
"SysRetired",
"UserCancelledPending"
]
},
"ReportFrequency": { // enumerated string
"Options": [
"onDemand",
"Hourly",
"Daily",
"Weekly",
"Monthly",
"Annually"
]
},
"intervalDuration":36000000000,
"RequestId":"mGzjUfylGEmqgJIxu651aQ==",
"lastInstanceId":"AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds":[1]
}
The response returns an object confirming the settings in the call.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the trade activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the trade activity report will be run. |
reportFlavor | enumerated string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the trade activity report was made, in Microsoft Ticks format. |
initialRunTime | string. The time and date at which the trade activity report was first run, in Microsoft Ticks format. |
intervalStartTime | string. The start of the period that the report will cover, in Microsoft Ticks format. |
intervalEndTime | string. The end of the period that the report will cover, in Microsoft Ticks format. |
RequestStatus | enumerated string. The status of the request for the trade activity report. Each
request returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelledPending |
ReportFrequency | enumerated string. When the report
runs: OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date, in POSIX
format. The call specifies a start time and an intervalDuration. For example, say that you schedule a weekly report with a 90-day intervalDuration value. intervalDuration represents the backward-looking period of the report. When the report runs again in a week’s time, it again looks back 90 days — but now those 90 days are offset by a week from the first report. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
ScheduleTransactionActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Schedules a series of transaction activity reports for a list of accounts on a single Order Management System, starting at a specific date/time, and covering a specific time interval (90 days, for example). The reports run periodically until canceled.
Users with Trading permission can schedule transaction activity reports only for accounts with which they are associated; users with Operator permission can schedule transaction activity reports for any account.
Transaction Activity Reports are delivered in comma-separated-value (CSV) format. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"frequency": 0,
"accountIdList": [1],
"omsId": 1,
"beginTime": "2018-08-10T04:00:00.000Z",
"intervalDuration": 10
}
Key | Value |
---|---|
frequency | integer: How often the report will run. Expressed as an integer that maps to this
list: 0 OnDemand 1 Hourly 2 Daily 3 Weekly 4 Monthly 5 Annually |
accountIdList | integer array. Comma-separated integers; each element is an account ID whose transaction activity will be reported on. All accounts must be from the same OMS. |
omsId | integer. The Order Management System on which the accounts named in the list reside. |
beginTime | string. The time from which the transaction activities will be reported, in Microsoft Ticks format. |
intervalDuration | integer. The length of time prior to the run time that the report covers, in days. For example, 90 means 90 days. Whenever the report runs, it looks back 90 days. |
Response
{
"RequestingUser": 1,
"OMSId": 1,
"reportFlavor": "Transaction",
"createTime": "2018-08-17T18:02:23Z",
"initialRunTime": "2018-08-10T04:00:00Z",
"intervalStartTime": "2018-08-10T04:00:00Z",
"intervalEndTime": "2018-08-10T05:00:00Z",
"RequestStatus": "Submitted",
"ReportFrequency": "Hourly",
"intervalDuration": 36000000000,
"RequestId": "I2nCtvyY8UuHsoSyrLe2QA==",
"lastInstanceId": "AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds": [1]
}
Similar objects are returned for Generate~Report and Schedule~Report calls.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the transaction activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the transaction activity report will be run. |
reportFlavor | string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the transaction activity report was made, in Microsoft Ticks format. |
initialRunTime | string. The time and date at which the transaction activity report was first run, in Microsoft Ticks format. |
intervalStartTime | string. The start of the period that the report will cover, in Microsoft Ticks format. |
intervalEndTime | string. The end of the period that the report will cover, in Microsoft Ticks format. |
requestStatus | string. The status of the request for the transaction activity report. Each request
returns one
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelledPending |
ReportFrequency | string. When the report
runs: OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date, in POSIX format. For example, say that you schedule a weekly report with a 90-day intervalDuration value. intervalDuration represents the backward-looking period of the report. When the report runs again in a week’s time, it again looks back 90 days — but now those 90 days are offset by a week from the first report. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
ScheduleTreasuryActivityReport
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Schedules a series of treasury activity reports for a list of accounts on a single Order Management System, starting at a specific date/time, and covering a specific time interval. Treasury activities are non-trading transactions such as deposits and withdrawals. The reports runs periodically until canceled.
A user with Trading permission may schedule reports only for accounts with which he is associated; a user with Operator permission may schedule reports for any accounts.
The Treasury Activity Report itself is delivered as a comma-separated-value (CSV) file. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from GreenX.
Request
{
"frequency":0,
"accountIdList":[1],
"omsId":1,
"beginTime":"2018-08-10T04:00:00.000Z",
"intervalDuration":10
}
Key | Value |
---|---|
frequency | integer. How often the report will run. A number represents one of: 0 OnDemand 1 Hourly 2 Daily 3 Weekly 4 Monthly 5 Annually |
accountIdList | integer array. Comma-separated integers; each element is an account ID whose treasury activity will be reported on. All accounts must be from the same OMS. |
omsId | integer. The Order Management System on which the accounts named in the list reside. |
beginTime | string. The time from which the treasury activities will be reported, in Microsoft Ticks format. |
intervalDuration | integer. The length of time prior to the run time that the report covers. For example, 90 days. Whenever the report runs, it looks back 90 days. |
Response
{
"RequestingUser":1,
"OMSId":1,
"reportFlavor":"Treasury",
"createTime":"2018-08-17T18:02:03Z",
"initialRunTime":"2018-08-10T04:00:00Z",
"intervalStartTime":"2018-08-10T04:00:00Z",
"intervalEndTime":"2018-08-10T05:00:00Z",
"RequestStatus":"Submitted",
"ReportFrequency":"Hourly",
"intervalDuration":36000000000,
"RequestId":"xbsVgAuUcEyTFgf/gpWB2A==",
"lastInstanceId":"AAAAAAAAAAAAAAAAAAAAAA==",
"accountIds":[1]
}
Similar objects are returned for Generate~Report and Schedule~Report calls.
Key | Value |
---|---|
RequestingUser | integer. The User ID of the person requesting the treasury activity report. This confirms the ID of the authenticated user who made the request by returning it as part of the response. |
OMSId | integer. The ID of the Order Management System on which the treasury activity report will be run. |
reportFlavor | string. The type of report to be generated. One
of: TradeActivity Transaction Treasury The reportFlavor string confirms the nature of the call. |
createTime | string. The time and date on which the request for the treasury activity report was made, in Microsoft Ticks format. |
initialRunTime | string. The time and date at which the treasury activity report was first run, in Microsoft Ticks format. |
intervalStartTime | string. The start of the period that the report will cover, in Microsoft Ticks format. |
intervalEndTime | string. The end of the period that the report will cover, in Microsoft Ticks format. |
requestStatus | string. The status of the request for the treasury activity report. One
of: Submitted Validating Scheduled InProgress Completed Aborting Aborted UserCancelled SysRetired UserCancelledPending |
ReportFrequency | string. When the report runs. Note that frequency in the request is an
integer; but ReportFrequency in the response is a
string. OnDemand Hourly Daily Weekly Monthly Annually |
intervalDuration | long integer. The period that the report covers relative to the run date, in POSIX
format. For example, say that you schedule a weekly report with a 90-day intervalDuration value. intervalDuration represents the backward-looking period of the report. When the report runs again in a week’s time, it again looks back 90 days — but now those 90 days are offset by a week from the first report. |
RequestId | string. The ID of the original request. Request IDs are long strings unique within the Order Management System. |
lastInstanceId | string. For scheduled reports, the report ID of the most recent previously run report. |
accountIds | integer array. A comma-delimited array of account IDs whose trades are reported in the trade activity report. |
Trades
These calls correspond roughly to the Trades function of the Exchange Admin and Admin Guide.
GetAccountTrades
Category: User
Permissions: Operator, Trading,
AccountReadOnly
Call Type: Synchronous
Requests the details on up to 200 past trade executions for a single specific account and Order Management System, starting at index i, where i is an integer identifying a specific execution in reverse order; that is, the most recent execution has an index of 0, and increments by one as trade executions recede into the past.
Users with Trading or AccountReadOnly permission may access trade information only for accounts with which they are associated; users with Operator permission may access trade information for any account.
The operator of the trading venue determines how long to retain an accessible trading history before archiving.
Request
{
"OMSId": 0,
"AccountId":0,
"StartIndex":0,
"Count":0
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System to which the user belongs. A user will belong to only one OMS. |
AccountId | integer. The ID of the account. |
StartIndex | integer. The starting index into the history of trades, beginning from 0 (the most recent trade). |
Count | integer. The number of trades to return. The system can return up to 200 trades. |
Response
[
{
"OMSId": 0,
"ExecutionId": 0,
"TradeId": 0,
"OrderId": 0,
"AccountId": 0,
"AccountName": "",
"SubAccountId": 0,
"ClientOrderId": 0,
"InstrumentId": 0,
"Side": "Buy",
"OrderType": "Limit"
"Quantity": 0.0,
"RemainingQuantity": 0.0,
"Price": 0.0,
"Value": 0.0,
"CounterParty": "",
"OrderTradeRevision": 0,
"Direction": 0,
"IsBlockTrade": false,
"Fee": 0.0,
"FeeProductId": 0,
"OrderOriginator": 0,
"UserName": "",
"TradeTimeMS": 0,
"MakerTaker": "Maker",
"AdapterTradeId": 0,
"InsideBid": 0,
"InsideBidSize": 0,
"InsideAsk": 0,
"InsideAskSize": 0,
"IsQuote": 0,
"TradeTime": 0
},
]
The response is an array of objects, each element of which represents the account’s side of a trade (either buy or sell).
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System to which the account belongs. |
ExecutionId | integer. The ID of this account's side of the trade. Every trade has two sides. |
TradeId | integer. The ID of the overall trade. |
OrderId | long integer. The ID of the order causing the trade (buy or sell). |
AccountId | integer. The ID of the account that made the trade (buy or sell). |
AccountName | string. The Name of the account that made the trade (buy or sell). |
SubAccountId | integer. Not currently used; reserved for future use. Defaults to 0. |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The clientOrderId defaults to 0 if not supplied. |
InstrumentId | integer. The ID of the instrument being traded. An instrument comprises two products, for example Dollars and BitCoin. |
Side | string. One of the following potential sides of a trade: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderType | string. One of the following potential sides of a trade:
Market Limit BlockTrade StopMarket StopLimit TrailingStopLimit StopMarket TrailingStopMarket |
Quantity | real. The unit quantity of this side of the trade. |
RemainingQuantity | real. The number of units remaining to be traded by the order after this execution. This number is not revealed to the other party in the trade. This value is also known as "leave size" or "leave quantity." |
Price | real. The unit price at which the instrument traded. |
Value | real. The total value of the deal. The system calculates this as: unit price X quantity executed. |
CounterParty | string. The ID of the other party in a block trade. Usually, IDs are stated as integers; this value is an integer written as a string. |
OrderTradeRevision | integer. The revision number of this trade; usually 1. |
Direction | integer. The effect of the trade on the instrument's market price. One
of: 0 No change 1 Uptick 2 DownTick |
IsBlockTrade | Boolean. A value of true means that this trade was a block trade; a value of false that it was not a block trade. |
Fee | real. Any fee levied against the trade by the Exchange. |
FeeProductId | integer. The ID of the product in which the fee was levied. |
OrderOriginator | integer. The ID of the user who initiated the trade. |
UserName | integer. The UserName of the user who initiated the trade. |
TradeTimeMS | long integer. The date and time that the trade took place, in milliseconds and POSIX format. All dates and times are UTC. |
MakerTaker | string. One of the following potential liquidity provider of a trade:
Maker Taker |
AdapterTradeId | integer. The ID of the adapter of the overall trade. |
InsideBid | real. The best (highest) price level of the buy side of the book at the time of the trade. |
InsideBidSize | real. The quantity of the best (highest) price level of the buy side of the book at the time of the trade. |
InsideAsk | real. The best (lowest) price level of the sell side of the book at the time of the trade. |
InsideAskSize | real. The quantity of the best (lowest) price level of the sell side of the book at the time of the trade. |
TradeTime | long integer. The date and time that the trade took place, in C# Ticks. All dates and times are UTC. |
GetAccountTransactions
Category: User
Permissions: Trading, AccountReadOnly
Call Type: Synchronous
Returns a list of transactions for a specific account on an Order Management System. The owner of the trading venue determines how long to retain order history before archiving. The caller must be associated with the account named in AccountId.
Request
{
"OMSId": 1,
"AccountId": 1,
"Depth": 200
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System from which the account’s transactions will be returned. |
AccountId | integer. The ID of the account for which transactions will be returned. If not specified, the call returns transactions for the default account for the logged-in user. |
Depth | integer. The number of transactions that will be returned, starting with the most recent transaction. |
Response
[
{
"transactionId":0,
"omsId":0,
"accountId":0,
"cr":0.0,
"dr":0.0,
"counterparty":0,
"transactionType":0,
"referenceId":0,
"referenceType":0,
"productId":0,
"balance":0.0,
"timeStamp":0
},
]
The response returns an array of transaction objects. Note capitalization changes from the request.
Key | Value |
---|---|
transactionId | Integer. The ID of the transaction. |
omsId | Integer. The ID of the Order Management System under which the requested transactions took place. |
accountId | Integer. The single account under which the transactions took place. |
cr | real. Credit entry for the account on the order book. Funds entering an account. |
dr | real. Debit entry for the account on the order book. Funds leaving an account. |
counterparty | long integer. The corresponding party in a trade. |
transactionType | integer. A number representing the type of transaction: 1 Fee 2 Trade 3 Other 4 Reverse 5 Hold 6 Rebate 7 MarginAcquisition 8 MarginRelinquish |
referenceId | long integer. The ID of the action or event that triggered this transaction. |
referenceType | integer. A number representing the type of action or event that triggered this
transaction. One of: 1 Trade 2 Deposit 3 Withdraw 4 Transfer 5 OrderHold 6 WithdrawHold 7 DepositHold 8 MarginHold 9 ManualHold 10 ManualEntry 11 MarginAcquisition 12 MarginRelinquish 13 MarginQuoteHold |
productId | integer. The ID of the product on this account’s side of the transaction. For example, in a dollars-for-BitCoin transaction, one side will have the product Dollar and the other side will have the product BitCoin. Use GetProduct to return information about a product based on its ID. |
balance | real. The balance in the account after the transaction. |
timeStamp | long integer. Time at which the transaction took place, in POSIX format. |
GetOpenTradeReports
Category: User
Permissions: Operator, Trading,
AccountReadOnly
Call Type: Synchronous
Retrieves an array of open trade information for the account named in AccountId.
Users with Trading or AccountReadOnly permission must be associated with the named account; users with Operator permission can retrieve open trade reports on any account.
Request
{
"OMSId": 1,
"AccountId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the account operates. |
AccountId | integer. The ID of the account whose open trade information will be returned. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOpenTradeReports returns an array containing all four types of orders for the named account. The call returns an empty array if there are no open trades for the account.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format. |
ReceiveTimeTicks | long integer. Time stamp of the order in POSIX format. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetAllOpenTradeReports
Category: User
Permissions: Operator, Trading, AccountReadOnly, Manual Trader
Call Type: Synchronous
Retrieves the Open Trade Reports, only Block Trades, for the given InstrumentId. ReceiveTime in POSIX format X 1000 (milliseconds since 1 January 1970). Identifying information of counter party is removed
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument is defined. |
InstrumentId | integer. The ID of the instrument for which open trade information will be returned. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetAllOpenTradeReports returns an array containing block trades for the requested instrument. The call returns an empty array if there are no open trades for the instrument.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format. |
ReceiveTimeTicks | long integer. Time stamp of the order in POSIX format. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetTickerHistory
Category: User
Permissions: Public
Call Type: Synchronous
Requests a ticker history (high, low, open, close, volume, bid, ask, ID) of a specific instrument from a given date to the present. You will need to format the returned data per your requirements.
Because permission is Public, any user can retrieve the ticker history for any instrument on the OMS.
Request
{
"InstrumentId": 1,
"Interval": 60,
"FromDate": "2018-07-18",
"ToDate": "2018-07-19",
"OMSId":1
}
Key | Value |
---|---|
InstrumentId | integer. The ID of a specific instrument. The current Order Management System is assumed. |
Interval | integer. The time between ticks, in seconds. For example, a value of 60 returns ticker array elements between FromDate to ToDate in 60-second increments. |
FromDate | string. Oldest date from which the ticker history will start, in Micrisoft Ticks format. The report moves toward ToDate from this point. |
ToDate | string. Most recent date, at which the ticker history will end, in Microsoft Ticks format. |
OMSId | integer. The ID of the Order Management System where the ticker history comes from. |
Response
The response is an array of arrays of comma-separated, but unlabeled, numbers. This sample shows comments applied to identify the data being returned (comments are not part of the response; the second array shows how the data actually is reported):
[
[
1501603632000, \\DateTime - UTC - Milliseconds since 1/1/1970 - POSIX format
2700.33, \\High
2687.01, \\Low
2687.01, \\Open
2687.01, \\Close
24.86100992, \\Volume
0, \\Inside Bid Price
2870.95, \\Inside Ask Price
1 \\InstrumentId
],
[1501604532000,2792.73,2667.95,2687.01,2700.81,242.61340767,0,2871,0],
]
The response returns an array of arrays dating from the FromDate value of the request to the ToDate. The data are returned oldest-date first. The data returned in the arrays are not labeled.
GetTradesHistory
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Retrieves a list of trades for a specified account, order ID, user, instrument, or starting and ending time stamp. The returned list begins at start index i, where i is an integer identifying a specific trade in reverse order; that is, the most recent trade has an index of 0. “Depth” is the count of trades to report backwards from StartIndex.
Users with Trading permission can retrieve trade history for accounts with which they are associated; users with Operator permission can retrieve trade history for any account.
Request
All values in the request other than omsId are optional.
{
"omsId": 0,
"accountId": 0,
"instrumentId": 0,
"tradeId": 0,
"orderId": 0,
"userId": 0,
"startTimestamp": 0,
"endTimestamp": 0,
"depth": 100,
"startIndex": 0,
"executionId": 0
}
Key | Value |
---|---|
omsId | Integer. The ID of the Order Management System on which the trades took place. If no other values are specified, GetTradesHistory returns the trades associated with the default account for the logged-in user on this Order Management System. Required key and value. |
accountId | Integer. The account ID that made the trades. If no account ID is supplied, the system assumes the default account for the logged-in user making the call. |
instrumentId | long integer. The ID of the instrument whose trade history is reported. If no instrument ID is included, the system returns trades for all instruments associated with the account ID and OMS. |
tradeId | integer. The ID of a specific trade. If you specify TradeId, GetTradesHistory can return all states for a single trade. |
orderId | integer. The ID of the order resulting in the trade. If specified, the call returns all trades associated with the order. |
userId | integer. The ID of the logged-in user. If not specified, the call returns trades associated with the users belonging to the default account for the logged-in user of this OMS. |
startTimeStamp | long integer. The historical date and time at which to begin the trade report, in POSIX format. If not specified, reverts to the start date of this account on the trading venue. |
endTimeStamp | long integer. Date at which to end the trade report, in POSIX format. |
depth | integer. In this case, the count of trades to return, counting from the StartIndex. If Depth is not specified, returns all trades between BeginTimeStamp and EndTimeStamp, beginning at StartIndex. |
startIndex | integer. The starting index into the history of trades, from 0 (the most recent trade) and moving backwards in time. If not specified, defaults to 0. |
executionId | integer. The ID of the individual buy or sell execution. If not specified, returns all. |
Response
[
{
"OMSId": 0,
"ExecutionId": 0,
"TradeId": 0,
"OrderId": 0,
"AccountId": 0,
"AccountName": "",
"SubAccountId": 0,
"ClientOrderId": 0,
"InstrumentId": 0,
"Side": "Buy",
"OrderType": "Limit"
"Quantity": 0.0,
"RemainingQuantity": 0.0,
"Price": 0.0,
"Value": 0.0,
"CounterParty": "",
"OrderTradeRevision": 0,
"Direction": 0,
"IsBlockTrade": false,
"Fee": 0.0,
"FeeProductId": 0,
"OrderOriginator": 0,
"UserName": "",
"TradeTimeMS": 0,
"MakerTaker": "Maker",
"AdapterTradeId": 0,
"InsideBid": 0,
"InsideBidSize": 0,
"InsideAsk": 0,
"InsideAskSize": 0,
"IsQuote": 0,
"TradeTime": 0
},
]
The response is an array of objects, each element of which represents the account’s side of a trade (either buy or sell).
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System to which the account belongs. |
ExecutionId | integer. The ID of this account's side of the trade. Every trade has two sides. |
TradeId | integer. The ID of the overall trade. |
OrderId | long integer. The ID of the order causing the trade (buy or sell). |
AccountId | integer. The ID of the account that made the trade (buy or sell). |
AccountName | string. The Name of the account that made the trade (buy or sell). |
SubAccountId | integer. Not currently used; reserved for future use. Defaults to 0. |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The clientOrderId defaults to 0 if not supplied. |
InstrumentId | integer. The ID of the instrument being traded. An instrument comprises two products, for example Dollars and BitCoin. |
Side | string. One of the following potential sides of a trade: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderType | string. One of the following potential sides of a trade:
Market Limit BlockTrade StopMarket StopLimit TrailingStopLimit StopMarket TrailingStopMarket |
Quantity | real. The unit quantity of this side of the trade. |
RemainingQuantity | real. The number of units remaining to be traded by the order after this execution. This number is not revealed to the other party in the trade. This value is also known as "leave size" or "leave quantity." |
Price | real. The unit price at which the instrument traded. |
Value | real. The total value of the deal. The system calculates this as: unit price X quantity executed. |
CounterParty | string. The ID of the other party in a block trade. Usually, IDs are stated as integers; this value is an integer written as a string. |
OrderTradeRevision | integer. The revision number of this trade; usually 1. |
Direction | integer. The effect of the trade on the instrument's market price. One
of: 0 No change 1 Uptick 2 DownTick |
IsBlockTrade | Boolean. A value of true means that this trade was a block trade; a value of false that it was not a block trade. |
Fee | real. Any fee levied against the trade by the Exchange. |
FeeProductId | integer. The ID of the product in which the fee was levied. |
OrderOriginator | integer. The ID of the user who initiated the trade. |
UserName | integer. The UserName of the user who initiated the trade. |
TradeTimeMS | long integer. The date and time that the trade took place, in milliseconds and POSIX format. All dates and times are UTC. |
MakerTaker | string. One of the following potential liquidity provider of a trade:
Maker Taker |
AdapterTradeId | integer. The ID of the adapter of the overall trade. |
InsideBid | real. The best (highest) price level of the buy side of the book at the time of the trade. |
InsideBidSize | real. The quantity of the best (highest) price level of the buy side of the book at the time of the trade. |
InsideAsk | real. The best (lowest) price level of the sell side of the book at the time of the trade. |
InsideAskSize | real. The quantity of the best (lowest) price level of the sell side of the book at the time of the trade. |
TradeTime | long integer. The date and time that the trade took place, in C# Ticks. All dates and times are UTC. |
OMS Orders
These calls correspond roughly to the OMS Orders function of the Exchange Admin and Admin Guide.
CancelAllOrders
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Cancels all open matching orders for the specified account on an Order Management System.
A user with Trading permission can cancel orders for himselfd; a user with Operator permissions can cancel orders for any account, instrument, or user.
Request
{
"AccountId": 0,
"OMSId": 0
}
Key | Value |
---|---|
AccountId | integer. The account for which all orders are being canceled. Conditionally optional. |
OMSId | integer. The Order Management System under which the account operates. Required. |
IntrumentId | integer. The instrument for which all orders are being canceled. Conditionally optional. |
Response
{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": ""
}
The Response is a standard response object.
Key | Value |
---|---|
result | Boolean. If the call has been successfully received by the Order Management System, result is true; otherwise it is false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call returns one of the following messages: Not Authorized (errorcode 20) Invalid Response (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. |
CancelOrder
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Cancels an open order that has been placed but has not yet been fully executed.
A user with Trading permission can cancel an order only for an account with which he is associated; a user with Operator permission can cancel an order for any account.
Request
{
"OMSId": 0,
"AccountId": 0, // conditionally optional
"ClOrderId": 0, // conditionally optional
"OrderId": 0, // conditionally optional
}
The OMS ID and the Order ID precisely identify the order you wish to cancel. The Order ID is unique across an OMS.
If you specify the OMS ID and the Account ID, you must also specify at least the Client Order ID. The OMS is unable to identify the order using only the OMS ID and the Client Order ID, as the Client Order ID may not be unique.
Key | Value |
---|---|
OMSId | integer. The Order Management System on which the order exists. Required. |
AccountId | integer. The ID of the account under which the order was placed. Conditionally optional. |
ClOrderId | long integer. A user-assigned ID for the order (like a purchase-order number assigned by a company). ClientOrderId defaults to 0. Conditionally optional. |
OrderId | long integer. The order to be canceled. Conditionally optional. |
Response
{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}
The response to CancelOrder verifies that the call was received, not that the order has been canceled successfully. Individual event updates to the user show order cancellation. To verify that an order has been canceled, call GetOrderStatus or GetOpenOrders.
Key | Value |
---|---|
result | Boolean. Returns true if the call to cancel the order has been successfully received, otherwise returns false. |
errormsg | string. A successful receipt of a call to cancel an order returns null; the
errormsg parameter for an unsuccessful call to cancel an order returns one of the following
messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successfully received call to cancel an order returns 0. An unsuccessfully received call to cancel an order returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. The contents of this parameter are usually null. |
CancelQuote
Category: User
Permissions: Operator, Marketmaker
Call Type: Synchronous
Cancels a quote that has not been executed yet.
Request
{
"omsId": 0,
"accountId": 0,
"instrumentId": 0,
"bidQuoteId": 0,
"askQuoteId": 0
}
You must identify the quote to be canceled by both BidQuoteId and AskQuoteId, which were supplied by the system when the quote was created. You can optionally identify the canceled quote using AccountId and InstrumentId. If the call does not include AccountId, the call assumes the default AccountId for the logged-in user; if the call does not include InstrumentId, the call operates on any instruments quoted by the account.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System where the quote was requested. Required. |
accountId | integer. The ID of the account that requested the quote. Conditionally optional. |
instrumentId | long integer. The ID of the instrument being quoted. Conditionally optional. |
bidQuoteId | integer. The ID of the bid quote. Required. |
askQuoteId | integer. The ID of the ask quote. Required. |
Response
{
"BidResult": "{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}",
"AskResult": "{
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}"
}
Returns two json objects, one for Bid and one for Ask.
The response to CancelQuote verifies that the call was received, not that the quote has been canceled successfully. Individual event updates to the user show quotes as they cancel. To verify that a quote has been canceled, use GetOpenQuotes.
Key | Value |
---|---|
BidResult | object. Returns a response object for Bid (see below). |
AskResult | object. Returns a response object for Ask. |
Objects for both BidResult and AskResult:
Key | Value |
---|---|
result | Boolean. A successful receipt of the cancelation returns true; and unsuccessful receipt of the cancelation (an error condition) returns false. |
errormsg | string. A successful receipt of the cancelation returns null; the
errormsg parameter for an unsuccessful receipt returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the cancelation returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
CancelReplaceOrder
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
CancelReplaceOrder is a single API call that both cancels an existing order and replaces it with a new order. Canceling one order and replacing it with another also cancels the order’s priority in the order book. You can use ModifyOrder to preserve priority in the book; but ModifyOrder only allows a reduction in order quantity.
Request
{
"omsId":0,
"orderIdToReplace":0,
"clientOrdId":0,
"orderType":0,
"side":0,
"accountId":0,
"instrumentId":0,
"useDisplayQuantity":false,
"displayQuantity":0.0,
"limitPrice":0.0,
"stopPrice":0.0,
"referencePrice":0.0,
"pegPriceType":0,
"timeInForce":0,
"orderIdOCO":0,
"quantity":0.0
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the order is being canceled and replaced by another order. |
orderIdToReplace | long integer. The ID of the order to replace with this order. |
clientOrderId | long integer. A user-assigned ID for the new, replacement order (like a purchase-order number assigned by a company). This ID is useful for recognizing future states related to this order. If unspecified, ClientOrderId defaults to 0. |
orderType | integer. An integer representing the type of the replacement order: 0 Unknown 1 Market 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
side | integer. An integer representing the side of the replacement order: 0 Buy 1 Sell 2 Short 3 Unknown (error condition) |
accountId | integer. The ID of the account under which the original order was placed and the new order will be placed. |
instrumentId | integer. The ID of the instrument being traded. |
useDisplayQuantity | Boolean. The display quantity is the quantity of a product shown to the market to buy or sell. A larger quantity may be wanted or available, but it may disadvantageous to display it when buying or selling. The display quantity is set when placing an order (using SendOrder or CancelReplaceOrder for instance). If you enter a Limit order with reserve, you must set useDisplayQuantity to true. |
displayQuantity | real. The quantity of a product that is available to buy or sell that is publicly displayed to the market. |
limitPrice | real. The price at which to execute the new order, if the new order is a limit order. |
stopPrice | real. The price at which to execute the new order, if the order is a stop order. |
referencePrice | real. The reference price of the instrument in the order. |
pegPriceType | integer. An integer that represents the type of price you set in a stop/trailing order
to "peg the stop." 0 Unknown (error condition) 1 Last 2 Bid 3 Ask 4 Midpoint |
timeInForce | integer. An integer that represents the period during which the new order is
executable. One of: 0 Unknown (error condition) 1 GTC (good 'til canceled, the default) 2 OPG (execute as close to opening price as possible) 3 IOC (immediate or canceled) 4 FOK (fill or kill — fill the order immediately, or cancel it immediately) 5 GTX (good 'til executed) 6 GTD (good 'til date) |
orderIdOCO | integer. One Cancels the Other — If the order being canceled in this call is order A, and the order replacing order A in this call is order B, then OrderIdOCO refers to an order C that is currently open. If order C executes, then order B is canceled. You can also set up order C to watch order B in this way, but that will require an update to order C. |
quantity | real. The amount of the order (either buy or sell). |
Response
{
"replacementOrderId": 1234,
"replacementClOrdId": 1561,
"origOrderId": 5678,
"origClOrdId": 91011,
}
The response returns the new replacement order ID and echoes back any replacement client ID you have supplied, along with the original order ID and the original client order ID.
Key | Value |
---|---|
replacementOrderId | integer. The order ID assigned to the replacement order by the server. |
replacementClOrdId | long integer. Echoes the contents of the clientOrderId value from the request. |
origOrderId | integer. Echoes orderIdToReplace, which is the original order you are replacing. |
origClOrdId | long integer. Provides the client order ID of the original order (not specified in the requesting call). |
CreateQuote
Category: User
Permissions: Operator, MarketMaker
Call Type: Synchronous
TK call and response may change
Creates a quote. A quote expresses a willingness to buy or sell at a given price. Both a quote and an order will execute. Only a user with Operator or MarketMaker permission can create a quote.
Request
{
"OMSId": 0,
"AccountId": 0,
"InstrumentId": 0,
"Bid": 0,
"BidQty": 0,
"Ask": 0,
"AskQty": 0,
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the quote is being created. Required. |
AccountId | integer. The ID of the account in which the quote is being created. If the call provides no AccountId, the system assumes the default account ID for the logged-in user on the OMS. |
InstrumentId | long integer. The ID of the instrument being quoted. Required. |
Bid | real. The bid price. Required. |
BidQty | real. The quantity of the bid. Required. |
Ask | real. The ask price. Required. |
AskQty | real. The quantity of the ask. Required. |
Response
{
"BidResult": {
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
},
"AskResult": {
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}
}
Key | Value |
---|---|
BidResult | object. Returns a response object for Bid (see below). |
AskResult | object. Returns a response object for Ask. |
Objects for both BidResult and AskResult:
Key | Value |
---|---|
result | Boolean. A successful receipt of the cancelation returns true; and unsuccessful receipt of the cancelation (an error condition) returns false. |
errormsg | string. A successful receipt of the cancelation returns null; the
errormsg parameter for an unsuccessful receipt returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the cancelation returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
GetOpenOrders
Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Returns an array of 0 or more orders that have not yet been filled (open orders) for a single account on a specific Order Management System. The call returns an empty array if an account has no open orders.
A user with Trading or AccountReadOnly permission must be associated with the account named by AccountId; a user with Operator permissoin can get open orders for any account.
Request
{
"OMSId": 1
"AccountId":4,
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System to which the user belongs. A user will belong only to one OMS. |
AccountId | integer. The ID of the authenticated user’s account. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOpenOrders returns an array containing both buy-side and a sell-side open orders for the named account. The call returns an empty array if there are no open orders for the account.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone). |
ReceiveTimeTicks | long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetOpenQuotes
Category: User
Permissions: Operator, MarketMaker
Call
Type: Synchronous
Returns the current bid and ask quotes for a given instrument ID and account ID.
Request
{
"omsId": 0,
"accountId": 0,
"instrumentId": 0,
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the instrument is traded whose quote may be open. |
AccountId | integer. The ID of the account whose open quotes will be returned. |
InstrumentId | integer. The ID of the instrument being quoted. |
Response
{
"bid": {
"omsId": 0,
"side": 0,
"orderId": 0,
"price": 0.0,
"quantity": 0.0,
"displayQuantity": 0.0,
"instrument": 0,
"account": 0,
"orderType": 0,
"clientOrderId": 0,
"orderState": 0
},
"ask": {
"omsId": 0,
"side": 0,
"orderId": 0,
"price": 0.0,
"quantity": 0.0,
"displayQuantity": 0.0,
"instrument": 0,
"account": 0,
"orderType": 0,
"clientOrderId": 0,
"orderState": 0
}
}
Returns a JSON object comprising a bid and an ask object. Both object comprise the same key-value pairs.
Key | Value |
---|---|
bid | Bid object (see below) |
ask | Ask object (see below) |
Bid and Ask objects differ only in the values for the keys.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System containing the open quotes. |
side | integer. One of: 0 Buy 1 Sell 2 Short 3 Unknown (error condition) |
orderId | long integer. The ID of this quote. Quotes and orders are both executable, but only Operators and MarketMakers may quote. |
price | real. Price of the Bid/Ask quote. |
quantity | real. Quantity of the Bid/Ask quote. |
displayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a DisplayQuantity value, an order must be a Limit order with a reserve. |
instrument | integer. The ID of the instrument being quoted. |
account | integer. The ID of the account quoting the instrument. |
orderType | integer. A number describing the type of order (or in this case, quote). One
of: 0 Unknown 1 Market 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
cientOrderId | long integer. A user-assigned ID for the quote (like a purchase-order number assigned by a company). ClientOrderId defaults to 0. |
orderState | integer. A number describing the current state of the order. One
of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 FullyExecuted An open quote will probably have an OrderState of Working. |
GetOrderFee
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Returns an estimate of the transaction fee for a specific order side, instrument, and order type. Fees are set and calculated by the operator of the trading venue.
The exchange generally deducts fees from the "receiving" side of the trade (although an operator can modify this). There are two products in every trade (and in every instrument); for example, the instrument BTCUSD comprises a BitCoin product and a US dollar product. Placing a buy order on the book causes fees to be deducted from Product 1, in this case, BitCoin; placing a sell order causes fees to be deducted from Product 2, in this case, US dollar.
A user with Trading permission can get fee estimates for any account that user is associated with and for any instrument or product that that account can trade; a user with Operator permission can get fee estimates for any account, instrument, or product.
If loyalty token is enabled and there is no market for the loyalty token, the system automatically uses 3rd party rates for the loyalty token market.
Request
{
"omsId":0,
"accountId":0,
"instrumentId":0,
"productId":0,
"amount":0.0,
"price":0.0,
"orderType":0,
"makerTaker":0,
"side":0
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the trade would take place. |
accountId | integer. The ID of the account requesting the fee estimate. |
instrumentId | integer. The proposed instrument against which a trading fee would be charged. |
productId | integer. The ID of the product (currency) in which the fee will be denominated. |
amount | real. The quantity of the proposed trade for which the Order Management System would charge a fee. |
price | real. The price at which the proposed trade would take place. Supply your price for a limit order; the exact price is difficult to know before execution. |
orderType | integer.. The type of the proposed order. One of: 0 Unknown 1 Market 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
makerTaker | integer. Depending on the venue, there may be different fees for a maker (one who
places the order on the books, either buy or sell) or taker (one who accepts the order, either buy or
sell). If the user places a large order that is only partially filled, he is a partial maker. 0 Unknown 1 Maker 2 Taker |
side | integer. One of: 0 Buy 1 Sell 2 Short 3 Unknown |
Response
{
"OrderFee": 0.01,
"ProductId": 1
}
Key | Value |
---|---|
OrderFee | real. The estimated fee for the trade as described. The minimum value is 0.01. |
ProductId | integer. The ID of the product (currency) in which the fee is denominated. |
GetOrderHistory
Category: User
Permissions: Trading, AccountReadOnly
Call Type: Synchronous
Returns a complete list of all orders, both open and executed, for a specific account on the specified Order Management System. The account named in the request must be associated with the calling user.
Request
{
"OMSId": 1,
"AccountId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the orders were placed. |
AccountId | integer. The ID of the account whose orders will be returned |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOrderHistory returns an array containing both buy-side and a sell-side orders for the named account. The call returns an empty array if there are no open orders for the account.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone). |
ReceiveTimeTicks | long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetOrderHistoryByOrderId
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Retrieves the full order history of a specific order by its order ID, including any changes.
A user with Trading permission can retrieve an order history only for the user's accounts and instruments; a user with Operator permission can retrieve all accounts and instruments.
Request
{
"omsId": 0,
"orderId": 0
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System where the account's order history resides. |
orderId | long integer. The ID of the of the order whose history you want to return. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOrderHistoryByOrderId returns an array containing all four types of orders for the named account. The call returns an empty array if there are no orders for the account.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone). |
ReceiveTimeTicks | long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetOrdersHistory
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Retrieves an array of multiple orders (hence, GetOrdersHistory with plural Orders) for the specified account, order ID, user, instrument, or time stamp. The history starts at index i, where i is an integer identifying a specific order (the most recent order has an index of 0). “Depth” is the count of trades to report backwards from startIndex. All values in the call other than OMSId are optional.
For example, if depth = 200 and startIndex = 0, the history returns 200 orders into the past starting with the most recent (0) order. If depth = 200 and startIndex = 100, the history returns 200 orders into the past starting at 100 orders in the past.
The owner of the trading venue determines how long to retain order history before archiving.
A user with Trading permission can retrieve a history only for accounts with which the user is associated; a user with Operator permission can retrieve a history for any user or account.
Request
{
"omsId": 0,
"accountId": 0,
"clientOrderId": 0,
"originalOrderId": 0,
"originalClientOrderId": 0,
"userId": 0,
"instrumentId": 0,
"startTimestamp": 0,
"endTimestamp": 0,
"depth": 100,
"startIndex": 0
}
All values other than OMSId are optional. If account ID is not supplied, the Exchange assumes the default account of the user issuing the call.
Key | Value |
---|---|
omsId | Integer. The ID of the Order Management System on which the orders took place. Required. If no other values are specified, the call returns the orders associated with the default account for the logged-in user on this Order Management System. |
accountId | Integer. The account ID that made the trades. A user with Trading permission must be associated with this account, although other users also can be associated with the account. If no account ID is supplied, the system assumes the default account for the logged-in user. |
clientOrderId | long integer. A user-assigned ID for the order (like a purchase-order number assigned by a company). clientOrderId defaults to 0. |
originalOrderId | long integer. The original ID of the order. If specified, the call returns changed orders associated with this order ID. |
originalClientOrderId | long integer. If the order has been changed, shows the original client order ID, a value that the client can create (much like a purchase order). |
userId | integer. The ID of the user whose account orders will be returned. If not specified, the call returns the orders of the logged-in user. |
instrumentId | long integer. The ID of the instrument named in the order. If not specified, the call returns orders for all instruments traded by this account. |
startTimestamp | long integer. Date and time at which to begin the orders history, in POSIX format. |
endTimestamp | long integer. Date and time at which to end the orders report, in POSIX format. |
depth | integer. In this case, the count of orders to return, counting from the StartIndex. If not specified, returns all orders between BeginTimeStamp and EndTimeStamp, beginning at StartIndex and working backwards. |
startIndex | integer. The starting index into the order history, from 0 (the most recent trade) and moving backwards in time. If not specified, defaults to 0. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOrdersHistory returns an array containing all four types of orders for the named account. The call returns an empty array if there are no orders for the account.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone). |
ReceiveTimeTicks | long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
GetOrderStatus
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Retrieves the status information for a single order.
A user with Trading permission can retrieve status information for accounts and orders with which the user is associated; a user with Operator permission can retreive status information for any account or order ID.
Request
{
"omsId": 0,
"accountId": 0,
"orderId": 0,
}
Key | Value |
---|---|
omsId | Integer. The ID of the Order Management System on which the order was placed. |
accountId | integer. The ID of the account under which the order was placed. |
orderId | integer. The ID of the order whose status will be returned. |
Response
[
{
"Side": "Buy",
"OrderId": 0,
"Price": 0.0,
"Quantity": 0.0,
"DisplayQuantity": 0.0,
"Instrument": 0,
"Account": 0,
"OrderType": "Unknown",
"ClientOrderId": 0,
"OrderState": "Unknown",
"ReceiveTime": 0,
"ReceiveTimeTicks": 0,
"OrigQuantity": 0.0,
"QuantityExecuted": 0.0,
"AvgPrice": 0.0,
"CounterPartyId": 0,
"ChangeReason": "Unknown",
"OrigOrderId": 0,
"OrigClOrdId": 0,
"EnteredBy": 0,
"IsQuote": false,
"InsideAsk": 0.0,
"InsideAskSize": 0.0,
"InsideBid": 0.0,
"InsideBidSize": 0.0,
"LastTradePrice": 0.0,
"RejectReason": "",
"IsLockedIn": false,
"CancelReason": "",
"OMSId": 0
},
]
The call GetOrderStatus returns an array containing both buy-side and a sell-side open orders for the named account. The call returns a Resource Not Found error with error code 104 if not found due to it not being processed by the system or an incorrect combination of account/order id.
Key | Value |
---|---|
Side | string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition) |
OrderId | long integer. The ID of the open order. The OrderID is unique in each Order Management System. |
Price | real. The price at which the buy or sell has been ordered. |
Quantity | real. The quantity of the product to be bought or sold. |
DisplayQuantity | real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve. |
Instrument | integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available. |
orderType | string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade |
ClientOrderId | integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied. |
OrderState | string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed. |
ReceiveTime | long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone). |
ReceiveTimeTicks | long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer. |
OrigQuantity | real. If the open order has been changed or partially filled, this value shows the original quantity of the order. |
QuantityExecuted | real. If the open order has been at least partially executed, this value shows the amount that has been executed. |
AvgPrice | real. The average executed price for the instrument in the order. |
CounterPartyId | integer. The ID of the other party in an off-market trade. |
ChangeReason | string. If the order has been changed, this string value holds the reason. One
of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified |
OrigOrderId | integer. If the order has been changed, this is the ID of the original order. |
OrigClOrdId | integer. If the order has been changed, this is the ID of the original client order ID. |
EnteredBy | integer. The user ID of the person who entered the order. |
IsQuote | Boolean. If this order is a quote, the value for IsQuote is true, else false. |
InsideAsk | real. If this order is a quote, this value is the Inside Ask price. |
InsideAskSize | real. If this order is a quote, this value is the quantity of the Inside Ask quote. |
InsideBid | real. If this order is a quote, this value is the Inside Bid price. |
InsideBidSize | real. If this order is a quote, this value is the quantity of the Inside Bid quote. |
LastTradePrice | real. The last price that this instrument traded at. |
RejectReason | string. If this open order has been rejected, this string holds the reason for the rejection. |
IsLockedIn | Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false. |
CancelReason | string. If this order has been canceled, this string holds the cancelation reason. |
OMSId | integer. The ID of the Order Management System on which the order took place. |
ModifyOrder
Category: User
Permissions: Operator, Trading
Call Type: Synchronous
Reduces an order’s quantity without losing priority in the order book. An order’s quantity can only be reduced. The other call that can modify an order — CancelReplaceOrder — resets order book priority, but you can use it to increase an order.
Request
{
"OMSId": 0,
"OrderId": 0,
"InstrumentId": 0,
"Quantity": 0
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the original order was placed. |
OrderId | long integer. The ID of the order to be modified. The ID was supplied by the server when the order was created. |
InstrumentId | integer. The ID of the instrument traded in the order. |
Quantity | real. The new quantity of the order. This value can only be reduced from a previous quantity. |
Response
{
"result": false,
"errormsg": "",
"errorcode": 0,
"detail": "",
}
The response acknowledges the successful receipt of your request to modify an order; it does not indicate that the order has been modified. To find if an order has been modified, check using GetOpenOrders and GetOrderHistory.
Key | Value |
---|---|
result | Boolean. The successful receipt of a modify order request returns true; otherwise, returns false. This is the acknowledgment of receipt of the request to modify, not a confirmation that the modification has taken place. |
errormsg | string. A successful receipt of a modify request returns null; the
errormsg parameter for an unsuccessful request returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. The receipt of a successful request to modify returns 0. An unsuccessful request returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
SendOrder
Category: User
Permissions: Operator, Trading
Call Type: Asynchronous
Creates an order.
Anyone submitting an order should also subscribe to the various market data and event feeds, or call GeOpenOrders or GetOrderStatus to monitor the status of the order. If the order is not in a state to be executed, GetOpenOrders will not return it.
A user with Trading permission can create an order only for those accounts and instruments with which the user is associated; a user with Operator permissions can create an order for any account and instrument.
Request
{
"InstrumentId": 1,
"OMSId": 1,
"AccountId": 1,
"TimeInForce": 1,
"ClientOrderId": 1,
"OrderIdOCO": 0,
"UseDisplayQuantity": false,
"Side": 0,
"quantity": 1,
"OrderType": 2,
"PegPriceType": 3,
"LimitPrice": 8800
}
If OrderType=1 (Market), Side=0 (Buy), and LimitPrice is supplied, the Market order will execute up to the value specified
Key | Value |
---|---|
InstrumentId | integer. The ID of the instrument being traded. |
OMSId | integer. The ID of the Order Management System where the instrument is being traded. |
AccountId | integer. The ID of the account placing the order. |
TimeInForce | integer. An integer that represents the period during which the new order is
executable. One of: 0 Unknown (error condition) 1 GTC (good 'til canceled, the default) 2 OPG (execute as close to opening price as possible) 3 IOC (immediate or canceled) 4 FOK (fill-or-kill — fill immediately or kill immediately) 5 GTX (good 'til executed) 6 GTD (good 'til date) |
ClientOrderId | long integer. A user-assigned ID for the order (like a purchase-order number assigned by a company). This ID is useful for recognizing future states related to this order. ClientOrderId defaults to 0. |
OrderIdOCO | long integer. The order ID if One Cancels the Other — If this order is order A, OrderIdOCO refers to the order ID of an order B (which is not the order being created by this call). If order B executes, then order A created by this call is canceled. You can also set up order B to watch order A in the same way, but that may require an update to order B to make it watch this one, which could have implications for priority in the order book. See CancelReplaceOrder and ModifyOrder. |
UseDisplayQuantity | Boolean. If you enter a Limit order with a reserve, you must set UseDisplayQuantity to true. |
Side | integer. A number representing on of the following potential sides of a trade. One
of: 0 Buy 1 Sell 2 Short 3 unknown (an error condition) |
Quantity | real. The quantity of the instrument being ordered. |
OrderType | integer. A number representing the nature of the order. One of: 0 Unknown 1 Market 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade. |
PegPriceType | integer. When entering a stop/trailing order, set PegPriceType to an integer
that corresponds to the type of price that pegs the stop: 1 Last 2 Bid 3 Ask 4 Midpoint |
LimitPrice | real. The price at which to execute the order, if the order is a Limit order. |
Response
{
"status": "Accepted",
"errormsg": "",
"OrderId": 123 // Server order id
}
Key | Value |
---|---|
status | string. If the order is accepted by the system, it returns "Accepted," if not
it returns "Rejected." Accepted Rejected |
errormsg | string. Any error message the server returns. |
OrderId | long integer. The ID assigned to the order by the server. This allows you to track the order. |
SubmitBlockTrade
Category: User
Permissions: Operator
Call Type: Asynchronous
Reports an off-market trade has occurred between two parties.
Once reported, you can follow the trade using GetAccountTrades or GetTradesHistory.
Request
Example lockedIn:True request
{
"instrumentId":1,
"accountId":5,
"side":0,
"counterPartyId": "3",
"quantity":0.1,
"limitPrice":5000.0,
"omsId": 0,
"lockedIn":true,
"timestamp":158153615438
}
Example lockedIn:False set of requests
{
"instrumentId":1,
"accountId":5,
"side":0,
"counterPartyId": "2",
"quantity":0.1,
"limitPrice":5000.0,
"omsId": 0,
"lockedIn":false,
"timestamp":158153615438
}
{
"instrumentId":1,
"accountId":7,
"side":1,
"counterPartyId": "1",
"quantity":0.1,
"limitPrice":5000.0,
"omsId": 0,
"lockedIn":false,
"timestamp":158153615438
}
Key | Value |
---|---|
instrumentId | integer. The ID of the instrument being traded. |
accountId | integer. The ID of the account making the report of the block trade. |
side | integer. A number that represents the side of the transaction associated with
accountId. One of: 0 Buy 1 Sell 2 Short 3 Unknown (error condition) |
counterPartyId | string. The badge of the other party in the off-market trade. |
clientOrderId | integer. If the Gateway Setting "OtcRequireCounterParty" is false, the caller can exclude counterPartyId and include clientOrderId to hit a working block trade order. |
quantity | real. The quantity on the instrument that was traded. |
limitPrice | real. The price at which to execute the block trade. |
omsId | integer. The ID of the Order Management System where the block trade is to be reported. |
lockedIn | Boolean. True if both parties to the block trade agree that one of the parties will report the trade for both sides(Only need to submit API call once). Otherwise, false and both sides need to submit API call. |
timestamp | long integer. The time that the block trade was submitted, in POSIX format. |
Response
{
"status":"Accepted",
"errormsg":"",
"OrderId": 22
}
Key | Value |
---|---|
status | string. If the order is accepted by the system, it returns "Accepted," if
not, it returns "Rejected." One of: Accepted Rejected |
errormsg | string. Any error message that the server returns. |
OrderId | long integer. The ID assigned to the order by the server. This allows you to track the order later. |
UpdateQuote
Category: User
Permissions: Operator, MarketMaker
Call Type: Synchronous
Updates an existing quote. Quoting is not enabled for the retail end user of the GreenX software. Only registered market participants or market makers may quote.
Request
{
"OMSId": 0,
"AccountId": 0,
"InstrumentId": 0,
"BidQuoteId": 0,
"Bid": 0,
"BidQTY": 0,
"AskQuoteId": 0,
"Ask": 0,
"AskQTY": 0,
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the quote is located. |
AccountId | integer. The ID of the account whose quote will be updated. |
InstrumentId | long integer. The ID of the instrument whose quote is being updated. |
BidQuoteId | integer. The ID of the original bid quote being updated. |
Bid | real. The new amount of the bid quote. |
BidQTY | real. The new quantity of the bid quote. |
AskQuoteId | integer. The ID of the original ask quote being updated. |
Ask | real. The new amount of the ask quote. |
AskQTY | real. The new quantity of the ask quote. |
Response
{
"BidResult": {
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
},
"AskResult": {
"result": true,
"errormsg": "",
"errorcode": 0,
"detail": "",
}
}
Key | Value |
---|---|
BidResult | object. Returns a response object for Bid (see below). |
AskResult | object. Returns a response object for Ask. |
Objects for both BidResult and AskResult:
Key | Value |
---|---|
result | Boolean. A successful receipt of the update returns true; and unsuccessful receipt of the update (an error condition) returns false. |
errormsg | string. A successful receipt of the update returns null; the errormsg
parameter for an unsuccessful receipt returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the update returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
Products
These calls correspond roughly to the Products function of the Exchange Admin and Admin Guide.
GetProduct
Category: User
Permissions: Public
Call Type: Synchronous
Retrieves the details about a specific product on the trading venue. A product is an asset that is tradable or paid out.
Request
{
"OMSId": 1,
"ProductId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System that includes the product. |
ProductId | long integer. The ID of the product on the specified Order Management System. |
Response
{
"omsId":0,
"productId":0,
"product":null,
"productFullName":null,
"productType":0,
"decimalPlaces":0.0,
"tickSize":0.0,
"noFees":false
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System that offers the product. |
productId | long integer. The ID of the product. |
product | string. “Nickname” or shortened name of the product. For example, NZD (New Zealand Dollar). |
productFullName | string. Full and official name of the product. For example, New Zealand Dollar. |
productType | string. The nature of the product. One of: 0 Unknown (an error condition) 1 NationalCurrency 2 CryptoCurrency 3 Contract |
decimalPlaces | integer. The number of decimal places in which the product is divided. The maximum is 8. For example, US Dollars are divided into 100 units, or 2 decimal places. Other products may be different. Burundi Francs use 0 decimal places and the Rial Omani uses 3. |
tickSize | real. The smallest increment in which the product may trade. |
noFees | Boolean. Shows whether trading the product incurs transaction fees. The default is false; that is, if NoFees is false, transaction fees will be incurred. If NoFees is true, no fees are incurred. |
GetProducts
Category: User
Permissions: Public
Call Type: Synchronous
Returns an array of products and currencies available on the exchange. A product is an asset that is tradable or paid out.
Request
{
"OMSId": 1,
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System for which the array of available products and currencies will be returned. |
Response
[
{
"omsId":0,
"productId":0,
"product":"",
"productFullName":"",
"productType":0,
"decimalPlaces":0.0,
"tickSize":0.0,
"noFees":false
},
]
The response returns an array of objects, one object for each product available on the Order Management System.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System that offers the product. |
productId | long integer. The ID of the product. |
product | string. “Nickname” or shortened name of the product. For example, NZD (New Zealand Dollar). |
productFullName | string. Full and official name of the product. For example, New Zealand Dollar. |
productType | integer. A number describing the nature of the product. One of: 0 Unknown (an error condition) 1 NationalCurrency 2 CryptoCurrency 3 Contract |
decimalPlaces | integer. The number of decimal places in which the product is divided. The maximum is 8. For example, US Dollars are divided into 100 units, or 2 decimal places. Other products may be different. Burundi Francs use 0 decimal places and the Rial Omani uses 3. |
tickSize | real. The smallest increment in which the product can trade. |
noFees | Boolean. Shows whether trading the product incurs transaction fees. The default is false; that is, if NoFees is false, transaction fees will be incurred. If NoFees is true, no fees are incurred. |
Instruments
These calls correspond roughly to the Instruments function of the Exchange Admin and Admin Guide.
GetInstrument
Category: User
Permissions: Public
Call Type:
Synchronous
Retrieves the details of a specific instrument from the Order Management System of the trading venue. An instrument is a pair of exchanged products (or fractions of them) such as US dollars and BitCoin.
Request
{
"OMSId": 1,
"InstrumentId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instrument is traded. |
InstrumentId | integer. The ID of the instrument. |
Response
{
"omsId": 0,
"instrumentId": 0,
"symbol": null,
"product1": 0,
"product1Symbol": null,
"product2": 0,
"product2Symbol": null,
"instrumentType": 0,
"venueInstrumentId": 0,
"venueId": 0,
"sortIndex": 0,
"sessionStatus": 0,
"previousSessionStatus": 0,
"sessionStatusDateTime": "0001-01-01T00:00:00",
"selfTradePrevention": false,
"quantityIncrement": 0.0,
"priceIncrement": 0.0,
"priceCollarIndexDifference": 0.0,
"priceCollarConvertToOtcEnabled": false,
"priceCollarConvertToOtcClientUserId": 1,
"priceCollarConvertToOtcAccountId": 0,
"priceCollarConvertToOtcThreshold": 0.0,
"otcConvertSizeEnabled": false,
"otcConvertSizeThreshold": 0.0,
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the instrument is traded. |
instrumentId | integer. The ID of the instrument. |
symbol | string. Trading symbol of the instrument, for example BTCUSD. |
product1 | integer. The ID of the first product comprising the instrument. |
product1Symbol | string. The symbol for Product 1 on the trading venue. For example, BTC. |
product2 | integer. The ID of the second product comprising the instrument. |
product2Symbol | string. The symbol for Product 2 on the trading venue. For example, USD. |
instrumentType | integer. A number representing the type of the instrument. All instrument types
currently are standard, an exchange of one product for another (or unknown, an error
condition), but this may expand to new types in the future. 0 Unknown (an error condition) 1 Standard |
venueInstrumentId | integer A venue instrument is created at the exchange level as an instrument "template" for adding new instruments to the exchange. This is the ID of the venue instrument behind the instrument being requested. |
venueId | integer. The ID of the trading venue on which the instrument trades. |
sortIndex | integer. The numerical position in which to sort the returned list of instruments on a visual display. Since this call returns information about a single instrument, SortIndex should return 0. |
sessionStatus | integer. Is the market for this instrument currently open and operational? Returns one
of: 0 Unknown 1 Running 2 Paused 3 Stopped 4 Starting |
previousSessionStatus | string. What was the previous session status for this instrument? One of: 0 Unknown 1 Running 2 Paused 3 Stopped 4 Starting |
sessionStatusDateTime | string. The time and date at which the session status was reported, in Microsoft Ticks format. |
selfTradePrevention | Boolean. An account that is trading with itself still incurs fees. If this instrument prevents an account from trading the instrument with itself, the value returns true; otherwise defaults to false. |
quantityIncrement | real. The smallest tradeable increment of the instrument. For example, for BTCUSD, the quantity increment might be 0.0005, but for ETHUSD, the quantity increment might be 50. |
priceIncrement | real. The smallest amount by which the instrument can rise or fall in the market. |
priceCollarIndexDifference | decimal. The percent different from the index price that an order is allowed to execute at. Anything falling outside of the index price +/- (1 + PriceCollarIndexDifference) will be collared |
priceCollarConvertToOtcEnabled | bool. Turns on/off conversion of collared orders to block trades |
priceCollarConvertToOtcClientUserId | int. Internal System UserId to assign the collared otc orders to. Should alwaays be 1 in current implementation (default) |
priceCollarConvertToOtcAccountId | int. Account Id to assign the collared orders to. This will effectively be a liability account that will need to have working block trades managed by operator. |
priceCollarConvertToOtcThreshold | decimal. Threshold of remaining size of order to convert to block trade. If collared order does not have remaining quantity above this threshold the remainder will be cancelled. |
otcConvertSizeEnabled | bool. Turns on/off auto conversion of 'large' limit orders converted to block trade orders upon receipt by the matching engine |
otcConvertSizeThreshold | decimal. Threshold to convert limit order quantity to block trade automatically for discovery by block trade market participants |
GetInstruments
Category: User
Permissions: Public
Call Type:
Synchronous
Retrieves a list of instruments available on the exchange. An instrument is a pair of exchanged products (or fractions of them) such as US dollars and BitCoin.
Request
{
"OMSId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the instruments are available. |
Response
[
{
"omsId":0 ,
"instrumentId": 0,
"symbol": "",
"product1": 0,
"product1Symbol": "",
"product2": 0,
"product2Symbol": "",
"instrumentType": 0,
"venueInstrumentId": 0,
"venueId":0,"sortIndex": 0,
"sessionStatus": 0,
"previousSessionStatus": 0,
"sessionStatusDateTime": "0001-01-01T00:00:00",
"selfTradePrevention": false,
"quantityIncrement": 0.0,
"priceIncrement": 0.0,
"priceCollarIndexDifference": 0.0,
"priceCollarConvertToOtcEnabled": false,
"priceCollarConvertToOtcClientUserId": 1,
"priceCollarConvertToOtcAccountId": 0,
"priceCollarConvertToOtcThreshold": 0.0,
"otcConvertSizeEnabled": false,
"otcConvertSizeThreshold": 0.0,
},
]
The response for GetInstruments is an array of objects listing all the instruments available on the Order Management System.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the instrument is traded. |
instrumentId | integer. The ID of the instrument. |
symbol | string. Trading symbol of the instrument, for example BTCUSD. |
product1 | integer. The ID of the first product comprising the instrument. |
product1Symbol | string. The symbol for Product 1 on the trading venue. For example, BTC. |
product2 | integer. The ID of the second product comprising the instrument. |
product2Symbol | string. The symbol for Product 2 on the trading venue. For example, USD. |
instrumentType | integer. A number representing the type of the instrument. All instrument types
currently are standard, an exchange of one product for another (or unknown, an error
condition), but this may expand to new types in the future. 0 Unknown (an error condition) 1 Standard |
venueInstrumentId | integer A venue instrument is created at the exchange level as an instrument "template" for adding new instruments to the exchange. This is the ID of the venue instrument behind the instrument being requested. |
venueId | integer. The ID of the trading venue on which the instrument trades. |
sortIndex | integer. The numerical position in which to sort the returned list of instruments on a visual display. Since this call returns information about a single instrument, SortIndex should return 0. |
sessionStatus | integer. Is the market for this instrument currently open and operational? Returns one
of: 0 Unknown 1 Running 2 Paused 3 Stopped 4 Starting |
previousSessionStatus | string. What was the previous session status for this instrument? One of: 0 Unknown 1 Running 2 Paused 3 Stopped 4 Starting |
sessionStatusDateTime | string. The time and date at which the session status was reported, in Microsoft Ticks format. |
selfTradePrevention | Boolean. An account that is trading with itself still incurs fees. If this instrument prevents an account from trading the instrument with itself, the value returns true; otherwise defaults to false. |
quantityIncrement | real. The smallest tradeable increment of the instrument. For example, for BTCUSD, the quantity increment might be 0.0005, but for ETHUSD, the quantity increment might be 50. |
priceIncrement | real. The amount by which the instrument can rise or fall in the market. |
priceCollarIndexDifference | decimal. The percent different from the index price that an order is allowed to execute at. Anything falling outside of the index price +/- (1 + PriceCollarIndexDifference) will be collared |
priceCollarConvertToOtcEnabled | bool. Turns on/off conversion of collared orders to block trades |
priceCollarConvertToOtcClientUserId | int. Internal System UserId to assign the collared otc orders to. Should alwaays be 1 in current implementation (default) |
priceCollarConvertToOtcAccountId | int. Account Id to assign the collared orders to. This will effectively be a liability account that will need to have working block trades managed by operator. |
priceCollarConvertToOtcThreshold | decimal. Threshold of remaining size of order to convert to block trade. If collared order does not have remaining quantity above this threshold the remainder will be cancelled. |
otcConvertSizeEnabled | bool. Turns on/off auto conversion of 'large' limit orders converted to block trade orders upon receipt by the matching engine |
otcConvertSizeThreshold | decimal. Threshold to convert limit order quantity to block trade automatically for discovery by block trade market participants |
GetOmsFeeTiers
Category: User
Permissions: Operator
Call Type: Synchronous
Gets a list of fees specified on an Instrument
Request
{
"omsId": 1,
"instrumentId": 1
}
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the instrument is available. |
instrumentId | integer. The ID of the instrument. |
Response
[
{
"omsId": 0,
"accountId": 0,
"instrumentId": 0,
"orderType": "Unknown",
"feeId": 0,
"feeAmt": 0,
"feeCalcType": "Percentage",
"feeType": "Flat",
"ladderThreshold": 0,
"ladderSeconds": 0,
"isActive": true,
},
]
The response for GetInstruments is an array of objects listing all the instruments available on the Order Management System.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which the fee is defined. |
instrumentId | integer. The ID of the instrument on which the fee is defined. |
accountId | integer. The ID of the account on which the fee is defined. |
orderType | string. The type of order on which the fee is defined. |
feeId | integer. The ID of the fee. |
feeAmt | decimal. The amount to be used in the calculation of the fee. |
feeCalcType | string. The calculation type for the fee. One of FlatRate or Percentage. |
feeType | string. The type of fee. Flat, Ladder, Exemption, AdminFee, AffiliateFee, MakerFee, TakerFee, or FlatPegToProduct. |
ladderThreshold | decimal. |
ladderSeconds | long integer. |
isActive | boolean. If the fee is active or not. |
Tickets
These calls correspond roughly to the Tickets function of the Exchange Admin and Admin Guide.
Deposit and Withdraw Templates
Templates provide a set of information about banking tasks during deposits and withdrawals in the form of specific key-value pairs. Each template has a name. There are different templates for different types of deposit and withdrawal, determined by the product or asset (BitCoin, Monero, US Dollar, etc.), the specific bank or other Account Provider, and the information that the Account Provider requires for the transaction.
Most templates are used for withdrawals.
Example 1 and 2 are two example templates.
Template Example 1
"TemplateformType": "Standard",
{
"Full Name": "John Smith",
"Language": "en",
"Comment": "",
"BankAddress": "123 Fourth St.",
"BankAccountNumber": "12345678",
"BankAccountName": "John Smith & Sons",
"Swiftcode": "ABCDUSA1"
}
Template Example 2
"TemplateFormType": "TetherRPCWithdraw",
{
"TemplateType": "TetherRPCWithdraw",
"Comment": "TestWithdraw",
"ExternalAddress": "ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3"
}
The content of the template depends on the Account Provider that you use for deposits and withdrawals. The Account Provider does not supply the template per se (they do, however, determine the fields that are in the template). The template is specific to each Account Provider.
To determine which withdrawal template types are available to you, call GetWithdrawTemplateTypes.
CancelWithdraw
Category: System
Permissions: Withdraw
Call Type:
Synchronous
Cancels a pending withdrawal.
Only users with Withdraw permission can cancel their own pending withdrawals. An admin (a user with Operator permission) may cancel a withdraw, but is more likely to reject a withdraw.
Request
{
"OMSId": 1,
"UserId": 1,
"AccountId": 1,
"RequestCode": "Request Code GUID"
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the original withdraw ticket was created. |
UserId | integer. The user ID of the user canceling the withdrawal. |
AccountId | integer. The ID of the account from which the withdraw was made. |
RequestCode | string. The globally unique ID (GUID) that identifies the specific withdraw that is
being canceled. You can obtain the RequestCode for a specific withdrawal by calling GetWithdraws with the account ID and looking for the withdrawCode value that corresponds to this pending withdrawal. |
Response
{
"result": true,
"errormsg": "Operation Failed",
"errorcode": 101,
"detail": "Withdraw Ticket not found for OmsId, AccountId, RequestCode"
}
The response indicates that the system has received the CancelWithdraw Request, not that the withdraw ticket has been canceled. You can check the status of a withdraw ticket by using GetWithdrawTicket.
Key | Value |
---|---|
result | Boolean. A successful receipt of the withdraw ticket cancellation request returns true; an unsuccessful receipt (an error condition) returns false. |
errormsg | string. A successful receipt of the withdraw ticket cancellation request returns
null; the errormsg field for an unsuccessful request returns one of the following
messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the withdraw ticket cancellation request returns 0. An unsuccessful receipt returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Usually null. |
CreateDepositTicket
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
CreateDepositTicket records a deposit ticket for deposits of fiat money (non-crypto national currencies, for example). Crypto-currencies, such as BitCoin or Monero are handled by a different deposit mechanism described in GetDepositInfo.
The ticketing mechanism of the Order Management System tracks deposits and withdrawals, interacting with the Asset Manager.
Request
{
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"assetName": null,
"amount": 0.0,
"omsId": 0,
"requestCode": null,
"requestIP": null,
"requestUserName": null,
"operatorId": 0,
"Status": 0,
"feeAmt": 0.0,
"updatedByUser": 0,
"updatedByUserName": null,
"ticketNumber": 0,
"depositInfo": "",
"createdTimestamp": "0001-01-01T00:00:00",
"lastUpdateTimeStamp": "0001-01-01T00:00:00",
"comments": null,
"attachments": null
}
Key | Value |
---|---|
assetManagerId | integer. The ID of the system's asset manager module, usually 1. |
accountId | integer. The account receiving the deposit. |
assetId | integer. The ID of the asset being deposited. An asset is functionally the same as a product; you can obtain a list of products/assets available on the Exchange by using GetProducts. |
assetName | string. The short name of the asset being deposited. For example, USD (US Dollars) or BTC (BitCoin). |
amount | real. The quantity of the asset being deposited. This is not the monetary value of the asset. For example, 2.5 BitCoins is 2.5. |
omsId | integer. The ID of the Order Management System where the deposit is being made, usually 1. |
requestCode | string. A requestCode is a globally unique ID assigned by the system. Leave the value for this string null when issuing the CreateDepositTicket call; the Response returns the value for the requestCode, which you may need for other calls. |
requestIp | string. The IP address from which the calling user makes the deposit ticket request. |
requestUserName | string. The user name of the user making the deposit ticket request, for example, jsmith. |
operatorId | integer. The ID of the trading venue operator. |
status | integer. The current status of the deposit, stated as a number. A new deposit will always have a status of 0. |
feeAmt | real. The amount of any fee for the deposit. |
updatedByUser | integer. If the deposit ticket has been updated, this field contains the user ID of the user who updated the ticket. Because CreateDepositTicket creates the ticket, it is unlikely to have been updated yet; this value should be 0. |
updatedByUserName | string. If the deposit ticket has been updated, this field contains the name of the user who updated the ticket. Because CreateDepositTicket creates the ticket, it is unlikely to have been updated yet; this value should be an empty string (null). |
ticketNumber | long integer. A number assigned by the calling user to identify this deposit ticket, much as a purchase order identifies an order. |
depositInfo | object. Leave this string as empty: " ". |
createdTimeStamp | string. The time and date stamp for when the deposit ticket was created, in Microsoft Ticks format. All time and date stamps are given as UTC. |
lastUpdateTimeStamp | string. The time and date stamp for the last update to the deposit ticket after it was created. Because CreateDepositTicket creates the ticket, it is unlikely that it has been updated, and this string should be empty. |
comments | string. Any comments appended to the deposit ticket. |
attachments | string. Any attachments appended to the deposit ticket. |
Response
{
"success": true,
"requestcode": "866f21fe-3461-41d1-91aa-5689bc38503f",
}
The successful response to CreateDepositTicket is a Boolean true value and a request code to allow tracking the ticket. To view and confirm ticket contents, use the call GetDepositTicket.
String | Value |
---|---|
success | Boolean. Returns true if the system has created the deposit ticket successfully; otherwise returns false. |
requestcode | string. A globally-unique ID (GUID) that identifies this specific deposit ticket. |
An unsuccessful response to CreateDepositTicket is a standard response object that includes an error code and error message, as explained in "Standard response objects and common error codes" in Background Information.
CreateWithdrawTicket
Category: System
Permissions: Operator, Withdraw
Call
Type: Synchronous
Initiates the withdrawal of funds from an account. You can use CreateWithdrawTicket for both cryptocurrency and fiat (national) currencies. The call transfers funds to an external account through a third-party Account Provider accredited by the Exchange.
A user with Withdraw permission can create a withdraw ticket only for an account with which they're associated; a user with Operator permission can create a withdraw ticket for any account.
Request
{
"OMSId": 1,
"AccountId": 1,
"ProductId": 1,
"Amount": 100.00,
"TemplateForm": {},
"TemplateType": "Template Form Type"
}
Part of the process of withdrawing an asset (product) is to specify the withdrawal template that sends the asset to the correct destination, usually an Account Provider. The content of templates varies from Account Provider to Account Provider. Get a list of templates available to you by calling GetWithdrawTemplateTypes. For more information on templates, see "Deposit and withdraw templates" at the beginning of the Tickets section.
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System from which the withdrawal is being made. |
AccountId | integer. The ID of the account from which the asset is being withdrawn. |
ProductId | integer. The ID of the product (or asset) begin withdrawn; the terms are used interchangeably. |
Amount | real. The number of units or fractions of units of the asset being withdrawn (not the asset's monetary value). For example. 2.5 BitCoin or 2000.00 US Dollars. |
TemplateForm | object. The contents of the template form vary from Account Provider to Account Provider, depending on the asset being withdrawn and the identity of the Account Provider. See Example 1, below. |
TemplateType | string. The name of the withdrawal template that controls the destination of the asset being withdrawn. To get a list of withdrawal templates that are available to you, call GetWithdrawTemplateTypes. |
Example 1
Example 1: a typical withdrawal template
{
"TemplateType": "ToExternalBitCoinAddress",
"Comment": "",
"ExternalAddress": "54123214"
}
Example 1 shows a typical withdrawal template.
Response
The Response
{
"result": true,
"errormsg": "Invalid Request",
"errorcode": 100,
"detail": "Insufficient Balance"
}
The response to CreateWithdrawTicket is a standard response object confirming receipt or non-receipt of the information, and does not confirm the ticket per se. To view and confirm the ticket was created properly, use the call GetWithdrawTicket.
Key | Value |
---|---|
result | Boolean. Field is true if the call has been successfully received by the Order Management System; otherwise false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
value for an unsuccessful call returns one of the following messages: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errocode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) |
errorcode | integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list. |
detail | string. Message text that the system may send. Often null. |
GetAccountDepositTransactions
Category: User
Permissions: Trading, AccountReadOnly
Call
Type: Synchronous
Obtains a list of deposits for the account.
Users with Trading and AccountReadOnly permission can return deposit transactions only from an account with which they are associated.
The owner of the trading venue determines how long to retain transaction history before archiving.
Request
{
"OMSId": 1,
"AccountId": 1,
"Depth": 200
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the account transactions took place. |
AccountId | integer. The ID of the account whose transactions will be returned. |
Depth | integer. The count of deposit transactions to be returned. Defaults to 200. |
Response
[
{
"transactionId": 0,
"omsId": 0,
"accountId": 0,
"cr": 0.0,
"dr": 0.0,
"counterparty": 0,
"transactionType": 0,
"referenceId": 0,
"referenceType": 0,
"productId": 0,
"balance": 0.0,
"timeStamp": 0
},
]
The response returns an array of transaction objects.
Key | Value |
---|---|
transactionId | Integer. The ID of the transaction. |
omsId | Integer. The ID of the Order Management System under which the requested transactions took place. |
accountId | Integer. The single account under which the transactions took place. |
cr | real. Credit entry for the account on the order book. Funds entering an account. |
dr | real. Debit entry for the account on the order book. Funds leaving an account. |
counterparty | long integer. The corresponding party in a trade. |
transactionType | integer. A number representing the type of transaction: 1 Fee 2 Trade 3 Other 4 Reverse 5 Hold 6 Rebate 7 MarginAcquisition 8 MarginRelinquish |
referenceId | long integer. The ID of the action or event that triggered this transaction. |
referenceType | integer. A number representing the type of action or event that triggered this
transaction. One of: 1 Trade 2 Deposit 3 Withdraw 4 Transfer 5 OrderHold 6 WithdrawHold 7 DepositHold 8 MarginHold 9 ManualHold 10 ManualEntry 11 MarginAcquisition 12 MarginRelinquish 13 MarginQuoteHold |
productId | integer. The ID of the product in which the deposit was made. Use GetProduct to return information about a product based on its ID. |
balance | real. The balance in the account after the transaction. |
timeStamp | long integer. Time at which the transaction took place, in POSIX format. |
GetAccountWithdrawTransactions
Category: User
Permissions: Trading, AccountReadOnly
Call
Type: Synchronous
Obtains a list of withdrawals for an account.
Users with Trading and AccountReadOnly permission can return withdrawal transactions only from an account with which they are associated.
The owner of the trading venue determines how long to retain transaction history before archiving.
Request
{
"OMSId": 1,
"AccountId": 1,
"Depth": 200
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the account transactions took place. |
AccountId | integer. The ID of the account whose transactions will be returned. |
Depth | integer. The count of withdrawal transactions to be returned. Defaults to 200. |
Response
[
{
"transactionId":0,
"omsId":0,
"accountId":0,
"cr":0.0,
"dr":0.0,
"counterparty":0,
"transactionType":0,
"referenceId":0,
"referenceType":0,
"productId":0,
"balance":0.0,
"timeStamp":0
},
]
The response returns an array of transaction objects.
Key | Value |
---|---|
transactionId | Integer. The ID of the transaction. |
omsId | Integer. The ID of the Order Management System under which the requested transactions took place. |
accountId | Integer. The single account under which the transactions took place. |
cr | real. Credit entry for the account on the order book. Funds entering an account. |
dr | real. Debit entry for the account on the order book. Funds leaving an account. |
counterparty | long integer. The corresponding party in a trade. |
transactionType | integer. A number representing the type of transaction: 1 Fee 2 Trade 3 Other 4 Reverse 5 Hold 6 Rebate 7 MarginAcquisition 8 MarginRelinquish |
referenceId | long integer. The ID of the action or event that triggered this transaction. |
referenceType | integer. A number representing the type of action or event that triggered this
transaction. One of: 1 Trade 2 Deposit 3 Withdraw 4 Transfer 5 OrderHold 6 WithdrawHold 7 DepositHold 8 MarginHold 9 ManualHold 10 ManualEntry 11 MarginAcquisition 12 MarginRelinquish 13 MarginQuoteHold |
productId | integer. The ID of the product that was withdrawn. Use GetProduct to return information about a product based on its ID. |
balance | real. The balance in the account after the transaction. |
timeStamp | long integer. Time at which the transaction took place, in POSIX format. |
GetAllDepositRequestInfoTemplates
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns an array of all templates available to the caller that describe a deposit form for a specific product.
An Account Provider may require specific deposit information. Deposit templates answer than need.
Request
{
"OMSId": 1,
"ProductId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the product is traded. |
ProductId | integer. The ID of the product to be deposited. |
Response
[
{
"Template": {
"ProviderType": "BitcoinRpc",
"Template": "{}",
"ProcessInfo": "",
"UseGetDepositWorkflow": true,
"DepositWorkflow": "CryptoWallet"
},
"result": true,
"errormsg": null,
"statuscode": 0
},
]
The Response is an array of information for templates appropriate to the product specified in the Request and available to the caller, along with fields that show whether the Response successfully returned the Template information. The key-value pairs of the inner Template object vary from Account Provider to Account Provider.
Template object
Key | Value |
---|---|
ProviderType | String. The type of asset handled by the Account Provider. Possible values
are: BitcoinRpc BitGoRpc Internal Accounting WsAccountingProvider EthereumERC20 EthereumRPC |
Template | JSON object. The key-value pairs of Template vary from Account Provider to Account Provider. |
ProcessInfo | String. The ProcessInfo string varies with the Account Provider and the asset being deposited. In a generic deposit template, the ProcessingInfo key-value pair is empty; in other cases it is an address for processing the deposit. |
UseGetDepositWorkflow | Boolean. A true value causes the deposit to use the deposit workflow named in DepositWorkflow. A false value causes the deposit not to use that defined workflow. |
DepositWorkflow | String. A set of defined workflows for this template. The workflows are defined and
named during the installation of the Exchange. Choices
are: CryptoWallet ManualDeposit MerchantForm MerchantRedirect Custom |
Response fields
Key | Value |
---|---|
result | Boolean. If the call has been successfully received by the Order Management System, returns true, otherwise returns false. |
errormsg | String. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call can return: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
statusCode | integer. If result is false, statusCode can return:
32 Not Authorized 33 Asset_Manager_Not_Found If no Account Provider is located, statusCode returns null. |
GetDepositInfo
Category: System
Permissions: Operator, Deposit
Call
Type: Synchronous
Retrieves deposit key information so that the user can send cryptocurrency funds, and optionally generates new keys. The GetDepositInfo call is only for depositing cryptocurrency into an account.
Users with Deposit permission can deposit only to their own accounts; users with Operator permission can deposit to any account.
Request
{
"OMSId": 1,
"AccountId": 1,
"ProductId": 1,
"GenerateNewKey": true
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the deposit ticket was created. |
AccountId | integer. The ID of the account into which the deposit was made. |
ProductId | integer. The ID of the product (asset) of the Exchange that caused the generation of a ticket. |
GenerateNewKey | Boolean. If GenerateNewKey has a true value, the two crypto deposit keys wil be new; if GenerateNewKey has a false value, these will be the last two keys that were generated. |
Response
{
"AssetManagerId": 1,
"ACcountId": 1,
"AssetId": 1,
"ProviderId": 1,
"DepositInfo": [],
"result": true,
"errormsg": null,
"statuscode": 0
}
Key | Value |
---|---|
assetManagerId | integer. The ID of the Asset Manager on which the deposit was made. |
accountId | integer. The ID of the account into which the deposit was made. |
assetId | integer. The ID of the asset (product) that was deposited. |
ProviderId | integer. The ID of the Account Provider that handles this specific product (asset) |
DepositInfo | array. Array of two crypto deposit keys, each a long integer. |
result | Boolean. If the call has been successfully received by the Order Management System, returns true, otherwise returns false. |
errormsg | String. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call can return: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
statusCode | integer. If result is false, statusCode can return:
32 Not Authorized 33 Asset_Manager_Not_Found If no Account Provider is located, statusCode returns null. |
GetDepositRequestInfoTemplate
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns a single object describing a single deposit form template that is available to the caller and the caller's account, and appropriate to the product being deposited.
Request
{
"OMSId": 1,
"ProductId": 1,
"AccountId": 1,
"TemplateType": "TrustPay"
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the product is traded. |
ProductId | integer. The ID of the product to be deposited. |
AccountId | integer. The ID of the account into which the deposit will be made. |
TemplateType | string. The name of the deposit template you want to return. |
Response
{
"Template": {
"ProviderType":"BitcoinRpc",
"Template": "{}",
"ProcessInfo": "",
"UseGetDepositWorkflow": true,
"DepositWorkflow": "CryptoWallet"
},
"result": true,
"errormsg": null,
"statuscode": 0
}
The Response is a single template appropriate to the product specified in the Request and available to the caller, along with fields that show whether the Response successfully returned the Template information. The key-value pairs of the inner Template object vary from Account Provider to Account Provider.
Template object
Key | Value |
---|---|
ProviderType | String. The type of asset handled by the Account Provider. Possible values
are: BitcoinRpc BitGoRpc Internal Accounting WsAccountingProvider EthereumERC20 EthereumRPC |
Template | JSON object. The key-value pairs of Template vary from Account Provider to Account Provider. |
ProcessInfo | String. The ProcessInfo string varies with the Account Provider and the asset being deposited. In a generic deposit template, the ProcessingInfo key-value pair is empty; in other cases it is an address for processing the deposit. |
UseGetDepositWorkflow | Boolean. A true value causes the deposit to use the deposit workflow named in DepositWorkflow. A false value causes the deposit not to use that defined workflow. |
DepositWorkflow | String. A set of defined workflows for this template. The workflows are defined and
named during the installation of the Exchange. Choices
are: CryptoWallet ManualDeposit MerchantForm MerchantRedirect Custom |
Response fields
Key | Value |
---|---|
result | Boolean. If the call has been successfully received by the Order Management System, returns true, otherwise returns false. |
errormsg | String. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call can return: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
statusCode | integer. If result is false, statusCode can return:
32 Not Authorized 33 Asset_Manager_Not_Found If no Account Provider is located, statusCode returns null. |
GetDeposits
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns an array of deposit objects with information about the deposits of a specific account.
Users with Trading permission can get deposit information only for their own accounts; users with Operator permission can get deposit information for any account.
Request
{
"OMSId": 1,
"AccountId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the deposits were made. |
AccountId | integer. The ID of the account into which the deposits were made. |
Response
[
{
"omsId": 0,
"depositId": 0,
"accountId": 0,
"subAccountId": 0,
"productId": 0,
"amount": 0.0
},
]
The Response is an array of deposit objects.
Key | Value |
---|---|
omsId | integer. The ID of the Order Management System on which this deposit was made. |
depositId | integer. The ID of this deposit, assigned by the system. |
accountId | integer. The ID of the account into which this deposit was made. |
subAccountId | integer. Not currently used; reserved for future use. Defaults to 0. |
productId | integer. The ID of the product or asset (the two are synonymous) that was deposited. |
amount | real. The unit and fractional quantity of the product or asset that was deposited. For example 2.5 BitCoin or 2018.17 US Dollars. |
GetDepositTicket
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns details about a single deposit ticket. A deposit ticket documents that a deposit was made or attempted.
Request
{
"OMSId": 1,
"AccountId": 1,
"RequestCode": "Request Code GUID",
"TicketId": 100000002
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the deposit ticket was created. |
AccountId | integer. The ID of the account into which the deposit was made. |
RequestCode | string. A globally unique ID (GUID) that identifies this specific deposit. |
TicketId | long integer. The ID of the specific deposit ticket, as assigned by the system. |
Response
{
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"assetName": null,
"amount": 0.0,
"omsId": 0,
"requestCode": null,
"requestIP": null,
"requestUser": 0,
"requestUserName": null,
"operatorId": 0,
"Status": 0,
"feeAmt": 0.0,
"updatedByUser": 0,
"updatedByUserName": null,
"ticketNumber": 0,
"depositInfo": null,
"createdTimestamp": "0001-01-01T00:00:00",
"lastUpdateTimeStamp": "0001-01-01T00:00:00",
"comments": null,
"attachments": null
}
Key | Value |
---|---|
assetManagerId | integer. The ID of the Asset Manager on which the deposit was made. |
accountId | integer. The ID of the account into which the deposit was made. |
assetId | integer. The ID of the asset (product) that was deposited. |
assetName | string. The short name of the asset (product) that was deposited, for example BTC for BitCoin or USD for US Dollars. |
amount | real. The unit and fractional amount of the asset that was deposited, for example 2.5 BitCoin or 2018.17 US Dollars. |
omsId | integer. The ID of the Order Management System on which the deposit was made. |
requestCode | string. A globally unique alphanumeric string (GUID) assigned by the system that identifies this specific deposit. |
requestIP | string. The IP address from which the deposit request was made. |
requestUser | integer. The user ID of the user who made the deposit request. |
requestUserName | string. The user name of the user who made the deposit request, for example, jsmith. |
operatorId | integer. The user ID of the operator who managed the deposit request. |
status | integer. The current status of this deposit ticket. Some of these statuses are valid
only for cryptocurrency deposits; some are only valid for deposits of fiat (national) currency; others are
used by GreenX internally. Any of the statuses may appear on a deposit ticket. Deposit ticket statuses 0 New (new ticket awaiting operator review) 1 AdminProcessing (an admin is looking at the ticket) 2 Accepted (an admin accepts the ticket) 3 Rejected (admin rejects the ticket) 4 SystemProcessing (automatic processing; an unlikely status for a deposit) 5 FullyProcessed (the deposit has concluded) 6 Failed (the deposit has failed for some reason) 7 Pending (Account Provider has set status to pending) 8 Confirmed (Account Provider confirms the deposit) 9 AmlProcessing (anti-money-laundering process underway) 10 AmlAccepted (anti-money-laundering process successful) 11 AmlRejected (deposit did not stand up to anti-money-laundering process) 12 AmlFailed (anti-money-laundering process failed/did not complete) 13 LimitsAccepted (deposit meets limits for fiat or crypto asset) 14 LimitsRejected (deposit does not meet limits for fiat or crypto asset) |
feeAmt | real. The fee assessed for making the deposit, if any. Deposit fees usually are assessed in the asset/product being deposited. |
updatedByUser | integer. The user ID of the last user to have updated the ticket (status, amount, etc.; this is usually an admin). |
updatedByUserName | string. The user name of the last user to have updated the ticket, for example, jsmith. |
ticketNumber | long integer. An ID number assigned by the system to identify the ticket (as opposed to identifying the deposit). |
depositInfo | string. A set of key-value pairs that holds information about the source of the funds being deposited. This information was entered when the deposit ticket was created, as required by the Account Provider. It can vary from Account Provider to Account Provider. |
createdTimeStamp | string. The date and time when the deposit ticket was created, in Microsoft Ticks format. All dates and times are UTC. |
lastUpdateTimeStamp | string. The date and time when the deposit ticket last was updated — usually by an admin changing its status — in Microsoft Ticks format. All dates and times are UTC. |
comments | string. Any comment appended to the deposit ticket. |
attachments | string. Any attachment to the deposit ticket. |
GetDepositTickets
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns an array of deposit ticket objects for a specific account. The call returns all tickets for a given account. Use GetDepositTicket to return a single ticket. Operators (only) can use GetAllDepositTickets to return a subset of tickets.
Users with Trading permission can return deposit ticket information only for accounts with which they're associated; users with Operator permission can return deposit ticket information for any account.
Request
{
"OMSId": 1,
"OperatorId": 1,
"AccountId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the account operates whose tickets you want to return. |
OperatorId | integer. A user with Operator permission should put the Operator's ID here; a user with Trading permission should put the value 1 here. |
AccountId | integer. The account whose deposit tickets you want to return. |
Response
[
{
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"assetName": null,
"amount": 0.0,
"omsId": 0,
"requestCode": "",
"requestIP": "",
"requestUser": 0,
"requestUserName": "",
"operatorId": 0,
"Status": 0,
"feeAmt": 0.0,
"updatedByUser": 0,
"updatedByUserName": "",
"ticketNumber": 0,
"depositInfo": null,
"createdTimestamp": "0001-01-01T00:00:00",
"lastUpdateTimeStamp": "0001-01-01T00:00:00",
"comments": null,
"attachments": null
},
]
The Response returns an array of deposit ticket information.
Key | Value |
---|---|
assetManagerId | integer. The ID of the Asset Manager module that handled the deposit. |
accountId | integer. The ID of the account into which the deposit was made. |
assetId | integer. The ID of the asset (product) deposited. This may be cryptocurrency or fiat (national) currency. |
assetName | string. The short name of the asset being deposited, for example USD (US Dollars), BTC (BitCoin), etc. |
amount | real. The unit quantity and fractional quantity of the asset being deposited. For example, 2.5 BitCoin or 2018.17 US Dollars. |
omsId | integer. The ID of the Order Management System through which the asset was deposited. |
requestCode | string. A globally unique ID (GUID) that identifies the deposit ticket on the Exchange. |
requestIP | string. The IP address from which the deposit was received, for example 127.0.0.1. |
requestUser | integer. The user ID of the user making the deposit. |
requestUserName | string. The user name of the user making the deposit, for example, jsmith. |
operatorId | integer. The user ID of the human admin (operator) who accepted, rejected or placed the ticket in the Pending status. Operators set the status of fiat currency deposits; cryptocurrency deposits are handled automatically. |
Status | integer. The current status of the deposit ticket. Some of these statuses are valid
only for cryptocurrency deposits and some are valid for fiat currency deposits. Some of these statuses are
used by GreenX internally, yet they may appear on returned Deposit Ticket
information. Deposit ticket statuses: 0 New (new ticket awaiting operator review) 1 AdminProcessing (An admin is looking at the ticket) 2 Accepted (An admin accepts the ticket) 3 Rejected (Admin rejects the ticket) 4 SystemProcessing (automatic processing; an unlikely status for a deposit) 5 FullyProcessed (the deposit has concluded) 6 Failed (the deposit failed for some reason) 7 Pending (Account Provider has set status to pending) 8 Confirmed (Account Provider confirms the deposit) 9 AmlProcessing (anti-money-laundering process underway) 10 AmlAccepted (anti-money-laundering process successful) 11 AmlRejected (deposit did not stand up to anti-money-laundering process) 12 AmlFailed (anti-money-laundering process failed/did not complete) 13 LimitsAccepted (deposit meets limits for fiat or crypto asset) 14 LimitsRejected (deposit does not meet limits for fiat or crypto asset) |
feeAmt | real. The fee assessed by the Exchange for making the deposit, if any. Such a fee normally is assessed in the asset being deposited. |
updatedByUser | integer. The user ID of the person who made the most recent update to the deposit ticket. This user should be an admin (Operator). |
updatedByUserName | string. The user name of the person (admin/Operator) who made the most recent update to the deposit ticket. |
ticketNumber | integer. Number of the ticket on the Exchange. |
depositInfo | object. A set of key-value pairs that holds information about the source of funds being deposited. This information was entered when the deposit ticket was created, as required by the Account Provider. It can vary from Account Provider to Account Provider. |
createdTimeStamp | string. The date and time that the deposit ticket was created, in Microsoft Ticks format. All dates and times are UTC. |
lastupdateTimeStamp | string. The date and time stamp that the deposit ticket last was updated, in Microsoft Ticks format. All dates and times are UTC. |
comments | string. Any comment appended to the deposit ticket. |
attachments | string. Any attachment to the deposit ticket. |
GetOMSWithdrawFees
Category: System
Permissions: Operator, Withdraw
Call
Type: Synchronous
Returns an array of objects, each of which describe a fee assessed on a specific product (asset).
Request
{
"OMSId": 1,
"ProductId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the produce (asset) is traded. |
ProductId | integer. The ID of the product (asset) for which you want a list of fees. |
Response
[
{
"OMSId": 1,
"AccountId": 0,
"FeeId": 47,
"FeeAmt": 1,
"FeeCalcType": "Percentage",
"IsActive": false,
"ProductId": 1
},
]
The Response is an array of objects, each describing a fee.
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the product (asset) is traded. |
AccountId | integer. The ID of the account requesting the withdrawal fee information. Withdrawal fees may vary between accounts. The system "knows" the account of the requesting user. |
FeeId | integer. The ID of the fee reported in this object. |
FeeAmt | real. The fee assessed for this product. If FeeCalcType is Percentage, this value is the percentage of the fee. If the FeeCalcType is FlatRate, this value is the number of units and fractions of units of the product. The Exchange usually assesses withdrawal fees in the product being withdrawn. |
FeeCalcType | string. The way the fee is calculated, either as a flat rate (FlatRate) or as a percentage (Percentage) of the withdrawal. |
IsActive | Boolean. A true value signifies that this fee is active for this product; a false value that the fee is not active for this product. |
ProductId | integer. The ID of the product (asset) against which the fee is assessed. |
GetWithdrawFee
Category: User
Permissions: Operator, Trading,
Withdraw
Call Type: Synchronous
Gets an estimate of a fee for a withdrawal. The Products function of the GreenX Admin can set withdraw fees OMS-wide. You can also set a withdraw fee programmatically using SetOMSFee, but SetOMSFee is a System (not User) call with permission reserved to an exchange operator. Exchange-wide withdrawal fees cannot be overridden.
A user with Trading or Withdraw permissions can obtain withdrawal fee estimates only for products and accounts with which the user is associated; a user with Operator permission can obtain withdrawal fee estimates for any product or account.
Request
{
"OMSId": 1,
"AccountId": 1,
"ProductId": 1,
"Amount": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System trading the product. |
AccountId | integer. The ID of the account making the withdrawal. |
ProductId | integer. The ID of the product intended to be withdrawn. Fees may vary with product. |
Amount | real. The amount of product intended to be withdrawn. |
Response
{
"FeeAmount":1.06
}
Key | Value |
---|---|
FeeAmount | real. The estimated amount of the fee for the indicated withdrawal. |
GetWithdraws
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns a list of withdrawals for a given account ID.
Users with Trading permission can return withdrawals only for an account with which they are associated; users with Operator permission can return withdrawals for any account.
Request
{
"OMSId": 1,
"AccountId": 1
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System on which the withdrawal was issued. |
AccountId | integer. The ID of the account for which withdrawal information will be returned. |
Response
[
{
"amount": 0.0,
"feeAmount": 0.0,
"notionalValue": 0.0,
"withdrawId": 0,
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"templateForm": "{
“TemplateType”: “TetherRPCWithdraw”,
“Comment”: “TestWithdraw”,
“ExternalAddress”: “ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3”
}",
"templateFormType": "TetherRPCWithdraw",
"omsId": 0,
"TicketStatus": 0,
"ticketNumber": 0,
"WithdrawTransactionDetails": "",
"withdrawType": "",
"withdrawCode": "490b4fa3-53fc-44f4-bd29-7e16be86fba3",
"AssetType": 0,
"reaccepted": true,
"notionalProductId": 0
},
]
The Response is an array of withdrawals made on the specified Order Management System for the specified account.
Key | Value |
---|---|
amount | real. The amount of product or fractions of product being withdrawn (not the dollar value, unless the products being withdrawn are dollars). |
feeAmount | real. The amount of withdrawal fee charged. Withdrawal fees usually are charged in the product being withdrawn. |
notionalValue | real. In some regions, withdrawals in cryptocurrency must first be converted to the local currency. Thus, the "notional value" of a withdrawal is the value of the cryptocurrency expressed in the local fiat currency. |
withdrawId | integer. The ID of this withdrawal, assigned by the system. |
assetManagerId | integer. The ID of the Asset Manager through which the withdrawal was made. |
accountId | integer. The ID of the account from which the withdrawal was made. |
assetId | integer. The ID of the asset (product) being withdrawn. |
templateform | string. The contents of the withdrawal template (key-value pairs). Templates vary from Account Provider to Account Provider, depending on the asset being withdrawn and the identity of the Account Provider. |
templateFormType | string. The name of the withdrawal template. The template controls the destination of the asset being withdrawn. To get a list of withdrawal templates available to you, call GetWithdrawTemplateTypes. |
omsId | integer. The ID of the Order Management System on which the withdrawal occurred. |
TicketStatus | integer. The current status of the withdrawal ticket. Some of these statuses are valid
only for cryptocurrency withdrawals (which uses an automated withdrawal process), and some are valid for
fiat currency withdrawals (which requires a human admin operator). Some of these statuses are used by the
GreenX Exchange internally, yet they may appear on a returned withdrawal ticket. Withdraw ticket statuses: 0 New (awaiting operator review) 1 AdminProcessing (An admin is looking at the ticket) 2 Accepted (withdrawal will proceed) 3 Rejected (admin or automatic rejection) 4 SystemProcessing (automatic processing underway) 5 FullyProcessed (the withdrawal has concluded) 6 Failed (the withdrawal failed for some reason) 7 Pending (the admin has placed the withdrawal in pending status) 8 Pending2Fa (user must click 2-factor authentication confirmation link) 9 AutoAccepted (withdrawal will be automatically processed) 10 Delayed (waiting for funds to be allocated for the withdrawal) 11 UserCanceled (withdraw canceled by user or Superuser) 12 AdminCanceled (withdraw canceled by Superuser) 13 AmlProcessing (anti-money-laundering process underway) 14 AmlAccepted (anti-money-laundering process complete) 15 AmlRejected (withdrawal did not stand up to anti-money-laundering process) 16 AmlFailed (withdrawal did not complete anti-money-laundering process) 17 LimitsAccepted (withdrawal meets limits for fiat or crypto asset) 18 LimitsRejected (withdrawal does not meet limits for fiat or crypto asset) 19 Submitted (withdrawal sent to Account Provider; awaiting blockchain confirmation) 20 Confirmed (Account Provider confirms that withdrawal is on the blockchain) 21 ManuallyConfirmed (admin has sent withdrawal via wallet or admin function directly; marks ticket as FullyProcessed; debits account) 22 Confirmed2Fa (user has confirmed withdraw via 2-factor authentication.) |
ticketNumber | integer. The number of the ticket, as assigned by the system (different from the ID of the withdrawal). |
withdrawTransactionDetails | JSON string object. Dynamic information that changes from Account Provider to Account
Provider. The values of withdrawTransactionDetails may (but do not have to) include key-value
pairs for: TxId transaction ID ExternalAddress Amount Confirmed LastUpdated TimeSubmitted AccountProviderName |
withdrawType | string. Shows whether the withdrawal is cryptocurrency or fiat (national) currency. |
withdrawCode | string. A GUID that uniquely identifies the withdrawal (as opposed to the ticket representing the withdrawal). The value for widrawCode is the same as requestCode as returned by GetWithdrawTicket and GetWithdrawTickets. |
AssetType | integer. Describes the nature of the product. One of: 0 Unknown (an error condition) 1 NationalCurrency 2 CryptoCurrency 3 Contract |
reaccepted | Boolean. If a ticket was initially rejected, but later accepted for withdrawal, true shows that the ticket was re-accepted for processing after an initial rejection. |
notionalProductId | integer. In those regions where withdrawal of cryptocurrency must be expressed in terms of local fiat currency, the notionalProductId expresses that local currency. |
GetWithdrawTemplate
Category: System
Permissions: Operator, Withdraw
Call
Type: Synchronous
Returns the text of the specific withdrawal template. To find out what templates are available to you, call GetWithdrawTemplateTypes.
Request
{
"OMSId": 1,
"ProductId": 1,
"TemplateType": "Template Name",
"AccountId": 1,
"AccountProviderId": 1
}
The system "knows" which Account Provider's withdrawal template to return based on the product ID and the template name you provide. There is usually only one Account Provider per product on an Exchange. AccountId and AccountProviderId therefore are optional key-value pairs.
Key | Value |
---|---|
OMSId | integer. REQUIRED The ID of the Order Management System on which the withdrawal will be made. |
ProductId | integer. REQUIRED The ID of the product (asset) about to be withdrawn. |
TemplateType | string. REQUIRED The name of the withdrawal template you want to return. |
AccountId | integer. OPTIONAL The ID of the account from which you plan to make the withrawal. |
AccountProviderId | integer. OPTIONAL The ID of the Account Provider you plan to use for the withdrawal. |
Response
{
"Template": "",
"result": true,
"errormsg": "",
"statuscode": 0
}
The Response returns the key-value pairs of the template, along with any error messages about the call. The text of the template will vary from Account Provider to Account Provider.
Key | Value |
---|---|
Template | string. The key-value pairs of the template inside a JSON string. |
result | Boolean. Returns true if the call is successfully received; otherwise false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
for an unsuccessful call returns one of: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorvode 104) Operation Not Supported (errorcode 106) |
statuscode | integer. If result is false, statuscode can
return: 32 Not Authorized 33 AssetManager_Not_Found If no Account Provider is located, statuscode returns null. |
GetWithdrawTemplateTypes
Category: System
Permissions: Operator, Withdraw
Call
Type: Synchronous
Returns a list of template names that are appropriate to the product (asset) named in the Request. To obtain the key-value pairs of the template itself, call GetWithdrawTemplate with the template name you obtain here.
Users with Withdraw permission can get a withdraw template type suitable only for their accounts and permitted products. Users with Operator permission can get template types suitable for any account and product.
Request
{
"OMSId": 1,
"ProductId": 1
}
The system "knows" what Account Provider templates are suitable to your account and product permissions.
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System from which you plan to make the withdrawal. |
ProductId | integer. The ID of the product (asset) that you plan to withdraw. |
Response
{
"TemplateTypes": [
"Standard"
],
"AccountProviderName": "",
"result": false,
"errormsg": "",
"statuscode": 0
}
Key | Value |
---|---|
TemplateTypes | array of strings. An array of the names of the templates that are appropriate to the withdrawal of your asset, account, and Order Management System. If the call was unsuccessful, TemplateTypes may return an empty array. |
AccountProviderName | string. The name of the account provider for the template. |
result | Boolean. If the call has been successfully received by the Order Management System, returns true; otherwise returns false. |
errormsg | string. A successful receipt of the call returns null. The errormsg
key for an unsuccessful call can return: Not Authorized (errorcode 20) Invalid Request (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104) Operation Not Supported (errorcode 106) |
errorcode | integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list. |
statuscode | integer. If result is false, statuscode can
return: 32 Not Authorized 33 Asset_Manager_Not_Found If not account provider is located, statuscode returns null. |
GetWithdrawTicket
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns a single withdrawal ticket that matches all values in the Request. No optional fields; partial matches are not returned.
Request
{
"OMSId": 1,
"AccountId": 1,
"RequestCode": "1d3d01eb-9e7b-47e0-9056-db420bf157ee"
}
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System through which the withdrawal was made. |
AccountId | integer. The ID of the Account from which the withdrawal was made. |
RequestCode | string. The GUID assigned by the system to the withdraw ticket on creation. The call GetWithdrawTickets can return a set of RequestCode values to allow you to zero-in on an unknown ticket RequestCode. |
Response
{
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"assetName": "",
"amount": 0.0,
"templateForm": "{
“TemplateType”: “TetherRPCWithdraw”,
“Comment”: “TestWithdraw”,
“ExternalAddress”: “ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3”,
}",
"templateFormType": "ThetherRPCWithdraw",
"omsId": 0,
"requestCode": "490b4fa3-53fc-44f4-bd29-7e16be86fba3",
"requestIP": "",
"requestUserId": 0,
"requestUserName": "",
"operatorId": 0,
"Status": 0,
"feeAmt": 0.0,
"updatedByUser": 0,
"updatedByUserName": "",
"ticketNumber": 0,
"createdTimestamp": "0001-01-01T00:00:00",
"lastUpdateTimestamp": "0001-01-01T00:00:00",
"Comments": "[
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "",
"ticketId": 0
}
]",
"Attachments": "[
{
"attachmentId": 0,
"submittedByUserId": 0,
"submittedByUserName": "",
"uploadDate": "0001-01-01T00:00:00",
"uploadIP": "",
"ticketNumber": 0
}
]",
"AuditLog": "[]"
}
Key | Value |
---|---|
assetManagerId | integer. The ID of the Asset Manager through which the withdrawal was made. |
accountId | integer. The ID of the account that made the withdrawal. |
assetId | integer. The ID of the asset (product) that was withdrawn. Withdrawal fees (if any) are usually assessed in the same asset that was withdrawn. |
assetName | string. The short name of the asset. For example, BTC for BitCoin or USD for US Dollars. |
amount | real. The number of units or fractions of units of the asset that were withdrawn (not the asset's monetary value). For example, 2.5 BitCoin or 2018.00 US Dollars. |
templateForm | JSON string object. The contents of the template form vary from Account Provider to Account Provider depending on the asset being withdrawn and the identity of the Account Provider. The Response returns this information as a string, not an object. |
templateFormType | string. The name of the template being used. Templates vary from Account Provider to Account Provider. |
omsId | integer. The ID of the Order Management System on which the withdrawal was made. |
requestCode | string. A globally unique identifier (GUID) that identifies this specific withdrawal. |
requestIP | string. The IP address from which the withdrawal was initiated. |
requestUserId | integer. The user ID of the user who submitted the withdrawal. |
requestUserName | string. The user name of the user who submitted the withdrawal. For example, jsmith. |
operatorId | integer. The ID of the administrator (operator) who processed the withdrawal. Withdrawals of cryptocurrency are handled automatically; withdrawals of fiat (national) currency are approved by a human operator. |
Status | integer. The current status of the withdrawal ticket. Some of these statuses are valid
only for cryptocurrency withdrawals, which uses an automated withdrawal process, and some are valid for
fiat currency withdrawals, which requires a human admin (operator). Some of these statuses are used by
GreenX internally, yet they may appear on a returned Withdraw Ticket. Withdraw ticket statuses: 0 New (awaiting operator review) 1 AdminProcessing (An admin is looking at the ticket) 2 Accepted (withdrawal will proceed) 3 Rejected (admin or automatic rejection) 4 SystemProcessing (automatic processing underway) 5 FullyProcessed (the withdrawal has concluded) 6 Failed (the withdrawal failed for some reason) 7 Pending (the admin has placed the withdrawal in pending status) 8 Pending2Fa (user must click 2-factor authentication confirmation link) 9 AutoAccepted (withdrawal will be automatically processed) 10 Delayed (waiting for funds to be allocated for the withdrawal) 11 UserCanceled (withdraw canceled by user or Superuser) 12 AdminCanceled (withdraw canceled by Superuser) 13 AmlProcessing (anti-money-laundering process underway) 14 AmlAccepted (anti-money-laundering process complete) 15 AmlRejected (withdrawal did not stand up to anti-money-laundering process) 16 AmlFailed (withdrawal did not complete anti-money-laundering process) 17 LimitsAccepted (withdrawal meets limits for fiat or crypto asset) 18 LimitsRejected (withdrawal does not meet limits for fiat or crypto asset) 19 Submitted (withdrawal sent to Account Provider; awaiting blockchain confirmation) 20 Confirmed (Account Provider confirms that withdrawal is on the blockchain) 21 ManuallyConfirmed (admin has sent withdrawal via wallet or admin function directly; marks ticket as FullyProcessed; debits account) 22 Confirmed2Fa (user has confirmed withdraw via 2-factor authentication.) |
feeAmt | real. The amount of any fee that was charged for the withdrawal. feeAmt is always denominated in the asset or product that was withdrawn. |
updatedByUser | integer. The user ID of the most recent user who may have updated the withdrawal ticket. This user is usually an admin (operator). |
updatedByUserName | string. The user name of the most recent user who may have updated the withdrawal ticket. This user is usually an admin (operator). |
ticketNumber | integer. The number of the ticket, as assigned by the system. |
createdTimeStamp | string. The time and date when the withdrawal ticket was created, in Microsoft Ticks format. All times and dates are UTC. |
lastUpdateTimeStamp | string. The time and date when the withdrawal ticket was last updated, in Microsoft Ticks format. All times and dates are UTC. |
Comments | array of JSON string objects. An array of key-value pairs appended as comments to the withdrawal ticket. See Comments example. |
Attachments | array of JSON string objects. An array of any attachments appended to the withdrawal ticket. See Attachments example. |
AuditLog | array of JSON string objects. Reserved for future use. |
Comments Example
Comments Example
"Comments":"[
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "",
"ticketId": 0
}
]",
Comments appear as an array.
Key | Value |
---|---|
commentId | integer. The ID assigned to the comment by the system. |
enteredBy | integer. The ID of the user who entered the comment. |
enteredDateTime | string. The time and date that the comment was entered, in Microsoft Ticks format. All times and dates are UTC. |
comment | string. The text of the comment. |
operatorId | integer. The ID of the admin (operator) making the comment. |
omsId | integer. The ID of the Order Management System where the withdrawal ticket and comment were created. (They are unlikely to be different). |
ticketCode | string. A globally unique ID (GUID) assigned by the system that identifies the ticket. |
ticketId | integer. The ID of the ticket as assigned by the system. |
Attachments Example
Attachments Example
"Attachments":"[
{
"attachmentId": 0,
"submittedByUserId": 0,
"submittedByUserName": "",
"uploadDate": "0001-01-01T00:00:00",
"uploadIP": "",
"ticketNumber": 0
}
]",
Any attachments appear as an array.
Key | Value |
---|---|
attachmentId | integer. The ID assigned to the attachment by the system. |
submittedByUserId | integer. The user ID of the person who added the attachment to the withdrawal ticket. |
submittedByUserName | integer. The user name of the person who submitted the attachment. |
uploadDate | string. The date and time that the attachment was uploaded, in Microsoft Ticks format. All times and dates are UTC. |
uploadIP | string. The IP address from which the attachment was uploaded. |
ticketNumber | long integer. The number of the withdrawal ticket, as assigned by the system. |
GetWithdrawTickets
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Returns a limited array of withdrawal tickets from the specified Order Management System and account.
GetWithdrawTickets is usable with Operator and Trading permissions. It returns tickets from a single account. A similar call, GetAllWithdrawTickets, can be used only with Operator permission and returns tickets from all accounts.
Request
{
"OMSId": 1,
"AccountId": 1,
"StartIndex": 0,
"Limit": 200
}
The key-value pairs StartIndex and Limit are optional. The oldest ticket is ticket 0. This differs from other calls where the newest ticket is ticket 0. The value of StartIndex is a pointer into the stream of withdrawal tickets, and the value of Limit shows how far into the past (towards ticket 0) to return tickets. For example, if there are 1500 current tickets (oldest ticket 0 through newest ticket 1499), StartIndex = 100, and Limit = 100; then GetWithdrawTickets would return ticket numbers 1399 through 1300.
Key | Value |
---|---|
OMSId | integer. The ID of the Order Management System where the withdrawal tickets reside. |
AccountId | integer. The ID of the account from which the withdrawals were made. A user with Operator permission can return withdrawal tickets for any account; a user with Trading permission can return withdrawal tickets only for an account with which that user is associated. |
StartIndex | integer. OPTIONAL A pointer into the stream of withdrawal tickets. The oldest ticket is ticket 0. The default value for StartIndex is 0. |
Limit | integer. OPTIONAL The number of withdrawal tickets to return, beginning at the ticket marked by StartIndex. The default value for Limit is 200. |
Response
[
{
"assetManagerId": 0,
"accountId": 0,
"assetId": 0,
"assetName": "",
"amount": 0.0,
"templateForm": "{
“TemplateType”: “TetherRPCWithdraw”,
“Comment”: “TestWithdraw”,
“ExternalAddress”: “ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3”,
}",
"templateFormType": "ThetherRPCWithdraw",
"omsId": 0,
"requestCode": "490b4fa3-53fc-44f4-bd29-7e16be86fba3",
"requestIP": "",
"requestUserId": 0,
"requestUserName": "",
"operatorId": 0,
"Status": 0,
"feeAmt": 0.0,
"updatedByUser": 0,
"updatedByUserName": "",
"ticketNumber": 0,
"createdTimestamp": "0001-01-01T00:00:00",
"lastUpdateTimestamp": "0001-01-01T00:00:00",
"Comments": "[
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "",
"ticketId": 0
}
]",
"Attachments": "[
{
"attachmentId": 0,
"submittedByUserId": 0,
"submittedByUserName": "",
"uploadDate": "0001-01-01T00:00:00",
"uploadIP": "",
"ticketNumber": 0
}
]",
"AuditLog": "[]"
}
]
The Response is an array of detail information about the withdrawal.
Key | Value |
---|---|
assetManagerId | integer. The ID of the Asset Manager through which the withdrawal was made. |
accountId | integer. The ID of the account that made the withdrawal. |
assetId | integer. The ID of the asset (product) that was withdrawn. Withdrawal fees (if any) are usually assessed in the same asset that was withdrawn. |
assetName | string. The short name of the asset. For example, BTC for BitCoin or USD for US Dollars. |
amount | real. The number of units or fractions of units of the asset that were withdrawn (not the asset's monetary value). For example, 2.5 BitCoin or 2018.00 US Dollars. |
templateForm | JSON string object. The contents of the template form vary from Account Provider to Account Provider depending on the asset being withdrawn and the identity of the Account Provider. The Response returns this information as a string. |
templateFormType | string. The name of the template being used. Templates vary from Account Provider to Account Provider. |
omsId | integer. The ID of the Order Management System on which the withdrawal was made. |
requestCode | string. A globally unique identifier (GUID) that identifies this specific withdrawal. |
requestIP | string. The IP address from which the withdrawal was initiated. |
requestUserId | integer. The user ID of the user who submitted the withdrawal. |
requestUserName | string. The user name of the user who submitted the withdrawal. For example, jsmith. |
operatorId | integer. The ID of the administrator (operator) who processed the withdrawal. Withdrawals of cryptocurrency are handled automatically; withdrawals of fiat (national) currency are approved by a human operator. |
Status | integer. The current status of the withdrawal ticket. Some of these statuses are valid
only for cryptocurrency withdrawals, which uses an automated withdrawal process, and some are valid for
fiat currency withdrawals, which requires a human admin (operator). Some of these statuses are used by
GreenX internally, yet they may appear on a returned Withdraw Ticket. Withdraw ticket statuses: 0 New (awaiting operator review) 1 AdminProcessing (An admin is looking at the ticket) 2 Accepted (withdrawal will proceed) 3 Rejected (admin or automatic rejection) 4 SystemProcessing (automatic processing underway) 5 FullyProcessed (the withdrawal has concluded) 6 Failed (the withdrawal failed for some reason) 7 Pending (the admin has placed the withdrawal in pending status) 8 Pending2Fa (user must click 2-factor authentication confirmation link) 9 AutoAccepted (withdrawal will be automatically processed) 10 Delayed (waiting for funds to be allocated for the withdrawal) 11 UserCanceled (withdraw canceled by user or Superuser) 12 AdminCanceled (withdraw canceled by Superuser) 13 AmlProcessing (anti-money-laundering process underway) 14 AmlAccepted (anti-money-laundering process complete) 15 AmlRejected (withdrawal did not stand up to anti-money-laundering process) 16 AmlFailed (withdrawal did not complete anti-money-laundering process) 17 LimitsAccepted (withdrawal meets limits for fiat or crypto asset) 18 LimitsRejected (withdrawal does not meet limits for fiat or crypto asset) 19 Submitted (withdrawal sent to Account Provider; awaiting blockchain confirmation) 20 Confirmed (Account Provider confirms that withdrawal is on the blockchain) 21 ManuallyConfirmed (admin has sent withdrawal via wallet or admin function directly; marks ticket as FullyProcessed; debits account) 22 Confirmed2Fa (user has confirmed withdraw via 2-factor authentication.) |
feeAmt | real. The amount of any fee that was charged for the withdrawal. feeAmt is always denominated in the asset or product that was withdrawn. |
updatedByUser | integer. The user ID of the most recent user who may have updated the withdrawal ticket. This user is usually an admin (operator). |
updatedByUserName | string. The user name of the most recent user who may have updated the withdrawal ticket. This user is usually an admin (operator). |
ticketNumber | integer. The number of the ticket, as assigned by the system. |
createdTimeStamp | string. The time and date when the withdrawal ticket was created, in Microsoft Ticks format. All times and dates are UTC. |
lastUpdateTimeStamp | string. The time and date when the withdrawal ticket was last updated, in Microsoft Ticks format. All times and dates are UTC. |
Comments | array of JSON string objects. An array of key-value pairs appended as comments to the withdrawal ticket. See Comments example. |
Attachments | array of JSON string objects. An array of any attachments appended to the withdrawal ticket. See Attachments example. |
AuditLog | array of JSON string objects. Reserved for future use. |
Comments Example
Comments Example
"Comments":"[
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "",
"ticketId": 0
}
]",
Comments appear as an array.
Key | Value |
---|---|
commentId | integer. The ID assigned to the comment by the system. |
enteredBy | integer. The ID of the user who entered the comment. |
enteredDateTime | string. The time and date that the comment was entered, in Microsoft Ticks format. All times and dates are UTC. |
comment | string. The text of the comment. |
operatorId | integer. The ID of the admin (operator) making the comment. |
omsId | integer. The ID of the Order Management System where the withdrawal ticket and comment were created. (They are unlikely to be different). |
ticketCode | string. A globally unique ID (GUID) assigned by the system that identifies the ticket. |
ticketId | integer. The ID of the ticket as assigned by the system. |
Attachments Example
Attachments Example
"Attachments":"[
{
"attachmentId":0,
"submittedByUserId":0,
"submittedByUserName":"",
"uploadDate":"0001-01-01T00:00:00",
"uploadIP":"",
"ticketNumber":0
}
]",
Any attachments appear as an array.
Key | Value |
---|---|
attachmentId | integer. The ID assigned to the attachment by the system. |
submittedByUserId | integer. The user ID of the person who added the attachment to the withdrawal ticket. |
submittedByUserName | integer. The user name of the person who submitted the attachment. |
uploadDate | string. The date and time that the attachment was uploaded, in Microsoft Ticks format. All times and dates are UTC. |
uploadIP | string. The IP address from which the attachment was uploaded. |
ticketNumber | long integer. The number of the withdrawal ticket, as assigned by the system. |
SubmitDepositTicketComment
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Creates a comment and attaches that comment to a specific deposit ticket.
Request
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "43d1a9f0-8dc3-46f9-b457-297c800d8c9c",
"ticketId": 0
}
Key | Value |
---|---|
commentId | integer. The ID of this specific comment. In the Request, set this to 0. The Response supplies the system-assigned value for commentId. |
enteredBy | integer. The user ID of the user making the comment. If an operator (admin) is making the request, this should be the generic user ID of the admin (not the operator ID). |
enteredDateTime | string. The date and time that the comment was created, in Microsoft Ticks format and UTC time. |
comment | string. The comment string itself. |
operatorId | integer. The ID of an operator (admin) making the comment. The value for operatorId should be available programmatically from the ticket being commented. |
omsId | integer. The ID of the Order Management System on which the deposit is being made. |
ticketCode | string. A GUID (globally unique identifier) that identifies the deposit ticket to which the comment is attached. The value for ticketCode should be available programmatically from the ticket being commented. |
ticketId | integer. An ID assigned by the system to the ticket. You can obtain this value from the calls CreateDepositTicket, GetAllDepositTickets, GetDepositTicket, and GetDepositTickets. In all these calls, the key is named ticketNumber. |
Response
{
"success": true,
"commentid": 10000002
}
Key | Value |
---|---|
success | Boolean. A true value means that the comment has been successfully attached to the deposit ticket; false means that it has not been attached. |
commentId | integer. The ID assigned by the system to this specific comment. |
SubmitWithdrawTicketComment
Category: System
Permissions: Operator, Trading
Call
Type: Synchronous
Creates a comment and attaches that comment to a specific withdrawal ticket.
Request
{
"commentId": 0,
"enteredBy": 0,
"enteredDateTime": "0001-01-01T00:00:00",
"comment": "",
"operatorId": 0,
"omsId": 0,
"ticketCode": "43d1a9f0-8dc3-46f9-b457-297c800d8c9c",
"ticketId": 0
}
Key | Value |
---|---|
commentId | integer. The ID of this specific comment. In the Request, set this to 0. The Response supplies the system-assigned value for commentId. |
enteredBy | integer. The user ID of the user making the comment. If an operator (admin) is making the request, this should be the generic user ID of the admin (not the operator ID). |
enteredDateTime | string. The date and time that the comment was created, in Microsoft Ticks format and UTC time. |
comment | string. The comment string itself. |
operatorId | integer. The ID of an operator (admin) making the comment. The value for operatorId should be available programmatically from the ticket being commented. |
omsId | integer. The ID of the Order Management System on which the withdrawal is being made. |
ticketCode | string. A GUID (globally unique identifier) that identifies the withdrawal ticket to which the comment is attached. The value for ticketCode should be available programmatically from the ticket being commented. |
ticketId | integer. An ID assigned by the system to the ticket. You can obtain this value from the calls GetWithdrawTicket, GetAllWithdrawTickets, and GetWithdrawTickets. In all these calls, the key is named ticketNumber. |
Response
{
"success": true,
"commentid": 10000002
}
Key | Value |
---|---|
success | Boolean. A true value means that the comment has been successfully attached to the withdrawal ticket; false means that it has not been attached. |
commentId | integer. The ID assigned by the system to this specific comment. |
Miscellaneous
These are User-category calls that don't fit well into the Admin Guide organization.
Ping
Category: User
Permissions: Public
Call Type:
Synchronous
Used to keep a connection alive.
Request
{ }
Ping requires no payload.
Response
{
"msg": "PONG"
}
Response is PONG.
Key | Value |
---|---|
msg | string. PONG |