feat: add operations page

This commit is contained in:
2026-08-14 13:42:31 +03:00
parent 2cca503519
commit 4f3ee7ddb2
16 changed files with 913 additions and 8 deletions
+264
View File
@@ -590,6 +590,137 @@
]
}
},
"/api/v1/brokerage-accounts/{accountId}/operations": {
"get": {
"operationId": "BrokerageOperationsController_get",
"parameters": [
{
"name": "accountId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "from",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "to",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "categories",
"required": false,
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"trade",
"income",
"tax",
"fee",
"transfer",
"other"
]
}
}
},
{
"name": "cursor",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"schema": {
"minimum": 1,
"maximum": 1000,
"default": 100,
"type": "number"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrokerageOperationsPageDto"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetailsDto"
}
}
}
}
},
"security": [
{
"bearer": []
}
],
"tags": [
"brokerage-accounts"
]
}
},
"/api/v1/brokerage-accounts/{accountId}/portfolio": {
"get": {
"operationId": "PortfolioController_get",
@@ -829,6 +960,139 @@
"value"
]
},
"BrokerageOperationDto": {
"type": "object",
"properties": {
"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
},
"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",
"payment",
"quantity",
"price",
"accruedInterest",
"commission"
]
},
"BrokerageOperationsPageDto": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BrokerageOperationDto"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"hasNext": {
"type": "boolean"
},
"observedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"accountId",
"items",
"nextCursor",
"hasNext",
"observedAt"
]
},
"PortfolioPositionDto": {
"type": "object",
"properties": {