Projects API
The Projects API manages the different projects (programs) in the PCH-SIG system.
Overview
A project represents a distinct social protection program (e.g., PCH, PRSSB). It allows you to:
- Segment data by program
- Configure project-specific parameters
- Control capabilities (collection, scoring, enrollment)
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/projets | GET | List projects |
/api/projets | POST | Create a project |
/api/projets/{id} | GET | Get project details |
/api/projets/{id} | PUT | Update a project |
/api/projets/{id} | DELETE | Delete a project |
Permissions
| Action | Required Permission |
|---|---|
| Read | ROLE_USER |
| Create | ROLE_ADMIN |
| Update | ROLE_ADMIN |
| Delete | ROLE_ADMIN |
Data Model
| Field | Type | Description |
|---|---|---|
id | UUID | Unique identifier |
code | string | Unique project code (e.g., PCH, PRSSB) |
nom | string | Full project name |
description | text | Detailed description |
dateDebut | date | Project start date |
dateFin | date | Expected end date |
actif | boolean | Active project |
lectureSeule | boolean | Read-only project (archived) |
bailleur | string | Donor/Funder |
peutCollecter | boolean | Allow household collection |
peutScorer | boolean | Allow PMT scoring |
peutEnroler | boolean | Allow beneficiary enrollment |
pmtMethode | object | Associated PMT method |
organisation | object | Owner organization |
createdAt | datetime | Creation date |
List Projects
Endpoint
GET /api/projets
Response
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH",
"nom": "Programme de Cash Harmonise",
"description": "Cash transfer program in Guinea-Bissau",
"dateDebut": "2024-01-01",
"dateFin": "2027-12-31",
"actif": true,
"lectureSeule": false,
"bailleur": "World Bank",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true
},
{
"id": "...",
"code": "PRSSB",
"nom": "Basic Health System Strengthening Project",
"actif": true,
"lectureSeule": true
}
]
}
Get Project Details
Endpoint
GET /api/projets/{id}
Response
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "PCH",
"nom": "Programme de Cash Harmonise",
"description": "Conditional cash transfer program...",
"dateDebut": "2024-01-01",
"dateFin": "2027-12-31",
"actif": true,
"lectureSeule": false,
"bailleur": "World Bank",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true,
"pmtMethode": {
"id": "...",
"nom": "PMT Guinea-Bissau v2"
},
"organisation": {
"id": "...",
"nom": "Ministry of Social Affairs"
},
"createdAt": "2024-01-01T00:00:00+00:00"
}
}
Create a Project
Endpoint
POST /api/projets
Request Body
{
"code": "NEW",
"nom": "New Program",
"description": "Description of the new program",
"dateDebut": "2026-01-01",
"dateFin": "2028-12-31",
"actif": true,
"bailleur": "International NGO",
"peutCollecter": true,
"peutScorer": true,
"peutEnroler": true
}
Required Fields
code: Unique codenom: Project name
Update a Project
Endpoint
PUT /api/projets/{id}
Request Body
{
"actif": false,
"lectureSeule": true
}
Delete a Project
Endpoint
DELETE /api/projets/{id}
:::warning Warning Deletion is only possible if no data is associated with the project (households, beneficiaries, payments). :::
Predefined Projects
PCH (Programme de Cash Harmonise)
| Attribute | Value |
|---|---|
| Code | PCH |
| Active | Yes |
| Read-only | No |
| Collection | Allowed |
| Scoring | Allowed |
| Enrollment | Allowed |
PRSSB (PRSSB Program)
| Attribute | Value |
|---|---|
| Code | PRSSB |
| Active | Yes |
| Read-only | Yes (archived) |
| Collection | No |
| Scoring | No |
| Enrollment | No |
Project Capabilities
Capabilities control what can be done in the project:
| Capability | Description |
|---|---|
peutCollecter | Allow collection of new households |
peutScorer | Allow PMT score calculation |
peutEnroler | Allow beneficiary registration |
A project in lectureSeule mode does not allow any data modifications.
PMT Method
Each project can have an associated PMT (Proxy Means Test) method for household scoring.
{
"pmtMethode": {
"id": "...",
"nom": "PMT Guinea-Bissau v2",
"seuilPauvrete": 0.45
}
}
Filtering by Project
Many endpoints accept a projet parameter to filter data:
GET /api/menages?projet={projetId}
GET /api/beneficiaires?projet={projetId}
GET /api/paiements?projet={projetId}