CRUD da Products API

Gerencie produtos através do Core API em https://api.licensechain.app/v1 com os mesmos campos que você pode editar no Dashboard (produtos do vendedor), incluindo URLs de política, opções de parceiros de pagamento terceirizados e (em níveis compatíveis) configurações de entrega.

Enviar Authorization: Bearer … com uma chave de usuário JWT ou uma chave de aplicativo API. Exemplos de copiar e colar em vários idiomas: API exemplos (multilíngue).

Pontos finais

  • GET /v1/products — liste seus produtos (paginação e filtros abaixo)
  • POST /v1/products — criar (obrigatório: name, price; campos opcionais como no exemplo)
  • GET /v1/products/{id} — leia um
  • PUT /v1/products/{id} — substituição completa das chaves fornecidas (mesma validação do PATCH)
  • PATCH /v1/products/{id} — atualização parcial; chaves omitidas permanecem inalteradas
  • DELETE /v1/products/{id} — excluir quando nenhuma licença ou assinatura fizer referência ao produto

Listar parâmetros de consulta

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

limit (padrão 20, máximo 100), offset, opcional active (true/false), search (substring sem distinção entre maiúsculas e minúsculas no nome do produto), sortBy (createdAt | name | price), sortDir (asc | desc).

Criar produto (exemplo de corpo)

Campos somente Enterprise (hideEmail, autoRedirect, licenseEmails, sendLicenseToCustomer) retornam 403 se sua conta não estiver em Enterprise. O faturamento recorrente requer stripePriceIdRecurring. Desativar cryptoPaymentsEnabled requer Business ou Enterprise. OpenAPI no repositório API lista todos os campos e restrições.

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

Atualizar produto

Use PATCH para atualizações parciais ou PUT com os campos que deseja alterar. URLs de redirecionamento devem ser http ou https e no máximo 2.000 caracteres.

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

Excluir produto

DELETE /v1/products/{id}

Retorna 409 quando licenças ou assinaturas de clientes ainda estão vinculadas ao produto.

Forma de resposta

callbackSecret é emitido para novos produtos e pode ser alternado ao ativar fluxos de ocultação de e-mail; trate-o como um segredo para assinatura de webhook (consulte o guia de webhook de pagamento). userId pode ser null em algumas linhas internas ou legadas; os clientes devem tolerar a falta de um ID de proprietário.

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