Aller au contenu principal

POST /api/cycles

Crée un nouveau cycle de paiement.

Endpoint

POST /api/cycles

Headers

HeaderValeurRequis
AuthorizationBearer {token}Oui
Content-Typeapplication/jsonOui

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

ChampTypeRequisDescription
programmeIRIOuiRéférence au programme
codestringOuiCode unique du cycle
nomstringOuiNom du cycle
descriptionstringNonDescription
dateDebutdateOuiDate de début (YYYY-MM-DD)
dateFindateNonDate de fin
montantParBeneficiairedecimalOuiMontant par bénéficiaire
niveauxRequisintegerNonNiveaux 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 planifie et la validation brouillon
  • 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é