Changelog
v20.0.0
devnet:
mainnet:
This release activates RFQ markets on mainnet and makes fee configuration aware of market type and execution mode. Existing CLOB order placement remains compatible, but RFQ, fee-administration, liquidation, and raw protobuf integrations must migrate to the v20 shapes below.
- BREAKING protobuf, RFQ requests:
RfqPlaceOnly.baseand the nestedFillTypeandPartialFillmessages are removed. Sendsize, optionalminimal_fill, and optionalis_reduce_onlydirectly onRfqPlaceOnly.RfqTradenow carries optionalminimum_size,maximum_size, andis_reduce_onlydirectly. - BREAKING protobuf, RFQ results:
RfqFillStatusandFillRFQResult.statusare removed. Determine whether a real execution occurred from the optionalexecutionpayload. Sampling responses omit it. - BREAKING protobuf, fee administration: replace
AddFeeTier,UpdateFeeTier, andUpdateAccountsTierwithAddFeeTierType,UpdateFeeTierType, andUpdateAccountsFeeTierTypeMode. The replacementFeeTierTypeConfighas separate CLOB and RFQ maker and taker rates for each market type. Regenerate protobuf bindings because the new action and receipt cases use new field numbers. - BREAKING protobuf, liquidations:
TakeAllPositionsResultnow contains a repeatedtakerslist. Each taker entry contains its account ID, balances, positions, and order updates. Consumers must iterate the list instead of reading one top-level taker. - protobuf:
SetBackstopAccountand its receipt now includemarket_mode, and theErrorenum addsCONFIG. - API: market-live responses can include separate
rfqandclobsections. Historical order rows now includeclientOrderId, andGET /account/{account_id}/orders/openreturns current open-order history records. These additions do not remove the existing account or market routes. - BREAKING TypeScript SDK: RFQ partial-fill sizes are decimal values,
NordUser.takePositions()returnstakers, and fee-tier admin methods use the new market-type-aware protobuf actions. Upgrade to@n1xyz/nord-ts@0.7.4before submitting v20 RFQ, liquidation, or fee-administration actions.
To migrate, regenerate protobuf code from the v20 schema, update exhaustive action and receipt switches for the new cases, replace the removed RFQ wrapper messages, and add fixtures for multi-taker liquidation receipts. Applications that only read existing CLOB account, market, orderbook, and WebSocket fields do not need a wire-format migration.
nord-ts version: 0.7.4
v19.0.0
devnet:
mainnet:
This release includes breaking changes to atomic actions as well as backend support for our upcoming RFQ feature.
- BREAKING protobuf: Atomic V2 is removed.
Action.atomic_v2,AtomicV2,AtomicSubactionV2, andAtomicPlacementRequestare no longer available. Regenerate your protobuf bindings and sendAction.atomic.- Put each
AtomicSubactiondirectly inAtomic.actions. - Replace
delegator_account_idwithtarget_account_id. (field number remains32) - Move
ReduceOrderLiquidation.target_account_idto its parentAtomicSubaction. - For self-targeted actions, omit
target_account_idanduse_key. - For vault actions, use
vault_account_idas the target and setuse_key = true. - For liquidation actions, use the liquidation account ID as the target and leave
use_keyunset orfalse.
- Put each
- BREAKING protobuf:
VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLEis removed from theErrorenum. - protobuf:
SpecialAccountnow includesCLAIM_VAULT.VaultSyncEpochsReceiptnow includesvault_account_id. - BREAKING ts: Atomic subactions now use
targetAccountIdanduseKey. RemovedelegatorAccountIdandplacement. - BREAKING ts: Use
await nord.getProtonClient(). Direct access throughnord.protonClientis no longer available. Proton initialization now starts on first use. - BREAKING api:
GET /account/systemnow returns{ actionId, feeVault, claimVault }. It previously returned the fee-vault balance array. - api: Trade and order history responses now include
marketMode. - ws: Account
fillskeys now useorderId:makerId:rawPrice. Code that readsObject.values(fills)continues to work. Code that looks up fills by key must change.
nord-ts version: 0.7.3
v18.0.0
devnet:
mainnet:
- BREAKING: api:
GET /account/{account_id}now returns open-orderclientOrderIdasstring | nullinstead ofnumber | null. - BREAKING: api: WebSocket
client_order_id,taker_client_order_id[], and deprecatedsender_tracking_idvalues now serialize as numeric strings instead of numbers. - Added
RefreshSessionto allow a session to refresh itself up to some maximum deadline while maintaining the same session ID. - Added
SelfRevoketo allow a session to revoke itself. CreateSessionnow accepts an optionalrefresh_deadlineparameter and returns the effective expiry and refresh deadline.- ts:
NordUser.refreshSession()now returns{ sessionId, expiry, refreshDeadline? }instead ofvoid. - api:
GET /user/{pubkey}session objects now include optionalrefreshDeadline.
nord-ts version: 0.7.0 to 0.7.2
v17.0.0
devnet:
mainnet:
- atomic actions are expanding: trigger add/edit/remove is moving into atomic actions
- trigger history pagination now supports sub_action_id
- increased action timestamp staleness threshold from 60s to 120s
- relaxed oracle unfreeze price-change threshold from 0.5% to ~1.33% per timestamp unit
- added referrer tracking, i.e. builder codes
- added taker-side client order ID to WebSocket messages
- rate now has two buckets:
/actionand all other endpoints. we will be announcing new rate limits as we adjust them - introduced vaults. see docs for api. briefly:
- HTTP:
GET /vaults/*GET /account/{account_id}/vault-user-statesGET /account/{account_id}/history/vault/*
- WS:
- subscribe with
vault@{vault_id} - receives Vault update payload with latest full vault state
- subscribe with
nord-ts v0.5.1:
- adds centralized math utilities and updated trading function types
- adds trigger add/edit/remove support in atomics
nord-ts v0.6.0:
- introduces ActionsV2 with the new placement interface instead of delegator_id
- placement must now be explicit, see the module docs
- user actions for deposit and withdrawing to/from vaults
- on refresh session you can specify expiry timestamp
both v0.5.1 and v0.6.0 are compatbile with v17 of nord.