Investor Inactivity Survey¶
Contrôleur HTTP du webhook recevant les réponses au sondage d'inactivité investisseur, déclenché par CustomerIO. Source : investor-inactivity-survey.controller.ts.
Endpoint non protégé par JWT investisseur. L'authentification se fait via une clé d'API en query param (?apiKey=...) validée contre customerio.apiKeyInternal (cf. api-auth.service.ts#L57-L78).
PUT /investor/survey/webhook/customer-io/inactivity-survey¶
Reçoit la réponse d'un investisseur au sondage d'inactivité (« je garde mon compte » / « je ferme mon compte »), et met à jour la ligne de sondage existante dans une transaction Postgres avec verrou (getAndLockInvestorInactivitySurvey) pour éviter la double-réponse (controller#L10-L32).
Pré-conditions¶
- Clé d'API
customeriovalide en query param (apiKey) — sinon401 - Une ligne
investor_inactivity_surveydoit déjà exister pourinvestorId— sinon404 - La ligne ne doit pas déjà avoir d'
answernonnull— sinon409
Query param¶
apiKey— clé d'API CustomerIO (cf. ci-dessus)
Request body¶
Validé par investorInactivityAnswerRequestBody :
answer est l'union 'keepMyAccount' | 'closeMyAccount'.
Response¶
Vide (200 implicite, type de retour Promise<void>).
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| (générique) | 401 | apiKey absente ou invalide en query param |
investor-inactivity-survey.not-found |
404 | Aucune ligne pour cet investorId dans investor_inactivity_survey |
investor-inactivity-survey.already-answered |
409 | La ligne a déjà été répondue (answer !== null) |
Liens¶
- Service :
investor-inactivity-survey.service.ts - Repository :
investor-inactivity-survey.repository.ts - Validateurs partagés :
investor-inactivity-survey.ts - Auth API key :
api-auth.service.ts