Aller au contenu

Project Owner

Endpoints d'administration pour gérer les porteurs de projet (entité project_owner : identité, contact). Source : project-owner.controller.ts.

Tous les endpoints requièrent une session admin BetterAuth valide (AdminAuthGuard).

POST /administration/project-owner

Crée un porteur de projet, ou retourne celui existant si un porteur avec le même email est déjà présent (getOrCreateProjectOwner). Une AdminAction PROJECT_OWNER_CREATION est créée via interceptor.

Décorateur : L26.

Request body

{
  "id": "uuid-v4-optional",
  "firstname": "Jean",
  "lastname": "Dupont",
  "email": "jean@example.com",
  "phoneNumber": "+33 6 00 00 00 00"
}

Validé via ProjectOwner.createOrUpdatePayload. phoneNumber optionnel.

Response

Ok<ProjectOwner.T> :

{
  "ok": true,
  "value": {
    "id": "uuid-v4",
    "createdAt": "...",
    "updatedAt": "...",
    "firstname": "Jean",
    "lastname": "Dupont",
    "email": "jean@example.com",
    "phoneNumber": "+33 6 00 00 00 00"
  }
}

GET /administration/project-owner

Liste tous les porteurs de projet.

Décorateur : L38.

Response

Tableau de ProjectOwner.T.

PUT /administration/project-owner/:projectOwnerId

Met à jour un porteur de projet. Une AdminAction PROJECT_OWNER_UPDATE est créée via interceptor.

Décorateur : L44.

Path param

  • projectOwnerId — UUIDv4 (validé via ParseUUIDPipe({ version: '4' }))

Request body

Identique à POST /administration/project-owner (ProjectOwner.createOrUpdatePayload).

Response

204 No Content (la méthode du service ne retourne rien).

DELETE /administration/project-owner/:projectOwnerId

Supprime un porteur de projet. Refusé si le porteur a au moins un projet rattaché. Une AdminAction PROJECT_OWNER_UPDATE est créée via interceptor.

Décorateur : L57.

Path param

  • projectOwnerId — UUIDv4

Response

200 avec body vide dans tous les cas. Le handler fait await safePgTransaction(...) sans return, donc la méthode résout undefined : NestJS émet un 200 sans corps. Les valeurs Ok({}) (succès) et Err('project-owner-has-projects') (porteur ayant des projets) sont les retours du callback de transaction, mais ils sont ignorés par l'absence de return et n'apparaissent pas dans la réponse.

Erreurs

Code Statut Cause
project-owner-has-projects 200 (body vide) Le porteur a des projets associés ; suppression bloquée (le code d'erreur n'est pas renvoyé dans le body)

Liens