Aller au contenu principal

API Programmes

L'API Programmes permet de gerer les programmes de transferts monetaires.

Vue d'ensemble

EndpointMethodeDescription
/api/programmesGETListe des programmes
/api/programmes/{id}GETDetail d'un programme
/api/programmesPOSTCreer un programme
/api/programmes/{id}PUTModifier un programme
/api/programmes/{id}DELETESupprimer un programme
/api/programmes/{id}/activerPOSTActiver
/api/programmes/{id}/suspendrePOSTSuspendre
/api/programmes/{id}/cloturerPOSTCloturer
/api/programmes/{id}/reactiverPOSTReactiver
/api/programmes/{id}/statsGETStatistiques
/api/programmes/{id}/eligiblesGETMenages eligibles
/api/programmes/{id}/enrolerPOSTEnroler beneficiaires
/api/programmes/{id}/beneficiairesGETBeneficiaires
/api/programmes/{id}/cyclesGETCycles
/api/programmes/{id}/recurrenceGET/PUTRecurrence
/api/programmes/stats/summaryGETStats globales
/api/programmes/regionsGETRegions eligibles

Permissions requises

  • programmes.view : Consultation
  • programmes.create : Creation
  • programmes.edit : Modification
  • programmes.delete : Suppression
  • programmes.enroll : Enrolement
  • transferts.recurrence : Recurrence

Liste des programmes

Endpoint

GET /api/programmes

Parametres de requete

ParametreTypeRequisDescription
pageintNonNumero de page (defaut: 1)
limitintNonElements par page (max: 100)
statutstringNonFiltrer par statut
typestringNonFiltrer par type
searchstringNonRecherche textuelle

Statuts disponibles

StatutDescription
en_preparationEn cours de preparation
actifProgramme actif
suspenduTemporairement suspendu
termineProgramme termine
clotureProgramme cloture

Types de programmes

TypeDescription
transfert_monetaireTransfert monetaire direct
travaux_publicsTravaux publics a haute intensite de main d'oeuvre
formationFormation professionnelle
mixteProgramme mixte

Reponse

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH-GB-001",
"nom": "PCH Guinee-Bissau",
"description": "Programme de transferts monetaires conditionnels",
"type": "transfert_monetaire",
"dateDebut": "2024-01-01",
"dateFin": "2026-12-31",
"budgetTotal": "5000000000",
"budgetAlloue": "3500000000",
"montantDecaisse": "1800000000",
"montantEngage": "2500000000",
"devise": "XOF",
"objectifBeneficiaires": 5000,
"nbBeneficiairesActifs": 3500,
"nbBeneficiairesTotal": 3600,
"nbCyclesExecutes": 12,
"tauxExecution": 36.0,
"tauxCouverture": 70.0,
"joursRestants": 730,
"statut": "actif",
"frequencePaiement": "mensuel",
"montantParBeneficiaire": "15000",
"avecConditionnalites": true,
"projet": {
"id": "...",
"code": "PCH-2025",
"nom": "Projet PCH",
"lectureSeule": false
},
"createdAt": "2024-01-01T08:00:00+00:00"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 5,
"pages": 1
}
}

Detail d'un programme

Endpoint

GET /api/programmes/{id}

Reponse

Inclut tous les champs de la liste plus :

{
"success": true,
"data": {
"sourcesFinancement": ["Banque Mondiale", "Gouvernement GB"],
"seuilPmtMax": 50,
"seuilPmtMin": null,
"categoriesPauvreteEligibles": ["extreme_pauvre", "pauvre"],
"regionsEligibles": ["uuid-oio", "uuid-bafata"],
"regionsEligiblesNoms": {
"uuid-oio": "Oio",
"uuid-bafata": "Bafata"
},
"milieuEligible": "tous",
"criteresChefMenage": {
"sexe": null,
"ageMin": 18,
"ageMax": null
},
"criteresMenage": {
"tailleMin": 3
},
"criteresVulnerabilite": [
"femme_chef_menage",
"menage_avec_handicapes",
"menage_personnes_agees"
],
"criteresPersonnalises": null,
"nombreCyclesPrevus": 36,
"dureeMois": 36,
"conditionnalites": {
"education": ["scolarisation_enfants"],
"sante": ["vaccination", "visite_prenatale"]
},
"responsable": "Mamadou Diallo",
"emailResponsable": "m.diallo@pch.gw",
"telephoneResponsable": "+245955000001",
"partenaires": ["UNICEF", "PAM"],
"budgetDisponible": "1000000000",
"tauxEngagement": 50.0,
"progressionCycles": 33.3,
"nbMenagesEligibles": 15000
}
}

Creer un programme

Endpoint

POST /api/programmes

Corps de la requete

{
"nom": "Programme Pilote Region Est",
"description": "Programme pilote de transferts monetaires",
"type": "transfert_monetaire",
"dateDebut": "2025-01-01",
"dateFin": "2026-12-31",
"budgetTotal": "500000000",
"devise": "XOF",
"montantParBeneficiaire": "15000",
"frequencePaiement": "mensuel",
"objectifBeneficiaires": 1000,
"seuilPmtMax": 50,
"categoriesPauvreteEligibles": ["extreme_pauvre", "pauvre"],
"regionsEligibles": ["uuid-gabou"],
"avecConditionnalites": true,
"projetId": "uuid-projet"
}

Statistiques globales

Endpoint

GET /api/programmes/stats/summary

Reponse

{
"success": true,
"data": {
"total": 5,
"parStatut": {
"en_preparation": 1,
"actif": 3,
"suspendu": 0,
"termine": 1,
"cloture": 0
},
"parType": {
"transfert_monetaire": 4,
"travaux_publics": 0,
"formation": 1,
"mixte": 0
},
"budgetTotal": 10000000000,
"budgetAlloue": 7500000000,
"montantDecaisse": 3500000000,
"montantEngage": 5000000000,
"nbBeneficiairesActifs": 8500,
"nbBeneficiairesTotal": 9000,
"objectifBeneficiaires": 12000,
"nbCyclesExecutes": 45,
"tauxExecution": 35.0,
"tauxEngagement": 50.0,
"tauxCouverture": 70.8
}
}

Statistiques d'un programme

Endpoint

GET /api/programmes/{id}/stats

Reponse

{
"success": true,
"data": {
"programme": {...},
"cycles": [
{"statut": "termine", "count": 10, "montant": "1500000000"},
{"statut": "en_cours", "count": 1, "montant": "150000000"},
{"statut": "planifie", "count": 2, "montant": "300000000"}
],
"beneficiaires": [
{"actif": true, "modePaiement": "mobile_money", "count": 3200},
{"actif": true, "modePaiement": "virement_bancaire", "count": 300},
{"actif": false, "modePaiement": "mobile_money", "count": 100}
],
"parRegion": [
{"region": "Oio", "count": 1500},
{"region": "Bafata", "count": 1200}
],
"indicateurs": {
"tauxExecution": 36.0,
"tauxEngagement": 50.0,
"tauxCouverture": 70.0,
"progressionCycles": 33.3,
"budgetDisponible": "1000000000",
"joursRestants": 730
}
}
}

Menages eligibles

Endpoint

GET /api/programmes/{id}/eligibles

Parametres de requete

ParametreTypeRequisDescription
pageintNonNumero de page
limitintNonElements par page
searchstringNonRecherche par code/nom
statutstringNonenrole, non_enrole, ou vide

Reponse

{
"success": true,
"data": {
"stats": {
"totalEligibles": 15000,
"totalEnrolled": 3500,
"totalNonEnrolled": 11500
},
"totalEligibles": 11500,
"criteres": {
"seuilPmtMax": 50,
"seuilPmtMin": null,
"categoriesPauvrete": ["extreme_pauvre", "pauvre"],
"regions": ["uuid-oio", "uuid-bafata"],
"milieu": "tous",
"criteresChef": {"ageMin": 18},
"criteresMenage": {"tailleMin": 3},
"criteresVulnerabilite": ["femme_chef_menage"]
},
"preview": [
{
"id": "...",
"codeMenage": "MEN-OIO-001",
"chefNom": "Mamadou Diallo",
"region": "Oio",
"scorePmt": 35.5,
"categoriePauvrete": "pauvre",
"statutEnrolement": "non_enrole",
"dateEnrolement": null,
"codeBeneficiaire": null
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 11500,
"pages": 1150
}
}
}

Enroler des beneficiaires

Endpoint

POST /api/programmes/{id}/enroler

Corps de la requete

{
"menageIds": ["uuid-1", "uuid-2"],
"limit": null
}

Si menageIds est vide, tous les menages eligibles non enroles seront enroles (jusqu'a limit).

Reponse

{
"success": true,
"message": "500 beneficiaires enroles",
"data": {
"enrolled": 500,
"skipped": 10,
"totalBeneficiaires": 4000
}
}

Configuration de la recurrence

Lire la configuration

GET /api/programmes/{id}/recurrence

Reponse

{
"success": true,
"data": {
"programmeId": "...",
"programmeCode": "PCH-GB-001",
"programmeNom": "PCH Guinee-Bissau",
"recurrenceActive": true,
"modeGeneration": "semi_automatique",
"frequencePaiement": "mensuel",
"jourGeneration": 1,
"delaiCreationJours": 7,
"parametresHeritables": ["montantParBeneficiaire", "description"],
"prochainCycleDate": "2025-02-01",
"dernierCycleGenereId": "uuid-dernier-cycle"
}
}

Modifier la configuration

PUT /api/programmes/{id}/recurrence

Corps de la requete

{
"recurrenceActive": true,
"modeGeneration": "automatique",
"frequencePaiement": "mensuel",
"jourGeneration": 1,
"delaiCreationJours": 7,
"parametresHeritables": ["montantParBeneficiaire"]
}

Modes de generation

ModeDescription
automatiqueCycles generes automatiquement
semi_automatiqueNotification envoyee, validation requise

Frequences

FrequenceDescription
mensuelTous les mois
bimestrielTous les 2 mois
trimestrielTous les 3 mois
semestrielTous les 6 mois
annuelUne fois par an

Apercu du prochain cycle

Endpoint

GET /api/programmes/{id}/recurrence/preview

Reponse

{
"success": true,
"data": {
"dateDebut": "2025-02-01",
"dateFin": "2025-02-28",
"code": "PCH-GB-C013",
"nom": "Cycle Fevrier 2025",
"montantParBeneficiaire": "15000",
"nbBeneficiairesEstimes": 3500,
"montantTotalEstime": 52500000
}
}

Generer le prochain cycle

Endpoint

POST /api/programmes/{id}/recurrence/generate

Corps de la requete

{
"force": false
}

Reponse

{
"success": true,
"message": "Cycle genere avec succes",
"data": {
"id": "...",
"code": "PCH-GB-C013",
"nom": "Cycle Fevrier 2025",
"dateDebut": "2025-02-01",
"dateFin": "2025-02-28",
"montantParBeneficiaire": "15000",
"numeroSequence": 13
}
}

Criteres de vulnerabilite

CodeDescription
femme_chef_menageChef de menage femme
femme_ruraleFemme en milieu rural
personne_handicapeeMenage avec personne handicapee
menage_avec_handicapesMenage avec handicapes
femme_agee_demunieFemme agee (65+) demunie
menage_personnes_ageesMenage avec personnes 65+
femme_sans_assistanceFemme veuve/celibataire/divorcee