Pular para o conteúdo principal

Membros do Agregado Familiar

Endpoints para gerir os membros de um agregado familiar (exceto o chefe de familia).

GET /api/menages/{id}/membres

Obtem a lista de membros de um agregado familiar.

Endpoint

GET /api/menages/{id}/membres

Headers

HeaderValorObrigatorio
AuthorizationBearer {token}Sim

Resposta de sucesso

Codigo: 200 OK

{
"@context": "/api/contexts/MembreMenage",
"@id": "/api/menages/1/membres",
"@type": "hydra:Collection",
"hydra:totalItems": 4,
"hydra:member": [
{
"@id": "/api/membre_menages/1",
"@type": "MembreMenage",
"id": 1,
"nomComplet": "Fatou Diallo",
"lienParente": "epouse",
"sexe": "F",
"age": 38,
"niveauEducation": "secondaire",
"occupationPrincipale": "commerce",
"handicap": false
},
{
"@id": "/api/membre_menages/2",
"@type": "MembreMenage",
"id": 2,
"nomComplet": "Ibrahima Diallo",
"lienParente": "fils",
"sexe": "M",
"age": 15,
"niveauEducation": "primaire",
"occupationPrincipale": "etudiant",
"handicap": false
}
]
}

Exemplo cURL

curl https://sig.ucp-pch.org/api/menages/1/membres \
-H "Authorization: Bearer TOKEN"

POST /api/membre_menages

Adiciona um novo membro a um agregado familiar.

Endpoint

POST /api/membre_menages

Corpo da requisicao

{
"menage": "/api/menages/1",
"nomComplet": "Aminata Diallo",
"lienParente": "fille",
"sexe": "F",
"age": 12,
"niveauEducation": "primaire",
"occupationPrincipale": "etudiant",
"handicap": false
}

Campos

CampoTipoObrigatorioDescricao
menageIRISimReferencia ao agregado
nomCompletstringSimNome e apelido
lienParentestringSimRelacao com o chefe
sexestringNao"M" ou "F"
ageintegerNaoIdade
niveauEducationstringNaoNivel de educacao
occupationPrincipalestringNaoAtividade
handicapbooleanNaoSituacao de deficiencia

Valores possiveis para lienParente

ValorDescricao
epouseEsposa/Esposo
filsFilho
filleFilha
perePai
mereMae
frereIrmao
soeurIrma
oncleTio
tanteTia
neveuSobrinho
nieceSobrinha
cousinPrimo(a)
autreOutro

Resposta de sucesso

Codigo: 201 Created

{
"@id": "/api/membre_menages/5",
"@type": "MembreMenage",
"id": 5,
"nomComplet": "Aminata Diallo",
"lienParente": "fille",
"sexe": "F",
"age": 12
}

Exemplo cURL

curl -X POST https://sig.ucp-pch.org/api/membre_menages \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"menage": "/api/menages/1",
"nomComplet": "Aminata Diallo",
"lienParente": "fille",
"sexe": "F",
"age": 12
}'

PUT /api/membre_menages/{id}

Modifica um membro existente.

Endpoint

PUT /api/membre_menages/{id}

Corpo da requisicao

{
"age": 13,
"niveauEducation": "college"
}

Resposta de sucesso

Codigo: 200 OK

{
"@id": "/api/membre_menages/5",
"@type": "MembreMenage",
"id": 5,
"nomComplet": "Aminata Diallo",
"age": 13,
"niveauEducation": "college"
}

Exemplo cURL

curl -X PUT https://sig.ucp-pch.org/api/membre_menages/5 \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"age": 13,
"niveauEducation": "college"
}'

DELETE /api/membre_menages/{id}

Elimina um membro do agregado familiar.

Endpoint

DELETE /api/membre_menages/{id}

Resposta de sucesso

Codigo: 204 No Content

Exemplo cURL

curl -X DELETE https://sig.ucp-pch.org/api/membre_menages/5 \
-H "Authorization: Bearer TOKEN"

Exemplos completos

JavaScript

// Obter os membros
const getMembres = async (menageId) => {
const response = await fetch(
`https://sig.ucp-pch.org/api/menages/${menageId}/membres`,
{
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
}
);
return response.json();
};

// Adicionar um membro
const addMembre = async (menageId, membre) => {
const response = await fetch(
'https://sig.ucp-pch.org/api/membre_menages',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
menage: `/api/menages/${menageId}`,
...membre
})
}
);
return response.json();
};

// Eliminar um membro
const deleteMembre = async (membreId) => {
await fetch(
`https://sig.ucp-pch.org/api/membre_menages/${membreId}`,
{
method: 'DELETE',
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
}
);
};

// Utilizacao
const membres = await getMembres(1);
console.log(`${membres['hydra:totalItems']} membros`);

await addMembre(1, {
nomComplet: 'Nova Crianca',
lienParente: 'fils',
sexe: 'M',
age: 5
});

Python

import requests

class MembresAPI:
def __init__(self, token):
self.token = token
self.base_url = 'https://sig.ucp-pch.org/api'
self.headers = {'Authorization': f'Bearer {token}'}

def get_membres(self, menage_id):
response = requests.get(
f'{self.base_url}/menages/{menage_id}/membres',
headers=self.headers
)
return response.json()

def add_membre(self, menage_id, membre):
membre['menage'] = f'/api/menages/{menage_id}'
response = requests.post(
f'{self.base_url}/membre_menages',
headers={**self.headers, 'Content-Type': 'application/json'},
json=membre
)
return response.json()

def delete_membre(self, membre_id):
requests.delete(
f'{self.base_url}/membre_menages/{membre_id}',
headers=self.headers
)

# Utilizacao
api = MembresAPI(token)

# Listar os membros
membres = api.get_membres(1)
for m in membres['hydra:member']:
print(f"- {m['nomComplet']} ({m['lienParente']})")

# Adicionar um membro
novo = api.add_membre(1, {
'nomComplet': 'Nova Crianca',
'lienParente': 'fils',
'sexe': 'M',
'age': 5
})
print(f"Adicionado: {novo['nomComplet']}")

Notas

  • Os membros sao distintos do chefe de familia
  • A adicao/eliminacao de membros atualiza o tailleMenage do agregado
  • O campo lienParente define a relacao com o chefe
  • As modificacoes sao registadas na auditoria