Aller au contenu principal

Membres du Ménage

Les membres sont gérés par des routes imbriquées sous le ménage.

MéthodeEndpointPermissionDescription
GET/api/menages/{id}/membresutilisateur connectéListe des membres
POST/api/menages/{id}/membresregistre.menages_membresAjouter un membre
POST/api/menages/{id}/membres/bulkregistre.menages_membresAjouter plusieurs membres
PUT, PATCH/api/menages/{id}/membres/{membreId}registre.menages_membresModifier un membre
DELETE/api/menages/{id}/membres/{membreId}registre.menages_membresSupprimer un membre

Toutes ces routes vérifient que le ménage est dans le périmètre de l'utilisateur. Un ménage d'un projet archivé est en lecture seule : les écritures renvoient une erreur Ce projet est en lecture seule, les modifications ne sont pas autorisées.

GET /api/menages/{id}/membres​

{
"success": true,
"data": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"identifiantUnique": "…",
"nomComplet": "Membre Exemple",
"sexe": "F",
"age": 12,
"lienParente": "fille",
"niveauEducation": "primaire",
"occupation": "eleve",
"handicape": false,
"dateNaissance": "2014-03-02",
"scolarise": true,
"beneficiairePrincipal": false,
"beneficiaireSubstitut": false
}
]
}

La liste renvoie la fiche complète de chaque membre : identité, documents, éducation, santé (dont grossesse et allaitement), handicap (questions du Washington Group), téléphonie et rôle de bénéficiaire. identifiantUnique est l'identifiant lisible de la personne dans le SIG ; l'UUID id identifie seulement la ligne.

Ménage introuvable : 404 {"success": false, "message": "Ménage non trouvé"}.

POST /api/menages/{id}/membres​

{
"nomComplet": "Membre Exemple",
"sexe": "F",
"lienParente": "fille",
"dateNaissance": "2014-03-02",
"niveauEducation": "primaire",
"scolarise": true
}

Seul nomComplet est obligatoire. Les autres champs sont ceux de la fiche ci-dessus ; une clé absente n'est pas modifiée. Les valeurs à choix (sexe, lien de parenté, niveau d'éducation…) sont ramenées au code du référentiel du questionnaire ménage, si bien qu'un libellé ou un code d'import donnent la même valeur.

Réponse 201 Created :

{
"success": true,
"message": "Membre ajouté avec succès",
"data": {
"id": "…",
"identifiantUnique": "…",
"nomComplet": "Membre Exemple",
"sexe": "F",
"age": 12,
"lienParente": "fille",
"niveauEducation": "primaire",
"occupation": null,
"handicape": false
}
}

Erreur 400 si nomComplet manque.

POST /api/menages/{id}/membres/bulk​

{
"membres": [
{ "nomComplet": "Membre Un", "sexe": "F", "lienParente": "fille" },
{ "nomComplet": "Membre Deux", "sexe": "M", "lienParente": "fils" }
]
}

Réponse : { "success": true, "message": "2 membre(s) ajouté(s)", "data": { … } }. Sans tableau membres : 400 Liste de membres requise.

PUT /api/menages/{id}/membres/{membreId}​

Mêmes champs que la création, tous optionnels. Réponse : { "success": true, "message": "Membre mis à jour avec succès", "data": { … } }. Membre introuvable : 404 Membre non trouvé.

DELETE /api/menages/{id}/membres/{membreId}​

Réponse : { "success": true, "message": "Membre supprimé avec succès" }.

Exemple JavaScript​

const base = `https://sig.example.com/api/menages/${menageId}/membres`;
const headers = { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' };

const { data: membres } = await (await fetch(base, { headers })).json();

await fetch(base, {
method: 'POST',
headers,
body: JSON.stringify({ nomComplet: 'Membre Exemple', sexe: 'F', lienParente: 'fille' }),
});

Notes​

  • Le chef de ménage n'est pas un membre de cette liste : il se modifie avec le ménage.
  • Les modifications sont tracées dans le journal d'audit.