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
| Header | Valeur | Requis |
|---|---|---|
| Authorization | Bearer {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
| Champ | Type | Requis | Description |
|---|---|---|---|
| menage | IRI | Oui | Référence au ménage |
| nomComplet | string | Oui | Nom et prénom |
| lienParente | string | Oui | Lien avec le chef |
| sexe | string | Non | "M" ou "F" |
| age | integer | Non | Âge |
| niveauEducation | string | Non | Niveau d'études |
| occupationPrincipale | string | Non | Activité |
| handicap | boolean | Non | Situation de handicap |
Valeurs possibles pour lienParente
| Valeur | Description |
|---|---|
| epouse | Épouse/Époux |
| fils | Fils |
| fille | Fille |
| pere | Père |
| mere | Mère |
| frere | Frère |
| soeur | Sœur |
| oncle | Oncle |
| tante | Tante |
| neveu | Neveu |
| niece | Nièce |
| cousin | Cousin(e) |
| autre | Autre |
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
tailleMenagedu ménage - Le champ
lienParentedéfinit la relation avec le chef - Les modifications sont tracées dans l'audit