Aller au contenu principal

GET /api/beneficiaires/{id}

Récupère les informations détaillées d'un bénéficiaire.

Endpoint​

GET /api/beneficiaires/{id}

Paramètres d'URL​

ParamètreTypeDescription
idUUIDIdentifiant unique du bénéficiaire

Headers​

HeaderValeurRequis
AuthorizationBearer {token}Oui

Réponse succès​

Code: 200 OK

{
"@context": "/api/contexts/Beneficiaire",
"@id": "/api/beneficiaires/550e8400-e29b-41d4-a716-446655440000",
"@type": "Beneficiaire",
"id": "550e8400-e29b-41d4-a716-446655440000",
"codeBeneficiaire": "BEN-2024-00001",
"nomComplet": "Fatou Diallo",
"telephone": "771234567",
"modePaiement": "orange_money",
"compteMobile": "771234567",
"compteBancaire": null,
"numeroMTN": null,
"typeBeneficiaire": "principal",
"actif": true,
"sexe": "F",
"statutEnrolement": "actif",
"dateEnrolement": "2024-01-15T10:30:00+00:00",
"dateSortie": null,
"motifSortie": null,
"documentVerifie": true,
"dateVerificationDocument": "2024-01-20",
"statutCycle": "actif",
"prochaineRecertification": "2025-01-15",
"estGradue": false,
"dateGraduation": null,
"tauxConformiteGlobal": "92.50",
"nombreCyclesCompletes": 3,
"dernierSuivi": "2024-06-15",
"menage": {
"@id": "/api/menages/1",
"@type": "Menage",
"id": 1,
"codeMenage": "MEN-2024-00001",
"tailleMenage": 5,
"chefMenage": {
"@id": "/api/chef_menages/1",
"nomComplet": "Mamadou Diallo"
},
"region": {
"@id": "/api/regions/1",
"nom": "Oio"
},
"secteur": {
"@id": "/api/secteurs/1",
"nom": "Farim"
}
},
"programme": {
"@id": "/api/programmes/1",
"@type": "Programme",
"id": 1,
"nom": "Transferts Monétaires 2024",
"code": "TM-2024"
},
"beneficiairePrincipal": null
}

Réponses erreur​

404 Not Found​

{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Item not found for \"/api/beneficiaires/invalid-uuid\""
}

403 Forbidden​

{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Access Denied."
}

Exemples​

cURL​

curl https://sig.example.com/api/beneficiaires/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer TOKEN"

JavaScript​

const getBeneficiaire = async (id) => {
const response = await fetch(
`https://sig.example.com/api/beneficiaires/${id}`,
{
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
}
);

if (response.status === 404) {
throw new Error('Bénéficiaire non trouvé');
}

return response.json();
};

// Utilisation
try {
const beneficiaire = await getBeneficiaire('550e8400-e29b-41d4-a716-446655440000');
console.log(`Nom: ${beneficiaire.nomComplet}`);
console.log(`Type: ${beneficiaire.typeBeneficiaire}`);
console.log(`Statut: ${beneficiaire.statutCycle}`);
console.log(`Cycles complétés: ${beneficiaire.nombreCyclesCompletes}`);
console.log(`Ménage: ${beneficiaire.menage.codeMenage}`);
} catch (error) {
console.error(error.message);
}

Python​

import requests

def get_beneficiaire(token, beneficiaire_id):
response = requests.get(
f'https://sig.example.com/api/beneficiaires/{beneficiaire_id}',
headers={'Authorization': f'Bearer {token}'}
)

if response.status_code == 404:
raise Exception('Bénéficiaire non trouvé')

return response.json()

# Utilisation
beneficiaire = get_beneficiaire(token, '550e8400-e29b-41d4-a716-446655440000')
print(f"Code: {beneficiaire['codeBeneficiaire']}")
print(f"Nom: {beneficiaire['nomComplet']}")
print(f"Mode paiement: {beneficiaire['modePaiement']}")
print(f"Conformité: {beneficiaire['tauxConformiteGlobal']}%")

Champs de la réponse​

Identité​

ChampTypeDescription
idUUIDIdentifiant unique
codeBeneficiairestringCode unique (BEN-YYYY-NNNNN)
nomCompletstringNom complet du bénéficiaire
telephonestringNuméro de téléphone
sexestring"M" ou "F"

Paiement​

ChampTypeDescription
modePaiementstringMode de paiement (orange_money, wave, etc.)
compteMobilestringNuméro de compte Mobile Money
compteBancairestringNuméro de compte bancaire
numeroMTNstringNuméro MTN Mobile Money

Type et statut​

ChampTypeDescription
typeBeneficiairestring"principal" ou "substitut"
actifbooleanBénéficiaire actif
statutEnrolementstringStatut d'enrôlement
statutCyclestringStatut dans le cycle de vie
documentVerifiebooleanDocument d'identité vérifié

Cycle de vie​

ChampTypeDescription
dateEnrolementdatetimeDate d'enrôlement
prochaineRecertificationdateDate de prochaine recertification
estGraduebooleanA terminé le programme
dateGraduationdateDate de graduation
nombreCyclesCompletesintegerNombre de cycles de paiement complétés
tauxConformiteGlobaldecimalTaux de conformité aux conditionnalités (0-100)
dernierSuividateDate du dernier suivi terrain

Notes​

  • Les identifiants de bénéficiaires sont des UUID
  • Le bénéficiaire substitut référence son bénéficiaire principal via beneficiairePrincipal
  • Le taux de conformité est calculé sur toutes les conditionnalités du programme
  • La recertification est obligatoire périodiquement pour maintenir l'éligibilité

Retrait, désactivation et réactivation

Trois actions, toutes avec la permission registre.beneficiaires_edit et la vérification du périmètre de l'utilisateur (403 si le bénéficiaire en sort, 404 s'il n'existe pas).

MéthodeEndpointEffet
POST/api/beneficiaires/{id}/unenrollRetire le bénéficiaire de son programme sans le supprimer
POST/api/beneficiaires/{id}/deactivatePasse actif à false
POST/api/beneficiaires/{id}/activateRepasse actif à true

POST /api/beneficiaires/{id}/unenroll​

Corps optionnel :

{ "motif": "demenagement" }

Le bénéficiaire perd son programme et sa date d'enrôlement. Si un motif est fourni, il est enregistré comme motif de sortie avec la date du jour. L'opération est tracée dans le journal d'audit.

{ "success": true, "message": "Bénéficiaire retiré du programme \"Programme exemple\"" }

Erreur 400 si le bénéficiaire n'est enrôlé dans aucun programme : Ce bénéficiaire n'est enrôlé dans aucun programme.

Un bénéficiaire retiré n'entre plus dans les transferts suivants ; il peut être réenrôlé plus tard, et son historique de paiements est conservé.

curl -X POST "https://sig.example.com/api/beneficiaires/550e8400-e29b-41d4-a716-446655440000/unenroll" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"motif": "demenagement"}'