API Reference PCH-SIG
L'API PCH-SIG est une API REST qui permet d'interagir avec toutes les fonctionnalités du système.
Base URL
https://sig.ucp-pch.org/api
Authentification
L'API utilise des JSON Web Tokens (JWT) pour l'authentification.
Obtenir un Token
curl -X POST https://sig.ucp-pch.org/api/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "password"}'
Réponse :
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"refresh_token": "abc123...",
"user": {
"id": 1,
"email": "user@example.com",
"roles": ["ROLE_USER", "ROLE_ADMIN"]
}
}
Utiliser le Token
Incluez le token dans le header Authorization :
curl https://sig.ucp-pch.org/api/menages \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
Rafraichir le Token
curl -X POST https://sig.ucp-pch.org/api/token/refresh \
-H "Content-Type: application/json" \
-d '{"refresh_token": "abc123..."}'
Format des Reponses
Succes
{
"@context": "/api/contexts/Menage",
"@id": "/api/menages/123",
"@type": "Menage",
"id": 123,
"codeMenage": "MEN-2024-001",
"chefMenage": {...}
}
Collection (Liste)
{
"@context": "/api/contexts/Menage",
"@id": "/api/menages",
"@type": "hydra:Collection",
"hydra:totalItems": 1234,
"hydra:member": [
{...},
{...}
],
"hydra:view": {
"@id": "/api/menages?page=1",
"@type": "hydra:PartialCollectionView",
"hydra:first": "/api/menages?page=1",
"hydra:last": "/api/menages?page=50",
"hydra:next": "/api/menages?page=2"
}
}
Erreur
{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Item not found"
}
Codes HTTP
| Code | Description |
|---|---|
200 | Succes |
201 | Ressource creee |
204 | Succes sans contenu (DELETE) |
400 | Requete invalide |
401 | Non authentifie |
403 | Acces refuse |
404 | Ressource non trouvee |
422 | Erreur de validation |
500 | Erreur serveur |
Pagination
Les collections sont paginees par defaut (30 elements par page).
Parametres
| Parametre | Description | Exemple |
|---|---|---|
page | Numero de page | ?page=2 |
itemsPerPage | Elements par page | ?itemsPerPage=50 |
Exemple
curl "https://sig.ucp-pch.org/api/menages?page=2&itemsPerPage=50" \
-H "Authorization: Bearer TOKEN"
Filtres
Filtres Disponibles
| Filtre | Description | Exemple |
|---|---|---|
region | Filtrer par region | ?region=/api/regions/1 |
secteur | Filtrer par secteur | ?secteur=/api/secteurs/5 |
commune | Filtrer par commune | ?commune=/api/communes/10 |
statut | Filtrer par statut | ?statut=actif |
search | Recherche textuelle | ?search=Diallo |
Exemple Combine
curl "https://sig.ucp-pch.org/api/menages?region=/api/regions/1&statut=actif&search=Diallo" \
-H "Authorization: Bearer TOKEN"
Endpoints Principaux
Authentification
| Methode | Endpoint | Description |
|---|---|---|
| POST | /api/login | Connexion |
| POST | /api/token/refresh | Rafraichir token |
| POST | /api/logout | Deconnexion |
Menages
| Methode | Endpoint | Description |
|---|---|---|
| GET | /api/menages | Liste des menages |
| GET | /api/menages/\{id\} | Detail d'un menage |
| POST | /api/menages | Creer un menage |
| PUT | /api/menages/\{id\} | Modifier un menage |
| DELETE | /api/menages/\{id\} | Supprimer un menage |
Beneficiaires
| Methode | Endpoint | Description |
|---|---|---|
| GET | /api/beneficiaires | Liste des beneficiaires |
| GET | /api/beneficiaires/\{id\} | Detail d'un beneficiaire |
Cycles de Paiement
| Methode | Endpoint | Description |
|---|---|---|
| GET | /api/cycles | Liste des cycles |
| POST | /api/cycles | Creer un cycle |
| POST | /api/cycles/\{id\}/generate | Generer les paiements |
| POST | /api/cycles/\{id\}/validate | Valider le cycle |
Exemples de Code
JavaScript (Fetch)
const login = async (email, password) => {
const response = await fetch('https://sig.ucp-pch.org/api/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password })
});
return response.json();
};
const getMenages = async (token) => {
const response = await fetch('https://sig.ucp-pch.org/api/menages', {
headers: { 'Authorization': `Bearer ${token}` }
});
return response.json();
};
Python (Requests)
import requests
# Login
response = requests.post(
'https://sig.ucp-pch.org/api/login',
json={'email': 'user@example.com', 'password': 'password'}
)
token = response.json()['token']
# Get menages
menages = requests.get(
'https://sig.ucp-pch.org/api/menages',
headers={'Authorization': f'Bearer {token}'}
).json()
PHP (Guzzle)
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://sig.ucp-pch.org/api']);
// Login
$response = $client->post('/api/login', [
'json' => ['email' => 'user@example.com', 'password' => 'password']
]);
$token = json_decode($response->getBody())->token;
// Get menages
$menages = $client->get('/api/menages', [
'headers' => ['Authorization' => "Bearer $token"]
]);