POST /api/cycles
Crée un nouveau cycle de paiement.
Endpoint
POST /api/cycles
Headers
| Header | Valeur | Requis |
|---|---|---|
| Authorization | Bearer {token} | Oui |
| Content-Type | application/json | Oui |
Corps de la requête
{
"programme": "/api/programmes/1",
"code": "CYC-2024-003",
"nom": "Cycle Mars 2024",
"description": "Cycle de paiement pour le mois de mars 2024",
"dateDebut": "2024-03-01",
"dateFin": "2024-03-31",
"montantParBeneficiaire": "25000.00",
"niveauxRequis": 2
}
Champs
| Champ | Type | Requis | Description |
|---|---|---|---|
| programme | IRI | Oui | Référence au programme |
| code | string | Oui | Code unique du cycle |
| nom | string | Oui | Nom du cycle |
| description | string | Non | Description |
| dateDebut | date | Oui | Date de début (YYYY-MM-DD) |
| dateFin | date | Non | Date de fin |
| montantParBeneficiaire | decimal | Oui | Montant par bénéficiaire |
| niveauxRequis | integer | Non | Niveaux de validation requis (défaut: 2) |
Réponse succès
Code: 201 Created
{
"@context": "/api/contexts/Cycle",
"@id": "/api/cycles/770e8400-e29b-41d4-a716-446655440003",
"@type": "Cycle",
"id": "770e8400-e29b-41d4-a716-446655440003",
"code": "CYC-2024-003",
"nom": "Cycle Mars 2024",
"description": "Cycle de paiement pour le mois de mars 2024",
"dateDebut": "2024-03-01",
"dateFin": "2024-03-31",
"montantParBeneficiaire": "25000.00",
"statut": "planifie",
"nbBeneficiairesPrevu": 0,
"nbBeneficiairesPaye": 0,
"montantTotalPrevu": "0",
"montantTotalPaye": "0",
"niveauValidation": 0,
"niveauxRequis": 2,
"statutValidation": "brouillon",
"createdAt": "2024-02-15T10:00:00+00:00"
}
Réponses erreur
422 Unprocessable Entity
{
"@context": "/api/contexts/ConstraintViolationList",
"@type": "ConstraintViolationList",
"violations": [
{
"propertyPath": "code",
"message": "This value is already used."
},
{
"propertyPath": "montantParBeneficiaire",
"message": "This value should be positive."
}
]
}
Exemples
cURL
curl -X POST https://sig.ucp-pch.org/api/cycles \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"programme": "/api/programmes/1",
"code": "CYC-2024-003",
"nom": "Cycle Mars 2024",
"dateDebut": "2024-03-01",
"dateFin": "2024-03-31",
"montantParBeneficiaire": "25000.00"
}'
JavaScript
const createCycle = async (data) => {
const response = await fetch('https://sig.ucp-pch.org/api/cycles', {
method: 'POST',
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
if (response.status === 422) {
const errors = await response.json();
throw new Error(errors['hydra:description']);
}
if (!response.ok) {
throw new Error('Erreur lors de la création');
}
return response.json();
};
// Utilisation
const cycle = await createCycle({
programme: '/api/programmes/1',
code: 'CYC-2024-003',
nom: 'Cycle Mars 2024',
dateDebut: '2024-03-01',
dateFin: '2024-03-31',
montantParBeneficiaire: '25000.00'
});
console.log(`Créé: ${cycle.code}`);
Python
import requests
def create_cycle(token, data):
response = requests.post(
'https://sig.ucp-pch.org/api/cycles',
headers={
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
},
json=data
)
if response.status_code == 422:
errors = response.json()
raise Exception(errors['hydra:description'])
response.raise_for_status()
return response.json()
# Utilisation
cycle = create_cycle(token, {
'programme': '/api/programmes/1',
'code': 'CYC-2024-003',
'nom': 'Cycle Mars 2024',
'dateDebut': '2024-03-01',
'dateFin': '2024-03-31',
'montantParBeneficiaire': '25000.00'
})
print(f"Créé: {cycle['code']}")
PUT /api/cycles/{id}
Modifie un cycle existant.
Endpoint
PUT /api/cycles/{id}
Corps de la requête
Envoyez uniquement les champs à modifier :
{
"nom": "Cycle Mars 2024 - Modifié",
"dateFin": "2024-04-05",
"montantParBeneficiaire": "27500.00"
}
Réponse succès
Code: 200 OK
Exemple cURL
curl -X PUT https://sig.ucp-pch.org/api/cycles/770e8400-e29b-41d4-a716-446655440003 \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"nom": "Cycle Mars 2024 - Modifié",
"montantParBeneficiaire": "27500.00"
}'
Calcul automatique des bénéficiaires
Après création du cycle, utilisez cet endpoint pour calculer automatiquement les bénéficiaires éligibles.
Endpoint
POST /api/cycles/{id}/calculer-beneficiaires
Réponse succès
Code: 200 OK
{
"success": true,
"nbBeneficiairesPrevu": 850,
"montantTotalPrevu": "21250000.00",
"message": "850 bénéficiaires éligibles identifiés"
}
Exemple cURL
curl -X POST https://sig.ucp-pch.org/api/cycles/770e8400-e29b-41d4-a716-446655440003/calculer-beneficiaires \
-H "Authorization: Bearer TOKEN"
Notes
- Le code du cycle doit être unique
- Le statut initial est
planifieet la validationbrouillon - Les montants sont en FCFA (format décimal)
- Le calcul des bénéficiaires peut être lancé après création
- La modification n'est possible que si le cycle n'est pas encore validé