Skip to content

Commit 2a62575

Browse files
committed
include error message, code, and request success flag in the api responses.
1 parent ff35a38 commit 2a62575

7 files changed

Lines changed: 67 additions & 56 deletions

File tree

src/rest/account/account.api.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
import type { HttpClient } from '../http-client';
2-
import type {
3-
Account,
4-
SearchAccountsRequest,
5-
SearchAccountsResponse,
6-
} from './types';
1+
import type { HttpClient } from "../http-client";
2+
import type { SearchAccountsRequest, SearchAccountsResponse } from "./types";
73

84
export class AccountApi {
95
constructor(private readonly http: HttpClient) {}
106

11-
async search(request: SearchAccountsRequest): Promise<Account[]> {
7+
async search(
8+
request: SearchAccountsRequest,
9+
): Promise<SearchAccountsResponse> {
1210
const response = await this.http.post<
1311
SearchAccountsRequest,
1412
SearchAccountsResponse
15-
>('/api/Account/search', request);
16-
return response.accounts;
13+
>("/api/Account/search", request);
14+
return response;
1715
}
1816
}

src/rest/contract/contract.api.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
1-
import type { HttpClient } from '../http-client';
1+
import type { HttpClient } from "../http-client";
22
import type {
3-
Contract,
43
SearchContractsRequest,
54
SearchContractsResponse,
65
SearchContractByIdRequest,
76
SearchContractByIdResponse,
8-
} from './types';
7+
} from "./types";
98

109
export class ContractApi {
1110
constructor(private readonly http: HttpClient) {}
1211

13-
async search(request: SearchContractsRequest): Promise<Contract[]> {
12+
async search(
13+
request: SearchContractsRequest,
14+
): Promise<SearchContractsResponse> {
1415
const response = await this.http.post<
1516
SearchContractsRequest,
1617
SearchContractsResponse
17-
>('/api/Contract/search', request);
18-
return response.contracts;
18+
>("/api/Contract/search", request);
19+
return response;
1920
}
2021

2122
async searchById(
22-
request: SearchContractByIdRequest
23-
): Promise<Contract | null> {
23+
request: SearchContractByIdRequest,
24+
): Promise<SearchContractByIdResponse | null> {
2425
const response = await this.http.post<
2526
SearchContractByIdRequest,
2627
SearchContractByIdResponse
27-
>('/api/Contract/searchById', request);
28-
return response.contract;
28+
>("/api/Contract/searchById", request);
29+
return response;
2930
}
3031
}

src/rest/history/history.api.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import type { HttpClient } from '../http-client';
2-
import type { Bar, RetrieveBarsRequest, RetrieveBarsResponse } from './types';
1+
import type { HttpClient } from "../http-client";
2+
import type { RetrieveBarsRequest, RetrieveBarsResponse } from "./types";
33

44
export class HistoryApi {
55
constructor(private readonly http: HttpClient) {}
66

7-
async retrieveBars(request: RetrieveBarsRequest): Promise<Bar[]> {
7+
async retrieveBars(
8+
request: RetrieveBarsRequest,
9+
): Promise<RetrieveBarsResponse> {
810
const response = await this.http.post<
911
RetrieveBarsRequest,
1012
RetrieveBarsResponse
11-
>('/api/History/retrieveBars', request);
12-
return response.bars;
13+
>("/api/History/retrieveBars", request);
14+
return response;
1315
}
1416
}

src/rest/order/order.api.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import type { HttpClient } from '../http-client';
1+
import type { HttpClient } from "../http-client";
22
import type {
3-
Order,
43
PlaceOrderRequest,
54
PlaceOrderResponse,
65
SearchOrdersRequest,
@@ -10,7 +9,8 @@ import type {
109
CancelOrderResponse,
1110
ModifyOrderRequest,
1211
ModifyOrderResponse,
13-
} from './types';
12+
SearchOpenOrdersResponse,
13+
} from "./types";
1414

1515
/**
1616
* API for managing orders - place, cancel, modify, and search.
@@ -41,25 +41,27 @@ export class OrderApi {
4141
* @param request - Search parameters including accountId and optional date range
4242
* @returns Array of orders matching the search criteria
4343
*/
44-
async search(request: SearchOrdersRequest): Promise<Order[]> {
44+
async search(request: SearchOrdersRequest): Promise<SearchOrdersResponse> {
4545
const response = await this.http.post<
4646
SearchOrdersRequest,
4747
SearchOrdersResponse
48-
>('/api/Order/search', request);
49-
return response.orders;
48+
>("/api/Order/search", request);
49+
return response;
5050
}
5151

5252
/**
5353
* Get all currently open (working) orders for an account.
5454
* @param request - Request containing the accountId
5555
* @returns Array of open orders
5656
*/
57-
async searchOpen(request: SearchOpenOrdersRequest): Promise<Order[]> {
57+
async searchOpen(
58+
request: SearchOpenOrdersRequest,
59+
): Promise<SearchOpenOrdersResponse> {
5860
const response = await this.http.post<
5961
SearchOpenOrdersRequest,
60-
SearchOrdersResponse
61-
>('/api/Order/searchOpen', request);
62-
return response.orders;
62+
SearchOpenOrdersResponse
63+
>("/api/Order/searchOpen", request);
64+
return response;
6365
}
6466

6567
/**
@@ -91,8 +93,8 @@ export class OrderApi {
9193
*/
9294
async place(request: PlaceOrderRequest): Promise<PlaceOrderResponse> {
9395
return this.http.post<PlaceOrderRequest, PlaceOrderResponse>(
94-
'/api/Order/place',
95-
request
96+
"/api/Order/place",
97+
request,
9698
);
9799
}
98100

@@ -103,8 +105,8 @@ export class OrderApi {
103105
*/
104106
async cancel(request: CancelOrderRequest): Promise<CancelOrderResponse> {
105107
return this.http.post<CancelOrderRequest, CancelOrderResponse>(
106-
'/api/Order/cancel',
107-
request
108+
"/api/Order/cancel",
109+
request,
108110
);
109111
}
110112

@@ -115,8 +117,8 @@ export class OrderApi {
115117
*/
116118
async modify(request: ModifyOrderRequest): Promise<ModifyOrderResponse> {
117119
return this.http.post<ModifyOrderRequest, ModifyOrderResponse>(
118-
'/api/Order/modify',
119-
request
120+
"/api/Order/modify",
121+
request,
120122
);
121123
}
122124
}

src/rest/order/types.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { OrderType, OrderSide, OrderStatus } from '../../types/enums';
1+
import type { OrderType, OrderSide, OrderStatus } from "../../types/enums";
22

33
export interface Order {
44
id: number;
@@ -51,6 +51,13 @@ export interface SearchOpenOrdersRequest {
5151
accountId: number;
5252
}
5353

54+
export interface SearchOpenOrdersResponse {
55+
orders: Order[];
56+
success: boolean;
57+
errorCode: number;
58+
errorMessage: string | null;
59+
}
60+
5461
export interface CancelOrderRequest {
5562
accountId: number;
5663
orderId: number;

src/rest/position/position.api.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,39 @@
1-
import type { HttpClient } from '../http-client';
1+
import type { HttpClient } from "../http-client";
22
import type {
3-
Position,
43
SearchOpenPositionsRequest,
54
SearchOpenPositionsResponse,
65
ClosePositionRequest,
76
ClosePositionResponse,
87
PartialClosePositionRequest,
98
PartialClosePositionResponse,
10-
} from './types';
9+
} from "./types";
1110

1211
export class PositionApi {
1312
constructor(private readonly http: HttpClient) {}
1413

15-
async searchOpen(request: SearchOpenPositionsRequest): Promise<Position[]> {
14+
async searchOpen(
15+
request: SearchOpenPositionsRequest,
16+
): Promise<SearchOpenPositionsResponse> {
1617
const response = await this.http.post<
1718
SearchOpenPositionsRequest,
1819
SearchOpenPositionsResponse
19-
>('/api/Position/searchOpen', request);
20-
return response.positions;
20+
>("/api/Position/searchOpen", request);
21+
return response;
2122
}
2223

2324
async close(request: ClosePositionRequest): Promise<ClosePositionResponse> {
2425
return this.http.post<ClosePositionRequest, ClosePositionResponse>(
25-
'/api/Position/closeContract',
26-
request
26+
"/api/Position/closeContract",
27+
request,
2728
);
2829
}
2930

3031
async partialClose(
31-
request: PartialClosePositionRequest
32+
request: PartialClosePositionRequest,
3233
): Promise<PartialClosePositionResponse> {
3334
return this.http.post<
3435
PartialClosePositionRequest,
3536
PartialClosePositionResponse
36-
>('/api/Position/partialCloseContract', request);
37+
>("/api/Position/partialCloseContract", request);
3738
}
3839
}

src/rest/trade/trade.api.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import type { HttpClient } from '../http-client';
2-
import type { Trade, SearchTradesRequest, SearchTradesResponse } from './types';
1+
import type { HttpClient } from "../http-client";
2+
import type { SearchTradesRequest, SearchTradesResponse } from "./types";
33

44
export class TradeApi {
55
constructor(private readonly http: HttpClient) {}
66

7-
async search(request: SearchTradesRequest): Promise<Trade[]> {
7+
async search(request: SearchTradesRequest): Promise<SearchTradesResponse> {
88
const response = await this.http.post<
99
SearchTradesRequest,
1010
SearchTradesResponse
11-
>('/api/Trade/search', request);
12-
return response.trades;
11+
>("/api/Trade/search", request);
12+
return response;
1313
}
1414
}

0 commit comments

Comments
 (0)