diff --git a/src/shared/api/generated/schema.d.ts b/src/shared/api/generated/schema.d.ts index 7f76b34..3a17015 100644 --- a/src/shared/api/generated/schema.d.ts +++ b/src/shared/api/generated/schema.d.ts @@ -228,6 +228,182 @@ export interface paths { patch: operations["BankCardsController_update"]; trace?: never; }; + "/api/v1/brokerage-accounts": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["BrokerageAccountsController_list"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/all/portfolio": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["PortfolioController_all"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/{accountId}/portfolio": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["PortfolioController_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/all/operations": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["BrokerageOperationsController_all"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/{accountId}/operations": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["BrokerageOperationsController_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/all/income-summary": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["IncomeAnalyticsController_allSummary"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/all/income-analytics": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["IncomeAnalyticsController_allAnalytics"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/{accountId}/income-summary": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["IncomeAnalyticsController_summary"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/{accountId}/income-analytics": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["IncomeAnalyticsController_analytics"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/all/events": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["UpcomingEventsController_all"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/brokerage-accounts/{accountId}/events": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["UpcomingEventsController_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/v1/stocks": { parameters: { query?: never; @@ -500,186 +676,14 @@ export interface paths { patch?: never; trace?: never; }; - "/api/v1/brokerage-accounts": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["BrokerageAccountsController_list"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/all/operations": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["BrokerageOperationsController_all"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/{accountId}/operations": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["BrokerageOperationsController_get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/all/portfolio": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["PortfolioController_all"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/{accountId}/portfolio": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["PortfolioController_get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/all/events": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["UpcomingEventsController_all"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/{accountId}/events": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["UpcomingEventsController_get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/all/income-summary": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["IncomeAnalyticsController_allSummary"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/all/income-analytics": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["IncomeAnalyticsController_allAnalytics"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/{accountId}/income-summary": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["IncomeAnalyticsController_summary"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/brokerage-accounts/{accountId}/income-analytics": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["IncomeAnalyticsController_analytics"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; } export type webhooks = Record; export interface components { schemas: { + ValidationProblemDto: { + pointer: string; + detail: string; + }; ProblemDetailsDto: { /** @example 401 */ status: number; @@ -693,7 +697,7 @@ export interface components { * } * ] */ - errors?: string[]; + errors?: components["schemas"]["ValidationProblemDto"][]; }; CredentialsDto: { /** @example user@example.com */ @@ -846,6 +850,206 @@ export interface components { version: number; archived?: boolean; }; + PortfolioSummaryDto: { + totalsByCurrency: components["schemas"]["MoneyDto"][]; + /** @description Number of non-zero stock positions, not the number of units. */ + stockPositionCount: number; + /** @description Number of non-zero bond positions, not the number of units. */ + bondPositionCount: number; + }; + BrokerageAccountDto: { + id: string; + name: string; + /** @enum {string} */ + type: "BROKERAGE" | "INDIVIDUAL_INVESTMENT" | "INVEST_BOX" | "MONEY_MARKET_FUND"; + /** Format: date */ + openedOn: string | null; + portfolioSummary: components["schemas"]["PortfolioSummaryDto"] | null; + }; + AccountReferenceDto: { + id: string; + name: string; + }; + PortfolioPositionDto: { + instrumentUid?: string | null; + account?: components["schemas"]["AccountReferenceDto"]; + figi: string | null; + displayName: string; + /** @enum {string} */ + type: "STOCK" | "BOND" | "FUND" | "CURRENCY" | "FUTURE" | "OPTION" | "STRUCTURED_NOTE" | "DIGITAL_FINANCIAL_ASSET" | "OTHER"; + quantity: string; + currentValue: components["schemas"]["MoneyDto"] | null; + averagePurchasePrice: components["schemas"]["MoneyDto"] | null; + absoluteReturn: components["schemas"]["MoneyDto"] | null; + isin: string | null; + ticker: string | null; + logoName: string | null; + }; + PortfolioStructureCategoryDto: { + /** @enum {string} */ + type: "STOCK" | "BOND" | "OTHER" | "CASH"; + /** @description Exact known value as a decimal string. */ + value: string; + /** @description Percentage including cash, rounded to six decimal places. Null for incomplete, negative or zero-total compositions. */ + sharePercent: string | null; + }; + PortfolioStructureCurrencyDto: { + currency: string; + totalValue: string; + /** @description Any negative constituent, even if netted positive. */ + hasNegativeValues: boolean; + categories: components["schemas"]["PortfolioStructureCategoryDto"][]; + }; + PortfolioUnvaluedCategoryDto: { + /** @enum {string} */ + type: "STOCK" | "BOND" | "OTHER"; + count: number; + }; + PortfolioStructureDto: { + currencies: components["schemas"]["PortfolioStructureCurrencyDto"][]; + /** @description Positions without current value and known valuation currency. Shares are unavailable across all currencies when nonempty. */ + unvaluedCategories: components["schemas"]["PortfolioUnvaluedCategoryDto"][]; + }; + PortfolioDto: { + /** Format: date-time */ + lastSuccessfulAt: string; + isStale: boolean; + totalsByCurrency: components["schemas"]["MoneyDto"][]; + positions: components["schemas"]["PortfolioPositionDto"][]; + cashBalances: components["schemas"]["MoneyDto"][]; + structure: components["schemas"]["PortfolioStructureDto"]; + }; + BrokerageOperationDto: { + account?: components["schemas"]["AccountReferenceDto"]; + id: string; + /** Format: date-time */ + occurredAt: string; + type: string; + /** @enum {string} */ + category: "trade" | "income" | "tax" | "fee" | "transfer" | "other"; + description: string; + figi: string | null; + instrumentUid: string | null; + ticker: string | null; + instrumentType: string | null; + logoName: string | null; + payment: components["schemas"]["MoneyDto"] | null; + quantity: string | null; + price: components["schemas"]["MoneyDto"] | null; + accruedInterest: components["schemas"]["MoneyDto"] | null; + commission: components["schemas"]["MoneyDto"] | null; + }; + BrokerageOperationsPageDto: { + accountId: string; + items: components["schemas"]["BrokerageOperationDto"][]; + nextCursor: string | null; + hasNext: boolean; + /** Format: date-time */ + observedAt: string; + }; + IncomePeriodDto: { + /** Format: date */ + from: string; + /** Format: date */ + to: string; + }; + IncomeCurrencySummaryDto: { + currency: string; + coupon: components["schemas"]["MoneyDto"]; + dividend: components["schemas"]["MoneyDto"]; + total: components["schemas"]["MoneyDto"]; + }; + IncomeSummaryDto: { + accountId: string; + period: components["schemas"]["IncomePeriodDto"]; + totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; + /** Format: date-time */ + calculatedAt: string; + }; + IncomeComparisonCurrencyDto: { + currency: string; + selected: components["schemas"]["IncomeCurrencySummaryDto"]; + compared: components["schemas"]["IncomeCurrencySummaryDto"]; + difference: components["schemas"]["IncomeCurrencySummaryDto"]; + }; + IncomeComparisonDto: { + period: components["schemas"]["IncomePeriodDto"]; + totalsByCurrency: components["schemas"]["IncomeComparisonCurrencyDto"][]; + }; + IncomeBucketDto: { + period: components["schemas"]["IncomePeriodDto"]; + totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; + }; + IncomeInstrumentDto: { + key: string; + figi: string | null; + instrumentUid: string | null; + ticker: string | null; + instrumentType: string | null; + displayName: string; + coupon: components["schemas"]["MoneyDto"]; + dividend: components["schemas"]["MoneyDto"]; + total: components["schemas"]["MoneyDto"]; + receiptCount: number; + }; + IncomeAnalyticsEntryDto: { + account?: components["schemas"]["AccountReferenceDto"]; + id: string; + /** Format: date-time */ + occurredAt: string; + type: string; + /** @enum {string} */ + category: "trade" | "income" | "tax" | "fee" | "transfer" | "other"; + description: string; + figi: string | null; + instrumentUid: string | null; + ticker: string | null; + instrumentType: string | null; + logoName: string | null; + payment: components["schemas"]["MoneyDto"] | null; + quantity: string | null; + price: components["schemas"]["MoneyDto"] | null; + accruedInterest: components["schemas"]["MoneyDto"] | null; + commission: components["schemas"]["MoneyDto"] | null; + instrumentKey: string; + }; + IncomeAnalyticsDto: { + accountId: string; + period: components["schemas"]["IncomePeriodDto"]; + totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; + /** Format: date-time */ + calculatedAt: string; + previous: components["schemas"]["IncomeComparisonDto"]; + yearComparison: components["schemas"]["IncomeComparisonDto"] | null; + /** @enum {string} */ + bucketGranularity: "day" | "week" | "month"; + buckets: components["schemas"]["IncomeBucketDto"][]; + instruments: components["schemas"]["IncomeInstrumentDto"][]; + entries: components["schemas"]["IncomeAnalyticsEntryDto"][]; + }; + UpcomingEventDto: { + account?: components["schemas"]["AccountReferenceDto"]; + /** @enum {string} */ + type: "coupon" | "dividend" | "maturity" | "offer"; + /** Format: date */ + date: string; + /** @enum {string} */ + dateKind: "event" | "registry"; + figi: string | null; + instrumentUid: string | null; + ticker: string; + displayName: string; + isin: string | null; + logoName: string | null; + projectedAmount: components["schemas"]["MoneyDto"] | null; + }; + UpcomingEventsDto: { + accountId: string; + /** Format: date-time */ + calculatedAt: string; + events: components["schemas"]["UpcomingEventDto"][]; + incomeTotalsByCurrency: components["schemas"]["MoneyDto"][]; + }; StockSearchResultDto: { /** Format: uuid */ instrumentUid: string; @@ -915,10 +1119,6 @@ export interface components { /** Format: date-time */ observedAt: string; }; - AccountReferenceDto: { - id: string; - name: string; - }; StockPositionRowDto: { instrumentUid?: string | null; account?: components["schemas"]["AccountReferenceDto"]; @@ -1154,202 +1354,6 @@ export interface components { PutTbankConnectionDto: { token: string; }; - PortfolioSummaryDto: { - totalsByCurrency: components["schemas"]["MoneyDto"][]; - /** @description Number of non-zero stock positions, not the number of units. */ - stockPositionCount: number; - /** @description Number of non-zero bond positions, not the number of units. */ - bondPositionCount: number; - }; - BrokerageAccountDto: { - id: string; - name: string; - /** @enum {string} */ - type: "BROKERAGE" | "INDIVIDUAL_INVESTMENT" | "INVEST_BOX" | "MONEY_MARKET_FUND"; - /** Format: date */ - openedOn: string | null; - portfolioSummary: components["schemas"]["PortfolioSummaryDto"] | null; - }; - BrokerageOperationDto: { - account?: components["schemas"]["AccountReferenceDto"]; - id: string; - /** Format: date-time */ - occurredAt: string; - type: string; - /** @enum {string} */ - category: "trade" | "income" | "tax" | "fee" | "transfer" | "other"; - description: string; - figi: string | null; - instrumentUid: string | null; - ticker: string | null; - instrumentType: string | null; - logoName: string | null; - payment: components["schemas"]["MoneyDto"] | null; - quantity: string | null; - price: components["schemas"]["MoneyDto"] | null; - accruedInterest: components["schemas"]["MoneyDto"] | null; - commission: components["schemas"]["MoneyDto"] | null; - }; - BrokerageOperationsPageDto: { - accountId: string; - items: components["schemas"]["BrokerageOperationDto"][]; - nextCursor: string | null; - hasNext: boolean; - /** Format: date-time */ - observedAt: string; - }; - PortfolioPositionDto: { - instrumentUid?: string | null; - account?: components["schemas"]["AccountReferenceDto"]; - figi: string | null; - displayName: string; - /** @enum {string} */ - type: "STOCK" | "BOND" | "FUND" | "CURRENCY" | "FUTURE" | "OPTION" | "STRUCTURED_NOTE" | "DIGITAL_FINANCIAL_ASSET" | "OTHER"; - quantity: string; - currentValue: components["schemas"]["MoneyDto"] | null; - averagePurchasePrice: components["schemas"]["MoneyDto"] | null; - absoluteReturn: components["schemas"]["MoneyDto"] | null; - isin: string | null; - ticker: string | null; - logoName: string | null; - }; - PortfolioStructureCategoryDto: { - /** @enum {string} */ - type: "STOCK" | "BOND" | "OTHER" | "CASH"; - /** @description Exact known value as a decimal string. */ - value: string; - /** @description Percentage including cash, rounded to six decimal places. Null for incomplete, negative or zero-total compositions. */ - sharePercent: string | null; - }; - PortfolioStructureCurrencyDto: { - currency: string; - totalValue: string; - /** @description Any negative constituent, even if netted positive. */ - hasNegativeValues: boolean; - categories: components["schemas"]["PortfolioStructureCategoryDto"][]; - }; - PortfolioUnvaluedCategoryDto: { - /** @enum {string} */ - type: "STOCK" | "BOND" | "OTHER"; - count: number; - }; - PortfolioStructureDto: { - currencies: components["schemas"]["PortfolioStructureCurrencyDto"][]; - /** @description Positions without current value and known valuation currency. Shares are unavailable across all currencies when nonempty. */ - unvaluedCategories: components["schemas"]["PortfolioUnvaluedCategoryDto"][]; - }; - PortfolioDto: { - /** Format: date-time */ - lastSuccessfulAt: string; - isStale: boolean; - totalsByCurrency: components["schemas"]["MoneyDto"][]; - positions: components["schemas"]["PortfolioPositionDto"][]; - cashBalances: components["schemas"]["MoneyDto"][]; - structure: components["schemas"]["PortfolioStructureDto"]; - }; - UpcomingEventDto: { - account?: components["schemas"]["AccountReferenceDto"]; - /** @enum {string} */ - type: "coupon" | "dividend" | "maturity" | "offer"; - /** Format: date */ - date: string; - /** @enum {string} */ - dateKind: "event" | "registry"; - figi: string | null; - instrumentUid: string | null; - ticker: string; - displayName: string; - isin: string | null; - logoName: string | null; - projectedAmount: components["schemas"]["MoneyDto"] | null; - }; - UpcomingEventsDto: { - accountId: string; - /** Format: date-time */ - calculatedAt: string; - events: components["schemas"]["UpcomingEventDto"][]; - incomeTotalsByCurrency: components["schemas"]["MoneyDto"][]; - }; - IncomePeriodDto: { - /** Format: date */ - from: string; - /** Format: date */ - to: string; - }; - IncomeCurrencySummaryDto: { - currency: string; - coupon: components["schemas"]["MoneyDto"]; - dividend: components["schemas"]["MoneyDto"]; - total: components["schemas"]["MoneyDto"]; - }; - IncomeSummaryDto: { - accountId: string; - period: components["schemas"]["IncomePeriodDto"]; - totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; - /** Format: date-time */ - calculatedAt: string; - }; - IncomeComparisonCurrencyDto: { - currency: string; - selected: components["schemas"]["IncomeCurrencySummaryDto"]; - compared: components["schemas"]["IncomeCurrencySummaryDto"]; - difference: components["schemas"]["IncomeCurrencySummaryDto"]; - }; - IncomeComparisonDto: { - period: components["schemas"]["IncomePeriodDto"]; - totalsByCurrency: components["schemas"]["IncomeComparisonCurrencyDto"][]; - }; - IncomeBucketDto: { - period: components["schemas"]["IncomePeriodDto"]; - totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; - }; - IncomeInstrumentDto: { - key: string; - figi: string | null; - instrumentUid: string | null; - ticker: string | null; - instrumentType: string | null; - displayName: string; - coupon: components["schemas"]["MoneyDto"]; - dividend: components["schemas"]["MoneyDto"]; - total: components["schemas"]["MoneyDto"]; - receiptCount: number; - }; - IncomeAnalyticsEntryDto: { - account?: components["schemas"]["AccountReferenceDto"]; - id: string; - /** Format: date-time */ - occurredAt: string; - type: string; - /** @enum {string} */ - category: "trade" | "income" | "tax" | "fee" | "transfer" | "other"; - description: string; - figi: string | null; - instrumentUid: string | null; - ticker: string | null; - instrumentType: string | null; - logoName: string | null; - payment: components["schemas"]["MoneyDto"] | null; - quantity: string | null; - price: components["schemas"]["MoneyDto"] | null; - accruedInterest: components["schemas"]["MoneyDto"] | null; - commission: components["schemas"]["MoneyDto"] | null; - instrumentKey: string; - }; - IncomeAnalyticsDto: { - accountId: string; - period: components["schemas"]["IncomePeriodDto"]; - totalsByCurrency: components["schemas"]["IncomeCurrencySummaryDto"][]; - /** Format: date-time */ - calculatedAt: string; - previous: components["schemas"]["IncomeComparisonDto"]; - yearComparison: components["schemas"]["IncomeComparisonDto"] | null; - /** @enum {string} */ - bucketGranularity: "day" | "week" | "month"; - buckets: components["schemas"]["IncomeBucketDto"][]; - instruments: components["schemas"]["IncomeInstrumentDto"][]; - entries: components["schemas"]["IncomeAnalyticsEntryDto"][]; - }; }; responses: never; parameters: never; @@ -1407,6 +1411,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description Email already registered */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -2895,6 +2908,851 @@ export interface operations { }; }; }; + BrokerageAccountsController_list: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["BrokerageAccountDto"][]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + PortfolioController_all: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PortfolioDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + PortfolioController_get: { + parameters: { + query?: never; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PortfolioDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + BrokerageOperationsController_all: { + parameters: { + query?: { + /** @description Instrument UID. Without from, includes history since the earliest available account opening. */ + instrumentUid?: string; + from?: string; + to?: string; + categories?: ("trade" | "income" | "tax" | "fee" | "transfer" | "other")[]; + cursor?: string; + limit?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["BrokerageOperationsPageDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + BrokerageOperationsController_get: { + parameters: { + query?: { + /** @description Instrument UID. Without from, includes history since the earliest available account opening. */ + instrumentUid?: string; + from?: string; + to?: string; + categories?: ("trade" | "income" | "tax" | "fee" | "transfer" | "other")[]; + cursor?: string; + limit?: number; + }; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["BrokerageOperationsPageDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + IncomeAnalyticsController_allSummary: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["IncomeSummaryDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + IncomeAnalyticsController_allAnalytics: { + parameters: { + query?: { + from?: string; + to?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["IncomeAnalyticsDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + IncomeAnalyticsController_summary: { + parameters: { + query?: never; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["IncomeSummaryDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + IncomeAnalyticsController_analytics: { + parameters: { + query?: { + from?: string; + to?: string; + }; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["IncomeAnalyticsDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + UpcomingEventsController_all: { + parameters: { + query?: { + /** @description Inclusive start date (YYYY-MM-DD). Defaults to today in UTC. */ + from?: string; + /** @description Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from. */ + to?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["UpcomingEventsDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; + UpcomingEventsController_get: { + parameters: { + query?: { + /** @description Inclusive start date (YYYY-MM-DD). Defaults to today in UTC. */ + from?: string; + /** @description Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from. */ + to?: string; + }; + header?: never; + path: { + accountId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["UpcomingEventsDto"]; + }; + }; + /** @description Invalid request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Authentication required */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + /** @description Upstream service unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; + }; + }; StockController_search: { parameters: { query: { @@ -2941,6 +3799,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3007,6 +3874,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3073,6 +3949,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3139,6 +4024,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3207,6 +4101,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3273,6 +4176,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3339,6 +4251,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3405,6 +4326,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3471,6 +4401,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3537,6 +4476,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3603,6 +4551,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3669,6 +4626,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3735,6 +4701,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3803,6 +4778,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3869,6 +4853,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -3935,6 +4928,15 @@ export interface operations { "application/problem+json": components["schemas"]["ProblemDetailsDto"]; }; }; + /** @description T-Bank connection required */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/problem+json": components["schemas"]["ProblemDetailsDto"]; + }; + }; /** @description Internal server error */ 500: { headers: { @@ -4149,750 +5151,4 @@ export interface operations { }; }; }; - BrokerageAccountsController_list: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["BrokerageAccountDto"][]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - BrokerageOperationsController_all: { - parameters: { - query?: { - /** @description Instrument UID. Without from, includes history since the earliest available account opening. */ - instrumentUid?: string; - from?: string; - to?: string; - categories?: ("trade" | "income" | "tax" | "fee" | "transfer" | "other")[]; - cursor?: string; - limit?: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["BrokerageOperationsPageDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - BrokerageOperationsController_get: { - parameters: { - query?: { - /** @description Instrument UID. Without from, includes history since the earliest available account opening. */ - instrumentUid?: string; - from?: string; - to?: string; - categories?: ("trade" | "income" | "tax" | "fee" | "transfer" | "other")[]; - cursor?: string; - limit?: number; - }; - header?: never; - path: { - accountId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["BrokerageOperationsPageDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - PortfolioController_all: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["PortfolioDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - PortfolioController_get: { - parameters: { - query?: never; - header?: never; - path: { - accountId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["PortfolioDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - UpcomingEventsController_all: { - parameters: { - query?: { - /** @description Inclusive start date (YYYY-MM-DD). Defaults to today in UTC. */ - from?: string; - /** @description Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from. */ - to?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["UpcomingEventsDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - UpcomingEventsController_get: { - parameters: { - query?: { - /** @description Inclusive start date (YYYY-MM-DD). Defaults to today in UTC. */ - from?: string; - /** @description Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from. */ - to?: string; - }; - header?: never; - path: { - accountId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["UpcomingEventsDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - IncomeAnalyticsController_allSummary: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["IncomeSummaryDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - IncomeAnalyticsController_allAnalytics: { - parameters: { - query?: { - from?: string; - to?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["IncomeAnalyticsDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - IncomeAnalyticsController_summary: { - parameters: { - query?: never; - header?: never; - path: { - accountId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["IncomeSummaryDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; - IncomeAnalyticsController_analytics: { - parameters: { - query?: { - from?: string; - to?: string; - }; - header?: never; - path: { - accountId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["IncomeAnalyticsDto"]; - }; - }; - /** @description Invalid request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Authentication required */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Resource not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - /** @description Upstream service unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/problem+json": components["schemas"]["ProblemDetailsDto"]; - }; - }; - }; - }; } diff --git a/src/shared/api/spec/openapi.json b/src/shared/api/spec/openapi.json index c3a3242..410d0b6 100644 --- a/src/shared/api/spec/openapi.json +++ b/src/shared/api/spec/openapi.json @@ -56,6 +56,16 @@ } } }, + "409": { + "description": "Email already registered", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -1973,6 +1983,1211 @@ ] } }, + "/api/v1/brokerage-accounts": { + "get": { + "operationId": "BrokerageAccountsController_list", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BrokerageAccountDto" + } + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/all/portfolio": { + "get": { + "operationId": "PortfolioController_all", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PortfolioDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/{accountId}/portfolio": { + "get": { + "operationId": "PortfolioController_get", + "parameters": [ + { + "name": "accountId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PortfolioDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/all/operations": { + "get": { + "operationId": "BrokerageOperationsController_all", + "parameters": [ + { + "name": "instrumentUid", + "required": false, + "in": "query", + "description": "Instrument UID. Without from, includes history since the earliest available account opening.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "from", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "categories", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "trade", + "income", + "tax", + "fee", + "transfer", + "other" + ] + } + } + }, + { + "name": "cursor", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "minimum": 1, + "maximum": 1000, + "default": 100, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrokerageOperationsPageDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/{accountId}/operations": { + "get": { + "operationId": "BrokerageOperationsController_get", + "parameters": [ + { + "name": "accountId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "instrumentUid", + "required": false, + "in": "query", + "description": "Instrument UID. Without from, includes history since the earliest available account opening.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "from", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "categories", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "trade", + "income", + "tax", + "fee", + "transfer", + "other" + ] + } + } + }, + { + "name": "cursor", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "minimum": 1, + "maximum": 1000, + "default": 100, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrokerageOperationsPageDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/all/income-summary": { + "get": { + "operationId": "IncomeAnalyticsController_allSummary", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncomeSummaryDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/all/income-analytics": { + "get": { + "operationId": "IncomeAnalyticsController_allAnalytics", + "parameters": [ + { + "name": "from", + "required": false, + "in": "query", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "schema": { + "format": "date", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncomeAnalyticsDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/{accountId}/income-summary": { + "get": { + "operationId": "IncomeAnalyticsController_summary", + "parameters": [ + { + "name": "accountId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncomeSummaryDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/{accountId}/income-analytics": { + "get": { + "operationId": "IncomeAnalyticsController_analytics", + "parameters": [ + { + "name": "accountId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "from", + "required": false, + "in": "query", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "schema": { + "format": "date", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncomeAnalyticsDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/all/events": { + "get": { + "operationId": "UpcomingEventsController_all", + "parameters": [ + { + "name": "from", + "required": false, + "in": "query", + "description": "Inclusive start date (YYYY-MM-DD). Defaults to today in UTC.", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "description": "Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from.", + "schema": { + "format": "date", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpcomingEventsDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, + "/api/v1/brokerage-accounts/{accountId}/events": { + "get": { + "operationId": "UpcomingEventsController_get", + "parameters": [ + { + "name": "accountId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "from", + "required": false, + "in": "query", + "description": "Inclusive start date (YYYY-MM-DD). Defaults to today in UTC.", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "description": "Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from.", + "schema": { + "format": "date", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpcomingEventsDto" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "401": { + "description": "Authentication required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, + "503": { + "description": "Upstream service unavailable", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ], + "tags": [ + "brokerage-accounts" + ] + } + }, "/api/v1/stocks": { "get": { "operationId": "StockController_search", @@ -2032,6 +3247,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2120,6 +3345,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2205,6 +3440,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2290,6 +3535,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2390,6 +3645,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2475,6 +3740,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2560,6 +3835,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2645,6 +3930,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2730,6 +4025,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2820,6 +4125,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2908,6 +4223,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -2993,6 +4318,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -3078,6 +4413,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -3178,6 +4523,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -3263,6 +4618,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -3348,6 +4713,16 @@ } } }, + "409": { + "description": "T-Bank connection required", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetailsDto" + } + } + } + }, "500": { "description": "Internal server error", "content": { @@ -3605,1101 +4980,6 @@ "tbank-connection" ] } - }, - "/api/v1/brokerage-accounts": { - "get": { - "operationId": "BrokerageAccountsController_list", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BrokerageAccountDto" - } - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/all/operations": { - "get": { - "operationId": "BrokerageOperationsController_all", - "parameters": [ - { - "name": "instrumentUid", - "required": false, - "in": "query", - "description": "Instrument UID. Without from, includes history since the earliest available account opening.", - "schema": { - "format": "uuid", - "type": "string" - } - }, - { - "name": "from", - "required": false, - "in": "query", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "categories", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "trade", - "income", - "tax", - "fee", - "transfer", - "other" - ] - } - } - }, - { - "name": "cursor", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "minimum": 1, - "maximum": 1000, - "default": 100, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BrokerageOperationsPageDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/{accountId}/operations": { - "get": { - "operationId": "BrokerageOperationsController_get", - "parameters": [ - { - "name": "accountId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "instrumentUid", - "required": false, - "in": "query", - "description": "Instrument UID. Without from, includes history since the earliest available account opening.", - "schema": { - "format": "uuid", - "type": "string" - } - }, - { - "name": "from", - "required": false, - "in": "query", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "categories", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "trade", - "income", - "tax", - "fee", - "transfer", - "other" - ] - } - } - }, - { - "name": "cursor", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "minimum": 1, - "maximum": 1000, - "default": 100, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BrokerageOperationsPageDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/all/portfolio": { - "get": { - "operationId": "PortfolioController_all", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PortfolioDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/{accountId}/portfolio": { - "get": { - "operationId": "PortfolioController_get", - "parameters": [ - { - "name": "accountId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PortfolioDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/all/events": { - "get": { - "operationId": "UpcomingEventsController_all", - "parameters": [ - { - "name": "from", - "required": false, - "in": "query", - "description": "Inclusive start date (YYYY-MM-DD). Defaults to today in UTC.", - "schema": { - "format": "date", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "description": "Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from.", - "schema": { - "format": "date", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpcomingEventsDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/{accountId}/events": { - "get": { - "operationId": "UpcomingEventsController_get", - "parameters": [ - { - "name": "accountId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "from", - "required": false, - "in": "query", - "description": "Inclusive start date (YYYY-MM-DD). Defaults to today in UTC.", - "schema": { - "format": "date", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "description": "Inclusive end date (YYYY-MM-DD). Defaults to 30 days after from.", - "schema": { - "format": "date", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpcomingEventsDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/all/income-summary": { - "get": { - "operationId": "IncomeAnalyticsController_allSummary", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IncomeSummaryDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/all/income-analytics": { - "get": { - "operationId": "IncomeAnalyticsController_allAnalytics", - "parameters": [ - { - "name": "from", - "required": false, - "in": "query", - "schema": { - "format": "date", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "schema": { - "format": "date", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IncomeAnalyticsDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/{accountId}/income-summary": { - "get": { - "operationId": "IncomeAnalyticsController_summary", - "parameters": [ - { - "name": "accountId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IncomeSummaryDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } - }, - "/api/v1/brokerage-accounts/{accountId}/income-analytics": { - "get": { - "operationId": "IncomeAnalyticsController_analytics", - "parameters": [ - { - "name": "accountId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "from", - "required": false, - "in": "query", - "schema": { - "format": "date", - "type": "string" - } - }, - { - "name": "to", - "required": false, - "in": "query", - "schema": { - "format": "date", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IncomeAnalyticsDto" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "401": { - "description": "Authentication required", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - }, - "503": { - "description": "Upstream service unavailable", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetailsDto" - } - } - } - } - }, - "security": [ - { - "bearer": [] - } - ], - "tags": [ - "brokerage-accounts" - ] - } } }, "info": { @@ -4712,6 +4992,21 @@ "servers": [], "components": { "schemas": { + "ValidationProblemDto": { + "type": "object", + "properties": { + "pointer": { + "type": "string" + }, + "detail": { + "type": "string" + } + }, + "required": [ + "pointer", + "detail" + ] + }, "ProblemDetailsDto": { "type": "object", "properties": { @@ -4732,7 +5027,7 @@ ], "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/ValidationProblemDto" } } }, @@ -5306,6 +5601,917 @@ "version" ] }, + "PortfolioSummaryDto": { + "type": "object", + "properties": { + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyDto" + } + }, + "stockPositionCount": { + "type": "integer", + "minimum": 0, + "description": "Number of non-zero stock positions, not the number of units." + }, + "bondPositionCount": { + "type": "integer", + "minimum": 0, + "description": "Number of non-zero bond positions, not the number of units." + } + }, + "required": [ + "totalsByCurrency", + "stockPositionCount", + "bondPositionCount" + ] + }, + "BrokerageAccountDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "BROKERAGE", + "INDIVIDUAL_INVESTMENT", + "INVEST_BOX", + "MONEY_MARKET_FUND" + ] + }, + "openedOn": { + "type": "string", + "nullable": true, + "format": "date" + }, + "portfolioSummary": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/PortfolioSummaryDto" + } + ] + } + }, + "required": [ + "id", + "name", + "type", + "openedOn", + "portfolioSummary" + ] + }, + "AccountReferenceDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ] + }, + "PortfolioPositionDto": { + "type": "object", + "properties": { + "instrumentUid": { + "type": "string", + "nullable": true + }, + "account": { + "$ref": "#/components/schemas/AccountReferenceDto" + }, + "figi": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "STOCK", + "BOND", + "FUND", + "CURRENCY", + "FUTURE", + "OPTION", + "STRUCTURED_NOTE", + "DIGITAL_FINANCIAL_ASSET", + "OTHER" + ] + }, + "quantity": { + "type": "string" + }, + "currentValue": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "averagePurchasePrice": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "absoluteReturn": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "isin": { + "type": "string", + "nullable": true + }, + "ticker": { + "type": "string", + "nullable": true + }, + "logoName": { + "type": "string", + "nullable": true + } + }, + "required": [ + "figi", + "displayName", + "type", + "quantity", + "currentValue", + "averagePurchasePrice", + "absoluteReturn", + "isin", + "ticker", + "logoName" + ] + }, + "PortfolioStructureCategoryDto": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "STOCK", + "BOND", + "OTHER", + "CASH" + ] + }, + "value": { + "type": "string", + "description": "Exact known value as a decimal string." + }, + "sharePercent": { + "type": "string", + "nullable": true, + "description": "Percentage including cash, rounded to six decimal places. Null for incomplete, negative or zero-total compositions." + } + }, + "required": [ + "type", + "value", + "sharePercent" + ] + }, + "PortfolioStructureCurrencyDto": { + "type": "object", + "properties": { + "currency": { + "type": "string" + }, + "totalValue": { + "type": "string" + }, + "hasNegativeValues": { + "type": "boolean", + "description": "Any negative constituent, even if netted positive." + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PortfolioStructureCategoryDto" + } + } + }, + "required": [ + "currency", + "totalValue", + "hasNegativeValues", + "categories" + ] + }, + "PortfolioUnvaluedCategoryDto": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "STOCK", + "BOND", + "OTHER" + ] + }, + "count": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "type", + "count" + ] + }, + "PortfolioStructureDto": { + "type": "object", + "properties": { + "currencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PortfolioStructureCurrencyDto" + } + }, + "unvaluedCategories": { + "description": "Positions without current value and known valuation currency. Shares are unavailable across all currencies when nonempty.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PortfolioUnvaluedCategoryDto" + } + } + }, + "required": [ + "currencies", + "unvaluedCategories" + ] + }, + "PortfolioDto": { + "type": "object", + "properties": { + "lastSuccessfulAt": { + "type": "string", + "format": "date-time" + }, + "isStale": { + "type": "boolean" + }, + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyDto" + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PortfolioPositionDto" + } + }, + "cashBalances": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyDto" + } + }, + "structure": { + "$ref": "#/components/schemas/PortfolioStructureDto" + } + }, + "required": [ + "lastSuccessfulAt", + "isStale", + "totalsByCurrency", + "positions", + "cashBalances", + "structure" + ] + }, + "BrokerageOperationDto": { + "type": "object", + "properties": { + "account": { + "$ref": "#/components/schemas/AccountReferenceDto" + }, + "id": { + "type": "string" + }, + "occurredAt": { + "type": "string", + "format": "date-time" + }, + "type": { + "type": "string" + }, + "category": { + "type": "string", + "enum": [ + "trade", + "income", + "tax", + "fee", + "transfer", + "other" + ] + }, + "description": { + "type": "string" + }, + "figi": { + "type": "string", + "nullable": true + }, + "instrumentUid": { + "type": "string", + "nullable": true + }, + "ticker": { + "type": "string", + "nullable": true + }, + "instrumentType": { + "type": "string", + "nullable": true + }, + "logoName": { + "type": "string", + "nullable": true + }, + "payment": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "quantity": { + "type": "string", + "nullable": true + }, + "price": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "accruedInterest": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "commission": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + } + }, + "required": [ + "id", + "occurredAt", + "type", + "category", + "description", + "figi", + "instrumentUid", + "ticker", + "instrumentType", + "logoName", + "payment", + "quantity", + "price", + "accruedInterest", + "commission" + ] + }, + "BrokerageOperationsPageDto": { + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BrokerageOperationDto" + } + }, + "nextCursor": { + "type": "string", + "nullable": true + }, + "hasNext": { + "type": "boolean" + }, + "observedAt": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "accountId", + "items", + "nextCursor", + "hasNext", + "observedAt" + ] + }, + "IncomePeriodDto": { + "type": "object", + "properties": { + "from": { + "type": "string", + "format": "date" + }, + "to": { + "type": "string", + "format": "date" + } + }, + "required": [ + "from", + "to" + ] + }, + "IncomeCurrencySummaryDto": { + "type": "object", + "properties": { + "currency": { + "type": "string" + }, + "coupon": { + "$ref": "#/components/schemas/MoneyDto" + }, + "dividend": { + "$ref": "#/components/schemas/MoneyDto" + }, + "total": { + "$ref": "#/components/schemas/MoneyDto" + } + }, + "required": [ + "currency", + "coupon", + "dividend", + "total" + ] + }, + "IncomeSummaryDto": { + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "period": { + "$ref": "#/components/schemas/IncomePeriodDto" + }, + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + } + }, + "calculatedAt": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "accountId", + "period", + "totalsByCurrency", + "calculatedAt" + ] + }, + "IncomeComparisonCurrencyDto": { + "type": "object", + "properties": { + "currency": { + "type": "string" + }, + "selected": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + }, + "compared": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + }, + "difference": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + } + }, + "required": [ + "currency", + "selected", + "compared", + "difference" + ] + }, + "IncomeComparisonDto": { + "type": "object", + "properties": { + "period": { + "$ref": "#/components/schemas/IncomePeriodDto" + }, + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeComparisonCurrencyDto" + } + } + }, + "required": [ + "period", + "totalsByCurrency" + ] + }, + "IncomeBucketDto": { + "type": "object", + "properties": { + "period": { + "$ref": "#/components/schemas/IncomePeriodDto" + }, + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + } + } + }, + "required": [ + "period", + "totalsByCurrency" + ] + }, + "IncomeInstrumentDto": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "figi": { + "type": "string", + "nullable": true + }, + "instrumentUid": { + "type": "string", + "nullable": true + }, + "ticker": { + "type": "string", + "nullable": true + }, + "instrumentType": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "coupon": { + "$ref": "#/components/schemas/MoneyDto" + }, + "dividend": { + "$ref": "#/components/schemas/MoneyDto" + }, + "total": { + "$ref": "#/components/schemas/MoneyDto" + }, + "receiptCount": { + "type": "number" + } + }, + "required": [ + "key", + "figi", + "instrumentUid", + "ticker", + "instrumentType", + "displayName", + "coupon", + "dividend", + "total", + "receiptCount" + ] + }, + "IncomeAnalyticsEntryDto": { + "type": "object", + "properties": { + "account": { + "$ref": "#/components/schemas/AccountReferenceDto" + }, + "id": { + "type": "string" + }, + "occurredAt": { + "type": "string", + "format": "date-time" + }, + "type": { + "type": "string" + }, + "category": { + "type": "string", + "enum": [ + "trade", + "income", + "tax", + "fee", + "transfer", + "other" + ] + }, + "description": { + "type": "string" + }, + "figi": { + "type": "string", + "nullable": true + }, + "instrumentUid": { + "type": "string", + "nullable": true + }, + "ticker": { + "type": "string", + "nullable": true + }, + "instrumentType": { + "type": "string", + "nullable": true + }, + "logoName": { + "type": "string", + "nullable": true + }, + "payment": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "quantity": { + "type": "string", + "nullable": true + }, + "price": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "accruedInterest": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "commission": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + }, + "instrumentKey": { + "type": "string" + } + }, + "required": [ + "id", + "occurredAt", + "type", + "category", + "description", + "figi", + "instrumentUid", + "ticker", + "instrumentType", + "logoName", + "payment", + "quantity", + "price", + "accruedInterest", + "commission", + "instrumentKey" + ] + }, + "IncomeAnalyticsDto": { + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "period": { + "$ref": "#/components/schemas/IncomePeriodDto" + }, + "totalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeCurrencySummaryDto" + } + }, + "calculatedAt": { + "type": "string", + "format": "date-time" + }, + "previous": { + "$ref": "#/components/schemas/IncomeComparisonDto" + }, + "yearComparison": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/IncomeComparisonDto" + } + ] + }, + "bucketGranularity": { + "type": "string", + "enum": [ + "day", + "week", + "month" + ] + }, + "buckets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeBucketDto" + } + }, + "instruments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeInstrumentDto" + } + }, + "entries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncomeAnalyticsEntryDto" + } + } + }, + "required": [ + "accountId", + "period", + "totalsByCurrency", + "calculatedAt", + "previous", + "yearComparison", + "bucketGranularity", + "buckets", + "instruments", + "entries" + ] + }, + "UpcomingEventDto": { + "type": "object", + "properties": { + "account": { + "$ref": "#/components/schemas/AccountReferenceDto" + }, + "type": { + "type": "string", + "enum": [ + "coupon", + "dividend", + "maturity", + "offer" + ] + }, + "date": { + "type": "string", + "format": "date" + }, + "dateKind": { + "type": "string", + "enum": [ + "event", + "registry" + ] + }, + "figi": { + "type": "string", + "nullable": true + }, + "instrumentUid": { + "type": "string", + "nullable": true + }, + "ticker": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "isin": { + "type": "string", + "nullable": true + }, + "logoName": { + "type": "string", + "nullable": true + }, + "projectedAmount": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/MoneyDto" + } + ] + } + }, + "required": [ + "type", + "date", + "dateKind", + "figi", + "instrumentUid", + "ticker", + "displayName", + "isin", + "logoName", + "projectedAmount" + ] + }, + "UpcomingEventsDto": { + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "calculatedAt": { + "type": "string", + "format": "date-time" + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpcomingEventDto" + } + }, + "incomeTotalsByCurrency": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyDto" + } + } + }, + "required": [ + "accountId", + "calculatedAt", + "events", + "incomeTotalsByCurrency" + ] + }, "StockSearchResultDto": { "type": "object", "properties": { @@ -5597,21 +6803,6 @@ "observedAt" ] }, - "AccountReferenceDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, "StockPositionRowDto": { "type": "object", "properties": { @@ -6686,902 +7877,6 @@ "required": [ "token" ] - }, - "PortfolioSummaryDto": { - "type": "object", - "properties": { - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MoneyDto" - } - }, - "stockPositionCount": { - "type": "integer", - "minimum": 0, - "description": "Number of non-zero stock positions, not the number of units." - }, - "bondPositionCount": { - "type": "integer", - "minimum": 0, - "description": "Number of non-zero bond positions, not the number of units." - } - }, - "required": [ - "totalsByCurrency", - "stockPositionCount", - "bondPositionCount" - ] - }, - "BrokerageAccountDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BROKERAGE", - "INDIVIDUAL_INVESTMENT", - "INVEST_BOX", - "MONEY_MARKET_FUND" - ] - }, - "openedOn": { - "type": "string", - "nullable": true, - "format": "date" - }, - "portfolioSummary": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/PortfolioSummaryDto" - } - ] - } - }, - "required": [ - "id", - "name", - "type", - "openedOn", - "portfolioSummary" - ] - }, - "BrokerageOperationDto": { - "type": "object", - "properties": { - "account": { - "$ref": "#/components/schemas/AccountReferenceDto" - }, - "id": { - "type": "string" - }, - "occurredAt": { - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "category": { - "type": "string", - "enum": [ - "trade", - "income", - "tax", - "fee", - "transfer", - "other" - ] - }, - "description": { - "type": "string" - }, - "figi": { - "type": "string", - "nullable": true - }, - "instrumentUid": { - "type": "string", - "nullable": true - }, - "ticker": { - "type": "string", - "nullable": true - }, - "instrumentType": { - "type": "string", - "nullable": true - }, - "logoName": { - "type": "string", - "nullable": true - }, - "payment": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "quantity": { - "type": "string", - "nullable": true - }, - "price": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "accruedInterest": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "commission": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - } - }, - "required": [ - "id", - "occurredAt", - "type", - "category", - "description", - "figi", - "instrumentUid", - "ticker", - "instrumentType", - "logoName", - "payment", - "quantity", - "price", - "accruedInterest", - "commission" - ] - }, - "BrokerageOperationsPageDto": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BrokerageOperationDto" - } - }, - "nextCursor": { - "type": "string", - "nullable": true - }, - "hasNext": { - "type": "boolean" - }, - "observedAt": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "accountId", - "items", - "nextCursor", - "hasNext", - "observedAt" - ] - }, - "PortfolioPositionDto": { - "type": "object", - "properties": { - "instrumentUid": { - "type": "string", - "nullable": true - }, - "account": { - "$ref": "#/components/schemas/AccountReferenceDto" - }, - "figi": { - "type": "string", - "nullable": true - }, - "displayName": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "STOCK", - "BOND", - "FUND", - "CURRENCY", - "FUTURE", - "OPTION", - "STRUCTURED_NOTE", - "DIGITAL_FINANCIAL_ASSET", - "OTHER" - ] - }, - "quantity": { - "type": "string" - }, - "currentValue": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "averagePurchasePrice": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "absoluteReturn": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "isin": { - "type": "string", - "nullable": true - }, - "ticker": { - "type": "string", - "nullable": true - }, - "logoName": { - "type": "string", - "nullable": true - } - }, - "required": [ - "figi", - "displayName", - "type", - "quantity", - "currentValue", - "averagePurchasePrice", - "absoluteReturn", - "isin", - "ticker", - "logoName" - ] - }, - "PortfolioStructureCategoryDto": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "STOCK", - "BOND", - "OTHER", - "CASH" - ] - }, - "value": { - "type": "string", - "description": "Exact known value as a decimal string." - }, - "sharePercent": { - "type": "string", - "nullable": true, - "description": "Percentage including cash, rounded to six decimal places. Null for incomplete, negative or zero-total compositions." - } - }, - "required": [ - "type", - "value", - "sharePercent" - ] - }, - "PortfolioStructureCurrencyDto": { - "type": "object", - "properties": { - "currency": { - "type": "string" - }, - "totalValue": { - "type": "string" - }, - "hasNegativeValues": { - "type": "boolean", - "description": "Any negative constituent, even if netted positive." - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PortfolioStructureCategoryDto" - } - } - }, - "required": [ - "currency", - "totalValue", - "hasNegativeValues", - "categories" - ] - }, - "PortfolioUnvaluedCategoryDto": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "STOCK", - "BOND", - "OTHER" - ] - }, - "count": { - "type": "number", - "minimum": 1 - } - }, - "required": [ - "type", - "count" - ] - }, - "PortfolioStructureDto": { - "type": "object", - "properties": { - "currencies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PortfolioStructureCurrencyDto" - } - }, - "unvaluedCategories": { - "description": "Positions without current value and known valuation currency. Shares are unavailable across all currencies when nonempty.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PortfolioUnvaluedCategoryDto" - } - } - }, - "required": [ - "currencies", - "unvaluedCategories" - ] - }, - "PortfolioDto": { - "type": "object", - "properties": { - "lastSuccessfulAt": { - "type": "string", - "format": "date-time" - }, - "isStale": { - "type": "boolean" - }, - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MoneyDto" - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PortfolioPositionDto" - } - }, - "cashBalances": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MoneyDto" - } - }, - "structure": { - "$ref": "#/components/schemas/PortfolioStructureDto" - } - }, - "required": [ - "lastSuccessfulAt", - "isStale", - "totalsByCurrency", - "positions", - "cashBalances", - "structure" - ] - }, - "UpcomingEventDto": { - "type": "object", - "properties": { - "account": { - "$ref": "#/components/schemas/AccountReferenceDto" - }, - "type": { - "type": "string", - "enum": [ - "coupon", - "dividend", - "maturity", - "offer" - ] - }, - "date": { - "type": "string", - "format": "date" - }, - "dateKind": { - "type": "string", - "enum": [ - "event", - "registry" - ] - }, - "figi": { - "type": "string", - "nullable": true - }, - "instrumentUid": { - "type": "string", - "nullable": true - }, - "ticker": { - "type": "string" - }, - "displayName": { - "type": "string" - }, - "isin": { - "type": "string", - "nullable": true - }, - "logoName": { - "type": "string", - "nullable": true - }, - "projectedAmount": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - } - }, - "required": [ - "type", - "date", - "dateKind", - "figi", - "instrumentUid", - "ticker", - "displayName", - "isin", - "logoName", - "projectedAmount" - ] - }, - "UpcomingEventsDto": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "calculatedAt": { - "type": "string", - "format": "date-time" - }, - "events": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UpcomingEventDto" - } - }, - "incomeTotalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MoneyDto" - } - } - }, - "required": [ - "accountId", - "calculatedAt", - "events", - "incomeTotalsByCurrency" - ] - }, - "IncomePeriodDto": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date" - }, - "to": { - "type": "string", - "format": "date" - } - }, - "required": [ - "from", - "to" - ] - }, - "IncomeCurrencySummaryDto": { - "type": "object", - "properties": { - "currency": { - "type": "string" - }, - "coupon": { - "$ref": "#/components/schemas/MoneyDto" - }, - "dividend": { - "$ref": "#/components/schemas/MoneyDto" - }, - "total": { - "$ref": "#/components/schemas/MoneyDto" - } - }, - "required": [ - "currency", - "coupon", - "dividend", - "total" - ] - }, - "IncomeSummaryDto": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "period": { - "$ref": "#/components/schemas/IncomePeriodDto" - }, - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - } - }, - "calculatedAt": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "accountId", - "period", - "totalsByCurrency", - "calculatedAt" - ] - }, - "IncomeComparisonCurrencyDto": { - "type": "object", - "properties": { - "currency": { - "type": "string" - }, - "selected": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - }, - "compared": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - }, - "difference": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - } - }, - "required": [ - "currency", - "selected", - "compared", - "difference" - ] - }, - "IncomeComparisonDto": { - "type": "object", - "properties": { - "period": { - "$ref": "#/components/schemas/IncomePeriodDto" - }, - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeComparisonCurrencyDto" - } - } - }, - "required": [ - "period", - "totalsByCurrency" - ] - }, - "IncomeBucketDto": { - "type": "object", - "properties": { - "period": { - "$ref": "#/components/schemas/IncomePeriodDto" - }, - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - } - } - }, - "required": [ - "period", - "totalsByCurrency" - ] - }, - "IncomeInstrumentDto": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "figi": { - "type": "string", - "nullable": true - }, - "instrumentUid": { - "type": "string", - "nullable": true - }, - "ticker": { - "type": "string", - "nullable": true - }, - "instrumentType": { - "type": "string", - "nullable": true - }, - "displayName": { - "type": "string" - }, - "coupon": { - "$ref": "#/components/schemas/MoneyDto" - }, - "dividend": { - "$ref": "#/components/schemas/MoneyDto" - }, - "total": { - "$ref": "#/components/schemas/MoneyDto" - }, - "receiptCount": { - "type": "number" - } - }, - "required": [ - "key", - "figi", - "instrumentUid", - "ticker", - "instrumentType", - "displayName", - "coupon", - "dividend", - "total", - "receiptCount" - ] - }, - "IncomeAnalyticsEntryDto": { - "type": "object", - "properties": { - "account": { - "$ref": "#/components/schemas/AccountReferenceDto" - }, - "id": { - "type": "string" - }, - "occurredAt": { - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "category": { - "type": "string", - "enum": [ - "trade", - "income", - "tax", - "fee", - "transfer", - "other" - ] - }, - "description": { - "type": "string" - }, - "figi": { - "type": "string", - "nullable": true - }, - "instrumentUid": { - "type": "string", - "nullable": true - }, - "ticker": { - "type": "string", - "nullable": true - }, - "instrumentType": { - "type": "string", - "nullable": true - }, - "logoName": { - "type": "string", - "nullable": true - }, - "payment": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "quantity": { - "type": "string", - "nullable": true - }, - "price": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "accruedInterest": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "commission": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/MoneyDto" - } - ] - }, - "instrumentKey": { - "type": "string" - } - }, - "required": [ - "id", - "occurredAt", - "type", - "category", - "description", - "figi", - "instrumentUid", - "ticker", - "instrumentType", - "logoName", - "payment", - "quantity", - "price", - "accruedInterest", - "commission", - "instrumentKey" - ] - }, - "IncomeAnalyticsDto": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "period": { - "$ref": "#/components/schemas/IncomePeriodDto" - }, - "totalsByCurrency": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeCurrencySummaryDto" - } - }, - "calculatedAt": { - "type": "string", - "format": "date-time" - }, - "previous": { - "$ref": "#/components/schemas/IncomeComparisonDto" - }, - "yearComparison": { - "nullable": true, - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/IncomeComparisonDto" - } - ] - }, - "bucketGranularity": { - "type": "string", - "enum": [ - "day", - "week", - "month" - ] - }, - "buckets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeBucketDto" - } - }, - "instruments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeInstrumentDto" - } - }, - "entries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IncomeAnalyticsEntryDto" - } - } - }, - "required": [ - "accountId", - "period", - "totalsByCurrency", - "calculatedAt", - "previous", - "yearComparison", - "bucketGranularity", - "buckets", - "instruments", - "entries" - ] } } }