Skip to main content

Activity Reports

This page documents the management of Community Worker activity reports.


Overview​

Activity reports allow Community Workers to document their field interventions. Each report is submitted for validation by a supervisor.


Data Model (CWRapportActivite)​

FieldTypeDescription
idUUIDUnique identifier
communityWorkerobjectRelated CW
typeActivitestringActivity type
dateActivitedateActivity date
quantitestringQuantity/Number (contextual)
nbBeneficiairesHommesintNumber of male beneficiaries
nbBeneficiairesFemmesintNumber of female beneficiaries
nbBeneficiairesTotalintTotal beneficiaries (computed)
observationstextNotes and observations
piecesJointesarrayList of attached files
localiteobjectActivity locality
sourcestringData source
koboSubmissionIdstringKoBoToolbox submission ID
statutstringReport status
valideParobjectUser who validated
dateValidationdatetimeValidation date
motifRejettextRejection reason
createdAtdatetimeCreation date

Activity Types​

TypeDescription
enregistrement_menagesRegistration of new households
sensibilisationCommunity awareness sessions
verificationConditionality verification
collecte_grmComplaint collection (GRM)
suivi_vulnerablesVulnerable household monitoring

Report Statuses​

StatusDescription
en_attenteReport submitted, awaiting validation
valideReport validated by supervisor
rejeteReport rejected (reason required)

Data Sources​

SourceDescription
webEntered via web interface
mobileEntered via mobile application
koboCollected via KoBoToolbox

API Endpoints​

EndpointMethodDescription
/api/cw-rapportsGETPaginated list (page, limit; filters search, statut, typeActivite, communityWorker, localite, dateDebut, dateFin)
/api/cw-rapportsPOSTCreate a report
/api/cw-rapports/{id}GETReport details
/api/cw-rapports/{id}DELETEDelete a draft or pending report
/api/cw-rapports/en-attenteGETReports awaiting validation (limit, 50 by default)
/api/cw-rapports/statsGETGlobal statistics
/api/cw-rapports/{id}/validerPOSTValidate a report
/api/cw-rapports/{id}/rejeterPOSTReject a report
/api/community-workers/{id}/activitesGETReports of a CW

There is no route to edit a report. Validating or rejecting a report that is not pending returns 400.


List CW Reports​

Endpoint​

GET /api/community-workers/{id}/activites

Parameters​

ParameterTypeRequiredDescription
limitintNoNumber of reports (default: 20)

Response​

{
"success": true,
"data": {
"rapports": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"quantite": "1 session",
"nbBeneficiaires": 45,
"localite": "Farim Centro",
"statut": "valide",
"createdAt": "2026-06-10T16:30:00+00:00"
},
{
"id": "...",
"typeActivite": "enregistrement_menages",
"dateActivite": "2026-06-08",
"quantite": "12 households",
"nbBeneficiaires": 12,
"localite": "Farim Centro",
"statut": "en_attente",
"createdAt": "2026-06-08T14:00:00+00:00"
}
],
"stats": {
"total": 45,
"valides": 40,
"enAttente": 3,
"rejetes": 2,
"tauxValidation": 88.9,
"parType": {
"enregistrement_menages": 15,
"sensibilisation": 20,
"verification": 5,
"collecte_grm": 3,
"suivi_vulnerables": 2
}
}
}
}

Create an Activity Report​

Endpoint​

POST /api/cw-rapports

Request Body​

{
"communityWorkerId": "550e8400-e29b-41d4-a716-446655440000",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"quantite": "1 session",
"nbBeneficiairesHommes": 15,
"nbBeneficiairesFemmes": 30,
"observations": "Session on the importance of girls' education. Good community participation.",
"localiteId": "...",
"piecesJointes": ["photos/session_2026-06-10.jpg"]
}

Response (201 Created)​

{
"success": true,
"data": {
"id": "...",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"nbBeneficiairesTotal": 45,
"statut": "en_attente",
"source": "web"
},
"message": "Activity report created"
}

Validate a Report​

Endpoint​

POST /api/cw-rapports/{id}/valider

Response​

{
"success": true,
"message": "Report validated",
"data": {
"id": "...",
"statut": "valide",
"validePar": {
"id": "...",
"nom": "Regional Supervisor"
},
"dateValidation": "2026-06-11T09:15:00+00:00"
}
}

Reject a Report​

Endpoint​

POST /api/cw-rapports/{id}/rejeter

Request Body​

{
"motif": "Number of beneficiaries inconsistent with attached photos"
}

Response​

{
"success": true,
"message": "Report rejected",
"data": {
"id": "...",
"statut": "rejete",
"motifRejet": "Number of beneficiaries inconsistent with attached photos",
"dateValidation": "2026-06-11T09:20:00+00:00"
}
}

Validation Workflow​

┌──────────────┐ ┌─────────┐
│ Submission │ -------> │ Valid │
│ (pending) │ └─────────┘
└──────────────┘
│
│ (reason required)
▼
┌──────────────┐
│ Rejected │
└──────────────┘

KoBoToolbox Integration​

Activity reports can be collected via KoBoToolbox in the field:

  1. The CW fills out the form on tablet/phone
  2. Data is synchronized with the KoBo server
  3. A webhook triggers the import into PCH-SIG
  4. The report is created with source: "kobo" and the koboSubmissionId

KoBo Identifier​

The koboSubmissionId field allows to:

  • Avoid duplicates during synchronization
  • Trace the data origin
  • Facilitate reconciliation in case of issues