event | string | Yes | execution |
msgType | string | Yes | execution |
topic | string | Yes | execution |
seq | string | Yes | The stream position, as a decimal string — an int64 a JSON number would truncate. |
seqTs | string | Yes | The stream timestamp, epoch-ns as a decimal string. |
isSnapshot | boolean | Yes | One of true, false. |
snapshotId | string | No | Present on a snapshot part only, and the same on every part of one image; the next image of any topic carries a different one. Opaque — compare it for equality and nothing else. It is not a sequence, a version or a timestamp, and its shape may change; a client that ordered by it would be relying on how a member happens to mint it. Use it to keep two images apart. A repeat subscribe re-pushes the image — that is the resync, and there is no separate op — so a client can start image N+1 while N is still arriving, and without a name on each part it cannot tell which last: true closes which, nor stop a straggling part of N landing in the map N+1 just cleared. Discard any part whose snapshotId is not the one you are currently applying. |
part | integer | No | Present on a snapshot part only; 1-based. |
last | boolean | No | Present on a snapshot part only. The image is complete when true — including for an empty channel, which is still one part. |
data | array of objects | Yes | One fill, keyed by executionId. |
> executionId | string | Yes | |
> orderId | string, nullable | Yes | Null for a leg discovered at the venue before the platform bound it to an order. The row is restated with the id when attribution lands, and the upsert rule makes that a replacement rather than a duplicate. |
> accountId | integer | Yes | |
> account | string, nullable | Yes | |
> instrumentId | string | Yes | An instrument, by the platform’s own id — an int64 as a decimal string, because a JSON number cannot hold one. One id space across this wire and the HTTP lane, and the same one both order doors take: the id you read here is the id you send, on submitOrder and on POST /orders alike. It is the platform’s own reference-data key and nothing else’s. It is not a venue symbol, and it is not an id from any other system — in particular it does not equal an immix-api v2 Instrument.id, and there is no arithmetic that maps between them. A client holding v2 ids resolves through the symbol, once, at cutover: instrument beside this field carries the platform symbol (OKX@BTC/USDT), which is what both systems can be joined on. The id is the stable address and the symbol is the convenience: a symbol is reference data’s to change and this id is not. |
> instrument | string, nullable | Yes | |
> credentialId | integer | Yes | |
> side | string | Yes | One of UNKNOWN, BUY, SELL. |
> kind | string | Yes | One of UNKNOWN, FILL, BUST, CORRECTION. |
> liquidity | string, nullable | Yes | Null when the venue did not say. One of MAKER, TAKER. |
> qty | string | Yes | |
> px | string | Yes | |
> fee | string, nullable | Yes | Signed — a rebate is a negative fee. A fee is a fact once it names its asset, a stated zero included; only an unstated fee is null. |
> feeAssetId | integer, nullable | Yes | |
> feeAsset | string, nullable | Yes | |
> fillTsNs | string, nullable | Yes | |
> venueTsNs | string, nullable | Yes | |
> venueTradeId | string, nullable | Yes | |
> venueOrderId | string, nullable | Yes | |
> notionalUsd | string, nullable | Yes | qty x px converted at the quote asset’s USD rate. Null where the platform holds no current rate — null is NEVER the un-converted amount. |
> feeUsd | null | Yes | Always null in 1.0.0. The conversion is defined but the renderer for a signed 128-bit amount is not published yet, and a rounded fee would be a wrong number rather than a missing one. Read fee with feeAsset. When it starts carrying a value it will be a decimal string, which is an additive change to this type. |
> fxSource | string, nullable | Yes | The route the QUOTE asset’s USD rate took — the notional’s provenance. Null where the platform holds no current rate, which is also when notionalUsd is null: null is NEVER the un-converted amount. One of IDENTITY, DIRECT, CROSS, PEGGED. |