Skip to content
API · Inventario

Inventario y carga masiva de licencias

Consulte el stock disponible y cargue licencias/códigos en lotes.

Resumen de stock

GET /api/v1/external/inventory/stock · scope inventory:read

Devuelve el stock disponible por variación. Filtros opcionales por producto.

Query parameters

ParamTipoDescripción
productIdUUIDFiltra solo variaciones de ese producto. Opcional.

Request

curl "https://api.nuvlyx.com/api/v1/external/inventory/stock?productId=0f1c…" \
  -H "Authorization: Bearer nvl_live_TU_TOKEN"

Response 200

[
  {
    "variationId": "abc12345-…",
    "sku": "SUB-1M",
    "productId": "0f1c…",
    "productName": "Suscripción digital 1 mes",
    "productStatus": "ACTIVE",
    "availableStock": 42,
    "dependsOnStock": true
  }
]

Cargar licencias en lote

POST /api/v1/external/inventory/licenses · scope inventory:write

Equivalente al upload de .txt en el admin: envíe un arreglo de credenciales (una entrada por unidad de stock). Las credenciales se cifran en reposo con AES-256-GCM antes de persistirse.

Body

CampoTipoDescripción
variationIdUUIDVariación destino. Obligatorio.
credentialsstring[]Arreglo de credenciales (1 a 2000). Una línea por unidad. Obligatorio.
expiresAtISO 8601Fecha de expiración para TODAS las licencias del lote. Opcional.

Request

curl -X POST https://api.nuvlyx.com/api/v1/external/inventory/licenses \
  -H "Authorization: Bearer nvl_live_TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "variationId": "abc12345-…",
    "credentials": [
      "user1@correo.com|password1",
      "user2@correo.com|password2",
      "user3@correo.com|password3"
    ],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

Response 201

{
  "inserted": 3,
  "skippedDuplicates": 0,
  "skippedInvalid": 0,
  "errors": []
}

Reglas y límites

  • Hasta 2000 credenciales por petición. Para volúmenes mayores haga varios POST.
  • Deduplicación: si una credencial ya existe en la variación, se omite (no se duplica) y se cuenta en skippedDuplicates.
  • Plan limit: si su plan tiene un máximo de licencias por importación, el server lo enforce (puede devolver 400).
  • Cifrado: las credenciales nunca quedan en logs ni se devuelven en ningún endpoint de lectura — solo cuando se entregan al cliente en una orden completada.