Household Members
Endpoints for managing household members (excluding the head of household).
GET /api/menages/{id}/membres
Retrieves the list of members of a household.
Endpoint
GET /api/menages/{id}/membres
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {token} | Yes |
Success Response
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
}
]
}
cURL Example
curl https://sig.ucp-pch.org/api/menages/1/membres \
-H "Authorization: Bearer TOKEN"
POST /api/membre_menages
Adds a new member to a household.
Endpoint
POST /api/membre_menages
Request Body
{
"menage": "/api/menages/1",
"nomComplet": "Aminata Diallo",
"lienParente": "fille",
"sexe": "F",
"age": 12,
"niveauEducation": "primaire",
"occupationPrincipale": "etudiant",
"handicap": false
}
Fields
| Field | Type | Required | Description |
|---|---|---|---|
| menage | IRI | Yes | Reference to household |
| nomComplet | string | Yes | Full name |
| lienParente | string | Yes | Relationship with head |
| sexe | string | No | "M" or "F" |
| age | integer | No | Age |
| niveauEducation | string | No | Education level |
| occupationPrincipale | string | No | Activity |
| handicap | boolean | No | Disability status |
Possible Values for lienParente
| Value | Description |
|---|---|
| epouse | Spouse |
| fils | Son |
| fille | Daughter |
| pere | Father |
| mere | Mother |
| frere | Brother |
| soeur | Sister |
| oncle | Uncle |
| tante | Aunt |
| neveu | Nephew |
| niece | Niece |
| cousin | Cousin |
| autre | Other |
Success Response
Code: 201 Created
{
"@id": "/api/membre_menages/5",
"@type": "MembreMenage",
"id": 5,
"nomComplet": "Aminata Diallo",
"lienParente": "fille",
"sexe": "F",
"age": 12
}
cURL Example
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}
Modifies an existing member.
Endpoint
PUT /api/membre_menages/{id}
Request Body
{
"age": 13,
"niveauEducation": "college"
}
Success Response
Code: 200 OK
{
"@id": "/api/membre_menages/5",
"@type": "MembreMenage",
"id": 5,
"nomComplet": "Aminata Diallo",
"age": 13,
"niveauEducation": "college"
}
cURL Example
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}
Deletes a member from the household.
Endpoint
DELETE /api/membre_menages/{id}
Success Response
Code: 204 No Content
cURL Example
curl -X DELETE https://sig.ucp-pch.org/api/membre_menages/5 \
-H "Authorization: Bearer TOKEN"
Complete Examples
JavaScript
// Get members
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();
};
// Add a member
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();
};
// Delete a member
const deleteMembre = async (membreId) => {
await fetch(
`https://sig.ucp-pch.org/api/membre_menages/${membreId}`,
{
method: 'DELETE',
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
}
);
};
// Usage
const membres = await getMembres(1);
console.log(`${membres['hydra:totalItems']} members`);
await addMembre(1, {
nomComplet: 'New Child',
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
)
# Usage
api = MembresAPI(token)
# List members
membres = api.get_membres(1)
for m in membres['hydra:member']:
print(f"- {m['nomComplet']} ({m['lienParente']})")
# Add a member
new_member = api.add_membre(1, {
'nomComplet': 'New Child',
'lienParente': 'fils',
'sexe': 'M',
'age': 5
})
print(f"Added: {new_member['nomComplet']}")
Notes
- Members are distinct from the head of household
- Adding/removing members updates the household's
tailleMenage - The
lienParentefield defines the relationship with the head - Modifications are tracked in the audit log