feat: add stock screener
This commit is contained in:
Vendored
+199
@@ -436,6 +436,38 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/v1/stocks/screener/search": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
post: operations["createStockScreenerSearch"];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/v1/stocks/screener/search/{searchId}": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
get: operations["readStockScreenerPage"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/v1/stocks/{uid}": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -1250,6 +1282,37 @@ export interface components {
|
||||
data: components["schemas"]["StockDto"] | null;
|
||||
meta: components["schemas"]["InvestmentResourceMetaDto"];
|
||||
};
|
||||
StockScreenerCriteriaDto: {
|
||||
query?: string;
|
||||
sector?: string;
|
||||
shareType?: string;
|
||||
currency?: string;
|
||||
realExchange?: string;
|
||||
countryOfRisk?: string;
|
||||
maxLot?: number;
|
||||
};
|
||||
StockScreenerItemDto: {
|
||||
/** Format: uuid */
|
||||
instrumentUid: string;
|
||||
name: string;
|
||||
ticker: string | null;
|
||||
isin: string | null;
|
||||
logoName: string | null;
|
||||
shareType: string | null;
|
||||
sector: string | null;
|
||||
currency: string | null;
|
||||
realExchange: string | null;
|
||||
countryOfRisk: string | null;
|
||||
lot: number | null;
|
||||
};
|
||||
StockScreenerPageDto: {
|
||||
searchId: string;
|
||||
/** Format: date-time */
|
||||
asOf: string;
|
||||
page: number;
|
||||
hasNext: boolean;
|
||||
items: components["schemas"]["StockScreenerItemDto"][];
|
||||
};
|
||||
StockQuoteDto: {
|
||||
price: components["schemas"]["MoneyDto"] | null;
|
||||
/** Format: date-time */
|
||||
@@ -4077,6 +4140,142 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
createStockScreenerSearch: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
"application/json": components["schemas"]["StockScreenerCriteriaDto"];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"application/json": components["schemas"]["StockScreenerPageDto"];
|
||||
};
|
||||
};
|
||||
/** @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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
readStockScreenerPage: {
|
||||
parameters: {
|
||||
query: {
|
||||
page: number;
|
||||
};
|
||||
header?: never;
|
||||
path: {
|
||||
searchId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"application/json": components["schemas"]["StockScreenerPageDto"];
|
||||
};
|
||||
};
|
||||
/** @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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
StockController_get: {
|
||||
parameters: {
|
||||
query?: {
|
||||
|
||||
@@ -3333,6 +3333,188 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/v1/stocks/screener/search": {
|
||||
"post": {
|
||||
"operationId": "createStockScreenerSearch",
|
||||
"parameters": [],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockScreenerCriteriaDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockScreenerPageDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": []
|
||||
}
|
||||
],
|
||||
"summary": "",
|
||||
"tags": [
|
||||
"stocks"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/v1/stocks/screener/search/{searchId}": {
|
||||
"get": {
|
||||
"operationId": "readStockScreenerPage",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "searchId",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "page",
|
||||
"required": true,
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockScreenerPageDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": []
|
||||
}
|
||||
],
|
||||
"summary": "",
|
||||
"tags": [
|
||||
"stocks"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/v1/stocks/{uid}": {
|
||||
"get": {
|
||||
"operationId": "StockController_get",
|
||||
@@ -7310,6 +7492,133 @@
|
||||
"meta"
|
||||
]
|
||||
},
|
||||
"StockScreenerCriteriaDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"query": {
|
||||
"type": "string",
|
||||
"maxLength": 80
|
||||
},
|
||||
"sector": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"shareType": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"currency": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"realExchange": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"countryOfRisk": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxLot": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"StockScreenerItemDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"instrumentUid": {
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"ticker": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"isin": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"logoName": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"shareType": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"sector": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"currency": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"realExchange": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"countryOfRisk": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"lot": {
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"instrumentUid",
|
||||
"name",
|
||||
"ticker",
|
||||
"isin",
|
||||
"logoName",
|
||||
"shareType",
|
||||
"sector",
|
||||
"currency",
|
||||
"realExchange",
|
||||
"countryOfRisk",
|
||||
"lot"
|
||||
]
|
||||
},
|
||||
"StockScreenerPageDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"searchId": {
|
||||
"type": "string"
|
||||
},
|
||||
"asOf": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"page": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"hasNext": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"items": {
|
||||
"maxItems": 30,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/StockScreenerItemDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"searchId",
|
||||
"asOf",
|
||||
"page",
|
||||
"hasNext",
|
||||
"items"
|
||||
]
|
||||
},
|
||||
"StockQuoteDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
||||
@@ -636,6 +636,57 @@ const ru = {
|
||||
quantity: "Количество акций",
|
||||
record: "Дата реестра",
|
||||
refreshPrice: "Обновить цену",
|
||||
screener: {
|
||||
asOf: "Список получен {{date}}",
|
||||
countryOfRisk: "Страна риска",
|
||||
currency: "Валюта расчётов",
|
||||
empty: "Подходящие акции не найдены.",
|
||||
error: "Не удалось получить результат скринера. Попробуйте найти снова.",
|
||||
maxLot: "Максимальный размер лота",
|
||||
options: {
|
||||
countryOfRisk: {
|
||||
CN: "Китай",
|
||||
HK: "Гонконг",
|
||||
KZ: "Казахстан",
|
||||
RU: "Россия",
|
||||
TR: "Турция",
|
||||
US: "США",
|
||||
},
|
||||
realExchange: {
|
||||
REAL_EXCHANGE_DEALER: "Площадка брокера",
|
||||
REAL_EXCHANGE_MOEX: "Мосбиржа",
|
||||
REAL_EXCHANGE_OTC: "Внебиржевой рынок",
|
||||
REAL_EXCHANGE_RTS: "СПБ Биржа",
|
||||
},
|
||||
sector: {
|
||||
consumer: "Потребительский сектор",
|
||||
energy: "Энергетика",
|
||||
financial: "Финансы",
|
||||
health_care: "Здравоохранение",
|
||||
industrials: "Промышленность",
|
||||
it: "Информационные технологии",
|
||||
materials: "Материалы",
|
||||
real_estate: "Недвижимость",
|
||||
telecom: "Телекоммуникации",
|
||||
utilities: "Коммунальные услуги",
|
||||
},
|
||||
shareType: {
|
||||
SHARE_TYPE_ADR: "Депозитарная расписка",
|
||||
SHARE_TYPE_COMMON: "Обыкновенная акция",
|
||||
SHARE_TYPE_GDR: "Глобальная депозитарная расписка",
|
||||
SHARE_TYPE_PREFERRED: "Привилегированная акция",
|
||||
},
|
||||
},
|
||||
page: "Страница {{page}}",
|
||||
pagination: "Страницы результатов",
|
||||
query: "Название или тикер",
|
||||
realExchange: "Площадка",
|
||||
search: "Найти",
|
||||
sector: "Сектор",
|
||||
shareType: "Тип акции",
|
||||
},
|
||||
screenerSubtitle: "Подберите акции по данным каталога T-Bank. Доступность не гарантирует исполнение сделки.",
|
||||
screenerTitle: "Скринер акций",
|
||||
searchHint: "Введите хотя бы два символа.",
|
||||
searching: "Ищем акции",
|
||||
searchLabel: "Поиск акций",
|
||||
|
||||
Reference in New Issue
Block a user