Webhook
Recevez automatiquement les données de chaque nouveau ticket créé dans votre commune via un webhook.
Introduction
Les webhooks permettent à Contribcit d'envoyer des notifications en temps réel à votre serveur lorsqu'un nouveau ticket est créé. Cela vous permet d'intégrer les contributions citoyennes directement dans vos systèmes existants.
Configuration
Pour configurer un webhook, vous devez :
- Accéder à la page de configuration API dans votre tableau de bord
- Entrer l'URL HTTPS de votre endpoint qui recevra les notifications
- Copier le secret généré automatiquement
- Configurer votre endpoint pour vérifier le secret dans les headers
Format JSON envoyé
Chaque fois qu'un nouveau ticket est créé, une requête POST est envoyée à votre URL avec le payload suivant :
Headers envoyés
Chaque requête webhook inclut les headers suivants :
Le header X-Webhook-Secret contient le secret généré automatiquement. Vous devez vérifier ce secret dans votre endpoint pour authentifier les requêtes.
Authentification
Pour sécuriser votre endpoint, vous devez vérifier le secret dans le header X-Webhook-Secret. Si le secret ne correspond pas, vous devez retourner une erreur 401 Unauthorized.
Gestion des erreurs
Contribcit gère les erreurs de la manière suivante :
- Timeout : Si votre endpoint ne répond pas dans les 5 secondes, la requête est annulée
- Codes HTTP d'erreur : Les codes 4xx et 5xx sont considérés comme des erreurs
- Logs : Toutes les tentatives sont enregistrées dans les logs de votre commune
Bonnes pratiques
- Idempotence : Votre endpoint doit être idempotent. Utilisez le
ticketNumberpour éviter les doublons - Réponse rapide : Répondez rapidement (dans les 5 secondes) pour éviter les timeouts
- Validation : Validez toujours les données reçues avant de les traiter
- Logging : Enregistrez les webhooks reçus pour le débogage
- HTTPS : Utilisez toujours HTTPS pour votre endpoint webhook
Structure des données
Le payload contient les champs suivants :
event: Type d'événement (actuellement "contribution.created")timestamp: Date et heure de l'événement au format ISO 8601contribution: Objet contenant toutes les données du ticketid: Identifiant unique de la contributionticketNumber: Numéro de ticket (ex: "CT-2024-001234")type: Type de contribution ("ALERT" ou "SUGGESTION")status: Statut du ticket ("OPEN", "IN_PROGRESS", "RESOLVED", etc.)category: Catégorie du ticket (id et name)title: Titre du signalementdetails: Description détailléeemail: Email du contributeur (peut être null)location: Localisation (label, latitude, longitude - peuvent être null)photo: Photo associée (url et publicId - peuvent être null)createdAt: Date de création au format ISO 8601isPotentiallyMalicious: Indicateur de contenu potentiellement malveillant
commune: Informations sur la communeid: Identifiant unique de la communename: Nom de la communepostalCode: Code postal
API GraphQL
Accédez à toutes les données de votre commune via une API GraphQL moderne et flexible. Cette fonctionnalité est réservée aux communes premium.
Introduction
L'API GraphQL de Contribcit vous permet d'interroger vos données de manière flexible et efficace. Contrairement aux API REST traditionnelles, GraphQL vous permet de récupérer exactement les données dont vous avez besoin en une seule requête.
Accès premium requis
L'API GraphQL est uniquement disponible pour les communes ayant un accès premium. Contactez-nous pour activer cette fonctionnalité.
Authentification
Pour vous authentifier, vous devez inclure votre clé API dans les headers de chaque requête. Cette clé est la même que celle utilisée pour les webhooks (webhookSecret).
Vous pouvez l'envoyer de deux manières :
- Header X-API-Key :
X-API-Key: votre-webhook-secret - Authorization Bearer :
Authorization: Bearer votre-webhook-secret
Endpoint
L'endpoint GraphQL est disponible à l'adresse suivante :
Sandbox de test
Vous pouvez tester l'API GraphQL directement dans votre navigateur grâce à notre sandbox Apollo intégrée :
Exemples de requêtes
Sélectionnez un langage pour voir un exemple d'implémentation :
Queries disponibles
- commune : Récupère les informations de votre commune
- contribution(id) : Récupère une contribution spécifique par son ID
- contributions(filter, pagination) : Liste paginée des contributions avec filtres optionnels
- stats(startDate, endDate) : Statistiques agrégées sur les contributions
- categories : Liste des catégories actives
Filtres et pagination
La query contributions accepte des filtres et une pagination :
- Filtres : status (OPEN/CLOSED), type (ALERT/SUGGESTION), categoryId, startDate, endDate
- Pagination : Utilisez
firstetafterpour paginer vers l'avant, oulastetbeforepour paginer vers l'arrière
Exemple avec filtres
Sécurité
L'API GraphQL est en lecture seule. Vous ne pouvez accéder qu'aux données de votre propre commune. Toutes les requêtes sont automatiquement filtrées par votre communeId pour garantir l'isolation des données.
Limites
- La pagination est limitée à 100 éléments par page
- Par défaut, 20 éléments sont retournés si aucune limite n'est spécifiée
- L'API est en lecture seule (pas de mutations)
Services tiers
Bientôt disponible
Des intégrations avec des services tiers (Slack, Microsoft Teams, etc.) seront bientôt disponibles pour recevoir les notifications de contributions directement dans vos outils de communication.