Cette référence aide l’équipe TI de la municipalité à déterminer quelles données municipales peuvent être lues et quelles opérations exigent une autorisation. L’API donne surtout accès aux contenus publiés sur le portail citoyen. Certaines ressources intersystèmes, dites B2B, et certaines données personnelles ont des règles d’accès distinctes. Les schémas complets figurent dans le contrat OpenAPI, sur le portail technique.
Les requêtes sont envoyées en HTTPS. L’API répond en JSON encodé en UTF-8. Chaque installation Hubigo utilise un domaine d’API qui lui est associé; l’adresse d’une instance dédiée est communiquée lors de sa mise en service.
URL de base https://api-core.hubigo.ca
Une clé municipale limite l’accès aux données de la municipalité correspondante. Une ressource dite « publique » contient des données destinées au portail citoyen.
1. Dans Administration → Paramètres → API, créer une clé adaptée au système à connecter. 2. La conserver dans un gestionnaire de secrets. 3. L’envoyer dans l’en-tête X-API-Key. 4. Vérifier le code HTTP et le corps JSON retournés.
# Avis publics actifs
GET https://api-core.hubigo.ca/public-api-notices?status=active&limit=50
X-API-Key: hbg_…
# Réponse (extrait)
{ "data": [ { "id": "…", "title": "Avis d’ébullition, secteur nord", "status": "active" } ] }Chaque appel transmet une clé dans l’en-tête X-API-Key. Le type est choisi selon la portée nécessaire :
hbg_…Clé municipale : accès aux domaines autorisés, à l’exception de la facturation de plateforme.hbg_pk_…Clé de plateforme : accès réservé à la facturation; une autre clé reçoit 403 platform_key_required.Les clés sont créées et révoquées dans Administration → Paramètres → API. Une ressource public peut accepter un appel sans clé; une clé permet toutefois d’associer l’usage à l’intégration. Les ressources B2B et PII exigent une clé.
X-API-Key: hbg_xxxxxxxxxxxxxxxxxxxx
HMAC permet au serveur de vérifier qu’une requête n’a pas été modifiée. Si un secret de signature est associé à la clé, la signature de chaque requête est calculée et transmise dans X-Hubigo-Signature.
X-Hubigo-Signature: t=<unix>,v1=<hex> # v1 = HMAC-SHA256(secret, "<t>.<corps_brut>") # fenêtre de validité : 5 minutes
Les chemins et paramètres sont en anglais, par exemple status, limit et format. Le format GeoJSON est demandé avec ?format=geojson pour les ressources géographiques compatibles. Le domaine des loisirs propose aussi un flux iCal. Les opérations d’écriture documentées ci-dessous se trouvent dans le domaine Organismes.
Chaque point d’accès indique dans le contrat OpenAPI le niveau de données qu’il expose :
Cette API ne documente ni export général des citoyens, ni notes internes, ni secrets. Les appels peuvent être journalisés et certaines ressources, notamment les avis et la facturation, sont soumises à des quotas.
400Requête invalide · le détail nomme le champ fautif401Clé manquante, révoquée ou invalide403Clé insuffisante · p. ex. platform_key_required pour la Facturation404Ressource introuvable dans l’instance409Conflit · p. ex. plage déjà réservée429Limite atteinte · voir Retry-After{
"error": {
"code": "platform_key_required",
"message": "Cette famille exige une clé plateforme."
}
}Les limites sont appliquées par clé. Après une réponse 429, attendre la durée indiquée par Retry-After, puis espacer progressivement les nouvelles tentatives. Les avis et la facturation peuvent avoir des seuils plus restrictifs.
Avis publics, messages, catégories d’alerte, niveaux d’urgence et zones affectées.
/public-api-noticesavis publics actifs/public-api-notices/{id}détail d’un avis/public-api-communications/v1/messagesmessages publics de la ville/public-api-communications/v1/notification-categoriescatégories d’alertes actives/public-api-communications/v1/urgency-levelsniveaux d’urgence/public-api-communications/v1/notices/{id}/geojsonzones affectées (GeoJSON)Catalogue des types de demande, référentiels de formulaire, statistiques agrégées et suivi d’une demande par jeton.
/public-api-requests/v1/request-typestypes de demande actifs/public-api-requests/v1/request-types/{id}détail + schéma de champs/public-api-requests/v1/request-references/{listId}valeurs d’un référentiel/public-api-requests/v1/request-statsvolumes agrégés (sans individu)/public-api-requests/v1/request-types/{id}/helpcontenu d’aide / FAQ/public-api-requests/v1/requests/by-tracking-token/{token}suivi d’une demande · PIICatalogue d’activités, camps de jour, événements et plateaux réservables, plus un flux iCal public.
/public-api-loisirs/v1/activitiesactivités publiées/public-api-loisirs/v1/activities/{code}fiche + occurrences/public-api-loisirs/v1/day-campscamps de jour publiés/public-api-loisirs/v1/eventsévénements à venir/public-api-loisirs/v1/resourcesplateaux réservables/public-api-loisirs/v1/resources/{id}/availabilitydisponibilités · b2b/public-api-loisirs/v1/icalflux iCal publicLa seule famille en écriture : synchronisation des organismes et de leurs réservations de plateaux avec les systèmes de la ville.
/public-api-organizations/organizationscréer ou mettre à jour (upsert)/public-api-organizations/organizations/{external_id}lire un organisme/public-api-organizations/resourcesplateaux réservables/public-api-organizations/allocationsallocations et heures consommées/public-api-organizations/reservationsréservations de l’organisme/public-api-organizations/reservationscréer une demande de réservation/public-api-organizations/reservations/{reservation_id}annuler une réservation/public-api-organizations/eventssoumettre un événement à publierConsultations publiques et résultats agrégés, lorsque la ville les publie.
/public-api-consultations/v1/consultationsconsultations publiées ou closes/public-api-consultations/v1/consultations/{id}métadonnées d’une consultation/public-api-consultations/v1/consultations/{id}/resultsrésultats agrégés (si publiés)Vérification de l’accès d’un citoyen à un service (éco-centre, bibliothèque, borne). Endpoints à données personnelles : clé requise.
/public-api-subscriptionsabonnements actifs d’un citoyen · PII/public-api-subscriptions/verifyvérifier l’accès à un service · PIISocle partagé : métadonnées de la ville, zones, lieux, sondes de disponibilité, pages légales et lookup cadastral.
/public-api-core/v1/tenantmétadonnées publiques de la ville/public-api-core/v1/zoneszones publiques (GeoJSON en option)/public-api-core/v1/tenant-locationslieux municipaux partagés/public-api-core/v1/citizens/lookuplookup cadastral par matricule · b2b/public-api-core/v1/legal/privacy-policypolitique de confidentialité publique/public-api-core/v1/pingsonde de disponibilitéUsage, limites et alertes agrégés sur l’ensemble des villes. Réservé aux clés plateforme Hubigo (hbg_pk_…).
/public-api-billing/v1/tenantsvilles de la plateforme/public-api-billing/v1/usageusage agrégé/public-api-billing/v1/tenants/{id}/usageusage d’une ville/public-api-billing/v1/tenants/{id}/limitslimites d’une ville/public-api-billing/v1/alertsalertes d’usage/public-api-billing/v1/tenants/{id}/modulesmodules actifs d’une villeLa validation d’une intégration s’appuie sur les paramètres, les schémas JSON et les exemples du contrat OpenAPI, dans le portail technique.