Intégrez les passeports produits numériques dans votre ERP/PIM via notre API REST. Documentation complète, webhooks, exemples de code.
L'API REST de Prova permet de gérer les passeports produits depuis un ERP, un PIM ou tout système interne : endpoints simples pour créer et mettre à jour les produits et lire les passeports, webhooks pour recevoir des notifications instantanées à chaque événement, et documentation complète avec exemples de code. La sécurité repose sur des clés API hachées, des webhooks signés (HMAC), une limite de requêtes et un journal de chaque appel.
Les données des passeports sont servies en JSON-LD, un format ouvert lisible par les logiciels. L'API est disponible avec les offres Collection et Maison.
API REST V1.0
Intégrez les DPP
en quelques lignes
Reliez Prova à vos outils (ERP, PLM, boutique en ligne, CRM) par l’API REST. Disponible avec les offres Collection et Maison.
Demander un accès à l’API
Endpoints simples et intuitifs pour gérer vos passeports produits en quelques lignes de code.
Recevez des notifications instantanées pour chaque événement sur vos produits et passeports.
Clés API hachées (SHA-256), webhooks signés (HMAC), limite de requêtes et journal de chaque appel.
Suivez l'utilisation de votre API en temps réel avec des graphiques détaillés.
EXEMPLE INTERACTIF
Copiez, collez et adaptez ces exemples dans votre application.
cURL
JavaScript
Python
// Récupérer tous vos produits
const response = await fetch(
'https://vaatovcufnwzrozxfnwy.supabase.co/functions/v1/passports-api/v1/products',
headers: {
'Authorization': 'Bearer ect_xxxxxxxx_xxxxx',
'Content-Type': 'application/json'
const { data: products } = await response.json();
products.forEach(product => {
console.log(`${product.name} (${product.sku})`);
});
Produits, passeports et matériaux, en lecture et en écriture selon les droits de la clé.
GET
/v1/me
Tester la clé, voir l’organisation
/v1/products
Lister les produits
/v1/products/:id
Détail d’un produit
POST
Créer un produit
PATCH
Modifier un produit
DELETE
Supprimer un produit
/v1/passports
Lister les passeports
/v1/passports/:id
Détail d’un passeport
/v1/materials?product_id=…
Matériaux d’un produit
ENDPOINT PUBLIC
Sans authentification
Dans la logique de l'ESPR, chaque passeport expose un endpoint public pour les systèmes IT. Les données sont structurées au format JSON-LD avec les contextes Schema.org et DPP européen.
/passport-jsonld?id={product_id}
JSON-LD public (GS1 Digital Link)
Content-Negotiation :
Navigateur → page HTML ; système IT → données JSON-LD structurées, via notre résolveur id.useprova.eu.
WEBHOOKS
Recevez une notification quand une fiche produit est créée ou modifiée, publication comprise, depuis l’application ou l’API. Chaque envoi est signé (HMAC-SHA256).
Chaque envoi (et le bouton « Tester ») porte deux en-têtes : X-Webhook-Timestamp, l’heure de signature en secondes Unix, et X-Webhook-Signature, « sha256= » suivi du HMAC-SHA256, avec le secret du webhook, du texte « horodatage.corps brut ». Recalculez-le, comparez en temps constant et refusez un horodatage de plus de cinq minutes : une requête interceptée ne peut pas être rejouée.
import crypto from 'node:crypto';
// rawBody : le corps reçu, tel quel (avant JSON.parse)
function verify(rawBody, headers, secret) {
const ts = Number(headers['x-webhook-timestamp']);
if (!Number.isInteger(ts) || Math.abs(Date.now() / 1000 - ts) > 300) return false;
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(`${ts}.${rawBody}`)
.digest('hex');
const given = headers['x-webhook-signature'] ?? '';
return given.length === expected.length
&& crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected));
Webhook Payload
"event_type": "product.updated",
"timestamp": "2026-10-05T10:30:00.000Z",
"organization_id": "7c1e2a90-…",
"resource_id": "5f284d8e-…",
"payload": {
"id": "5f284d8e-…",
"name": "T-shirt coton et lin",
"sku": "TSH-LIN-001",
"gtin": "03612345678904",
"is_active": true,
"access_level": "public",
"updated_at": "2026-10-05T10:29:58.000Z"
Demandez votre accès : nous en parlons lors d’une démo de 30 min.
Réserver une démo