API Mairie
Objectif
Documenter les endpoints mairie liés aux alertes, services communaux et publications mairie.
Périmètre
Communication municipale, alertes citoyennes, services pratiques, publications mairie et supervision locale encadrée.
Applications consommatrices
- Espace ou application Mairie.
- DMV public pour lecture.
- Backoffice pour support selon droits.
- PlayLoop mairie en cible via diffusion contrôlée.
Authentification requise
- Lecture alertes/services : publique avec
X-App-Source. - Écriture acteur mairie :
identify.app,auth:sanctum,mairie.access. - Gestion commune workspace :
identify.app,auth:sanctum,commune.manager.
Permissions/RBAC
mairie.accessvérifie désormais :- que l’acteur ciblé est bien
kind='mairie' - que l’utilisateur a un accès acteur actif via
ActorAccessService - que la permission métier requise est présente
- que le module métier requis est actif
- que l’acteur ciblé est bien
commune.managerconserve le rôlemunicipal_managerscoping commune, mais ajoute le même contrôle RBAC acteur + modules sur l’acteur mairie lié àcommunes.mairie_actor_id- La commune ne dispose pas d’un pouvoir de censure globale.
- La mairie agit sur ses contenus, services, alertes et publications liées à son périmètre.
Capacités actuellement appliquées
- alertes →
manage_alertes+ modulealertes - services →
manage_services+ moduleservices - publications mairie →
manage_publications+ modulecommunication - élus →
manage_elus+ moduleelus - collectes →
manage_collectes+ modulecollectes - infos →
manage_infos+ modulecommunication
Endpoints confirmés visibles
| Méthode | Route | Auth | Notes |
|---|---|---|---|
GET | /api/v1/mairie/communes/{communeId}/alertes | X-App-Source | Lecture publique. |
GET | /api/v1/mairie/communes/{communeId}/services | X-App-Source | Lecture publique. |
POST | /api/v1/mairie/acteurs/{acteurId}/alertes | auth:sanctum + mairie.access | Création alerte. |
PATCH | /api/v1/mairie/alertes/{alerteId} | auth:sanctum + mairie.access | Mise à jour alerte. |
DELETE | /api/v1/mairie/alertes/{alerteId}/desactiver | auth:sanctum + mairie.access | Désactivation. |
POST | /api/v1/mairie/acteurs/{acteurId}/communes/{communeId}/services | auth:sanctum + mairie.access | Création service. |
PATCH | /api/v1/mairie/services/{serviceId} | auth:sanctum + mairie.access | Mise à jour service. |
PATCH | /api/v1/mairie/acteurs/{acteurId}/communes/{communeId}/services/reorder | auth:sanctum + mairie.access | Réordonnancement services. |
GET | /api/v1/mairie/acteurs/{acteurId}/publications | auth:sanctum + mairie.access | Liste publications mairie. |
POST | /api/v1/mairie/acteurs/{acteurId}/publications | auth:sanctum + mairie.access | Création publication mairie. |
PATCH | /api/v1/mairie/acteurs/{acteurId}/publications/{publicationId}/moderate | auth:sanctum + mairie.access | Modération locale encadrée. |
GET | /api/v1/mairie/communes/{communeId}/services/all | auth:sanctum + commune.manager | Liste complète workspace. |
GET | /api/v1/mairie/communes/{communeId}/elus | auth:sanctum + commune.manager | Lecture élus. |
POST | /api/v1/mairie/communes/{communeId}/elus | auth:sanctum + commune.manager | Création élu. |
PATCH | /api/v1/mairie/communes/{communeId}/elus/{eluId} | auth:sanctum + commune.manager | Mise à jour élu. |
DELETE | /api/v1/mairie/communes/{communeId}/elus/{eluId} | auth:sanctum + commune.manager | Suppression élu. |
GET | /api/v1/mairie/communes/{communeId}/collectes | auth:sanctum + commune.manager | Lecture collectes. |
POST | /api/v1/mairie/communes/{communeId}/collectes | auth:sanctum + commune.manager | Création collecte. |
PATCH | /api/v1/mairie/communes/{communeId}/collectes/{collecteId} | auth:sanctum + commune.manager | Mise à jour collecte. |
DELETE | /api/v1/mairie/communes/{communeId}/collectes/{collecteId} | auth:sanctum + commune.manager | Suppression collecte. |
GET | /api/v1/mairie/communes/{communeId}/infos | auth:sanctum + commune.manager | Lecture infos. |
POST | /api/v1/mairie/communes/{communeId}/infos | auth:sanctum + commune.manager | Création info. |
PATCH | /api/v1/mairie/communes/{communeId}/infos/{infoId} | auth:sanctum + commune.manager | Mise à jour info. |
DELETE | /api/v1/mairie/communes/{communeId}/infos/{infoId} | auth:sanctum + commune.manager | Suppression info. |
Endpoints cibles si nécessaire
- Endpoints statistiques mairie dédiés à confirmer.
- Diffusion PlayLoop mairie à définir via API PlayLoop ou publication transformée.
Exemples génériques de requête/réponse
POST /api/v1/mairie/acteurs/acteur-id/alertes
Authorization: Bearer <token>
X-App-Source: mairie
Content-Type: application/json
{
"titre": "Alerte locale",
"contenu": "Information à destination des habitants.",
"niveau": "info"
}
{
"alerte": {
"id": "alerte-id",
"titre": "Alerte locale",
"niveau": "info"
}
}
Erreurs principales
{
"error": "mairie_access_denied",
"message": "Accès mairie non autorisé pour ce périmètre."
}
Audit/logs si applicable
Obligatoire pour alertes, désactivation, réordonnancement de services et modération de publications mairie.
Sécurité
- Pas de censure globale par les communes.
- Les alertes doivent rester limitées au périmètre autorisé.
- Les publications mairie sensibles nécessitent traçabilité.
- L’IA peut assister la rédaction mais pas publier ou supprimer seule.
État actuel vs cible
| Sujet | État actuel | Cible |
|---|---|---|
| Alertes/services | Routes confirmées. | Cycle de vie et notifications à stabiliser. |
| Publications mairie | Routes confirmées. | Frontière claire avec modération globale DMV. |
| PlayLoop mairie | Non confirmé comme route dédiée. | Diffusion multi-supports encadrée. |
Points à confirmer
- Statuts des alertes et services.
- Règles de notification des alertes.
- Limites de la modération locale.