product.created
Un nouveau produit a été ajouté au registre. Utilisez ce hook pour synchroniser un cache local.
API publique · v1
Tous les endpoints publics du registre Sannmerk. Réponses JSON, cache edge 60s, headers CORS ouverts. Pour le support commercial (SLA + quota étendu), contactez /contact?intent=api.
- **Base URL** : `https://sannmerk.com/v1/sannmerk` - **Format** : `application/json` (GET only) - **Auth** : aucune pour les endpoints publics - **Cache** : 60s côté edge, 3600s pour les listings de taxonomie - **Rate limit** : 60 requêtes/minute par IP (burst 120) - **Erreurs** : HTTP standard, body `{"detail": "..."}`
Endpoints de base pour chercher un produit, parcourir les marques et les catégories.
Recherche plein texte sur les variantes. Retourne jusqu'à 24 fiches par page avec prix observé et identifiants.
Voir la source officielleRecherche au niveau produit maître. Un maître regroupe toutes les variantes d'un même produit (plusieurs sources, plusieurs formats).
Voir la source officielleDétail d'une variante par slug, UUID ou GTIN.
Voir la source officielleDétail d'un produit maître avec toutes ses variantes liées.
Voir la source officielleSuggestions à la saisie. Renvoie produits, marques et GTIN valides. Debounce recommandé côté client (180 ms).
Voir la source officielleTableau côte à côte de 2 à 4 produits (mêmes champs que /products/{key}).
Voir la source officielleAnnuaires et listes de taxonomie.
Répertoire paginé des marques. Tri alphabétique ou par nombre de produits. Cache 24h.
Voir la source officiellePage d'une marque avec ses produits, son propriétaire, ses sources.
Voir la source officielleListe des produits d'une catégorie (ex: health.drug, health.natural).
Voir la source officielleCompteurs par catégorie, source et marque. Utile pour les filtres d'UI.
Voir la source officielleEndpoints de transparence pour les auditeurs, journalistes et autorités.
Manifeste public du jeu de données (compteurs globaux, licences, sources actives).
Voir la source officielleÉtat de synchronisation des sources (DPD, LNHPD). Date de dernière ingestion par source.
Voir la source officielleSignaux récents : nouveaux produits, top marques, sources actives.
Voir la source officiellePolitique d'ingestion par source : URL du flux, licence, juridiction, dernière vérification.
Voir la source officielleEndpoints pour intégrer le registre dans d'autres applications (flux RSS, sitemap, Open Data).
Flux RSS 2.0 des notes de version (mêmes items que /changelog sur le site).
Voir la source officielleSitemap XML du registre (produits, marques, catégories, sources). Cache 1h.
Voir la source officielleFlux RSS 2.0 des nouveaux produits d'une marque spécifique.
Voir la source officielleFlux RSS 2.0 des nouveaux produits d'une catégorie spécifique.
Voir la source officielle- **Endpoints publics** : 60 requêtes/minute par IP (burst 120) - **Endpoints taxonomy** (`/facets`, `/sitemap`) : 30 requêtes/minute - **Pas d'authentification** sur les endpoints publics. Pour un SLA et un quota étendu, contactez /contact?intent=api. - **CORS** : tous les endpoints publics exposent `Access-Control-Allow-Origin: *`.
SLA contractuel, quota étendu, support prioritaire, webhooks (alertes rappels Santé Canada, ingestion d'événements). Demandez un devis.
Demander un devisWebhooks
Pour commencer, envoyez un POST à /v1/sannmerk/webhooks avec le body JSON suivant : ``` { "site_id": "<uuid du site>", "target_url": "https://example.com/webhooks/sannmerk", "event_types": ["product.recall", "product.updated"] } ``` La réponse contient un secret (à conserver en lieu sûr) qui sert à signer les livraisons. Si event_types est vide, la souscription reçoit tous les événements.
Choisissez ceux qui vous intéressent à l'inscription.
Un nouveau produit a été ajouté au registre. Utilisez ce hook pour synchroniser un cache local.
Un produit existant a été mis à jour (nouvelle observation, prix, identifiant). Idéal pour les tableaux de bord.
Un produit a été marqué avec un rappel ou un avis de sécurité. À traiter avec une priorité élevée.
Une nouvelle marque est apparue dans le registre. Utile pour les workflows d'onboarding.
Une source (DPD, LNHPD, etc.) a terminé un cycle de synchronisation. Bon pour les audits.
Chaque livraison inclut un header `X-Sannmerk-Signature` au format `sha256=<hex>`. Pour vérifier : ``` mac = HMAC-SHA256(secret, raw_body) attendu = "sha256=" + mac.hexdigest() ``` Rejetez toute livraison dont la signature ne correspond pas. Le secret doit être traité comme un mot de passe : ne le stockez jamais en clair, ne l'embarquez pas dans le code, ne le transmettez pas en clair.
Les livraisons sont best-effort fire-and-forget. Le runtime POSTe l'événement, attend une réponse 2xx dans les 5 secondes, et journalise le code retour. Pas de file de retry dans cette version minimale — la fiabilité de bout en bout reste à la charge du consommateur (votre endpoint doit répondre vite et de manière idempotente). Un audit des dernières livraisons est disponible via `GET /v1/sannmerk/webhooks?site_id=...`.
Tous les webhooks sont documentés dans l'API publique.