Aller au contenu

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 customerio valide en query param (apiKey) — sinon 401
  • Une ligne investor_inactivity_survey doit déjà exister pour investorId — sinon 404
  • La ligne ne doit pas déjà avoir d'answer non null — sinon 409

Query param

  • apiKey — clé d'API CustomerIO (cf. ci-dessus)

Request body

Validé par investorInactivityAnswerRequestBody :

{
  "investorId": "uuid-of-investor",
  "answer": "keepMyAccount"
}

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