API du passeport numérique de produit : documentation pour développeurs
Avec l’API client, vos propres systèmes créent des produits, tiennent à jour des champs de données, publient des passeports et téléchargent des codes QR et des PDF. Vous vous authentifiez avec une clé d’API que vous générez vous-même dans la plateforme. La description complète est disponible sous forme de fichier OpenAPI 3.1.
Mis à jour: 1er octobre 2026
Aperçu
L’API client est une interface REST qui utilise JSON. Elle travaille sur les données de votre mandant, c’est-à-dire les mêmes produits et passeports que ceux de l’application web. Les usages typiques sont le raccordement d’un système ERP ou PLM, une synchronisation nocturne des données de base ou un script qui récupère des codes QR à imprimer.
L’URL de base est https://dpp.com2u.selfhost.eu/api/v1/integration. Toutes les réponses sont en JSON, sauf les téléchargements de codes QR et de PDF.
Télécharger la spécification
La référence lisible par machine de tous les endpoints, champs, exemples et réponses d’erreur est une spécification OpenAPI 3.1 avec le schéma de sécurité ApiKeyAuth :
L’API elle-même fournit le même fichier à GET /api/v1/integration/openapi.json, sans clé. Importez-le dans Swagger UI, Postman ou le générateur de code de votre choix. Les descriptions à l’intérieur du fichier sont rédigées en allemand.
Démarrage rapide
- Inscrivez-vous ou connectez-vous. L’API fait partie des offres payantes, voir Tarifs.
- Ouvrez l’espace Mandant dans la plateforme et générez la clé d’API. Copiez-la immédiatement, car elle n’est affichée qu’une seule fois.
- Testez la connexion :
curl -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/me
La réponse indique votre mandant, les scopes de la clé, votre offre et votre consommation d’appels d’API.
Authentification
Envoyez la clé à chaque appel dans l’en-tête X-API-Key. Authorization: Bearer dpp_key_… fonctionne de la même manière. Le mandant est toujours déduit de la clé ; un ID de mandant transmis comme paramètre est ignoré. L’API n’accepte pas les jetons de session de l’application web.
La clé appartient à la personne qui l’a générée. Les actions s’exécutent avec les droits de cette personne en tant que propriétaire ou administrateur. Si la personne perd ce rôle, l’API répond par 403 jusqu’à la génération d’une nouvelle clé. Générer une nouvelle clé révoque immédiatement la précédente. La plateforme ne stocke qu’un hachage SHA-256 de la clé.
Endpoints
Tous les chemins se trouvent sous /api/v1/integration. Chaque endpoint exige un scope ; une nouvelle clé porte les quatre.
| Méthode et chemin | Objet | Scope |
|---|---|---|
GET /me | Mandant, scopes, offre, consommation | toute clé |
GET /schemas | Schémas avec champs de données | products:read |
POST /products | Créer un produit, éventuellement avec des champs de données | products:write |
GET /products | Lister les produits (status, q, limit, offset) | products:read |
GET /products/{id} | Lire un produit | products:read |
GET /products/{id}/fields | Lire les champs de données actuels | products:read |
PATCH /products/{id}/fields | Renseigner des champs de données | products:write |
POST /products/{id}/passports | Créer et publier un passeport | passports:write |
GET /products/{id}/passports | Lister les versions du passeport | passports:read |
POST /passports/{id}/publish | Publier une version brouillon | passports:write |
GET /products/{id}/passport/qr | Code QR en PNG ou SVG | passports:read |
GET /products/{id}/passport/pdf | Passeport en PDF | passports:read |
Créer un produit
name est obligatoire. Sans schema_key, le schéma par défaut de votre mandant s’applique ; GET /schemas renvoie les clés disponibles. Vous pouvez transmettre directement les champs de données. field_status définit le statut des valeurs, et seules les valeurs approved alimentent un passeport.
curl -X POST https://dpp.com2u.selfhost.eu/api/v1/integration/products \
-H "X-API-Key: $DPP_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Battery module X1","category":"Industrial batteries",
"manufacturer_ref":"ART-4711","schema_key":"battery-v1",
"fields":{"battery_chemistry":"LFP"},"field_status":"approved"}'
La réponse avec le statut 201 contient l’id du produit. C’est aussi l’identifiant unique de produit encodé dans le code QR. Le quota de produits de votre offre s’applique comme dans l’application web.
Publier un passeport, télécharger le code QR et le PDF
Un passeport fige les champs de données validés sous forme de nouvelle version. Si des champs obligatoires manquent, l’API répond par 422 et les énumère dans missing_fields.
curl -X POST -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passports
curl -o qr.png -H "X-API-Key: $DPP_API_KEY" \
"https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passport/qr?format=png&size=600"
curl -o passport.pdf -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passport/pdf
Pour un code QR vectoriel, utilisez format=svg. Le PDF n’existe qu’après la publication ; avant, l’API répond par 404. Le code QR renvoie vers la page publique du passeport, voir Créer un passeport numérique de produit depuis Excel pour en savoir plus.
Codes d’erreur
| Statut | Signification |
|---|---|
| 401 | Clé absente, invalide, révoquée ou expirée |
| 402 | Quota épuisé : appels d’API, produits ou passeports |
| 403 | Scope manquant, offre sans API, créateur de la clé n’étant plus propriétaire ni administrateur, mandant bloqué |
| 404 | Objet introuvable ou appartenant à un autre mandant |
| 422 | Saisie invalide, champ inconnu ou champs obligatoires manquants |
Pour 401 et 403, detail contient un objet avec code et message, par exemple insufficient_scope ou api_not_in_plan. Pour 402, detail indique la ressource, la limite et la consommation à ce jour.
Limites
Via l’API, vous renseignez des champs de données au niveau du produit. Les champs de lots ou d’unités individuelles se gèrent dans l’application web. Il n’y a pas de limite de débit, mais un quota d’appels par offre ; chaque appel authentifié compte. La récupération de la spécification ne compte pas. Les offres et quotas actuels figurent sur la page Tarifs. Pour un import en masse sans l’API, utilisez le modèle de données.
Questions fréquentes
- Où obtenir une clé d’API ?
Dans la plateforme, dans l’espace Mandant. Les propriétaires et administrateurs y génèrent la clé. Elle n’est affichée qu’une seule fois, et chaque mandant dispose d’une seule clé.
- Quelles offres incluent l’API ?
Starter, Professional et Enterprise, pas l’offre d’essai gratuite. Chaque passeport du quota de votre offre inclut 10 appels d’API. Les valeurs actuelles figurent sur la page des tarifs.
- Existe-t-il une limite de débit ?
Il n’y a pas de limite de débit distincte (HTTP 429). L’utilisation est limitée par le quota d’appels de votre offre. Lorsqu’il est épuisé, l’API répond par 402.
- Puis-je charger la spécification dans Swagger UI ou Postman ?
Oui. Le fichier OpenAPI 3.1 est disponible en JSON et en YAML et peut être importé dans les outils et générateurs de code courants.
Commencez avec vos données produit
Essayez gratuitement pendant 30 jours : importez les données, contrôlez-les et publiez-les sous forme de passeport de produit.