Membros do Agregado Familiar
Os membros são geridos por rotas aninhadas sob o agregado.
| Método | Endpoint | Permissão | Descrição |
|---|---|---|---|
| GET | /api/menages/{id}/membres | utilizador autenticado | Lista dos membros |
| POST | /api/menages/{id}/membres | registre.menages_membres | Adicionar um membro |
| POST | /api/menages/{id}/membres/bulk | registre.menages_membres | Adicionar vários membros |
| PUT, PATCH | /api/menages/{id}/membres/{membreId} | registre.menages_membres | Modificar um membro |
| DELETE | /api/menages/{id}/membres/{membreId} | registre.menages_membres | Eliminar um membro |
Todas estas rotas verificam que o agregado está no perímetro do utilizador. Um agregado de um projeto arquivado é só de leitura: as escritas devolvem 403 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
}
]
}
A lista devolve a ficha completa de cada membro: identidade, documentos, educação, saúde (incluindo gravidez e amamentação), deficiência (perguntas do Washington Group), telefonia e papel de beneficiário. identifiantUnique é o identificador legível da pessoa no SIG; o UUID id identifica apenas a linha.
Agregado inexistente: 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
}
Só nomComplet é obrigatório. Os outros campos são os da ficha acima; uma chave ausente não é modificada. Os valores de escolha (sexo, parentesco, nível de educação…) são convertidos no código do referencial do questionário do agregado, de modo que um rótulo ou um código de importação dão o mesmo valor.
Resposta 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
}
}
Erro 400 se nomComplet faltar.
POST /api/menages/{id}/membres/bulk
{
"membres": [
{ "nomComplet": "Membre Un", "sexe": "F", "lienParente": "fille" },
{ "nomComplet": "Membre Deux", "sexe": "M", "lienParente": "fils" }
]
}
Resposta: { "success": true, "message": "2 membre(s) ajouté(s)", "data": { … } }. Sem tabela membres: 400 Liste de membres requise.
PUT /api/menages/{id}/membres/{membreId}
Mesmos campos que a criação, todos opcionais. Resposta: { "success": true, "message": "Membre mis à jour avec succès", "data": { … } }. Membro inexistente: 404 Membre non trouvé.
DELETE /api/menages/{id}/membres/{membreId}
Resposta: { "success": true, "message": "Membre supprimé avec succès" }.
Exemplo 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' }),
});
Notas
- O chefe do agregado não faz parte desta lista: modifica-se com o agregado.
- As modificações ficam registadas no diário de auditoria.