docs: refresh openapi contract artifacts
This commit is contained in:
parent
44e13cc67e
commit
143b4758c3
@ -21,6 +21,92 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/auth/register': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** Register new user */
|
||||
post: operations['AuthController_register'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/auth/login': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** Login with email and password */
|
||||
post: operations['AuthController_login'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/auth/refresh': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** Refresh access token */
|
||||
post: operations['AuthController_refresh'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/auth/logout': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** Logout user */
|
||||
post: operations['AuthController_logout'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/auth/me': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get current user profile */
|
||||
get: operations['AuthController_getProfile'];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
/** Update current user profile */
|
||||
patch: operations['AuthController_updateProfile'];
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/securities/search': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@ -38,6 +124,23 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/securities/screener': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Фильтр ценных бумаг по параметрам */
|
||||
get: operations['SecuritiesController_screener'];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/securities/shares/{secid}': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@ -191,10 +294,316 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/portfolios': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get all portfolios for current user */
|
||||
get: operations['PortfolioController_findAll'];
|
||||
put?: never;
|
||||
/** Create a new portfolio */
|
||||
post: operations['PortfolioController_create'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/portfolios/{id}': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get portfolio details with positions and prices */
|
||||
get: operations['PortfolioController_findOne'];
|
||||
put?: never;
|
||||
post?: never;
|
||||
/** Delete portfolio */
|
||||
delete: operations['PortfolioController_remove'];
|
||||
options?: never;
|
||||
head?: never;
|
||||
/** Update portfolio */
|
||||
patch: operations['PortfolioController_update'];
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/portfolios/{id}/positions': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** Add position to portfolio */
|
||||
post: operations['PortfolioController_addPosition'];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/portfolios/{id}/positions/{positionId}': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
post?: never;
|
||||
/** Remove position from portfolio */
|
||||
delete: operations['PortfolioController_removePosition'];
|
||||
options?: never;
|
||||
head?: never;
|
||||
/** Update position */
|
||||
patch: operations['PortfolioController_updatePosition'];
|
||||
trace?: never;
|
||||
};
|
||||
'/api/v1/portfolios/{id}/analytics': {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get portfolio analytics with PnL */
|
||||
get: operations['PortfolioController_getAnalytics'];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
}
|
||||
export type webhooks = Record<string, never>;
|
||||
export interface components {
|
||||
schemas: never;
|
||||
schemas: {
|
||||
RegisterDto: {
|
||||
/** @example user@example.com */
|
||||
email: string;
|
||||
/** @example securePass123 */
|
||||
password: string;
|
||||
/** @example John */
|
||||
name?: string;
|
||||
};
|
||||
LoginDto: {
|
||||
/** @example user@example.com */
|
||||
email: string;
|
||||
/** @example securePass123 */
|
||||
password: string;
|
||||
};
|
||||
UpdateProfileDto: {
|
||||
/** @example John Doe */
|
||||
name?: string;
|
||||
};
|
||||
ScreenerItemDto: {
|
||||
/** @example SBER */
|
||||
secid: string;
|
||||
/** @example Сбербанк */
|
||||
shortName: string;
|
||||
/** @example RU0009029540 */
|
||||
isin: string;
|
||||
/** @enum {string} */
|
||||
type: 'share' | 'bond';
|
||||
/** @example 322.35 */
|
||||
price?: Record<string, never>;
|
||||
/** @example 1.15 */
|
||||
change?: Record<string, never>;
|
||||
/** @example 0.36 */
|
||||
changePercent?: Record<string, never>;
|
||||
/** @example 1925163 */
|
||||
volume: number;
|
||||
/** @example 1 */
|
||||
listLevel: number;
|
||||
/** @example 6958336818320 */
|
||||
capitalization?: Record<string, never>;
|
||||
/** @example 12.71 */
|
||||
yieldToMaturity?: Record<string, never>;
|
||||
/** @example 4.5 */
|
||||
duration?: Record<string, never>;
|
||||
/** @example 40.64 */
|
||||
couponValue?: Record<string, never>;
|
||||
/** @example 8.15 */
|
||||
couponPercent?: Record<string, never>;
|
||||
/** @example 29.48 */
|
||||
accruedInt?: Record<string, never>;
|
||||
/** @example 2027-02-03 */
|
||||
matDate?: Record<string, never>;
|
||||
/** @example ОФЗ-ПД */
|
||||
bondType?: Record<string, never>;
|
||||
};
|
||||
ScreenerResultDto: {
|
||||
items: components['schemas']['ScreenerItemDto'][];
|
||||
total: number;
|
||||
page: number;
|
||||
pageSize: number;
|
||||
totalPages: number;
|
||||
};
|
||||
PortfolioListResponseDto: {
|
||||
id: number;
|
||||
name: string;
|
||||
description?: Record<string, never>;
|
||||
/** @default RUB */
|
||||
currency: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
/** @description Total market value of all positions */
|
||||
totalValue: number;
|
||||
/** @description Total number of positions */
|
||||
positionCount: number;
|
||||
/** @description Number of share positions */
|
||||
shareCount: number;
|
||||
/** @description Number of bond positions */
|
||||
bondCount: number;
|
||||
};
|
||||
CreatePortfolioDto: {
|
||||
/** @example Мой портфель */
|
||||
name: string;
|
||||
/** @example Описание портфеля */
|
||||
description?: string;
|
||||
/**
|
||||
* @default RUB
|
||||
* @enum {string}
|
||||
*/
|
||||
currency: 'RUB' | 'USD' | 'EUR' | 'CNY' | 'KZT' | 'BYN';
|
||||
};
|
||||
PositionWithPriceDto: {
|
||||
id: number;
|
||||
/** @example SBER */
|
||||
secid: string;
|
||||
shortName?: Record<string, never>;
|
||||
/**
|
||||
* @example share
|
||||
* @enum {string}
|
||||
*/
|
||||
type: 'share' | 'bond';
|
||||
/** @example 10 */
|
||||
quantity: number;
|
||||
buyPrice?: Record<string, never>;
|
||||
buyDate?: Record<string, never>;
|
||||
notes?: Record<string, never>;
|
||||
tags?: Record<string, never>;
|
||||
currentPrice?: Record<string, never>;
|
||||
totalCost?: Record<string, never>;
|
||||
currentValue?: Record<string, never>;
|
||||
weightPercent: number;
|
||||
pnl?: Record<string, never>;
|
||||
pnlPercent?: Record<string, never>;
|
||||
dividendIncome?: Record<string, never>;
|
||||
totalReturn?: Record<string, never>;
|
||||
totalReturnPercent?: Record<string, never>;
|
||||
change?: Record<string, never>;
|
||||
changePercent?: Record<string, never>;
|
||||
yieldToMaturity?: Record<string, never>;
|
||||
duration?: Record<string, never>;
|
||||
couponValue?: Record<string, never>;
|
||||
couponPercent?: Record<string, never>;
|
||||
nextCouponDate?: Record<string, never>;
|
||||
matDate?: Record<string, never>;
|
||||
accruedInt?: Record<string, never>;
|
||||
bid?: Record<string, never>;
|
||||
offer?: Record<string, never>;
|
||||
couponPeriod?: Record<string, never>;
|
||||
bondType?: Record<string, never>;
|
||||
offerDate?: Record<string, never>;
|
||||
};
|
||||
PortfolioSummaryDto: {
|
||||
totalInvested: number;
|
||||
totalValue: number;
|
||||
totalPnl: number;
|
||||
totalPnlPercent: Record<string, never>;
|
||||
totalDividends: number;
|
||||
totalReturn: number;
|
||||
totalReturnPercent: Record<string, never>;
|
||||
positionCount: number;
|
||||
weightedYield: Record<string, never>;
|
||||
};
|
||||
PortfolioDetailResponseDto: {
|
||||
id: number;
|
||||
name: string;
|
||||
description?: Record<string, never>;
|
||||
/** @default RUB */
|
||||
currency: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
positions: components['schemas']['PositionWithPriceDto'][];
|
||||
totalValue: number;
|
||||
analytics: components['schemas']['PortfolioSummaryDto'];
|
||||
};
|
||||
UpdatePortfolioDto: {
|
||||
/** @example Мой портфель */
|
||||
name?: string;
|
||||
/** @example Обновлённое описание */
|
||||
description?: string;
|
||||
/**
|
||||
* @default RUB
|
||||
* @enum {string}
|
||||
*/
|
||||
currency: 'RUB' | 'USD' | 'EUR' | 'CNY' | 'KZT' | 'BYN';
|
||||
};
|
||||
AddPositionDto: {
|
||||
/** @example SBER */
|
||||
secid: string;
|
||||
/** @example 10 */
|
||||
quantity: number;
|
||||
/** @example 250.5 */
|
||||
buyPrice?: number;
|
||||
/** @example 2026-06-01 */
|
||||
buyDate?: string;
|
||||
/** @example Покупка на дип */
|
||||
notes?: string;
|
||||
/**
|
||||
* @example [
|
||||
* "DIVIDEND",
|
||||
* "GROWTH"
|
||||
* ]
|
||||
* @enum {string}
|
||||
*/
|
||||
tags?:
|
||||
| 'DIVIDEND'
|
||||
| 'GROWTH'
|
||||
| 'DEFENSIVE'
|
||||
| 'SPECULATIVE'
|
||||
| 'BOND'
|
||||
| 'ETF'
|
||||
| 'GOVERNMENT'
|
||||
| 'CASH';
|
||||
};
|
||||
UpdatePositionDto: {
|
||||
/** @example 15 */
|
||||
quantity?: number;
|
||||
/** @example 260 */
|
||||
buyPrice?: number;
|
||||
/** @example 2026-06-15 */
|
||||
buyDate?: string;
|
||||
/** @example Докупка */
|
||||
notes?: string;
|
||||
/**
|
||||
* @example [
|
||||
* "DIVIDEND"
|
||||
* ]
|
||||
* @enum {string}
|
||||
*/
|
||||
tags?:
|
||||
| 'DIVIDEND'
|
||||
| 'GROWTH'
|
||||
| 'DEFENSIVE'
|
||||
| 'SPECULATIVE'
|
||||
| 'BOND'
|
||||
| 'ETF'
|
||||
| 'GOVERNMENT'
|
||||
| 'CASH';
|
||||
};
|
||||
};
|
||||
responses: never;
|
||||
parameters: never;
|
||||
requestBodies: never;
|
||||
@ -220,6 +629,120 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_register: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['RegisterDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_login: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['LoginDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_refresh: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_logout: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_getProfile: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
AuthController_updateProfile: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdateProfileDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
SecuritiesController_search: {
|
||||
parameters: {
|
||||
query: {
|
||||
@ -242,6 +765,49 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
SecuritiesController_screener: {
|
||||
parameters: {
|
||||
query: {
|
||||
type: 'share' | 'bond';
|
||||
priceMin?: number;
|
||||
priceMax?: number;
|
||||
volumeMin?: number;
|
||||
listLevel?: number;
|
||||
changePercentMin?: number;
|
||||
changePercentMax?: number;
|
||||
capitalizationMin?: number;
|
||||
yieldMin?: number;
|
||||
yieldMax?: number;
|
||||
durationMin?: number;
|
||||
durationMax?: number;
|
||||
couponMin?: number;
|
||||
couponMax?: number;
|
||||
couponPercentMin?: number;
|
||||
couponPercentMax?: number;
|
||||
maturityBefore?: string;
|
||||
maturityAfter?: string;
|
||||
bondType?: string;
|
||||
sortBy?: string;
|
||||
sortOrder?: string;
|
||||
page?: number;
|
||||
pageSize?: number;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
'application/json': components['schemas']['ScreenerResultDto'];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
SharesController_getShare: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@ -427,4 +993,193 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_findAll: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
'application/json': components['schemas']['PortfolioListResponseDto'][];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_create: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['CreatePortfolioDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_findOne: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
'application/json': components['schemas']['PortfolioDetailResponseDto'];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_remove: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_update: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdatePortfolioDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_addPosition: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['AddPositionDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
201: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_removePosition: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
positionId: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_updatePosition: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
positionId: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': components['schemas']['UpdatePositionDto'];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
PortfolioController_getAnalytics: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
id: number;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user