Interopérabilité

APIs & Intégrations

REST, GraphQL, WebSocket — SAYTU expose des interfaces standardisées, sécurisées par OAuth2 / JWT, documentées via Swagger/OpenAPI.

Standards exposés

REST

API RESTful versionnée, OpenAPI 3.1.

GraphQL

Requêtes flexibles pour consommation frontale.

WebSocket

Push temps réel (alertes, notifications).

OAuth2 / JWT

Authentification standardisée, tokens signés.

Exemple — Création d'un PV

POST /api/v1/police/pv

{
  "agent_id": "AG-2026-4471",
  "lieu": {
    "adresse": "Avenue Bourguiba, Dakar",
    "latitude": 14.6928,
    "longitude": -17.4467
  },
  "personne": {
    "cni": "1234567890123",
    "biometrie_verifiee": true
  },
  "infraction": "vol_simple",
  "description": "...",
  "pieces_jointes": ["photo1.jpg", "video1.mp4"]
}
Réponse

201 Created

{
  "pv_id": "PV-2026-0087412",
  "statut": "en_attente_signature",
  "cree_le": "2026-07-02T10:34:12Z",
  "hash_integrite": "sha256:9f2c...",
  "url_signature": "/api/v1/signatures/PV-2026-0087412"
}
Exemples clients
curl -X POST https://api.saytu.gouv/v1/police/pv \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @pv.json
Endpoints principaux (extrait)
MéthodeEndpointDescriptionScope
POST/api/v1/auth/loginAuthentificationpublic
GET/api/v1/personnes/{cni}Fiche personnepolice.read
POST/api/v1/police/pvCréer un PVpolice.write
GET/api/v1/justice/dossiers/{id}Dossier judiciairejustice.read
POST/api/v1/prison/ecrouÉcrouer un détenuprison.write
PUT/api/v1/prison/detenus/{id}/mutationMutation celluleprison.write
GET/api/v1/biometrie/faciale/matchReconnaissance facialebio.match
Sécurité des APIs

OAuth2

Flow authorization code + PKCE

JWT

RS256, expiration courte + refresh

mTLS

Chiffrement mutuel inter-services

Rate limit

Throttling par token & IP