CRUD de Products API

Administre productos a través del Core API en https://api.licensechain.app/v1 con los mismos campos que puedes editar en el Dashboard (productos del vendedor), incluidas las URL de las políticas, las opciones de socios de pago externos y (en los niveles admitidos) la configuración de entrega.

Enviar Authorization: Bearer … con una tecla de usuario JWT o una aplicación API. Ejemplos de copiar y pegar en muchos idiomas: API ejemplos (varios idiomas).

Puntos finales

  • GET /v1/products — enumere sus productos (paginación y filtros a continuación)
  • POST /v1/products — crear (requerido: name, price; campos opcionales como en el ejemplo)
  • GET /v1/products/{id} — leer uno
  • PUT /v1/products/{id} — reemplazo completo de las claves proporcionadas (misma validación que PATCH)
  • PATCH /v1/products/{id} — actualización parcial; las claves omitidas permanecen sin cambios
  • DELETE /v1/products/{id} — eliminar cuando no haya licencias o suscripciones que hagan referencia al producto

Listar parámetros de consulta

GET /v1/products?limit=20&offset=0&active=true&search=pro&sortBy=createdAt&sortDir=desc

limit (predeterminado 20, máximo 100), offset, opcional active (true/false), search (subcadena que no distingue entre mayúsculas y minúsculas en el nombre del producto), sortBy (createdAt | name | price), sortDir (asc | desc).

Crear producto (cuerpo de ejemplo)

Los campos solo Enterprise (hideEmail, autoRedirect, licenseEmails, sendLicenseToCustomer) devuelven 403 si su cuenta no está en Enterprise. La facturación recurrente requiere stripePriceIdRecurring. Para desactivar cryptoPaymentsEnabled se requiere Business o Enterprise. OpenAPI en el repositorio API enumera todos los campos y restricciones.

{
  "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
}

Actualizar producto

Utilice PATCH para actualizaciones parciales o PUT con los campos que desea cambiar. Las URL de redireccionamiento deben ser http o https y tener como máximo 2000 caracteres.

PATCH /v1/products/{id}
{
  "name": "Pro Monthly Updated",
  "price": 59.99,
  "active": true,
  "stripeTaxEnabled": true
}

Eliminar producto

DELETE /v1/products/{id}

Devuelve 409 cuando las licencias o suscripciones de clientes todavía están vinculadas al producto.

Forma de respuesta

callbackSecret se emite para productos nuevos y se puede rotar cuando se habilitan flujos de correo electrónico ocultos; Trátelo como un secreto para la firma de webhooks (consulte la guía de webhooks de pago). userId puede ser null en algunas filas internas o heredadas; Los clientes deben tolerar la falta de una identificación de propietario.

{
  "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"
}