Portfolio — Revenue¶
Contrôleur HTTP exposant l'historique des revenus de l'investisseur (coupons obligataires, royalties, parrainage, gain de balance boostée), agrégés par mois et avec totaux. Source : portfolio.revenue.controller.ts.
Tous les endpoints requièrent un JWT investisseur valide (JwtAuthGuard) et le rôle CUSTOMER (UserRoleGuard).
Tous les endpoints sont préfixés par /investor/portfolio/revenue (cf. @Controller).
GET /investor/portfolio/revenue/¶
Retourne les revenus de l'investisseur sur une plage de mois, agrégés par année/mois, avec totaux taxés et bruts, ainsi que la date du premier revenu enregistré.
Handler : getPortfolioRevenue.
Query params¶
Validé via getPortfolioRevenuesEndpoint.queryParams (depuis @bricks-common/api-communication).
startDate—YearMonthDateau formatYYYY-MM(obligatoire)endDate—YearMonthDateau formatYYYY-MM(obligatoire)- Contrainte :
startDate≤endDate
Les dates sont converties en début de mois côté serveur via moment(startDate, 'YYYY-MM', true).startOf('month').
Response¶
{
"investorFirstRevenueDate": "2023-06-01T00:00:00Z",
"revenuesTotal": {
"untaxedTotal": 12500,
"taxedTotal": 10000,
"revenues": {
"withholdingTax": { "total": 2500, "byRate": [{ "taxRate": 0.3, "total": 2500 }] },
"obligationCoupons": {
"untaxedTotal": 8000,
"taxedTotal": 6000,
"byProperty": [{ "propertyId": "uuid", "propertyName": { "fr": "..." }, "value": 6000 }]
},
"royalties": { "total": 4000, "byProperty": [] },
"referrals": { "total": 0 },
"boostedBalanceGain": { "total": 500 }
}
},
"revenuesByYearAndMonth": [
{
"year": 2025,
"month": 4,
"untaxedTotal": 1200,
"taxedTotal": 900,
"revenues": { "...": "même structure que revenuesTotal.revenues" }
}
]
}
Typé PortfolioRevenue.T — la réponse peut être null si :
- l'investisseur n'a aucun revenu enregistré (
investorFirstRevenueDateindéfini) - la première date de revenu de l'investisseur est postérieure à la fin du mois ciblé par
endDate
Tous les montants sont en cents.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| Validation idonttrustlikethat | 400 | Query params manquants/invalides (format dates YYYY-MM, ou startDate > endDate) |
Liens¶
- Service :
portfolio.revenue.service.ts - Repository :
portfolio.revenue.repository.ts - Utilitaires d'agrégation :
portfolio.revenue.utils.ts - Validator de réponse :
portfolio/revenue.ts - Endpoint defs :
endpoints/portfolio.endpoint.ts