Aller au contenu

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

?startDate=2024-01&endDate=2025-04

Validé via getPortfolioRevenuesEndpoint.queryParams (depuis @bricks-common/api-communication).

  • startDateYearMonthDate au format YYYY-MM (obligatoire)
  • endDateYearMonthDate au format YYYY-MM (obligatoire)
  • Contrainte : startDateendDate

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é (investorFirstRevenueDate indé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