Pular para o conteúdo

Produtos

Base: https://api.nivesistemas.com.br · 46 endpoints

Listar produtos

Query params

Campo Tipo Obrigatório Descrição
q string não Busca por descrição
active boolean não true = só ativos; false = só inativos; omitido = todos
productType string não MERCHANDISE | SERVICE
needsCreditPrice boolean não true = só mercadorias com priceCredit <= 0
page integer não Página (padrão 1)
take integer não Itens por página (1–100, padrão 100)

Resposta: Inclui inactiveCount, missingCreditCount e summary { productCount, variantCount, stockQty } do escopo active/productType (summary independente de busca/página/needsCreditPrice)

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Verificar se já existe produto com a mesma descrição (ignora maiúsculas e acentos)

Query params

Campo Tipo Obrigatório Descrição
description string sim Descrição a comparar
excludeId uuid não ID do produto em edição (não conta como duplicata)

Resposta: { exists: boolean, match?: { id, description } }

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/description-match" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Detalhe do produto com variantes

Parâmetros de rota: id

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/{id}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Criar produto

Corpo (JSON)

Campo Tipo Obrigatório Descrição
description string sim Descrição
priceCash number sim Preço à vista
priceCredit number sim Preço a prazo
productType string não MERCHANDISE | SERVICE (padrão MERCHANDISE)
isComposite boolean não Produto kit/composto
components array não Componentes do kit: [{ componentVariantId, quantity, parentVariantId? }]
expectedComponentCount integer não Peças esperadas no kit
costPrice number não Custo fiscal — NF de entrada (opcional)
netWeightKg number | null não NF-e industrial: peso líquido por unidade de venda (kg). Também aceitos: packagingTareKg, volumeSpecies, tribUnit, tribUnitFactor, ipiUnitValue, ipiBaseMode, ipiInStBase, pisUnitValue, cofinsUnitValue. null limpa; omitido não altera. As variantes aceitam netWeightKg, packagingTareKg e tribUnitFactor próprios.
managerialCost number não Custo gerencial — precificação e relatórios (opcional)
profitMargin number não Margem % sobre o custo gerencial (padrão 100). Com custo informado, alterar a margem recalcula o preço e vice-versa; o custo não muda.
categoryId uuid não ID da categoria
brandId uuid não ID da marca
active boolean não Ativo (padrão true)
availableForDelivery boolean não Disponível no catálogo online
catalogDescription string não Descrição amigável no catálogo (vazio usa description)
isFavorite boolean não Favorito no PDV
stockQty integer não Estoque (produto sem grade)
gtin string não Código de barras do produto sem grade (opcional; vazio gera automático)
ncm string não NCM 8 dígitos
cest string não CEST
issServiceCode string não cTribNac / LC 116 (serviço NFS-e)
nbsCode string não Código NBS (serviço)
issRate number não Alíquota ISS %
issRetained boolean não ISS retido
variants array não Grades: label, division, subdivision, stockQty, gtin

Resposta: 201 Created

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"description":"","priceCash":0,"priceCredit":0,"productType":"","isComposite":true,"components":[],"expectedComponentCount":1,"costPrice":0,"netWeightKg":null,"managerialCost":0,"profitMargin":0,"categoryId":"00000000-0000-0000-0000-000000000000","brandId":"00000000-0000-0000-0000-000000000000","active":true,"availableForDelivery":true,"catalogDescription":"","isFavorite":true,"stockQty":1,"gtin":"","ncm":"","cest":"","issServiceCode":"","nbsCode":"","issRate":0,"issRetained":true,"variants":[]}'

Atualizar produto

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
description string não Descrição
priceCash number não Preço à vista. Com custo informado, altera a margem; o custo não muda.
priceCredit number não Preço a prazo
productType string não MERCHANDISE | SERVICE
isComposite boolean não Produto kit/composto
categoryId uuid não ID da categoria
brandId uuid não ID da marca
active boolean não Ativo
availableForDelivery boolean não Disponível no catálogo online
catalogDescription string não Descrição amigável no catálogo (vazio usa description)
isFavorite boolean não Favorito no PDV
gtin string não Código de barras do produto sem grade
ncm string não NCM
issServiceCode string não Código de serviço NFS-e
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/{id}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"description":"","priceCash":0,"priceCredit":0,"productType":"","isComposite":true,"categoryId":"00000000-0000-0000-0000-000000000000","brandId":"00000000-0000-0000-0000-000000000000","active":true,"availableForDelivery":true,"catalogDescription":"","isFavorite":true,"gtin":"","ncm":"","issServiceCode":""}'

Excluir produto

Parâmetros de rota: id

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/{id}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Adicionar variante (grade)

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
label string não Rótulo da grade
division string não Divisão (ex.: P, M)
subdivision string não Subdivisão (ex.: Azul)
stockQty integer sim Quantidade em estoque
gtin string não Código de barras (opcional)
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/variants" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"label":"","division":"","subdivision":"","stockQty":1,"gtin":""}'

Adicionar variantes em lote

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
variants array sim Lista de variantes
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/variants/bulk" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"variants":[]}'

Atualizar variante

Parâmetros de rota: id, variantId

Corpo (JSON)

Campo Tipo Obrigatório Descrição
label string não Rótulo
stockQty integer não Estoque
gtin string não GTIN
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"label":"","stockQty":1,"gtin":""}'

Excluir variante

Parâmetros de rota: id, variantId

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Ativar/inativar em lote

Corpo (JSON)

Campo Tipo Obrigatório Descrição
ids uuid[] sim IDs dos produtos
active boolean sim Novo status
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/bulk/active" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"ids":null,"active":true}'

Alterar categoria em lote

Corpo (JSON)

Campo Tipo Obrigatório Descrição
ids uuid[] sim IDs dos produtos
categoryId uuid não Nova categoria (null para limpar)
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/bulk/category" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"ids":null,"categoryId":"00000000-0000-0000-0000-000000000000"}'

Alterar preços em lote (%)

Corpo (JSON)

Campo Tipo Obrigatório Descrição
ids uuid[] sim IDs dos produtos
percent number sim Percentual (-99 a 1000)
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/bulk/price" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"ids":null,"percent":0}'

Definir preços absolutos em lote (à vista / a prazo)

Corpo (JSON)

Campo Tipo Obrigatório Descrição
items array sim [{ id, priceCash, priceCredit? }] (máx. 500)
Janela do terminal
curl -X PATCH "https://api.nivesistemas.com.br/products/bulk/prices" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"items":[]}'

Mesclar variantes em um produto com grade

Corpo (JSON)

Campo Tipo Obrigatório Descrição
description string sim Descrição do produto resultante
divisionName string sim Nome do eixo divisão
subdivisionName string sim Nome do eixo subdivisão
variants array sim [{ variantId, division?, subdivision? }] (mín. 2)
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/bulk/merge-variants" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"description":"","divisionName":"","subdivisionName":"","variants":[]}'

Produtos sem categoria e/ou sem marca

Query params

Campo Tipo Obrigatório Descrição
page integer não Página (padrão 1)
pageSize integer não Itens por página (máx. 100)
filter string não no-category | no-brand | any
search string não Descrição ou código interno
includeInactive boolean não Inclui produtos inativos
Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/classification/pending" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Sugerir categoria/marca em lote (IA)

Corpo (JSON)

Campo Tipo Obrigatório Descrição
productIds uuid[] sim IDs dos produtos (máx. 60)
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/classification/suggest" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"productIds":null}'

Aplicar classificações confirmadas

Corpo (JSON)

Campo Tipo Obrigatório Descrição
items array sim [{ productId, categoryId?, newCategoryName?, brandId?, newBrandName? }] (máx. 100)

Resposta: Só preenche campo vazio; item com categoria/marca já definida volta em skipped

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/classification/apply" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"items":[]}'

Kits/compostos incompletos (faltam componentes)

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/composites/incomplete" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Sugestões para completar kits incompletos

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/composites/incomplete/suggest" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Produtos pai que usam a variante como componente

Parâmetros de rota: variantId

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/by-component/{variantId}/parents" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Adicionar componente ao kit

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
componentVariantId uuid sim Variante componente
quantity number sim Quantidade no kit
parentVariantId uuid não Variante pai (grade do kit), quando aplicável
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/components" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"componentVariantId":"00000000-0000-0000-0000-000000000000","quantity":0,"parentVariantId":"00000000-0000-0000-0000-000000000000"}'

Marcar composição do kit como pronta para venda

Parâmetros de rota: id

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/composition/mark-ready" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Listar jobs de inativação de produtos sem estoque

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Enfileirar inativação de todos os produtos ativos sem estoque

Resposta: 202 Accepted

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

DELETE /products/inactivate-out-of-stock-jobs/:jobId

Seção intitulada “DELETE /products/inactivate-out-of-stock-jobs/:jobId”

Cancelar job de inativação de produtos sem estoque

Parâmetros de rota: jobId

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs/{jobId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Listar jobs de correção de nomes de produtos

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/name-format-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Enfileirar correção dos nomes de produtos já cadastrados

Resposta: 202 Accepted

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/name-format-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Cancelar job de correção de nomes de produtos

Parâmetros de rota: jobId

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/name-format-jobs/{jobId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Listar jobs de otimização de fotos e quantas fotos ainda não foram otimizadas

Resposta: { jobs, pendingImages }

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/image-optimize-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Enfileirar a otimização das fotos de produto enviadas antes da otimização no upload

Resposta: 202 Accepted

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/image-optimize-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Cancelar job de otimização de fotos

Parâmetros de rota: jobId

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/image-optimize-jobs/{jobId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Listar reajustes de preços em massa (últimos 30)

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/price-adjust-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Prévia de um reajuste de preços em massa: produtos alcançados e amostra antes/depois

Corpo (JSON)

Campo Tipo Obrigatório Descrição
operation string sim PERCENT, AMOUNT, MARGIN_ON_COST, CREDIT_FROM_CASH ou ROUND
target string não CASH, CREDIT ou BOTH (padrão BOTH)
value number não % ou R$ conforme a operação (negativo reduz)
rounding string não NONE, INTEGER, END_90 ou END_99
categoryId string não Limita a uma categoria
brandId string não Limita a uma marca
includeInactive boolean não Inclui produtos inativos

Resposta: { matched, willUpdate, skipped, samples }

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/price-adjust-jobs/preview" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"operation":"","target":"","value":0,"rounding":"","categoryId":"","brandId":"","includeInactive":true}'

Enfileirar um reajuste de preços em massa (mesmo corpo da prévia)

Resposta: 202 Accepted

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/price-adjust-jobs" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Enfileirar a reversão de um reajuste (restaura o preço anterior de cada produto)

Parâmetros de rota: jobId

Resposta: 202 Accepted

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}/revert" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Cancelar reajuste de preços pendente ou em processamento

Parâmetros de rota: jobId

Resposta: 204 No Content

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Enviar imagem do produto (até 15 MB; gravada otimizada: até 1600 px, JPEG/PNG, com miniatura de 400 px em thumbnailUrl)

Parâmetros de rota: id

Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/image" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Remover imagem do produto

Parâmetros de rota: id

Janela do terminal
curl -X DELETE "https://api.nivesistemas.com.br/products/{id}/image" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Obter histórico de vendas

Parâmetros de rota: id

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/{id}/sales-history" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Obter última nota de entrada por grade

Parâmetros de rota: id

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/{id}/last-entries" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Listar códigos de compra do produto (fardo, código do fornecedor)

Parâmetros de rota: id

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/{id}/purchase-codes" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Gravar os códigos de compra do produto

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
codes array sim [{ id?, variantId?, kind: GTIN | SUPPLIER_CODE, code, supplierId (só SUPPLIER_CODE), label, factor, xmlUnit }]

Resposta: Substitui a lista inteira. Na importação da NF-e o item casa por esses códigos e a quantidade é multiplicada pelo fator (1 FARDO = 12 un)

Janela do terminal
curl -X PUT "https://api.nivesistemas.com.br/products/{id}/purchase-codes" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"codes":[]}'

GET /products/:id/variants/:variantId/stock-movements

Seção intitulada “GET /products/:id/variants/:variantId/stock-movements”

Obter movimentações de estoque

Parâmetros de rota: id, variantId

Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}/stock-movements" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Conjuntos existentes (inclusive prontos) que podem receber novas grades

Query params

Campo Tipo Obrigatório Descrição
q string sim Busca
componentVariantIds string[] não Variantes componentes
Janela do terminal
curl -X GET "https://api.nivesistemas.com.br/products/composites/match" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo"

Adicionar grades a um conjunto

Parâmetros de rota: id

Corpo (JSON)

Campo Tipo Obrigatório Descrição
grades array sim Grades: [{ label, division, subdivision, … }]
expectedComponentCount integer não Quantidade de componentes esperada
Janela do terminal
curl -X POST "https://api.nivesistemas.com.br/products/{id}/composites/grades" \
-H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \
-H "X-Store-Slug: loja-demo" \
-H "Content-Type: application/json" \
-d '{"grades":[],"expectedComponentCount":1}'