Skip to main content

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

HeaderValueRequired
AuthorizationBearer {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

FieldTypeRequiredDescription
menageIRIYesReference to household
nomCompletstringYesFull name
lienParentestringYesRelationship with head
sexestringNo"M" or "F"
ageintegerNoAge
niveauEducationstringNoEducation level
occupationPrincipalestringNoActivity
handicapbooleanNoDisability status

Possible Values for lienParente

ValueDescription
epouseSpouse
filsSon
filleDaughter
pereFather
mereMother
frereBrother
soeurSister
oncleUncle
tanteAunt
neveuNephew
nieceNiece
cousinCousin
autreOther

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 lienParente field defines the relationship with the head
  • Modifications are tracked in the audit log