Aller au contenu principal

API Projets

L'API Projets permet de gerer les differents projets (programmes) dans le systeme PCH-SIG.

Vue d'ensemble​

Un projet represente un programme de protection sociale distinct (ex: PCH, PRSSB). Il permet de :

  • Segmenter les donnees par programme
  • Configurer des parametres specifiques par projet
  • Controler les capacites (collecte, scoring, enrolement)

Endpoints​

EndpointMethodeDescription
/api/projetsGETListe des projets
/api/projetsPOSTCreer un projet
/api/projets/{id}GETDetail d'un projet
/api/projets/{id}PUTModifier un projet
/api/projets/{id}DELETESupprimer un projet

Modele de donnees​

ChampTypeDescription
idUUIDIdentifiant unique
codestringCode unique du projet (ex: PCH, PRSSB)
nomstringNom complet du projet
descriptiontextDescription detaillee
dateDebutdateDate de debut du projet
dateFindateDate de fin prevue
actifbooleanProjet actif
lectureSeulebooleanProjet en lecture seule (archive)
bailleurstringBailleur de fonds
peutCollecterbooleanAutoriser la collecte de menages
peutScorerbooleanAutoriser le scoring PMT
peutEnrolerbooleanAutoriser l'enrolement de beneficiaires
pmtMethodeobjectMethode PMT associee
institutionobjectInstitution proprietaire
createdAtdatetimeDate de creation

Liste des projets​

Endpoint​

GET /api/projets

Reponse​

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH",
"nom": "Programme de Cash Harmonise",
"description": "Programme de transferts monetaires en Guinee-Bissau",
"dateDebut": "2024-01-01",
"dateFin": "2027-12-31",
"actif": true,
"lectureSeule": false,
"bailleur": "Banque Mondiale",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true
},
{
"id": "...",
"code": "PRSSB",
"nom": "Projet de Renforcement du Systeme de Sante de Base",
"actif": true,
"lectureSeule": true
}
]
}

Detail d'un projet​

Endpoint​

GET /api/projets/{id}

Reponse​

{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH",
"nom": "Programme de Cash Harmonise",
"description": "Programme de transferts monetaires conditionnes...",
"dateDebut": "2024-01-01",
"dateFin": "2027-12-31",
"actif": true,
"lectureSeule": false,
"bailleur": "Banque Mondiale",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true,
"pmtMethode": {
"id": "...",
"nom": "PMT Guinee-Bissau v2"
},
"institution": {
"id": "...",
"nom": "Ministere des Affaires Sociales"
},
"createdAt": "2024-01-01T00:00:00+00:00"
}
}

Creer un projet​

Endpoint​

POST /api/projets

Corps de la requete​

{
"code": "NOUVEAU",
"nom": "Nouveau Programme",
"description": "Description du nouveau programme",
"dateDebut": "2026-01-01",
"dateFin": "2028-12-31",
"actif": true,
"bailleur": "ONG Internationale",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true
}

Champs requis​

  • code : Code unique
  • nom : Nom du projet

Modifier un projet​

Endpoint​

PUT /api/projets/{id}

Corps de la requete​

{
"actif": false,
"lectureSeule": true
}

Supprimer un projet​

Endpoint​

DELETE /api/projets/{id}
Attention

La suppression n'est possible que si aucune donnee n'est associee au projet (menages, beneficiaires, paiements).


Projets predefinit​

PCH (Programme de Cash Harmonise)​

AttributValeur
CodePCH
ActifOui
Lecture seuleNon
CollecteAutorisee
ScoringAutorise
EnrolementAutorise

PRSSB (Programme PRSSB)​

AttributValeur
CodePRSSB
ActifOui
Lecture seuleOui (archive)
CollecteNon
ScoringNon
EnrolementNon

Capacites du projet​

Les capacites controlent ce qui peut etre fait dans le projet :

CapaciteDescription
peutCollecterAutoriser la collecte de nouveaux menages
peutScorerAutoriser le calcul du score PMT
peutEnrolerAutoriser l'inscription de beneficiaires

Un projet en lectureSeule ne permet aucune modification des donnees.


Methode PMT​

Chaque projet peut avoir une methode PMT (Proxy Means Test) associee pour le scoring des menages.

{
"pmtMethode": {
"id": "...",
"nom": "PMT Guinee-Bissau v2",
"seuilPauvrete": 0.45
}
}

Filtrage par projet​

De nombreux endpoints acceptent un parametre projet pour filtrer les donnees :

GET /api/menages?projet.id={projetId}
GET /api/beneficiaires?projet={projetId}
GET /api/cycles?projet_id={projetId}