Aller au contenu principal

API Menages

L'API Menages permet de gerer les menages du registre social.

Vue d'ensemble

EndpointMethodeDescription
/api/menagesGETListe des menages
/api/menages/{id}GETDetail d'un menage
/api/menagesPOSTCreer un menage
/api/menages/{id}/updatePOSTModifier un menage
/api/menages/{id}/membresGETMembres du menage
/api/menages/{id}/recalculate-pmtPOSTRecalculer le score PMT
/api/menages/recalculate-all-pmtPOSTRecalculer tous les PMT
/api/menages/bulk-recalculate-pmtPOSTRecalcul PMT en lot
/api/menages/stats/summaryGETStatistiques

Permissions requises

  • ROLE_USER : Consultation
  • ROLE_DATA_ENTRY : Creation, modification, recalcul PMT
  • ROLE_ADMIN : Recalcul global PMT

Liste des menages

Endpoint

GET /api/menages

Parametres de requete

ParametreTypeRequisDescription
pageintNonNumero de page (defaut: 1)
limitintNonElements par page (max: 100)
statutstringNonFiltrer par statut
searchstringNonRecherche textuelle
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur
localiteUUIDNonFiltrer par localite
milieustringNonFiltrer par milieu (urbain/rural)
eligiblebooleanNonFiltrer par eligibilite
categoriePauvretestringNonFiltrer par categorie

Statuts disponibles

StatutDescription
collecteDonnees en cours de collecte
en_attenteEn attente de validation
valideMenage valide
rejeteMenage rejete

Reponse

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"codeMenage": "MEN-OIO-001",
"statut": "valide",
"tailleMenage": 5,
"scorePmt": 0.42,
"categoriePauvrete": "pauvre",
"eligibleProgramme": true,
"milieu": "rural",
"region": {"id": "...", "nom": "Oio"},
"secteur": {"id": "...", "nom": "Farim"},
"localite": {"id": "...", "nom": "Farim Centro"},
"chefMenage": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"sexe": "M",
"age": 45
},
"createdAt": "2024-06-15T10:00:00+00:00"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 15000,
"pages": 750
}
}

Detail d'un menage

Endpoint

GET /api/menages/{id}

Reponse

{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"codeMenage": "MEN-OIO-001",
"statut": "valide",
"milieu": "rural",
"tailleMenage": 5,
"nbEnfants010": 2,
"nbEnfants1114": 1,
"nbAdultes1564": 2,
"nbPersonnes65Plus": 0,
"nbHandicapes": 0,
"nbActifsOccupes": 2,
"nbFemmes1564": 1,
"nbFemmesEnceintes": 0,
"scorePmt": 0.42,
"categoriePauvrete": "pauvre",
"eligibleProgramme": true,
"latitude": "12.345678",
"longitude": "-15.678901",
"altitude": "25.5",
"precisionGps": "5.0",
"sourceDonnees": "kobo",
"dateCollecte": "2024-06-15T10:00:00+00:00",
"region": {
"id": "...",
"nom": "Oio",
"code": "OIO"
},
"secteur": {
"id": "...",
"nom": "Farim"
},
"localite": {
"id": "...",
"nom": "Farim Centro"
},
"chefMenage": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"sexe": "M",
"age": 45,
"niveauEducation": "primaire",
"occupationPrincipale": "agriculture",
"statutMatrimonial": "marie",
"telephone": "+245955123456",
"numeroMobileMoney": "+245955123456",
"compteBancaire": null
},
"logement": {
"id": "...",
"typeLogement": "maison_individuelle",
"statutOccupation": "proprietaire",
"nbPieces": 3,
"materiauMur": "brique_ciment",
"materiauToit": "tole",
"materiauSol": "ciment",
"sourceEau": "puits_ameliore",
"typeToilette": "latrine_amelioree",
"sourceEclairage": "solaire",
"combustibleCuisine": "bois",
"traitementEau": "filtration",
"evacuationDechets": "fosse",
"aUneCuisine": true
},
"createdAt": "2024-06-15T10:00:00+00:00",
"updatedAt": "2025-01-10T14:30:00+00:00"
}
}

Recalculer le score PMT

Endpoint

POST /api/menages/{id}/recalculate-pmt

Description

Recalcule le score PMT (Proxy Means Test) pour un menage specifique en fonction de ses caracteristiques.

Reponse

{
"success": true,
"data": {
"menageId": "550e8400-e29b-41d4-a716-446655440000",
"codeMenage": "MEN-OIO-001",
"oldScore": 0.45,
"newScore": 0.42,
"categoriePauvrete": "pauvre",
"eligibleProgramme": true
}
}

Recalculer tous les PMT

Endpoint

POST /api/menages/recalculate-all-pmt

Description

Recalcule les scores PMT pour tous les menages. Operation traitee par lots de 100.

Reponse

{
"success": true,
"data": {
"total": 15000,
"success": 14985,
"errors": 15
},
"message": "PMT recalcule pour 14985/15000 menages"
}

Recalcul PMT en lot

Endpoint

POST /api/menages/bulk-recalculate-pmt

Corps de la requete

{
"ids": [
"550e8400-e29b-41d4-a716-446655440001",
"550e8400-e29b-41d4-a716-446655440002"
]
}

Reponse

{
"success": true,
"data": {
"total": 100,
"success": 100,
"errors": 0
},
"message": "PMT recalcule pour 100/100 menages"
}

Statistiques des menages

Endpoint

GET /api/menages/stats/summary

Parametres de requete

ParametreTypeRequisDescription
regionstringNonFiltrer par nom de region

Reponse

{
"success": true,
"data": {
"general": {
"total": 15000,
"valides": 14500,
"enAttente": 400,
"rejetes": 100,
"eligibles": 12000,
"avecPmt": 14800,
"pmtMoyen": 42.5,
"totalPopulation": 75000,
"tailleMoyenne": 5.0
},
"composition": {
"totalEnfants010": 15000,
"totalEnfants1114": 12000,
"totalAdultes1564": 35000,
"totalPersonnes65Plus": 3000,
"totalHandicapes": 500,
"totalActifs": 28000,
"totalFemmes1564": 18000,
"totalFemmesEnceintes": 800,
"menagesHandicapes": 450,
"menagesEnfants010": 8000,
"menagesEnfants": 10000,
"menagesAges": 2500
},
"parStatut": {
"valide": 14500,
"en_attente": 400,
"collecte": 0,
"rejete": 100
},
"parCategorie": {
"extreme_pauvre": 3000,
"pauvre": 9000,
"vulnerable": 2000,
"non_pauvre": 1000
},
"parMilieu": {
"rural": 12000,
"urbain": 3000
},
"parRegion": [
{
"id": "...",
"nom": "Oio",
"total": 5000,
"valides": 4800,
"enAttente": 150
},
{
"id": "...",
"nom": "Bafata",
"total": 4500,
"valides": 4300,
"enAttente": 150
}
],
"chefMenage": {
"parSexe": {
"Homme": 10000,
"Femme": 5000
},
"parEducation": {
"aucun": 6000,
"primaire": 5000,
"secondaire": 3000,
"superieur": 1000
},
"parOccupation": {
"agriculture": 8000,
"commerce": 3000,
"salarie": 2000,
"sans_emploi": 2000
},
"parStatutMatrimonial": {
"marie": 12000,
"celibataire": 1000,
"veuf": 1500,
"divorce": 500
},
"age": {
"moyen": 42,
"min": 18,
"max": 85,
"tranches": {
"moins_25": 500,
"25_34": 3000,
"35_44": 5000,
"45_54": 4000,
"55_64": 2000,
"65_plus": 500
}
}
},
"pmt": {
"distribution": {
"pmt_0_20": 3000,
"pmt_20_40": 5000,
"pmt_40_60": 4000,
"pmt_60_80": 2000,
"pmt_80_100": 1000
},
"min": 5.2,
"max": 95.8,
"median": 38.5
},
"logement": {
"parType": {
"maison_individuelle": 10000,
"appartement": 2000,
"case_traditionnelle": 3000
},
"parSourceEau": {
"robinet": 4000,
"puits_ameliore": 5000,
"puits_non_protege": 3000,
"source": 2000,
"autre": 1000
},
"parTypeToilette": {
"chasse_eau": 2000,
"latrine_amelioree": 6000,
"latrine_simple": 5000,
"aucune": 2000
},
"parSourceEclairage": {
"electricite": 4000,
"solaire": 5000,
"lampe_petrole": 4000,
"bougie": 2000
},
"parCombustible": {
"gaz": 2000,
"bois": 10000,
"charbon": 3000
},
"parStatutOccupation": {
"proprietaire": 12000,
"locataire": 2000,
"heberge": 1000
}
},
"parSourceDonnees": {
"kobo": 12000,
"manuel": 2000,
"import": 1000
},
"parSecteur": [
{"nom": "Farim", "total": 2000, "valides": 1950, "eligibles": 1600},
{"nom": "Mansoa", "total": 1800, "valides": 1750, "eligibles": 1400}
],
"tableauxCroises": {
"sexeCategorie": {
"Homme": {"extreme_pauvre": 2000, "pauvre": 6000, "vulnerable": 1500, "non_pauvre": 500},
"Femme": {"extreme_pauvre": 1000, "pauvre": 3000, "vulnerable": 500, "non_pauvre": 500}
},
"sexeMilieu": {
"Homme": {"rural": 8000, "urbain": 2000},
"Femme": {"rural": 4000, "urbain": 1000}
},
"sexeEligibilite": {
"Homme": {"eligible": 8000, "non_eligible": 2000},
"Femme": {"eligible": 4000, "non_eligible": 1000}
},
"regionCategorie": {
"Oio": {"extreme_pauvre": 1200, "pauvre": 2800, "vulnerable": 700, "non_pauvre": 300},
"Bafata": {"extreme_pauvre": 1000, "pauvre": 2500, "vulnerable": 600, "non_pauvre": 400}
},
"categorieMilieu": {
"extreme_pauvre": {"rural": 2700, "urbain": 300},
"pauvre": {"rural": 8000, "urbain": 1000}
},
"regionSexe": {
"Oio": {"Homme": 3500, "Femme": 1500},
"Bafata": {"Homme": 3000, "Femme": 1500}
},
"ageCategorie": {
"Moins de 25 ans": {"extreme_pauvre": 150, "pauvre": 250},
"25-34 ans": {"extreme_pauvre": 700, "pauvre": 1800}
}
}
}
}

Categories de pauvrete

CategorieSeuil PMTDescription
extreme_pauvre< 20Pauvrete extreme
pauvre20-50Pauvre
vulnerable50-70Vulnerable
non_pauvre> 70Non pauvre

Sources de donnees

SourceDescription
koboCollecte via KoBoToolbox
manuelSaisie manuelle
importImport depuis fichier
migrationMigration depuis autre systeme