GET /api/cycles
Récupère la liste paginée des cycles de paiement.
Endpoint
GET /api/cycles
Headers
| Header | Valeur | Requis |
|---|---|---|
| Authorization | Bearer {token} | Oui |
Paramètres de requête
Pagination
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| itemsPerPage | integer | 30 | Éléments par page (max: 100) |
Filtres
| Paramètre | Type | Description |
|---|---|---|
| programme | IRI | Filtrer par programme |
| statut | string | Filtrer par statut du cycle |
| statutValidation | string | Filtrer par statut de validation |
| search | string | Recherche textuelle (code, nom) |
Valeurs de statut
| Valeur | Description |
|---|---|
| planifie | Cycle planifié, pas encore démarré |
| en_cours | Cycle en cours d'exécution |
| termine | Cycle terminé |
| annule | Cycle annulé |
Valeurs de statutValidation
| Valeur | Description |
|---|---|
| brouillon | En préparation |
| en_attente | Soumis, en attente de validation |
| valide | Validé à tous les niveaux |
| rejete | Rejeté |
Tri
| Paramètre | Valeurs | Description |
|---|---|---|
| order[dateDebut] | asc, desc | Trier par date de début |
| order[createdAt] | asc, desc | Trier par date de création |
| order[code] | asc, desc | Trier par code |
Réponse succès
Code: 200 OK
{
"@context": "/api/contexts/Cycle",
"@id": "/api/cycles",
"@type": "hydra:Collection",
"hydra:totalItems": 24,
"hydra:member": [
{
"@id": "/api/cycles/770e8400-e29b-41d4-a716-446655440001",
"@type": "Cycle",
"id": "770e8400-e29b-41d4-a716-446655440001",
"code": "CYC-2024-001",
"nom": "Cycle Janvier 2024",
"description": "Premier cycle de paiement de l'année 2024",
"dateDebut": "2024-01-01",
"dateFin": "2024-01-31",
"montantParBeneficiaire": "25000.00",
"statut": "termine",
"nbBeneficiairesPrevu": 850,
"nbBeneficiairesPaye": 842,
"montantTotalPrevu": "21250000.00",
"montantTotalPaye": "21050000.00",
"tauxExecution": 99.06,
"niveauValidation": 2,
"niveauxRequis": 2,
"statutValidation": "valide",
"genereAutomatiquement": false,
"programme": {
"@id": "/api/programmes/1",
"nom": "Transferts Monétaires 2024"
},
"createdAt": "2023-12-15T10:00:00+00:00"
}
],
"hydra:view": {
"@id": "/api/cycles?page=1",
"@type": "hydra:PartialCollectionView",
"hydra:first": "/api/cycles?page=1",
"hydra:last": "/api/cycles?page=1",
"hydra:next": "/api/cycles?page=2"
}
}
Exemples
cURL - Liste simple
curl https://sig.ucp-pch.org/api/cycles \
-H "Authorization: Bearer TOKEN"
cURL - Avec filtres
curl "https://sig.ucp-pch.org/api/cycles?statut=en_cours&statutValidation=valide" \
-H "Authorization: Bearer TOKEN"
JavaScript
const getCycles = async (filters = {}) => {
const params = new URLSearchParams();
if (filters.programme) params.append('programme', filters.programme);
if (filters.statut) params.append('statut', filters.statut);
if (filters.statutValidation) params.append('statutValidation', filters.statutValidation);
if (filters.search) params.append('search', filters.search);
if (filters.page) params.append('page', filters.page);
const response = await fetch(
`https://sig.ucp-pch.org/api/cycles?${params}`,
{
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
}
);
return response.json();
};
// Utilisation
const data = await getCycles({
statut: 'en_cours',
statutValidation: 'valide'
});
console.log(`Total: ${data['hydra:totalItems']} cycles`);
data['hydra:member'].forEach(cycle => {
console.log(`${cycle.code}: ${cycle.nom} - Taux: ${cycle.tauxExecution}%`);
});
Python
import requests
def get_cycles(token, **filters):
response = requests.get(
'https://sig.ucp-pch.org/api/cycles',
headers={'Authorization': f'Bearer {token}'},
params=filters
)
return response.json()
# Liste simple
cycles = get_cycles(token)
print(f"Total: {cycles['hydra:totalItems']}")
# Avec filtres
cycles = get_cycles(
token,
statut='en_cours',
statutValidation='valide'
)
for cycle in cycles['hydra:member']:
print(f"- {cycle['code']}: {cycle['nom']}")
print(f" Prévu: {cycle['nbBeneficiairesPrevu']} | Payé: {cycle['nbBeneficiairesPaye']}")
Champs de la réponse
Informations générales
| Champ | Type | Description |
|---|---|---|
| id | UUID | Identifiant unique |
| code | string | Code unique du cycle |
| nom | string | Nom du cycle |
| description | string | Description |
| dateDebut | date | Date de début |
| dateFin | date | Date de fin |
Montants
| Champ | Type | Description |
|---|---|---|
| montantParBeneficiaire | decimal | Montant par bénéficiaire |
| montantTotalPrevu | decimal | Montant total prévu |
| montantTotalPaye | decimal | Montant total payé |
Statistiques
| Champ | Type | Description |
|---|---|---|
| nbBeneficiairesPrevu | integer | Nombre de bénéficiaires prévus |
| nbBeneficiairesPaye | integer | Nombre de bénéficiaires payés |
| tauxExecution | float | Taux d'exécution (%) |
Validation
| Champ | Type | Description |
|---|---|---|
| statut | string | Statut du cycle |
| statutValidation | string | Statut de validation |
| niveauValidation | integer | Niveau de validation actuel |
| niveauxRequis | integer | Niveaux requis pour validation complète |
Notes
- Les cycles sont liés à un programme
- Le taux d'exécution est calculé automatiquement (payés/prévus * 100)
- La validation multi-niveaux est configurable par programme
- Les cycles peuvent être générés automatiquement (récurrence)