Files
frontend/src/shared/api/spec/openapi.json
T
codex-bot 32e8fe9402
Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 9s
Frontend verify / verify (push) Failing after 6m30s
refactor: derive api error codes from contract (WealthLedger/backend#117) (#123)
2026-10-28 17:31:22 +03:00

9331 lines
237 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"openapi": "3.0.0",
"paths": {
"/api/v1/auth/register": {
"post": {
"operationId": "AuthController_register",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthenticationDto"
}
}
}
},
"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"
}
}
}
}
},
"tags": [
"auth"
]
}
},
"/api/v1/auth/login": {
"post": {
"operationId": "AuthController_login",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthenticationDto"
}
}
}
},
"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"
}
}
}
}
},
"tags": [
"auth"
]
}
},
"/api/v1/auth/refresh": {
"post": {
"operationId": "AuthController_refresh",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthenticationDto"
}
}
}
},
"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"
}
}
}
}
},
"tags": [
"auth"
]
}
},
"/api/v1/auth/logout": {
"post": {
"operationId": "AuthController_logout",
"parameters": [],
"responses": {
"204": {
"description": ""
},
"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"
}
}
}
}
},
"tags": [
"auth"
]
}
},
"/api/v1/auth/me": {
"get": {
"operationId": "AuthController_me",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserDto"
}
}
}
},
"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": [
"auth"
]
}
},
"/api/v1/bank-cards": {
"get": {
"operationId": "BankCardsController_list",
"parameters": [
{
"name": "includeArchived",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"true",
"false"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BankCardDto"
}
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
},
"post": {
"operationId": "BankCardsController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateBankCardDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankCardDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/categories": {
"get": {
"operationId": "BankCardsController_categories",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ExpenseCategoryDto"
}
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
},
"post": {
"operationId": "BankCardsController_createCategory",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CategoryNameDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExpenseCategoryDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/categories/{id}": {
"patch": {
"operationId": "BankCardsController_updateCategory",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateExpenseCategoryDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExpenseCategoryDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/summary": {
"get": {
"operationId": "BankCardsController_summary",
"parameters": [
{
"name": "month",
"required": false,
"in": "query",
"description": "Use month or both from and to, exclusively.",
"schema": {
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive start date; requires to.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive end date; requires from.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "cardId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankSummaryDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/operations": {
"post": {
"operationId": "BankCardsController_createOperation",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateBankOperationDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankOperationDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/operations/{id}": {
"get": {
"operationId": "BankCardsController_operation",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankOperationDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
},
"patch": {
"operationId": "BankCardsController_updateOperation",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateBankOperationDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankOperationDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
},
"delete": {
"operationId": "BankCardsController_deleteOperation",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "version",
"required": true,
"in": "query",
"schema": {
"minimum": 1,
"type": "number"
}
}
],
"responses": {
"204": {
"description": ""
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/{id}/operations": {
"get": {
"operationId": "BankCardsController_history",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "page",
"required": false,
"in": "query",
"schema": {
"minimum": 1,
"default": 1,
"type": "number"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"schema": {
"minimum": 1,
"maximum": 100,
"default": 50,
"type": "number"
}
},
{
"name": "month",
"required": false,
"in": "query",
"description": "Use month or both from and to, exclusively.",
"schema": {
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive start date; requires to.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive end date; requires from.",
"schema": {
"format": "date",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankOperationsPageDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/{id}/expenses": {
"get": {
"operationId": "BankCardsController_expenses",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "page",
"required": false,
"in": "query",
"schema": {
"minimum": 1,
"default": 1,
"type": "number"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"schema": {
"minimum": 1,
"maximum": 100,
"default": 50,
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankOperationsPageDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/bank-cards/{id}": {
"get": {
"operationId": "BankCardsController_get",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankCardDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
},
"patch": {
"operationId": "BankCardsController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateBankCardDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankCardDto"
}
}
}
},
"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": "BANK_CARD_ARCHIVED, BANK_VERSION_CONFLICT, BANK_INTENT_CONFLICT, BANK_REFUND_LIMIT, BANK_DEPENDENT_REFUNDS, BANK_DUPLICATE_CATEGORY or BANK_WRITE_CONFLICT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"410": {
"description": "BANK_OPERATION_DELETED: creation replay refers to a deleted operation",
"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": [
"bank-cards"
]
}
},
"/api/v1/brokerage-accounts": {
"get": {
"operationId": "BrokerageAccountsController_list",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrokerageAccountsResourceDto"
}
}
}
},
"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/PortfolioResourceDto"
}
}
}
},
"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/PortfolioResourceDto"
}
}
}
},
"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/BrokerageOperationsResourceDto"
}
}
}
},
"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/BrokerageOperationsResourceDto"
}
}
}
},
"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": [
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IncomeSummaryResourceDto"
}
}
}
},
"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": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive calendar date in Europe/Moscow. Supply both from/to or neither.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive calendar date in Europe/Moscow, no later than today. Supply both from/to or neither.",
"schema": {
"format": "date",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IncomeAnalyticsResourceDto"
}
}
}
},
"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"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IncomeSummaryResourceDto"
}
}
}
},
"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": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive calendar date in Europe/Moscow. Supply both from/to or neither.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive calendar date in Europe/Moscow, no later than today. Supply both from/to or neither.",
"schema": {
"format": "date",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IncomeAnalyticsResourceDto"
}
}
}
},
"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": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive UTC calendar start date (YYYY-MM-DD). May be supplied independently; defaults to today in UTC.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive UTC calendar end date (YYYY-MM-DD). May be supplied independently; defaults to 30 days after from. Timestamp queries use the start of the following UTC day as the exclusive end.",
"schema": {
"format": "date",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpcomingEventsResourceDto"
}
}
}
},
"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": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "from",
"required": false,
"in": "query",
"description": "Inclusive UTC calendar start date (YYYY-MM-DD). May be supplied independently; defaults to today in UTC.",
"schema": {
"format": "date",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"description": "Inclusive UTC calendar end date (YYYY-MM-DD). May be supplied independently; defaults to 30 days after from. Timestamp queries use the start of the following UTC day as the exclusive end.",
"schema": {
"format": "date",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpcomingEventsResourceDto"
}
}
}
},
"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/stocks": {
"get": {
"operationId": "StockController_search",
"parameters": [
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "query",
"required": true,
"in": "query",
"schema": {
"minLength": 2,
"maxLength": 80,
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockSearchResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/by-ticker/{ticker}": {
"get": {
"operationId": "StockController_getByTicker",
"parameters": [
{
"name": "ticker",
"required": true,
"in": "path",
"schema": {
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9][A-Za-z0-9._@+-]*$",
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/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",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/{uid}/quote": {
"get": {
"operationId": "StockController_quote",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockQuoteResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/{uid}/candles": {
"get": {
"operationId": "StockController_candles",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "period",
"required": false,
"in": "query",
"schema": {
"default": "month",
"type": "string",
"enum": [
"month",
"halfYear",
"year",
"all"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockCandlesResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/{uid}/position": {
"get": {
"operationId": "StockController_position",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockPositionResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/{uid}/company": {
"get": {
"operationId": "StockController_company",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockCompanyResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/stocks/{uid}/dividends": {
"get": {
"operationId": "StockController_dividends",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StockDividendsResourceDto"
}
}
}
},
"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": [
"stocks"
]
}
},
"/api/v1/bonds/{uid}/metrics": {
"get": {
"operationId": "BondController_metrics",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondMetricsResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds": {
"get": {
"operationId": "BondController_search",
"parameters": [
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "query",
"required": true,
"in": "query",
"schema": {
"minLength": 2,
"maxLength": 80,
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondSearchResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/by-ticker/{ticker}": {
"get": {
"operationId": "BondController_getByTicker",
"parameters": [
{
"name": "ticker",
"required": true,
"in": "path",
"schema": {
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9][A-Za-z0-9._@+-]*$",
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/{uid}": {
"get": {
"operationId": "BondController_get",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/{uid}/quote": {
"get": {
"operationId": "BondController_quote",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondQuoteResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/{uid}/candles": {
"get": {
"operationId": "BondController_candles",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
},
{
"name": "period",
"required": false,
"in": "query",
"schema": {
"default": "month",
"type": "string",
"enum": [
"month",
"halfYear",
"year",
"all"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondCandlesResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/{uid}/position": {
"get": {
"operationId": "BondController_position",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondPositionResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/bonds/{uid}/coupons": {
"get": {
"operationId": "BondController_coupons",
"parameters": [
{
"name": "uid",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "sync",
"required": false,
"in": "query",
"schema": {
"type": "string",
"enum": [
"observe"
]
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BondCouponsResourceDto"
}
}
}
},
"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": [
"bonds"
]
}
},
"/api/v1/tbank-connection": {
"get": {
"operationId": "TbankConnectionController_status",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TbankConnectionStatusDto"
}
}
}
},
"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": [
"tbank-connection"
]
},
"put": {
"operationId": "TbankConnectionController_put",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PutTbankConnectionDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TbankConnectionStatusDto"
}
}
}
},
"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": [
"tbank-connection"
]
},
"delete": {
"operationId": "TbankConnectionController_delete",
"parameters": [],
"responses": {
"204": {
"description": ""
},
"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": [
"tbank-connection"
]
}
},
"/api/v1/tbank-sync/{id}": {
"get": {
"operationId": "TbankSyncController_status",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TbankSyncStatusDto"
}
}
}
},
"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": [
"tbank-sync"
]
}
}
},
"info": {
"title": "WealthLedger API",
"description": "",
"version": "v1",
"contact": {}
},
"tags": [],
"servers": [],
"components": {
"schemas": {
"ProblemDetailsDto": {
"type": "object",
"properties": {
"status": {
"type": "number",
"example": 401
},
"code": {
"type": "string",
"example": "UNAUTHORIZED",
"enum": [
"BAD_REQUEST",
"INTERNAL_SERVER_ERROR",
"NOT_FOUND",
"UNAUTHORIZED",
"UNSUPPORTED_MEDIA_TYPE",
"VALIDATION_ERROR",
"EMAIL_ALREADY_REGISTERED",
"INVALID_CREDENTIALS",
"INVALID_OPERATIONS_CURSOR",
"BOND_HISTORY_START_UNAVAILABLE",
"BOND_TICKER_AMBIGUOUS",
"STOCK_HISTORY_START_UNAVAILABLE",
"STOCK_TICKER_AMBIGUOUS",
"INVALID_TBANK_TOKEN",
"TBANK_NOT_CONNECTED",
"TBANK_UNAVAILABLE",
"BANK_CARD_ARCHIVED",
"BANK_DEPENDENT_REFUNDS",
"BANK_DUPLICATE_CATEGORY",
"BANK_IMMUTABLE_OPERATION",
"BANK_INTENT_CONFLICT",
"BANK_INVALID_DATE",
"BANK_INVALID_INPUT",
"BANK_INVALID_MONEY",
"BANK_INVALID_REFUND",
"BANK_NOT_FOUND",
"BANK_OPENING_DATE_CONFLICT",
"BANK_OPERATION_DELETED",
"BANK_REFUND_LIMIT",
"BANK_VERSION_CONFLICT",
"BANK_WRITE_CONFLICT",
"MOEX_UNAVAILABLE",
"NCR_UNAVAILABLE",
"INVALID_EVENTS_PERIOD",
"INVALID_INCOME_PERIOD"
]
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"pointer",
"detail"
],
"properties": {
"pointer": {
"type": "string"
},
"detail": {
"type": "string"
}
}
},
"example": [
{
"pointer": "#/email",
"detail": "must be a valid email address"
}
]
}
},
"required": [
"status",
"code"
]
},
"RegisterDto": {
"type": "object",
"properties": {
"email": {
"type": "string",
"example": "user@example.com"
},
"password": {
"type": "string",
"description": "Raw password: 8-72 printable ASCII characters (letters, digits, symbols, space). Not trimmed or normalized.",
"pattern": "^[\\x20-\\x7E]{8,72}$",
"example": "a secure password"
}
},
"required": [
"email",
"password"
]
},
"UserDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"id",
"email"
]
},
"AuthenticationDto": {
"type": "object",
"properties": {
"accessToken": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/UserDto"
}
},
"required": [
"accessToken",
"user"
]
},
"LoginDto": {
"type": "object",
"properties": {
"email": {
"type": "string",
"example": "user@example.com"
},
"password": {
"type": "string",
"description": "Raw password, at most 72 UTF-8 bytes. Not trimmed or normalized.",
"example": "a secure password"
}
},
"required": [
"email",
"password"
]
},
"MoneyDto": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"currency",
"value"
]
},
"BankCardDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"bankName": {
"type": "string",
"nullable": true
},
"lastFour": {
"type": "string",
"nullable": true
},
"paymentSystem": {
"type": "string",
"enum": [
"mir",
"visa",
"mastercard"
],
"nullable": true
},
"openingBalance": {
"$ref": "#/components/schemas/MoneyDto"
},
"openingDate": {
"type": "string"
},
"balance": {
"$ref": "#/components/schemas/MoneyDto"
},
"archivedAt": {
"type": "string",
"nullable": true
},
"version": {
"type": "number"
}
},
"required": [
"id",
"name",
"bankName",
"lastFour",
"paymentSystem",
"openingBalance",
"openingDate",
"balance",
"archivedAt",
"version"
]
},
"RubMoneyInputDto": {
"type": "object",
"properties": {
"currency": {
"type": "string",
"enum": [
"RUB"
]
},
"value": {
"type": "string",
"pattern": "^-?[0-9]+(\\.[0-9]{1,2})?$"
}
},
"required": [
"currency",
"value"
]
},
"CreateBankCardDto": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"bankName": {
"type": "string",
"nullable": true,
"maxLength": 100
},
"lastFour": {
"type": "string",
"nullable": true,
"pattern": "^[0-9]{4}$"
},
"paymentSystem": {
"type": "string",
"enum": [
"mir",
"visa",
"mastercard"
],
"nullable": true
},
"openingBalance": {
"$ref": "#/components/schemas/RubMoneyInputDto"
},
"openingDate": {
"type": "string",
"format": "date"
}
},
"required": [
"id",
"name",
"openingBalance",
"openingDate"
]
},
"ExpenseCategoryDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"version": {
"type": "number"
}
},
"required": [
"id",
"name",
"isDefault",
"version"
]
},
"CategoryNameDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"name"
]
},
"UpdateExpenseCategoryDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"version": {
"type": "number",
"minimum": 1
}
},
"required": [
"name",
"version"
]
},
"BankSummaryCategoryDto": {
"type": "object",
"properties": {
"categoryId": {
"type": "string"
},
"categoryName": {
"type": "string"
},
"expenses": {
"$ref": "#/components/schemas/MoneyDto"
},
"refunds": {
"$ref": "#/components/schemas/MoneyDto"
},
"net": {
"$ref": "#/components/schemas/MoneyDto"
}
},
"required": [
"categoryId",
"categoryName",
"expenses",
"refunds",
"net"
]
},
"BankSummaryDto": {
"type": "object",
"properties": {
"month": {
"type": "string"
},
"from": {
"type": "string",
"format": "date"
},
"to": {
"type": "string",
"format": "date"
},
"cardId": {
"type": "string",
"nullable": true
},
"expenses": {
"$ref": "#/components/schemas/MoneyDto"
},
"refunds": {
"$ref": "#/components/schemas/MoneyDto"
},
"net": {
"$ref": "#/components/schemas/MoneyDto"
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BankSummaryCategoryDto"
}
}
},
"required": [
"cardId",
"expenses",
"refunds",
"net",
"categories"
]
},
"CreateBankOperationDto": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"kind": {
"type": "string",
"enum": [
"expense",
"topup",
"transfer",
"refund"
]
},
"cardId": {
"type": "string",
"format": "uuid"
},
"targetCardId": {
"type": "string",
"format": "uuid"
},
"categoryId": {
"type": "string",
"format": "uuid"
},
"originalExpenseId": {
"type": "string",
"format": "uuid"
},
"amount": {
"$ref": "#/components/schemas/RubMoneyInputDto"
},
"date": {
"type": "string",
"format": "date"
},
"description": {
"type": "string",
"maxLength": 500
}
},
"required": [
"id",
"kind",
"cardId",
"amount",
"date"
]
},
"BankOperationDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"expense",
"topup",
"transfer",
"refund"
]
},
"cardId": {
"type": "string"
},
"cardName": {
"type": "string"
},
"targetCardId": {
"type": "string",
"nullable": true
},
"targetCardName": {
"type": "string",
"nullable": true
},
"categoryId": {
"type": "string",
"nullable": true
},
"categoryName": {
"type": "string",
"nullable": true
},
"originalExpenseId": {
"type": "string",
"nullable": true
},
"amount": {
"$ref": "#/components/schemas/MoneyDto"
},
"availableRefund": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"date": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
},
"version": {
"type": "number"
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"kind",
"cardId",
"cardName",
"targetCardId",
"targetCardName",
"categoryId",
"categoryName",
"originalExpenseId",
"amount",
"availableRefund",
"date",
"description",
"version",
"createdAt"
]
},
"UpdateBankOperationDto": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"expense",
"topup",
"transfer",
"refund"
]
},
"cardId": {
"type": "string",
"format": "uuid"
},
"targetCardId": {
"type": "string",
"format": "uuid"
},
"categoryId": {
"type": "string",
"format": "uuid"
},
"originalExpenseId": {
"type": "string",
"format": "uuid"
},
"amount": {
"$ref": "#/components/schemas/RubMoneyInputDto"
},
"date": {
"type": "string",
"format": "date"
},
"description": {
"type": "string",
"maxLength": 500
},
"version": {
"type": "number",
"minimum": 1
}
},
"required": [
"version"
]
},
"BankOperationsPageDto": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BankOperationDto"
}
},
"page": {
"type": "number"
},
"total": {
"type": "number"
},
"hasNext": {
"type": "boolean"
}
},
"required": [
"items",
"page",
"total",
"hasNext"
]
},
"UpdateBankCardDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"bankName": {
"type": "string",
"nullable": true,
"maxLength": 100
},
"lastFour": {
"type": "string",
"nullable": true,
"pattern": "^[0-9]{4}$"
},
"paymentSystem": {
"type": "string",
"enum": [
"mir",
"visa",
"mastercard"
],
"nullable": true
},
"openingBalance": {
"$ref": "#/components/schemas/RubMoneyInputDto"
},
"openingDate": {
"type": "string",
"format": "date"
},
"version": {
"type": "number",
"minimum": 1
},
"archived": {
"type": "boolean"
}
},
"required": [
"version"
]
},
"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"
]
},
"UnrealizedReturnDto": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"absolute": {
"type": "string",
"example": "12.345678901"
},
"costBasis": {
"type": "string",
"example": "100.00"
},
"percent": {
"type": "string",
"nullable": true,
"example": "12.34"
},
"partial": {
"type": "boolean"
}
},
"required": [
"currency",
"absolute",
"costBasis",
"percent",
"partial"
]
},
"PortfolioSummaryDto": {
"type": "object",
"properties": {
"totalsByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
},
"cashBalances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MoneyDto"
}
},
"structure": {
"$ref": "#/components/schemas/PortfolioStructureDto"
},
"unrealizedReturnByCurrency": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UnrealizedReturnDto"
}
},
"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."
},
"fundPositionCount": {
"type": "integer",
"minimum": 0,
"description": "Number of non-zero fund positions, not the number of units."
},
"totalPositionCount": {
"type": "integer",
"minimum": 0,
"description": "Number of all non-zero positions, not the number of units."
}
},
"required": [
"totalsByCurrency",
"cashBalances",
"structure",
"unrealizedReturnByCurrency",
"stockPositionCount",
"bondPositionCount",
"fundPositionCount",
"totalPositionCount"
]
},
"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"
]
},
"InvestmentRangeDto": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"from": {
"type": "string",
"format": "date-time"
},
"to": {
"type": "string",
"format": "date-time"
}
},
"required": [
"from",
"to"
]
},
"InvestmentCoverageDto": {
"type": "object",
"properties": {
"requested": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentRangeDto"
}
},
"completeRanges": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentRangeDto"
}
},
"missingRanges": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentRangeDto"
}
},
"asOf": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"historyBoundary": {
"type": "string",
"enum": [
"known",
"unknown"
]
},
"historyState": {
"type": "string",
"enum": [
"missing",
"loading",
"partial",
"complete",
"failed"
]
}
},
"required": [
"requested",
"completeRanges",
"missingRanges",
"asOf",
"historyBoundary",
"historyState"
]
},
"InvestmentAttemptProblemDto": {
"type": "object",
"properties": {
"section": {
"type": "string",
"enum": [
"membership",
"portfolio",
"operations",
"events"
]
},
"accountId": {
"type": "string",
"nullable": true
},
"errorCode": {
"type": "string",
"nullable": true
}
},
"required": [
"section",
"accountId",
"errorCode"
]
},
"InvestmentAttemptDto": {
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"none",
"running",
"succeeded",
"partial",
"failed"
]
},
"startedAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"finishedAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"problems": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentAttemptProblemDto"
}
}
},
"required": [
"state",
"startedAt",
"finishedAt",
"problems"
]
},
"InvestmentDependencyDto": {
"type": "object",
"properties": {
"dataRevision": {
"type": "string"
},
"unavailableReason": {
"type": "string"
},
"coverage": {
"$ref": "#/components/schemas/InvestmentCoverageDto"
},
"resourceKey": {
"type": "string"
},
"availability": {
"type": "string",
"enum": [
"available",
"initial-loading",
"temporarily-unavailable",
"connection-unavailable"
]
},
"completeness": {
"type": "string",
"enum": [
"complete",
"incomplete"
]
},
"freshness": {
"type": "string",
"enum": [
"unknown",
"fresh",
"stale"
]
},
"lastSuccessfulAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastAttempt": {
"$ref": "#/components/schemas/InvestmentAttemptDto"
}
},
"required": [
"dataRevision",
"resourceKey",
"availability",
"completeness",
"freshness",
"lastSuccessfulAt",
"lastAttempt"
]
},
"InvestmentResourceMetaDto": {
"type": "object",
"properties": {
"dataRevision": {
"type": "string"
},
"unavailableReason": {
"type": "string"
},
"coverage": {
"$ref": "#/components/schemas/InvestmentCoverageDto"
},
"resourceKey": {
"type": "string"
},
"availability": {
"type": "string",
"enum": [
"available",
"initial-loading",
"temporarily-unavailable",
"connection-unavailable"
]
},
"completeness": {
"type": "string",
"enum": [
"complete",
"incomplete"
]
},
"freshness": {
"type": "string",
"enum": [
"unknown",
"fresh",
"stale"
]
},
"lastSuccessfulAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastAttempt": {
"$ref": "#/components/schemas/InvestmentAttemptDto"
},
"dependencies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentDependencyDto"
}
}
},
"required": [
"dataRevision",
"resourceKey",
"availability",
"completeness",
"freshness",
"lastSuccessfulAt",
"lastAttempt"
]
},
"HourlySyncStatusDto": {
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"running",
"succeeded",
"partial",
"failed",
"cancelled"
],
"description": "Last hourly walk state. Cancelled means an interrupted attempt; its start still delays the next term."
},
"startedAt": {
"type": "string",
"format": "date-time"
},
"finishedAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"problems": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InvestmentAttemptProblemDto"
}
}
},
"required": [
"state",
"startedAt",
"finishedAt",
"problems"
]
},
"BrokerageAccountsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/BrokerageAccountDto"
}
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
},
"sync": {
"nullable": true,
"description": "Read-only status of the last hourly walk for the current connection. Null when no walk attempt exists yet.",
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/HourlySyncStatusDto"
}
]
}
},
"required": [
"data",
"meta",
"sync"
]
},
"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"
]
},
"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"
]
},
"PortfolioResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/PortfolioDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"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"
]
},
"BrokerageOperationsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BrokerageOperationsPageDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"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"
]
},
"IncomeSummaryResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/IncomeSummaryDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"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"
},
"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",
"bucketGranularity",
"buckets",
"instruments",
"entries"
]
},
"IncomeDependencyDto": {
"type": "object",
"properties": {
"dataRevision": {
"type": "string"
},
"unavailableReason": {
"type": "string"
},
"coverage": {
"$ref": "#/components/schemas/InvestmentCoverageDto"
},
"resourceKey": {
"type": "string"
},
"availability": {
"type": "string",
"enum": [
"available",
"initial-loading",
"temporarily-unavailable",
"connection-unavailable"
]
},
"completeness": {
"type": "string",
"enum": [
"complete",
"incomplete"
]
},
"freshness": {
"type": "string",
"enum": [
"unknown",
"fresh",
"stale"
]
},
"lastSuccessfulAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastAttempt": {
"$ref": "#/components/schemas/InvestmentAttemptDto"
},
"role": {
"type": "string",
"enum": [
"selected"
]
}
},
"required": [
"dataRevision",
"resourceKey",
"availability",
"completeness",
"freshness",
"lastSuccessfulAt",
"lastAttempt",
"role"
]
},
"IncomeAnalyticsMetaDto": {
"type": "object",
"properties": {
"dataRevision": {
"type": "string"
},
"unavailableReason": {
"type": "string"
},
"coverage": {
"$ref": "#/components/schemas/InvestmentCoverageDto"
},
"resourceKey": {
"type": "string"
},
"availability": {
"type": "string",
"enum": [
"available",
"initial-loading",
"temporarily-unavailable",
"connection-unavailable"
]
},
"completeness": {
"type": "string",
"enum": [
"complete",
"incomplete"
]
},
"freshness": {
"type": "string",
"enum": [
"unknown",
"fresh",
"stale"
]
},
"lastSuccessfulAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastAttempt": {
"$ref": "#/components/schemas/InvestmentAttemptDto"
},
"dependencies": {
"description": "Dependencies identified by role, not array order or resourceKey. A missing role is unavailable.",
"type": "array",
"items": {
"$ref": "#/components/schemas/IncomeDependencyDto"
}
}
},
"required": [
"dataRevision",
"resourceKey",
"availability",
"completeness",
"freshness",
"lastSuccessfulAt",
"lastAttempt",
"dependencies"
]
},
"IncomeAnalyticsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/IncomeAnalyticsDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/IncomeAnalyticsMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"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"
]
},
"UpcomingEventsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/UpcomingEventsDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockSearchResultDto": {
"type": "object",
"properties": {
"instrumentUid": {
"type": "string",
"format": "uuid"
},
"slug": {
"type": "string",
"description": "Unambiguous ticker URL segment, or the exact instrument UID."
},
"name": {
"type": "string"
},
"isin": {
"type": "string",
"nullable": true
},
"classCode": {
"type": "string",
"nullable": true
},
"realExchange": {
"type": "string",
"nullable": true
},
"apiTradeAvailable": {
"type": "boolean",
"nullable": true
},
"ticker": {
"type": "string",
"nullable": true
},
"logoName": {
"type": "string",
"nullable": true
},
"currency": {
"type": "string",
"nullable": true
},
"shareType": {
"type": "string",
"nullable": true
},
"sector": {
"type": "string",
"nullable": true
},
"lot": {
"type": "number",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"price": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"priceAt": {
"type": "string",
"nullable": true,
"format": "date-time"
}
},
"required": [
"instrumentUid",
"slug",
"name",
"isin",
"classCode",
"realExchange",
"apiTradeAvailable",
"ticker",
"logoName",
"currency",
"shareType",
"sector",
"lot",
"historyFrom",
"price",
"priceAt"
]
},
"StockSearchResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/StockSearchResultDto"
}
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockDto": {
"type": "object",
"properties": {
"instrumentUid": {
"type": "string",
"format": "uuid"
},
"slug": {
"type": "string",
"description": "Unambiguous ticker URL segment, or the exact instrument UID."
},
"name": {
"type": "string"
},
"isin": {
"type": "string",
"nullable": true
},
"classCode": {
"type": "string",
"nullable": true
},
"realExchange": {
"type": "string",
"nullable": true
},
"apiTradeAvailable": {
"type": "boolean",
"nullable": true
},
"ticker": {
"type": "string",
"nullable": true
},
"logoName": {
"type": "string",
"nullable": true
},
"currency": {
"type": "string",
"nullable": true
},
"shareType": {
"type": "string",
"nullable": true
},
"sector": {
"type": "string",
"nullable": true
},
"lot": {
"type": "number",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
}
},
"required": [
"instrumentUid",
"slug",
"name",
"isin",
"classCode",
"realExchange",
"apiTradeAvailable",
"ticker",
"logoName",
"currency",
"shareType",
"sector",
"lot",
"historyFrom"
]
},
"StockResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"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
}
},
"additionalProperties": false
},
"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,
"minimum": 1
}
},
"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": {
"price": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"priceAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"tradingStatus": {
"type": "string",
"nullable": true
},
"change": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"changePercent": {
"type": "string",
"nullable": true
},
"previousCloseDate": {
"type": "string",
"nullable": true,
"format": "date"
},
"previousClose": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
}
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"price",
"priceAt",
"tradingStatus",
"change",
"changePercent",
"previousCloseDate",
"previousClose",
"unavailable",
"observedAt"
]
},
"StockQuoteResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockQuoteDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockCandleDto": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "date-time"
},
"close": {
"type": "string"
},
"isComplete": {
"type": "boolean"
}
},
"required": [
"time",
"close",
"isComplete"
]
},
"StockCandlesDto": {
"type": "object",
"properties": {
"candles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockCandleDto"
}
},
"currency": {
"type": "string",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"candles",
"currency",
"historyFrom",
"observedAt"
]
},
"StockCandlesResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockCandlesDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockPositionRowDto": {
"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
},
"returnPercent": {
"type": "string",
"nullable": true
}
},
"required": [
"figi",
"displayName",
"type",
"quantity",
"currentValue",
"averagePurchasePrice",
"absoluteReturn",
"isin",
"ticker",
"logoName",
"returnPercent"
]
},
"StockPositionDto": {
"type": "object",
"properties": {
"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"
}
]
},
"returnPercent": {
"type": "string",
"nullable": true
},
"accounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockPositionRowDto"
}
},
"isStale": {
"type": "boolean"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"quantity",
"currentValue",
"averagePurchasePrice",
"absoluteReturn",
"returnPercent",
"accounts",
"isStale",
"observedAt"
]
},
"StockPositionResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockPositionDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockMetricDto": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"type": "string",
"enum": [
"money",
"ratio",
"percent"
]
},
"currency": {
"type": "string",
"nullable": true
},
"period": {
"type": "string",
"nullable": true,
"enum": [
"TTM",
"MRQ"
]
}
},
"required": [
"key",
"value",
"unit",
"currency",
"period"
]
},
"StockCompanyDto": {
"type": "object",
"properties": {
"description": {
"type": "string",
"nullable": true
},
"metrics": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockMetricDto"
}
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
}
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"description",
"metrics",
"unavailable",
"observedAt"
]
},
"StockCompanyResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockCompanyDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"StockDividendDto": {
"type": "object",
"properties": {
"perShare": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"recordDate": {
"type": "string",
"nullable": true,
"format": "date"
},
"lastBuyDate": {
"type": "string",
"nullable": true,
"format": "date"
},
"paymentDate": {
"type": "string",
"nullable": true,
"format": "date"
},
"timing": {
"type": "string",
"enum": [
"upcoming",
"past",
"undated"
]
},
"estimatedAmount": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
}
},
"required": [
"perShare",
"recordDate",
"lastBuyDate",
"paymentDate",
"timing",
"estimatedAmount"
]
},
"StockDividendsDto": {
"type": "object",
"properties": {
"dividends": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockDividendDto"
}
},
"from": {
"type": "string",
"format": "date"
},
"to": {
"type": "string",
"format": "date"
},
"observedAt": {
"type": "string",
"format": "date-time"
},
"positionAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"estimateUnavailable": {
"type": "boolean"
},
"positionIsStale": {
"type": "boolean"
}
},
"required": [
"dividends",
"from",
"to",
"observedAt",
"positionAt",
"estimateUnavailable",
"positionIsStale"
]
},
"StockDividendsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/StockDividendsDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondCreditRatingDto": {
"type": "object",
"properties": {
"agency": {
"type": "string",
"enum": [
"NCR"
]
},
"value": {
"type": "string",
"nullable": true
},
"status": {
"type": "string",
"enum": [
"active",
"withdrawn"
]
},
"date": {
"type": "string",
"format": "date"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"agency",
"value",
"status",
"date",
"sourceUrl",
"observedAt"
]
},
"BondYieldDto": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "MOEX effective annual yield in percent."
},
"pricePercent": {
"type": "string"
},
"date": {
"type": "string",
"format": "date"
},
"dateType": {
"type": "string",
"nullable": true,
"description": "MOEX yield target, e.g. MATDATE or OFFERDATE."
},
"tradeAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value",
"pricePercent",
"date",
"dateType",
"tradeAt"
]
},
"BondMetricsDto": {
"type": "object",
"properties": {
"creditRating": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondCreditRatingDto"
}
]
},
"coupon": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"couponDate": {
"type": "string",
"nullable": true,
"format": "date"
},
"couponType": {
"type": "string",
"nullable": true
},
"couponPeriodDays": {
"type": "number",
"nullable": true
},
"couponYieldPercent": {
"type": "string",
"nullable": true,
"description": "Next coupon × 365 / period days / indicative clean price × 100. Not yield to maturity."
},
"couponYieldPriceAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"effectiveYield": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondYieldDto"
}
]
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
}
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"creditRating",
"coupon",
"couponDate",
"couponType",
"couponPeriodDays",
"couponYieldPercent",
"couponYieldPriceAt",
"effectiveYield",
"unavailable",
"observedAt"
]
},
"BondMetricsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondMetricsDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondSearchResultDto": {
"type": "object",
"properties": {
"instrumentUid": {
"type": "string",
"format": "uuid"
},
"slug": {
"type": "string",
"description": "Unambiguous ticker URL segment, or the exact instrument UID."
},
"name": {
"type": "string"
},
"isin": {
"type": "string",
"nullable": true
},
"classCode": {
"type": "string",
"nullable": true
},
"realExchange": {
"type": "string",
"nullable": true
},
"apiTradeAvailable": {
"type": "boolean",
"nullable": true
},
"ticker": {
"type": "string",
"nullable": true
},
"logoName": {
"type": "string",
"nullable": true
},
"currency": {
"type": "string",
"nullable": true
},
"sector": {
"type": "string",
"nullable": true
},
"lot": {
"type": "number",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"nominal": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"initialNominal": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"aci": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"maturityDate": {
"type": "string",
"nullable": true
},
"callDate": {
"type": "string",
"nullable": true
},
"bondType": {
"type": "string",
"nullable": true
},
"riskLevel": {
"type": "string",
"nullable": true
},
"couponQuantityPerYear": {
"type": "number",
"nullable": true
},
"floatingCoupon": {
"type": "boolean",
"nullable": true
},
"perpetual": {
"type": "boolean",
"nullable": true
},
"amortization": {
"type": "boolean",
"nullable": true
},
"subordinated": {
"type": "boolean",
"nullable": true
},
"pricePercent": {
"type": "string",
"nullable": true,
"description": "Clean price in percent of nominal, not money."
},
"priceAt": {
"type": "string",
"nullable": true,
"format": "date-time"
}
},
"required": [
"instrumentUid",
"slug",
"name",
"isin",
"classCode",
"realExchange",
"apiTradeAvailable",
"ticker",
"logoName",
"currency",
"sector",
"lot",
"historyFrom",
"nominal",
"initialNominal",
"aci",
"maturityDate",
"callDate",
"bondType",
"riskLevel",
"couponQuantityPerYear",
"floatingCoupon",
"perpetual",
"amortization",
"subordinated",
"pricePercent",
"priceAt"
]
},
"BondSearchResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/BondSearchResultDto"
}
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondDto": {
"type": "object",
"properties": {
"instrumentUid": {
"type": "string",
"format": "uuid"
},
"slug": {
"type": "string",
"description": "Unambiguous ticker URL segment, or the exact instrument UID."
},
"name": {
"type": "string"
},
"isin": {
"type": "string",
"nullable": true
},
"classCode": {
"type": "string",
"nullable": true
},
"realExchange": {
"type": "string",
"nullable": true
},
"apiTradeAvailable": {
"type": "boolean",
"nullable": true
},
"ticker": {
"type": "string",
"nullable": true
},
"logoName": {
"type": "string",
"nullable": true
},
"currency": {
"type": "string",
"nullable": true
},
"sector": {
"type": "string",
"nullable": true
},
"lot": {
"type": "number",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"nominal": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"initialNominal": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"aci": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"maturityDate": {
"type": "string",
"nullable": true
},
"callDate": {
"type": "string",
"nullable": true
},
"bondType": {
"type": "string",
"nullable": true
},
"riskLevel": {
"type": "string",
"nullable": true
},
"couponQuantityPerYear": {
"type": "number",
"nullable": true
},
"floatingCoupon": {
"type": "boolean",
"nullable": true
},
"perpetual": {
"type": "boolean",
"nullable": true
},
"amortization": {
"type": "boolean",
"nullable": true
},
"subordinated": {
"type": "boolean",
"nullable": true
}
},
"required": [
"instrumentUid",
"slug",
"name",
"isin",
"classCode",
"realExchange",
"apiTradeAvailable",
"ticker",
"logoName",
"currency",
"sector",
"lot",
"historyFrom",
"nominal",
"initialNominal",
"aci",
"maturityDate",
"callDate",
"bondType",
"riskLevel",
"couponQuantityPerYear",
"floatingCoupon",
"perpetual",
"amortization",
"subordinated"
]
},
"BondResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondQuoteDto": {
"type": "object",
"properties": {
"pricePercent": {
"type": "string",
"nullable": true
},
"cleanPrice": {
"nullable": true,
"description": "Indicative clean value at the current nominal; no FX conversion.",
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"aci": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"dirtyPrice": {
"nullable": true,
"description": "Indicative clean value plus current accrued interest, excluding fees.",
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"changePercentagePoints": {
"type": "string",
"nullable": true
},
"previousCloseDate": {
"type": "string",
"nullable": true
},
"tradingStatus": {
"type": "string",
"nullable": true
},
"priceAt": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
}
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"pricePercent",
"cleanPrice",
"aci",
"dirtyPrice",
"changePercentagePoints",
"previousCloseDate",
"tradingStatus",
"priceAt",
"unavailable",
"observedAt"
]
},
"BondQuoteResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondQuoteDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondCandlesDto": {
"type": "object",
"properties": {
"candles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockCandleDto"
}
},
"currency": {
"type": "string",
"nullable": true
},
"historyFrom": {
"type": "string",
"nullable": true,
"format": "date-time"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"candles",
"currency",
"historyFrom",
"observedAt"
]
},
"BondCandlesResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondCandlesDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondPositionDto": {
"type": "object",
"properties": {
"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"
}
]
},
"returnPercent": {
"type": "string",
"nullable": true
},
"accounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StockPositionRowDto"
}
},
"isStale": {
"type": "boolean"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"quantity",
"currentValue",
"averagePurchasePrice",
"absoluteReturn",
"returnPercent",
"accounts",
"isStale",
"observedAt"
]
},
"BondPositionResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondPositionDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"BondCouponDto": {
"type": "object",
"properties": {
"number": {
"type": "string",
"nullable": true
},
"paymentDate": {
"type": "string",
"nullable": true
},
"recordDate": {
"type": "string",
"nullable": true
},
"couponType": {
"type": "string",
"nullable": true
},
"periodDays": {
"type": "number",
"nullable": true
},
"perBond": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"estimatedAmount": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/MoneyDto"
}
]
},
"timing": {
"type": "string",
"enum": [
"upcoming",
"past",
"undated"
]
}
},
"required": [
"number",
"paymentDate",
"recordDate",
"couponType",
"periodDays",
"perBond",
"estimatedAmount",
"timing"
]
},
"BondCouponsDto": {
"type": "object",
"properties": {
"coupons": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BondCouponDto"
}
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"observedAt": {
"type": "string"
},
"positionAt": {
"type": "string",
"nullable": true
},
"estimateUnavailable": {
"type": "boolean"
},
"positionIsStale": {
"type": "boolean"
}
},
"required": [
"coupons",
"from",
"to",
"observedAt",
"positionAt",
"estimateUnavailable",
"positionIsStale"
]
},
"BondCouponsResourceDto": {
"type": "object",
"properties": {
"data": {
"nullable": true,
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BondCouponsDto"
}
]
},
"meta": {
"$ref": "#/components/schemas/InvestmentResourceMetaDto"
}
},
"required": [
"data",
"meta"
]
},
"TbankConnectionStatusDto": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"connectedAt": {
"type": "string",
"nullable": true,
"format": "date-time"
}
},
"required": [
"connected",
"connectedAt"
]
},
"PutTbankConnectionDto": {
"type": "object",
"properties": {
"token": {
"type": "string",
"writeOnly": true
}
},
"required": [
"token"
]
},
"EventsInvestmentScreenDto": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"screen": {
"type": "string",
"enum": [
"events"
]
},
"from": {
"type": "string",
"format": "date",
"description": "Inclusive UTC calendar start date (YYYY-MM-DD). May be supplied independently; defaults to today in UTC."
},
"to": {
"type": "string",
"format": "date",
"description": "Inclusive UTC calendar end date (YYYY-MM-DD). May be supplied independently; defaults to 30 days after from. Timestamp queries use the start of the following UTC day as the exclusive end."
}
},
"required": [
"accountId",
"screen"
]
},
"IncomeInvestmentScreenDto": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"screen": {
"type": "string",
"enum": [
"income"
]
},
"from": {
"type": "string",
"format": "date",
"description": "Inclusive start calendar date in Europe/Moscow (YYYY-MM-DD). Supply both from and to, or neither for the current Moscow month."
},
"to": {
"type": "string",
"format": "date",
"description": "Inclusive end calendar date in Europe/Moscow (YYYY-MM-DD). Supply both from and to, or neither. Timestamp queries use the start of the following Moscow day as the exclusive end, capped at now."
}
},
"required": [
"accountId",
"screen"
]
},
"SyncCandleRangeDto": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date-time"
},
"to": {
"type": "string",
"format": "date-time"
}
},
"required": [
"from",
"to"
]
},
"TimestampInvestmentScreenDto": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"instrumentUid": {
"type": "string",
"format": "uuid"
},
"query": {
"type": "string"
},
"candlePeriod": {
"type": "string",
"enum": [
"month",
"halfYear",
"year",
"all"
]
},
"candleRange": {
"$ref": "#/components/schemas/SyncCandleRangeDto"
},
"categories": {
"type": "array",
"items": {
"type": "string",
"enum": [
"trade",
"income",
"tax",
"fee",
"transfer",
"other"
]
}
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 1000
},
"screen": {
"type": "string",
"enum": [
"accounts",
"account",
"operations",
"stocks",
"bonds",
"stock",
"bond"
]
},
"from": {
"type": "string",
"format": "date-time",
"description": "Start instant for operations."
},
"to": {
"type": "string",
"format": "date-time",
"description": "End instant for operations."
}
},
"required": [
"screen"
]
},
"TbankSyncStatusDto": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"scope": {
"oneOf": [
{
"$ref": "#/components/schemas/IncomeInvestmentScreenDto"
},
{
"$ref": "#/components/schemas/EventsInvestmentScreenDto"
},
{
"$ref": "#/components/schemas/TimestampInvestmentScreenDto"
}
],
"discriminator": {
"propertyName": "screen",
"mapping": {
"income": "#/components/schemas/IncomeInvestmentScreenDto",
"events": "#/components/schemas/EventsInvestmentScreenDto",
"accounts": "#/components/schemas/TimestampInvestmentScreenDto",
"account": "#/components/schemas/TimestampInvestmentScreenDto",
"operations": "#/components/schemas/TimestampInvestmentScreenDto",
"stocks": "#/components/schemas/TimestampInvestmentScreenDto",
"bonds": "#/components/schemas/TimestampInvestmentScreenDto",
"stock": "#/components/schemas/TimestampInvestmentScreenDto",
"bond": "#/components/schemas/TimestampInvestmentScreenDto"
}
},
"nullable": true
},
"now": {
"type": "string",
"format": "date-time"
},
"state": {
"type": "string",
"enum": [
"running",
"succeeded",
"failed",
"cancelled"
]
},
"errorCode": {
"type": "string",
"nullable": true
}
},
"required": [
"id",
"scope",
"now",
"state",
"errorCode"
]
}
}
}
}