CRUD Products API
Gérez les produits via le Core API à https://api.licensechain.app/v1 avec les mêmes champs que vous pouvez modifier dans le Dashboard (produits du vendeur), y compris les URL de stratégie, les options de partenaires de paiement tiers et (sur les niveaux pris en charge) les paramètres de livraison.
Envoyer Authorization: Bearer … avec une clé utilisateur JWT ou une application API. Exemples de copier-coller dans de nombreuses langues : Exemples API (multi-langues).
Points de terminaison
GET /v1/products— listez vos produits (pagination et filtres ci-dessous)POST /v1/products— créer (obligatoire :name,price; champs optionnels comme dans l'exemple)GET /v1/products/{id}— en lire unPUT /v1/products/{id}— remplacement complet des clés fournies (même validation que PATCH)PATCH /v1/products/{id}— mise à jour partielle ; les clés omises restent inchangéesDELETE /v1/products/{id}— supprimer lorsqu'aucune licence ou abonnement ne fait référence au produit
Liste des paramètres de requête
GET /v1/products?limit=20&offset=0&active=true&search=pro&sortBy=createdAt&sortDir=desc
limit (par défaut 20, max 100), offset, facultatif active (true/false), search (sous-chaîne insensible à la casse sur le nom du produit), sortBy (createdAt | name | price), sortDir (asc | desc).
Créer un produit (exemple de corps)
Les champs Enterprise uniquement (hideEmail, autoRedirect, licenseEmails, sendLicenseToCustomer) renvoient 403 si votre compte n'est pas sur Enterprise. La facturation récurrente nécessite stripePriceIdRecurring. La désactivation de cryptoPaymentsEnabled nécessite Business ou Enterprise. OpenAPI dans le dépôt API répertorie tous les champs et contraintes.
{
"name": "Pro Monthly",
"description": "Recurring access to premium feature set",
"price": 49.99,
"currency": "USD",
"active": true,
"successUrl": "https://merchant.example.com/pay/success",
"cancelUrl": "https://merchant.example.com/pay/cancel",
"helpUrl": "https://merchant.example.com/help",
"supportUrl": "https://merchant.example.com/support",
"termsUrl": "https://merchant.example.com/terms",
"privacyUrl": "https://merchant.example.com/privacy",
"refundUrl": "https://merchant.example.com/refund",
"productType": "subscription",
"billingType": "recurring",
"interval": "month",
"stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
"stripeTaxEnabled": true,
"stripeIdentityRequired": false,
"cryptoPaymentsEnabled": true,
"hideEmail": false,
"autoRedirect": false
} Mettre à jour le produit
Utilisez PATCH pour les mises à jour partielles ou PUT avec les champs que vous souhaitez modifier. Les URL de redirection doivent être http ou https et comporter au maximum 2 000 caractères.
PATCH /v1/products/{id}
{
"name": "Pro Monthly Updated",
"price": 59.99,
"active": true,
"stripeTaxEnabled": true
} Supprimer le produit
DELETE /v1/products/{id}
Renvoie 409 lorsque les licences ou les abonnements clients sont toujours liés au produit.
Forme de réponse
callbackSecret est émis pour les nouveaux produits et peut être alterné lors de l'activation des flux de masquage d'e-mails ; traitez-le comme un secret pour la signature du webhook (voir le guide du webhook de paiement). userId peut être null dans certaines lignes internes ou héritées ; les clients doivent tolérer un identifiant de propriétaire manquant.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "user_123",
"name": "Pro Monthly",
"description": "Recurring access to premium feature set",
"price": 49.99,
"currency": "USD",
"active": true,
"successUrl": "https://merchant.example.com/pay/success",
"cancelUrl": "https://merchant.example.com/pay/cancel",
"helpUrl": "https://merchant.example.com/help",
"supportUrl": "https://merchant.example.com/support",
"termsUrl": "https://merchant.example.com/terms",
"privacyUrl": "https://merchant.example.com/privacy",
"refundUrl": "https://merchant.example.com/refund",
"productType": "subscription",
"billingType": "recurring",
"interval": "month",
"stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
"stripeTaxEnabled": true,
"stripeIdentityRequired": false,
"cryptoPaymentsEnabled": true,
"hideEmail": false,
"autoRedirect": false,
"licenseEmails": [
"licenses-a@merchant.example.com",
"licenses-b@merchant.example.com"
],
"sendLicenseToCustomer": true,
"callbackSecret": "base64url_or_base64_secret_from_product_record",
"createdAt": "2026-05-11T07:00:00.000Z",
"updatedAt": "2026-05-11T07:00:00.000Z"
}