Aller au contenu principal

Membres du Ménage

Endpoints pour gérer les membres d'un ménage (hors chef de ménage).

GET /api/menages/{id}/membres

Récupère la liste des membres d'un ménage.

Endpoint

GET /api/menages/{id}/membres

Headers

HeaderValeurRequis
AuthorizationBearer {token}Oui

Réponse succès

Code: 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
}
]
}

Exemple cURL

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

POST /api/membre_menages

Ajoute un nouveau membre à un ménage.

Endpoint

POST /api/membre_menages

Corps de la requête

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

Champs

ChampTypeRequisDescription
menageIRIOuiRéférence au ménage
nomCompletstringOuiNom et prénom
lienParentestringOuiLien avec le chef
sexestringNon"M" ou "F"
ageintegerNonÂge
niveauEducationstringNonNiveau d'études
occupationPrincipalestringNonActivité
handicapbooleanNonSituation de handicap

Valeurs possibles pour lienParente

ValeurDescription
epouseÉpouse/Époux
filsFils
filleFille
perePère
mereMère
frereFrère
soeurSœur
oncleOncle
tanteTante
neveuNeveu
nieceNièce
cousinCousin(e)
autreAutre

Réponse succès

Code: 201 Created

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

Exemple 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}

Modifie un membre existant.

Endpoint

PUT /api/membre_menages/{id}

Corps de la requête

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

Réponse succès

Code: 200 OK

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

Exemple 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}

Supprime un membre du ménage.

Endpoint

DELETE /api/membre_menages/{id}

Réponse succès

Code: 204 No Content

Exemple cURL

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

Exemples complets

JavaScript

// Récupérer les membres
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();
};

// Ajouter un membre
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();
};

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

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

await addMembre(1, {
nomComplet: 'Nouvel Enfant',
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
)

# Utilisation
api = MembresAPI(token)

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

# Ajouter un membre
nouveau = api.add_membre(1, {
'nomComplet': 'Nouvel Enfant',
'lienParente': 'fils',
'sexe': 'M',
'age': 5
})
print(f"Ajouté: {nouveau['nomComplet']}")

Notes

  • Les membres sont distincts du chef de ménage
  • L'ajout/suppression de membres met à jour tailleMenage du ménage
  • Le champ lienParente définit la relation avec le chef
  • Les modifications sont tracées dans l'audit