Aller au contenu principal

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

CodeDescription
200Succes
201Ressource creee
204Succes sans contenu (DELETE)
400Requete invalide
401Non authentifie
403Acces refuse
404Ressource non trouvee
422Erreur de validation
500Erreur serveur

Pagination

Les collections sont paginees par defaut (30 elements par page).

Parametres

ParametreDescriptionExemple
pageNumero de page?page=2
itemsPerPageElements par page?itemsPerPage=50

Exemple

curl "https://sig.ucp-pch.org/api/menages?page=2&itemsPerPage=50" \
-H "Authorization: Bearer TOKEN"

Filtres

Filtres Disponibles

FiltreDescriptionExemple
regionFiltrer par region?region=/api/regions/1
secteurFiltrer par secteur?secteur=/api/secteurs/5
communeFiltrer par commune?commune=/api/communes/10
statutFiltrer par statut?statut=actif
searchRecherche 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

MethodeEndpointDescription
POST/api/loginConnexion
POST/api/token/refreshRafraichir token
POST/api/logoutDeconnexion

Menages

MethodeEndpointDescription
GET/api/menagesListe des menages
GET/api/menages/\{id\}Detail d'un menage
POST/api/menagesCreer un menage
PUT/api/menages/\{id\}Modifier un menage
DELETE/api/menages/\{id\}Supprimer un menage

Beneficiaires

MethodeEndpointDescription
GET/api/beneficiairesListe des beneficiaires
GET/api/beneficiaires/\{id\}Detail d'un beneficiaire

Cycles de Paiement

MethodeEndpointDescription
GET/api/cyclesListe des cycles
POST/api/cyclesCreer un cycle
POST/api/cycles/\{id\}/generateGenerer les paiements
POST/api/cycles/\{id\}/validateValider 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"]
]);