Administration Customers¶
Contrôleur HTTP des actions d'administration sur les comptes investisseurs (recherche, fiches, MFA, freeze, KYC, paiements, parrainage, fiscalité, portefeuille). Source : customers.controller.ts.
Tous les endpoints requièrent une session admin BetterAuth valide (AdminAuthGuard).
GET /administration/customers¶
Recherche paginée des investisseurs (par email, nom, etc.).
Source : customers.controller.ts#L115.
Query param¶
offset— entier (optionnel)take— entier (défaut : 20)searchField— chaîne trimmée (espaces supprimés, optionnel)
Validés via customerSearchQuery.
Response¶
{
"investors": [
{ "id": "uuid", "email": "...", "firstName": "...", "lastName": "...", "lemonwayBalance": 0, "giftBalance": 0, "totalBalance": 0 }
],
"totalCount": 0
}
Type : CustomersResponse.
PUT /administration/customers¶
Met à jour en masse les fiches investisseurs (édition de profil). Trace l'action via AdminAction (CUSTOMER_BULK_UPDATE).
Source : customers.controller.ts#L126.
Request body¶
[
{
"id": "uuid",
"email": "...",
"sex": "...",
"firstName": "...",
"lastName": "...",
"phone": "...",
"dateOfBirth": "DD-MM-YYYY",
"citizenship": "...",
"street": "...",
"city": "...",
"postcode": "...",
"country": "...",
"cityOfBirth": "...",
"countryOfBirth": "...",
"regionCode": "..."
}
]
Validé via array(customerPatchPayload) (depuis @bricks-common/api-communication-bricksoffice). Tous les champs hors id sont optionnels.
GET /administration/customers/:investorId/boosted-balance¶
Retourne la vue admin du boosted balance de l'investisseur.
Source : customers.controller.ts#L138.
Path param¶
investorId— UUIDv4
Response¶
BoostedBalanceResponse (depuis @bricks-common/api-communication-bricksoffice).
GET /administration/customers/:customerId/lemonway-balance¶
Retourne la balance Lemonway en temps réel de l'investisseur.
Source : customers.controller.ts#L148.
Path param¶
customerId— UUIDv4
Response¶
LemonwayBalanceResponse.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
lemonway.account.not-found |
404 | Pas de compte Lemonway lié à l'investisseur |
lemonway.fetch-failed |
500 | Échec de l'appel Lemonway |
GET /administration/customers/:customerId¶
Retourne la fiche complète d'un investisseur (profil + informations de parrainage).
Source : customers.controller.ts#L169.
Path param¶
customerId— UUIDv4
Response¶
CustomerDetail.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
Customer <id> not found |
404 | Investisseur introuvable |
POST /administration/customers/:customerId/mfa¶
Active ou désactive la 2FA pour l'investisseur.
Source : customers.controller.ts#L183.
Pré-conditions¶
- L'investisseur doit exister (incluant les soft-deleted)
Path param¶
customerId— UUIDv4
Request body¶
Validé via mfaUpdatePayload.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
DELETE /administration/customers/:customerId¶
Supprime (soft-delete) un investisseur. Trace l'action via AdminAction (CUSTOMER_DELETE).
Source : customers.controller.ts#L203.
Path param¶
customerId— UUIDv4
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
<error> |
412 | Pré-conditions de suppression non remplies (propagé par InvestorDeletionService.deleteCustomer) |
POST /administration/customers/:customerId/reactivate¶
Réactive un investisseur précédemment supprimé. Trace l'action via AdminAction (CUSTOMER_REACTIVATE).
Source : customers.controller.ts#L217.
Path param¶
customerId— UUIDv4
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
<error> |
400 | Pré-conditions de réactivation non remplies (propagé par InvestorDeletionService.reactivateCustomer) |
POST /administration/customers/:customerId/password¶
Déclenche un reset de mot de passe pour l'investisseur. Trace l'action via AdminAction (CUSTOMER_RESET_PASSWORD).
Source : customers.controller.ts#L229.
Path param¶
customerId— UUIDv4
POST /administration/customers/:customerId/referrer-code¶
Définit ou met à jour le code parrain (referrer) de l'investisseur. Trace l'action via AdminAction (CUSTOMER_REFER).
Source : customers.controller.ts#L240.
Path param¶
customerId— UUIDv4
Request body¶
Validé via object({ code: notEmptyString }).
GET /administration/customers/:customerId/referral-info¶
Retourne les informations de parrainage de l'investisseur.
Source : customers.controller.ts#L254.
Path param¶
customerId— UUIDv4
Response¶
ReferralInfo.
GET /administration/customers/:customerId/referral-export/download¶
Télécharge un export Excel (.xlsx) des récompenses de parrainage de l'investisseur.
Source : customers.controller.ts#L264.
Path param¶
customerId— UUIDv4
Response¶
Binaire application/vnd.openxmlformats-officedocument.spreadsheetml.sheet en pièce jointe (filename bricks-<email>-referral-export-<date>.xlsx).
GET /administration/customers/:customerId/payment-methods¶
Liste les moyens de paiement (cartes, comptes bancaires) de l'investisseur.
Source : customers.controller.ts#L288.
Path param¶
customerId— UUIDv4
Response¶
PaymentMethodsResponse.
POST /administration/customers/:customerId/sync-payment-methods-status¶
Resynchronise le statut des moyens de paiement de l'investisseur avec Lemonway. Trace l'action via AdminAction (CUSTOMER_SYNC_PAYMENT_METHODS_STATUS).
Source : customers.controller.ts#L298.
Path param¶
customerId— UUIDv4
POST /administration/customers/:customerId/add-bank-account¶
Ajoute un compte bancaire (IBAN/BIC) à l'investisseur, en uploadant un justificatif (RIB). Trace l'action via AdminAction (CUSTOMER_ADD_BANK_ACCOUNT).
Source : customers.controller.ts#L311.
Pré-conditions¶
- Un fichier doit être joint (champ
fileen multipart)
Path param¶
customerId— UUIDv4
Request body¶
multipart/form-data. Champs :
Validé via bankAccountCreationPayload (IBAN et BIC vérifiés via ibantools).
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
file-required |
400 | Aucun fichier joint |
iban-not-valid |
400 | IBAN invalide |
bic-not-valid |
400 | BIC invalide |
PUT /administration/customers/:customerId/activate-bank-account¶
Active un compte bancaire précédemment ajouté pour l'investisseur. Trace l'action via AdminAction (CUSTOMER_ACTIVATE_BANK_ACCOUNT).
Source : customers.controller.ts#L329.
Path param¶
customerId— UUIDv4
Request body¶
Validé via bankAccountActivationPayload.
PATCH /administration/customers/:customerId/referral-link/:referralLinkId¶
Met à jour un lien de parrainage existant (code, % parrain/parrainé, durabilités).
Source : customers.controller.ts#L343.
Path param¶
customerId— UUIDv4referralLinkId— UUIDv4
Request body¶
{
"code": "CODE",
"referrerPerc": 5,
"refereePerc": 5,
"referralDurabiltyInDays": 365,
"refereeDurationInDays": 30
}
Validé via referralLinkPayload. Les pourcentages et durées sont plafonnés par businessRules.referral.limit.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
referral-link-not-found |
404 | Lien de parrainage introuvable |
referral-link-not-updated |
400 | Mise à jour échouée |
referral-code-required |
400 | code vide |
referrer-perc-too-high |
400 | referrerPerc dépasse la limite |
referee-perc-too-high |
400 | refereePerc dépasse la limite |
referrer-durability-too-high |
400 | referralDurabiltyInDays dépasse la limite |
referee-durability-too-high |
400 | refereeDurationInDays dépasse la limite |
POST /administration/customers/:customerId/referral-link¶
Crée un nouveau lien de parrainage pour l'investisseur.
Source : customers.controller.ts#L378.
Path param¶
customerId— UUIDv4
Request body¶
Identique à PATCH /referral-link/:referralLinkId (validé via referralLinkPayload).
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
customer-not-found |
404 | Investisseur introuvable |
referral-link-already-exists |
400 | Un lien existe déjà |
referral-link-not-created |
400 | Création échouée |
GET /administration/customers/:customerId/portfolio/home-metrics¶
Retourne les métriques home (valeur portefeuille, balances) du portefeuille de l'investisseur.
Source : customers.controller.ts#L408.
Path param¶
customerId— UUIDv4
Response¶
PortfolioMetrics enrichi de withdrawableBalances et giftBalances.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
portfolio-wealth.portfolio-current-value-not-available |
403 | Valeur courante du portefeuille indisponible |
GET /administration/customers/:customerId/portfolio/composition¶
Retourne la composition du portefeuille de l'investisseur.
Source : customers.controller.ts#L437.
Path param¶
customerId— UUIDv4
Response¶
PortfolioCompositionResponse.
POST /administration/customers/:customerId/freeze¶
Gèle un compte investisseur (bloque retraits/paiements). Trace l'action via AdminAction (CUSTOMER_FREEZE) et envoie une notification interne Slack.
Source : customers.controller.ts#L447.
Path param¶
customerId— UUIDv4
Request body¶
Validé via freezePayload.
GET /administration/customers/:customerId/unfreeze-infos¶
Retourne les informations nécessaires pour décider si un dégel est sûr (état des transactions en cours).
Source : customers.controller.ts#L466.
Path param¶
customerId— UUIDv4
Response¶
UnfreezeInfos.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
<error> |
500 | Échec de récupération des informations (propagé par CustomerFreezeService.getUnfreezeInfos) |
POST /administration/customers/:customerId/unfreeze (déprécié)¶
Déprécié — préférer safe-unfreeze. Dégel forcé de l'investisseur. Trace l'action via AdminAction (CUSTOMER_UNFREEZE).
Source : customers.controller.ts#L483.
Path param¶
customerId— UUIDv4
POST /administration/customers/:customerId/safe-unfreeze¶
Dégel sécurisé qui vérifie l'état avant d'agir. Trace l'action via AdminAction (CUSTOMER_UNFREEZE).
Source : customers.controller.ts#L494.
Path param¶
customerId— UUIDv4
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
<error> |
400 | Pré-conditions de dégel sécurisé non remplies (propagé par CustomerFreezeService.safeUnfreeze) |
GET /administration/customers/:customerId/admin-login¶
Connecte l'admin en tant que l'investisseur (impersonation) via le plugin admin Better Auth (clientAuth.api.impersonateUser) : les cookies de session sont relayés dans des en-têtes set-cookie et le corps renvoie { url } (URL du front). Bloque les emails @bricks.co. Envoie une alerte Slack interne et trace l'action via AdminAction (CUSTOMER_ADMIN_LOGIN).
Source : customers.controller.ts#L509.
Pré-conditions¶
- L'email de l'investisseur ne doit pas appartenir au domaine interne
@bricks.co
Path param¶
customerId— UUIDv4
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
admin.customer.NOT_FOUND |
404 | Investisseur introuvable |
admin.customer.FORBIDDEN_ACCOUNT |
403 | Email du domaine interne @bricks.co |
POST /administration/customers/:customerId/create-virtual-iban¶
Crée (ou récupère) un IBAN virtuel Lemonway pour l'investisseur. Trace l'action via AdminAction (CUSTOMER_CREATE_VIRTUAL_IBAN).
Source : customers.controller.ts#L544.
Path param¶
customerId— UUIDv4
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:customerId/last-verification-codes¶
Retourne les derniers codes de vérification (email/SMS) générés pour l'investisseur.
Source : customers.controller.ts#L558.
Path param¶
customerId— UUIDv4
Response¶
VerificationCodesResponse.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:investorId/tax-form/:year/download¶
Télécharge un formulaire fiscal (PDF) pour l'investisseur sur une année donnée.
Source : customers.controller.ts#L571.
Path param¶
investorId— UUIDv4year— entier (année)
Query param¶
documentType—taxForm|taxFormRoyalties|taxFormObligations
Validés via taxFormDownloadParams.
Response¶
Binaire application/pdf en pièce jointe.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
customer-not-found |
404 | Investisseur introuvable |
investor-document.document-not-found |
404 | Document introuvable |
investor-document.pending-generation.retry-later |
400 | Génération en cours, réessayer plus tard |
tax-form.year-not-taxable |
400 | Année non imposable |
investor-document.too-many-attempt-blocking-error |
500 | Trop de tentatives bloquantes |
GET /administration/customers/:customerId/financial-documents¶
Liste les documents financiers (vue admin) de l'investisseur.
Source : customers.controller.ts#L623.
Path param¶
customerId— UUIDv4
Response¶
Type : FiscalDocumentsResponse.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:customerId/financial-documents/:documentId/download¶
Télécharge un document financier spécifique (PDF) de l'investisseur.
Source : customers.controller.ts#L637.
Path param¶
customerId— UUIDv4documentId— UUIDv4
Response¶
Binaire application/pdf en pièce jointe.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
investor-document.document-not-found |
404 | Document introuvable |
investor-document.generation-failed |
500 | Échec de génération du document |
GET /administration/customers/:customerId/tax-rate-requests¶
Retourne les demandes de taux d'imposition de l'investisseur.
Source : customers.controller.ts#L667.
Path param¶
customerId— UUIDv4
Response¶
TaxRateRequestsResponse.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:customerId/investment-plan¶
Retourne les plans d'investissement (épargne automatique) configurés par l'investisseur.
Source : customers.controller.ts#L680.
Path param¶
customerId— UUIDv4
Response¶
InvestmentPlanResponse.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:customerId/withdraw-whitelist¶
Retourne le statut de whitelist retraits de l'investisseur.
Source : customers.controller.ts#L693.
Path param¶
customerId— UUIDv4
Response¶
Type : WithdrawWhitelistResponse.
POST /administration/customers/:customerId/withdraw-whitelist¶
Ajoute l'investisseur à la whitelist de retraits. Trace l'action via AdminAction (WITHDRAW_WHITELIST_ADD).
Source : customers.controller.ts#L704.
Path param¶
customerId— UUIDv4
GET /administration/customers/:customerId/withdraw-requests¶
Liste les demandes de retrait de l'investisseur.
Source : customers.controller.ts#L715.
Path param¶
customerId— UUIDv4
Response¶
WithdrawRequestsResponse.
GET /administration/customers/:customerId/portfolio-at-date¶
Retourne la composition du portefeuille de l'investisseur à une date donnée.
Source : customers.controller.ts#L725.
Path param¶
customerId— UUIDv4
Query param¶
date— date au formatYYYY-MM-DDou date ISO (validée viaportfolioAtDateQuery)
Response¶
{
"royalties": { "value": "1 234,56 €", "count": 12 },
"obligationOrLoan": { "value": "5 678,90 €", "count": 5 }
}
Type : PortfolioAtDateResult.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| — | 404 | Investisseur introuvable |
GET /administration/customers/:customerId/market-deals¶
Liste les deals secondaires (achat/vente) de l'investisseur sur la marketplace.
Source : customers.controller.ts#L756.
Path param¶
customerId— UUIDv4
Response¶
MarketDealsResponse.
Liens¶
- Service principal :
customer-admin.service.ts - Service freeze :
customer-freeze.service.ts - Service paiements :
customer-payment-method.service.ts - Service parrainage :
referral.service.ts - Service recherche :
customers-search.service.ts - Service mise à jour :
customers-update.service.ts