République de Côte d'Ivoire

API SIGES-CS v1

Intégrez les données du Système Intégré de Gestion du Secteur Paix & Cohésion Sociale dans vos outils tiers : tableaux de bord BI, applications mobiles, scripts d'analyse.

Authentification

Bearer token personnel (PAT) généré depuis votre profil.

Lecture + écriture encadrée

Lecture sur tous les domaines ; écriture limitée aux financements externes, dans le périmètre du token.

Abilities

Chaque token a ses propres permissions granulaires.

1.Authentification

Toutes les requêtes API doivent inclure un header Authorization avec un token personnel. Créez-en un depuis votre profil → Tokens d'accès API.

Authorization: Bearer sigescs_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept: application/json

Abilities disponibles

read:indicators

Lire les indicateurs et leurs valeurs

read:interventions

Lire les interventions (hors brouillons)

read:structures

Lire les structures

read:stats

Lire les statistiques agrégées

write:financements

Créer / mettre à jour des financements externes

2.Endpoints disponibles

GET /api/v1/me

Profil de l'utilisateur du token (et infos du token).

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' https://sigescs.com/api/v1/me

Exemple de réponse

{
    "data": {
        "user": {
            "id": 1,
            "name": "Alice",
            "email": "alice@example.com",
            "role": "gestionnaire"
        },
        "token": {
            "name": "Mon mobile",
            "abilities": [
                "read:indicators"
            ],
            "last_used_at": "2026-06-16T03:00:00Z"
        }
    }
}
GET /api/v1/indicateurs ability : read:indicators

Liste paginée des indicateurs actifs.

Paramètres query

ParamètreDescription
per_page Nombre par page (1-100, défaut 25)
type Filtre type (activite, resultat, impact)
kpi true/false pour filtrer KPI uniquement
q Recherche dans l'intitulé

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' 'https://sigescs.com/api/v1/indicateurs?kpi=1&per_page=10'

Exemple de réponse

{
    "data": [
        {
            "id": 42,
            "code": "IND-001",
            "intitule": "Personnes formées",
            "type": "activite",
            "unite": "personnes",
            "valeur_courante": 1250,
            "cible_annuelle": 1500,
            "taux_atteinte": 83.3,
            "alert_state": "none",
            "is_kpi": true
        }
    ],
    "meta": {
        "page": 1,
        "per_page": 25,
        "total": 47,
        "last_page": 2
    }
}
GET /api/v1/indicateurs/{id} ability : read:indicators

Détail d'un indicateur.

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' https://sigescs.com/api/v1/indicateurs/42
GET /api/v1/interventions ability : read:interventions

Liste paginée des interventions (hors brouillons).

Paramètres query

ParamètreDescription
statut Filtre par statut (en_cours, termine, approuve…)
region Filtre par nom de région
annee Filtre par année (YYYY)
q Recherche dans l'intitulé
per_page Pagination (max 100)

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' 'https://sigescs.com/api/v1/interventions?annee=2026&region=B%C3%A9lier'
GET /api/v1/structures ability : read:structures

Liste paginée des structures actives.

Paramètres query

ParamètreDescription
type Filtre type (ong, ministere, partenaire…)
region Filtre par nom de région
q Recherche dénomination

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' 'https://sigescs.com/api/v1/structures?type=ong'
GET /api/v1/stats ability : read:stats

Statistiques agrégées sur un exercice.

Paramètres query

ParamètreDescription
annee Année (défaut : année en cours)

Exemple cURL

curl -H 'Authorization: Bearer sigescs_pat_xxx' 'https://sigescs.com/api/v1/stats?annee=2026'
POST /api/v1/financements ability : write:financements

Crée un financement externe. Le `structure_id` doit appartenir au périmètre du token (sinon 403). Throttle écriture dédié (30 req/min).

Exemple cURL

curl -X POST -H 'Authorization: Bearer sigescs_pat_xxx' -H 'Content-Type: application/json' \
  -d '{"structure_id":7,"exercice":2026,"bailleur":"PNUD","type":"bailleur","intitule":"Appui cohésion","montant":1500000,"statut":"promis"}' \
  https://sigescs.com/api/v1/financements

Exemple de réponse

{
    "data": {
        "id": 12,
        "structure_id": 7,
        "exercice": 2026,
        "bailleur": "PNUD",
        "type": "bailleur",
        "intitule": "Appui cohésion",
        "montant": 1500000,
        "devise": "FCFA",
        "statut": "promis"
    }
}
PUT /api/v1/financements/{id} ability : write:financements

Met à jour un financement externe existant. Le financement ciblé et le `structure_id` envoyé doivent rester dans le périmètre du token.

Exemple cURL

curl -X PUT -H 'Authorization: Bearer sigescs_pat_xxx' -H 'Content-Type: application/json' \
  -d '{"structure_id":7,"exercice":2026,"bailleur":"PNUD","type":"bailleur","intitule":"Appui cohésion","montant":2000000,"statut":"obtenu"}' \
  https://sigescs.com/api/v1/financements/12

3.Webhooks sortants

SIGES-CS pousse des événements vers vos endpoints HTTPS (Slack, Teams, Discord, services maison) avec une signature HMAC-SHA256 vérifiable. Configurez-les depuis votre profil → Webhooks sortants.

Événements souscrivables

intervention.validated

Intervention validée (passage à approuvé)

intervention.terminated

Intervention terminée

intervention.suspended

Intervention suspendue

indicator.alert

Indicateur en alerte (sous/sur performance)

plan.closed

Plan annuel clôturé

rapport.ready

Rapport généré disponible

Format payload

{
    "event": "intervention.validated",
    "delivered_at": "2026-06-16T03:30:00+00:00",
    "data": {
        "intervention_id": 42,
        "reference": "INT-BLR-2026-001",
        "intitule": "Atelier médiation Daloa",
        "structure_id": 7,
        "region": "Haut-Sassandra",
        "validated_by": {
            "id": 3,
            "name": "Alice Kouassi"
        }
    }
}

Vérification de la signature

Chaque requête contient le header X-SIGESCS-Signature: sha256=…. Vérifiez-le côté receveur :

// PHP
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
if (! hash_equals($expected, $_SERVER['HTTP_X_SIGESCS_SIGNATURE'])) {
    http_response_code(401); exit;
}

// Node.js
const expected = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-sigescs-signature']))) {
    return res.status(401).end();
}

4.Conventions générales

  • Format : JSON uniquement (request & response).
  • Pagination : ?per_page=N (1-100, défaut 25). Réponse contient meta.page, meta.last_page, meta.total.
  • Erreurs : 401 token manquant/invalide, 403 ability manquante ou user inactif, 404 ressource introuvable, 422 validation.
  • Encodage : UTF-8 partout.
  • Cache : pas de cache HTTP — chaque appel est servi en temps réel.
  • Traçabilité : last_used_at + IP enregistrés à chaque appel sur le token.

Besoin d'aide pour intégrer ? Contactez l'équipe SIGES-CS.