diff --git a/apps/frontend/src/api/responses.ts b/apps/frontend/src/api/responses.ts index d69e9f4..0dd5305 100644 --- a/apps/frontend/src/api/responses.ts +++ b/apps/frontend/src/api/responses.ts @@ -281,6 +281,12 @@ export interface BrokerPosition { export interface BrokerPortfolio { account: BrokerAccount; + positionCounts: { + shares: number; + bonds: number; + etf: number; + other: number; + }; totals: { shares: BrokerMoney | null; bonds: BrokerMoney | null; diff --git a/apps/frontend/src/api/types.ts b/apps/frontend/src/api/types.ts index b7bbec6..c551319 100644 --- a/apps/frontend/src/api/types.ts +++ b/apps/frontend/src/api/types.ts @@ -417,6 +417,23 @@ export interface paths { patch?: never; trace?: never; }; + '/api/v1/broker/accounts/{accountId}/positions': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Get paginated T-Bank broker account positions */ + get: operations['TBankController_getPositions']; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; '/api/v1/broker/accounts/{accountId}/operations': { parameters: { query?: never; @@ -774,6 +791,12 @@ export interface components { data: components['schemas']['BrokerAccountResponseDto'][]; meta: components['schemas']['BrokerResponseMetaDto']; }; + BrokerPortfolioPositionCountsDto: { + shares: number; + bonds: number; + etf: number; + other: number; + }; BrokerMoneyDto: { currency: string; units: string; @@ -796,6 +819,19 @@ export interface components { daily: components['schemas']['BrokerMoneyDto'] | null; dailyPercent: Record | null; }; + BrokerPortfolioResponseDto: { + account: components['schemas']['BrokerAccountResponseDto']; + positionCounts: components['schemas']['BrokerPortfolioPositionCountsDto']; + totals: components['schemas']['BrokerPortfolioTotalsDto']; + yields: components['schemas']['BrokerPortfolioYieldsDto']; + cash: components['schemas']['BrokerMoneyDto'][]; + blockedCash: components['schemas']['BrokerMoneyDto'][]; + asOf: string; + }; + BrokerPortfolioEnvelopeDto: { + data: components['schemas']['BrokerPortfolioResponseDto']; + meta: components['schemas']['BrokerResponseMetaDto']; + }; BrokerPositionResponseDto: { figi: Record | null; instrumentUid: Record | null; @@ -812,17 +848,15 @@ export interface components { expectedYieldPercent: Record | null; dailyYield: components['schemas']['BrokerMoneyDto'] | null; }; - BrokerPortfolioResponseDto: { - account: components['schemas']['BrokerAccountResponseDto']; - totals: components['schemas']['BrokerPortfolioTotalsDto']; - yields: components['schemas']['BrokerPortfolioYieldsDto']; - cash: components['schemas']['BrokerMoneyDto'][]; - blockedCash: components['schemas']['BrokerMoneyDto'][]; - positions: components['schemas']['BrokerPositionResponseDto'][]; + BrokerPositionsPageResponseDto: { + accountId: string; + items: components['schemas']['BrokerPositionResponseDto'][]; + nextCursor: Record | null; + hasNext: boolean; asOf: string; }; - BrokerPortfolioEnvelopeDto: { - data: components['schemas']['BrokerPortfolioResponseDto']; + BrokerPositionsEnvelopeDto: { + data: components['schemas']['BrokerPositionsPageResponseDto']; meta: components['schemas']['BrokerResponseMetaDto']; }; BrokerOperationResponseDto: { @@ -835,6 +869,7 @@ export interface components { /** @enum {string} */ category: 'trade' | 'income' | 'tax' | 'fee' | 'transfer' | 'other'; description: Record | null; + name: Record | null; state: Record | null; instrumentUid: Record | null; figi: Record | null; @@ -1519,6 +1554,33 @@ export interface operations { }; }; }; + TBankController_getPositions: { + parameters: { + query?: { + /** @description Cursor for pagination (positionUid) */ + cursor?: string; + limit?: number; + /** @description Filter by instrument type (share, bond, etf, etc.) */ + type?: string; + }; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['BrokerPositionsEnvelopeDto']; + }; + }; + }; + }; TBankController_getOperations: { parameters: { query?: {