Skip to content

Commit 0813aa0

Browse files
committed
feat(): add amend keep priority wsapi, breaking change: rename amend/keep priority response interface
1 parent f531179 commit 0813aa0

File tree

6 files changed

+78
-17
lines changed

6 files changed

+78
-17
lines changed

src/main-client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ import {
434434
SpecialLowLatencyKeyInfo,
435435
SpecialLowLatencyKeyResponse,
436436
SpotAlgoOrder,
437-
SpotAmendKeepPriority,
437+
SpotAmendKeepPriorityResult,
438438
SpotOrder,
439439
StakingBasicParams,
440440
StakingHistory,
@@ -853,7 +853,7 @@ export class MainClient extends BaseRestClient {
853853
*/
854854
amendOrderKeepPriority(
855855
params: AmendKeepPriorityParams,
856-
): Promise<SpotAmendKeepPriority> {
856+
): Promise<SpotAmendKeepPriorityResult> {
857857
this.validateOrderId(params, 'newClientOrderId');
858858
return this.putPrivate('fapi/v1/order/amend/keepPriority', params);
859859
}

src/types/spot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ export interface SpotOrder {
886886
selfTradePreventionMode: SelfTradePreventionMode;
887887
}
888888

889-
export interface SpotAmendKeepPriority {
889+
export interface SpotAmendKeepPriorityResult {
890890
transactTime: number;
891891
executionId: number;
892892
amendedOrder: {

src/types/websockets/ws-api-requests.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,16 @@ export interface WSAPIOrderCancelReplaceRequest {
273273
timestamp?: number;
274274
}
275275

276+
export interface WSAPIOrderAmendKeepPriorityRequest {
277+
symbol: string;
278+
orderId?: number | string;
279+
origClientOrderId?: string;
280+
newClientOrderId?: string;
281+
newQty?: string;
282+
recvWindow?: number;
283+
timestamp: number;
284+
}
285+
276286
export interface WSAPIOpenOrdersStatusRequest {
277287
symbol?: string;
278288
recvWindow?: number;

src/types/websockets/ws-api.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
WSAPIMyTradesRequest,
2121
WSAPIOpenOrdersCancelAllRequest,
2222
WSAPIOpenOrdersStatusRequest,
23+
WSAPIOrderAmendKeepPriorityRequest,
2324
WSAPIOrderBookRequest,
2425
WSAPIOrderCancelReplaceRequest,
2526
WSAPIOrderCancelRequest,
@@ -138,6 +139,7 @@ export const WS_API_Operations = [
138139
'order.status',
139140
'order.cancel',
140141
'order.cancelReplace',
142+
'order.amend.keepPriority',
141143
'order.modify',
142144
'openOrders.status',
143145
'openOrders.cancelAll',
@@ -359,8 +361,9 @@ export interface WsAPITopicRequestParamMap<TWSKey = WsKey> {
359361
? WSAPIFuturesOrderCancelRequest
360362
: WSAPIOrderCancelRequest;
361363
'order.modify': WSAPIFuturesOrderModifyRequest; // order.modify only futures
362-
'order.cancelReplace': WSAPIOrderCancelReplaceRequest;
363364

365+
'order.cancelReplace': WSAPIOrderCancelReplaceRequest;
366+
'order.amend.keepPriority': WSAPIOrderAmendKeepPriorityRequest;
364367
'openOrders.status': WSAPIOpenOrdersStatusRequest;
365368
'openOrders.cancelAll': WSAPIOpenOrdersCancelAllRequest;
366369

src/util/requestUtils.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { BinanceBaseUrlKey, OrderIdProperty } from '../types/shared';
55
import { WsRequestOperationBinance } from '../types/websockets/ws-api';
66
import { USDMClient } from '../usdm-client';
77
import { signMessage } from './node-support';
8+
import { neverGuard } from './typeGuards';
89
import { SignAlgorithm, SignEncodeMethod } from './webCryptoAPI';
910
import {
1011
parseEventTypeFromMessage,
@@ -175,19 +176,37 @@ export function requiresWSAPINewClientOID(
175176
case WS_KEY_MAP.mainWSAPI2:
176177
case WS_KEY_MAP.mainWSAPITestnet:
177178
case WS_KEY_MAP.usdmWSAPI:
178-
case WS_KEY_MAP.usdmWSAPITestnet: {
179+
case WS_KEY_MAP.usdmWSAPITestnet:
180+
case WS_KEY_MAP.coinmWSAPI:
181+
case WS_KEY_MAP.coinmWSAPITestnet: {
179182
switch (request.method) {
180-
case 'order.place': {
183+
case 'order.place':
184+
case 'order.amend.keepPriority': {
181185
return true;
182186
}
183187
default: {
184188
return false;
185189
}
186190
}
187191
}
192+
case WS_KEY_MAP.main:
193+
case WS_KEY_MAP.main2:
194+
case WS_KEY_MAP.main3:
195+
case WS_KEY_MAP.mainTestnetPublic:
196+
case WS_KEY_MAP.mainTestnetUserData:
197+
case WS_KEY_MAP.marginRiskUserData:
198+
case WS_KEY_MAP.usdm:
199+
case WS_KEY_MAP.usdmTestnet:
200+
case WS_KEY_MAP.coinm:
201+
case WS_KEY_MAP.coinm2:
202+
case WS_KEY_MAP.coinmTestnet:
203+
case WS_KEY_MAP.eoptions:
204+
case WS_KEY_MAP.portfolioMarginUserData:
205+
case WS_KEY_MAP.portfolioMarginProUserData:
206+
return false;
188207

189208
default: {
190-
return false;
209+
throw neverGuard(wsKey, `Unhandled WsKey "${wsKey}"`);
191210
}
192211
}
193212
}

src/websocket-api-client.ts

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { ExchangeInfo, OrderResponse } from './types/spot';
1+
import {
2+
ExchangeInfo,
3+
OrderResponse,
4+
SpotAmendKeepPriorityResult,
5+
} from './types/spot';
26
import {
37
WSAPIResponse,
48
WSAPIUserDataListenKeyRequest,
@@ -26,6 +30,7 @@ import {
2630
WSAPINewSpotOrderRequest,
2731
WSAPIOpenOrdersCancelAllRequest,
2832
WSAPIOpenOrdersStatusRequest,
33+
WSAPIOrderAmendKeepPriorityRequest,
2934
WSAPIOrderBookRequest,
3035
WSAPIOrderCancelReplaceRequest,
3136
WSAPIOrderCancelRequest,
@@ -253,15 +258,6 @@ export class WebsocketAPIClient {
253258
);
254259
}
255260

256-
getSpotSessionStatus(
257-
wsKey?: WSAPIWsKeyMain,
258-
): Promise<WSAPIResponse<WSAPISessionStatus>> {
259-
return this.wsClient.sendWSAPIRequest(
260-
wsKey || WS_KEY_MAP.mainWSAPI,
261-
'session.status',
262-
);
263-
}
264-
265261
/*
266262
*
267263
* SPOT - Market data requests
@@ -458,6 +454,23 @@ export class WebsocketAPIClient {
458454
);
459455
}
460456

457+
/*
458+
*
459+
* SPOT - Session authentication requests
460+
*
461+
* Note: authentication is automatic
462+
*
463+
*/
464+
465+
getSpotSessionStatus(
466+
wsKey?: WSAPIWsKeyMain,
467+
): Promise<WSAPIResponse<WSAPISessionStatus>> {
468+
return this.wsClient.sendWSAPIRequest(
469+
wsKey || WS_KEY_MAP.mainWSAPI,
470+
'session.status',
471+
);
472+
}
473+
461474
/*
462475
*
463476
* SPOT - Trading requests
@@ -540,6 +553,22 @@ export class WebsocketAPIClient {
540553
);
541554
}
542555

556+
/**
557+
* Reduce the quantity of an existing open order.
558+
*
559+
* Read for more info: https://developers.binance.com/docs/binance-spot-api-docs/faqs/order_amend_keep_priority
560+
*/
561+
amendKeepPrioritySpotOrder(
562+
params: WSAPIOrderAmendKeepPriorityRequest,
563+
wsKey?: WSAPIWsKeyMain,
564+
): Promise<WSAPIResponse<SpotAmendKeepPriorityResult>> {
565+
return this.wsClient.sendWSAPIRequest(
566+
wsKey || WS_KEY_MAP.mainWSAPI,
567+
'order.amend.keepPriority',
568+
params,
569+
);
570+
}
571+
543572
/**
544573
* Query execution status of all open orders
545574
* Note: If you need to continuously monitor order status updates, consider using WebSocket Streams

0 commit comments

Comments
 (0)