Aller au contenu principal

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.access vé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
  • commune.manager conserve le rôle municipal_manager scoping 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 + module alertes
  • services → manage_services + module services
  • publications mairie → manage_publications + module communication
  • élus → manage_elus + module elus
  • collectes → manage_collectes + module collectes
  • infos → manage_infos + module communication

Endpoints confirmés visibles

MéthodeRouteAuthNotes
GET/api/v1/mairie/communes/{communeId}/alertesX-App-SourceLecture publique.
GET/api/v1/mairie/communes/{communeId}/servicesX-App-SourceLecture publique.
POST/api/v1/mairie/acteurs/{acteurId}/alertesauth:sanctum + mairie.accessCréation alerte.
PATCH/api/v1/mairie/alertes/{alerteId}auth:sanctum + mairie.accessMise à jour alerte.
DELETE/api/v1/mairie/alertes/{alerteId}/desactiverauth:sanctum + mairie.accessDésactivation.
POST/api/v1/mairie/acteurs/{acteurId}/communes/{communeId}/servicesauth:sanctum + mairie.accessCréation service.
PATCH/api/v1/mairie/services/{serviceId}auth:sanctum + mairie.accessMise à jour service.
PATCH/api/v1/mairie/acteurs/{acteurId}/communes/{communeId}/services/reorderauth:sanctum + mairie.accessRéordonnancement services.
GET/api/v1/mairie/acteurs/{acteurId}/publicationsauth:sanctum + mairie.accessListe publications mairie.
POST/api/v1/mairie/acteurs/{acteurId}/publicationsauth:sanctum + mairie.accessCréation publication mairie.
PATCH/api/v1/mairie/acteurs/{acteurId}/publications/{publicationId}/moderateauth:sanctum + mairie.accessModération locale encadrée.
GET/api/v1/mairie/communes/{communeId}/services/allauth:sanctum + commune.managerListe complète workspace.
GET/api/v1/mairie/communes/{communeId}/elusauth:sanctum + commune.managerLecture élus.
POST/api/v1/mairie/communes/{communeId}/elusauth:sanctum + commune.managerCréation élu.
PATCH/api/v1/mairie/communes/{communeId}/elus/{eluId}auth:sanctum + commune.managerMise à jour élu.
DELETE/api/v1/mairie/communes/{communeId}/elus/{eluId}auth:sanctum + commune.managerSuppression élu.
GET/api/v1/mairie/communes/{communeId}/collectesauth:sanctum + commune.managerLecture collectes.
POST/api/v1/mairie/communes/{communeId}/collectesauth:sanctum + commune.managerCréation collecte.
PATCH/api/v1/mairie/communes/{communeId}/collectes/{collecteId}auth:sanctum + commune.managerMise à jour collecte.
DELETE/api/v1/mairie/communes/{communeId}/collectes/{collecteId}auth:sanctum + commune.managerSuppression collecte.
GET/api/v1/mairie/communes/{communeId}/infosauth:sanctum + commune.managerLecture infos.
POST/api/v1/mairie/communes/{communeId}/infosauth:sanctum + commune.managerCréation info.
PATCH/api/v1/mairie/communes/{communeId}/infos/{infoId}auth:sanctum + commune.managerMise à jour info.
DELETE/api/v1/mairie/communes/{communeId}/infos/{infoId}auth:sanctum + commune.managerSuppression 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 actuelCible
Alertes/servicesRoutes confirmées.Cycle de vie et notifications à stabiliser.
Publications mairieRoutes confirmées.Frontière claire avec modération globale DMV.
PlayLoop mairieNon 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.