Pular para o conteúdo principal

CRUD Projets

Cette page documente les operations de creation, lecture, mise a jour et suppression des projets.


Liste des projets

Endpoint

GET /api/projets

Parametres de requete

ParametreTypeDescription
actifbooleanFiltrer par projets actifs

Reponse

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH",
"nom": "Programme de Cash Harmonise"
}
]
}

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 GB v2"
},
"organisation": {
"id": "...",
"nom": "MAS"
},
"createdAt": "2024-01-01T00:00:00+00:00"
}
}

Creer un projet

Endpoint

POST /api/projets

Corps de la requete

{
"code": "FILET",
"nom": "Programme Filet Social",
"description": "Programme d'aide aux menages vulnerables",
"dateDebut": "2026-07-01",
"dateFin": "2029-06-30",
"actif": true,
"lectureSeule": false,
"bailleur": "Union Europeenne",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true
}

Champs requis

ChampDescription
codeCode unique du projet (max 20 caracteres)
nomNom du projet (max 100 caracteres)

Reponse (201 Created)

{
"success": true,
"data": {
"id": "...",
"code": "FILET",
"nom": "Programme Filet Social",
"actif": true
},
"message": "Projet cree avec succes"
}

Modifier un projet

Endpoint

PUT /api/projets/{id}

Corps de la requete (partiel)

{
"actif": false,
"lectureSeule": true,
"dateFin": "2026-12-31"
}

Reponse

{
"success": true,
"data": { ... },
"message": "Projet mis a jour"
}

Supprimer un projet

Endpoint

DELETE /api/projets/{id}

Conditions

La suppression n'est autorisee que si :

  • Aucun menage n'est associe au projet
  • Aucun beneficiaire n'est associe au projet
  • Aucun cycle de paiement n'est associe au projet

Reponse en cas de succes

{
"success": true,
"message": "Projet supprime"
}

Reponse en cas d'echec

{
"success": false,
"error": "Impossible de supprimer : 1500 menages associes"
}

Archiver un projet

Pour archiver un projet sans le supprimer :

Endpoint

PUT /api/projets/{id}

Corps

{
"actif": true,
"lectureSeule": true,
"peutCollecter": false,
"peutScorer": false,
"peutEnroler": false
}

Cette configuration :

  • Garde le projet visible
  • Empeche toute modification des donnees
  • Conserve l'historique complet

Verification des capacites

Endpoint

GET /api/projets/{id}/capacites

Reponse

{
"success": true,
"data": {
"peutModifier": true,
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true,
"lectureSeule": false
}
}

La methode peutModifier() retourne true si :

  • actif == true
  • lectureSeule == false

Codes d'erreur

CodeHTTPDescription
NOT_FOUND404Projet non trouve
DUPLICATE_CODE409Code deja utilise
HAS_DEPENDENCIES400Donnees associees existantes
FORBIDDEN403Permission insuffisante

Exemples d'utilisation

Creer un projet pilote

{
"code": "PILOTE-2026",
"nom": "Programme Pilote 2026",
"description": "Phase pilote limitee a la region de Biombo",
"dateDebut": "2026-01-01",
"dateFin": "2026-06-30",
"actif": true,
"peutCollecter": true,
"peutScorer": false,
"peutEnroler": false
}

Cloturer un projet termine

{
"actif": true,
"lectureSeule": true,
"dateFin": "2026-05-31"
}