Files
Dmitry baac83149f fix(api): Decimal-параметр ребалансировки ломал генерацию Dart-клиента
cash_available был bare Decimal | None в Query(...) — pydantic отдаёт для
Decimal anyOf[number, pattern-string], который openapi-generator не умеет
свернуть в один тип и вместо этого синтезирует пустой класс CashAvailable
без полей (синтаксически битый .dart, компиляция всего пакета падает).
Остальные Decimal-поля в API давно оборачиваются в Money/MoneyOpt
(api/schemas/common.py) ровно за счёт этого — anyOf[string, null] генератор
понимает. cash_available обошёл соглашение, потому что это единственный
Decimal-параметр запроса во всём API, а не тело ответа.
2026-09-19 10:56:33 +03:00

4.6 KiB

fintracker_api.api.RebalanceApi

Load the API package

import 'package:fintracker_api/api.dart';

All URIs are relative to http://localhost

Method HTTP request Description
rebalanceRebalance GET /api/v1/portfolios/{portfolio_id}/rebalance Rebalance
rebalanceSetTargets PUT /api/v1/portfolios/{portfolio_id}/targets Set Targets
rebalanceTargets GET /api/v1/portfolios/{portfolio_id}/targets Targets

rebalanceRebalance

RebalanceOut rebalanceRebalance(portfolioId, dimension, cashAvailable)

Rebalance

Example

import 'package:fintracker_api/api.dart';

final api = FintrackerApi().getRebalanceApi();
final int portfolioId = 56; // int | 
final String dimension = dimension_example; // String | asset_class | sector | country | currency
final String cashAvailable = cashAvailable_example; // String | переопределяет остаток на счетах для what-if

try {
    final response = api.rebalanceRebalance(portfolioId, dimension, cashAvailable);
    print(response);
} on DioException catch (e) {
    print('Exception when calling RebalanceApi->rebalanceRebalance: $e\n');
}

Parameters

Name Type Description Notes
portfolioId int
dimension String asset_class sector
cashAvailable String переопределяет остаток на счетах для what-if [optional]

Return type

RebalanceOut

Authorization

HTTPBearer

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json, application/problem+json

[Back to top] [Back to API list] [Back to Model list] [Back to README]

rebalanceSetTargets

TargetsOut rebalanceSetTargets(portfolioId, targetsIn)

Set Targets

Replace the whole set for one dimension. The weights must add up to 1 within WEIGHT_TOLERANCE; otherwise the request is refused with the actual sum in the message, so the user can see by how much the plan misses rather than being handed a silently rescaled one.

Example

import 'package:fintracker_api/api.dart';

final api = FintrackerApi().getRebalanceApi();
final int portfolioId = 56; // int | 
final TargetsIn targetsIn = ; // TargetsIn | 

try {
    final response = api.rebalanceSetTargets(portfolioId, targetsIn);
    print(response);
} on DioException catch (e) {
    print('Exception when calling RebalanceApi->rebalanceSetTargets: $e\n');
}

Parameters

Name Type Description Notes
portfolioId int
targetsIn TargetsIn

Return type

TargetsOut

Authorization

HTTPBearer

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json, application/problem+json

[Back to top] [Back to API list] [Back to Model list] [Back to README]

rebalanceTargets

TargetsOut rebalanceTargets(portfolioId, dimension)

Targets

Example

import 'package:fintracker_api/api.dart';

final api = FintrackerApi().getRebalanceApi();
final int portfolioId = 56; // int | 
final String dimension = dimension_example; // String | asset_class | sector | country | currency

try {
    final response = api.rebalanceTargets(portfolioId, dimension);
    print(response);
} on DioException catch (e) {
    print('Exception when calling RebalanceApi->rebalanceTargets: $e\n');
}

Parameters

Name Type Description Notes
portfolioId int
dimension String asset_class sector

Return type

TargetsOut

Authorization

HTTPBearer

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json, application/problem+json

[Back to top] [Back to API list] [Back to Model list] [Back to README]