Produtos
Base: https://api.nivesistemas.com.br · 46 endpoints
GET /products
Seção intitulada “GET /products”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)
curl -X GET "https://api.nivesistemas.com.br/products" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/description-match
Seção intitulada “GET /products/description-match”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 } }
curl -X GET "https://api.nivesistemas.com.br/products/description-match" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/description-match", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/description-match", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/:id
Seção intitulada “GET /products/:id”Detalhe do produto com variantes
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/products/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/{id}", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products
Seção intitulada “POST /products”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
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "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": [] }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "description": "", "priceCash": 0, "priceCredit": 0, "productType": "", "isComposite": True, "components": [], "expectedComponentCount": 1, "costPrice": 0, "netWeightKg": None, "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": [] },)print(res.json())PATCH /products/:id
Seção intitulada “PATCH /products/:id”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 |
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":""}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "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": "" }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "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": "" },)print(res.json())DELETE /products/:id
Seção intitulada “DELETE /products/:id”Excluir produto
Parâmetros de rota: id
Resposta: 204 No Content
curl -X DELETE "https://api.nivesistemas.com.br/products/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/{id}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/:id/variants
Seção intitulada “POST /products/:id/variants”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) |
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":""}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/variants", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "label": "", "division": "", "subdivision": "", "stockQty": 1, "gtin": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/variants", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "label": "", "division": "", "subdivision": "", "stockQty": 1, "gtin": "" },)print(res.json())POST /products/:id/variants/bulk
Seção intitulada “POST /products/:id/variants/bulk”Adicionar variantes em lote
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
variants |
array | sim | Lista de variantes |
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/variants/bulk", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "variants": [] }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/variants/bulk", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "variants": [] },)print(res.json())PATCH /products/:id/variants/:variantId
Seção intitulada “PATCH /products/:id/variants/:variantId”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 |
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":""}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/variants/{variantId}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "label": "", "stockQty": 1, "gtin": "" }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "label": "", "stockQty": 1, "gtin": "" },)print(res.json())DELETE /products/:id/variants/:variantId
Seção intitulada “DELETE /products/:id/variants/:variantId”Excluir variante
Parâmetros de rota: id, variantId
Resposta: 204 No Content
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/variants/{variantId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PATCH /products/bulk/active
Seção intitulada “PATCH /products/bulk/active”Ativar/inativar em lote
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ids |
uuid[] | sim | IDs dos produtos |
active |
boolean | sim | Novo status |
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}'const res = await fetch("https://api.nivesistemas.com.br/products/bulk/active", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "ids": null, "active": true }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/bulk/active", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "ids": None, "active": True },)print(res.json())PATCH /products/bulk/category
Seção intitulada “PATCH /products/bulk/category”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) |
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"}'const res = await fetch("https://api.nivesistemas.com.br/products/bulk/category", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "ids": null, "categoryId": "00000000-0000-0000-0000-000000000000" }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/bulk/category", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "ids": None, "categoryId": "00000000-0000-0000-0000-000000000000" },)print(res.json())PATCH /products/bulk/price
Seção intitulada “PATCH /products/bulk/price”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) |
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}'const res = await fetch("https://api.nivesistemas.com.br/products/bulk/price", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "ids": null, "percent": 0 }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/bulk/price", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "ids": None, "percent": 0 },)print(res.json())PATCH /products/bulk/prices
Seção intitulada “PATCH /products/bulk/prices”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) |
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products/bulk/prices", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "items": [] }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/products/bulk/prices", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "items": [] },)print(res.json())POST /products/bulk/merge-variants
Seção intitulada “POST /products/bulk/merge-variants”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) |
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products/bulk/merge-variants", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "description": "", "divisionName": "", "subdivisionName": "", "variants": [] }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/bulk/merge-variants", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "description": "", "divisionName": "", "subdivisionName": "", "variants": [] },)print(res.json())GET /products/classification/pending
Seção intitulada “GET /products/classification/pending”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 |
curl -X GET "https://api.nivesistemas.com.br/products/classification/pending" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/classification/pending", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/classification/pending", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/classification/suggest
Seção intitulada “POST /products/classification/suggest”Sugerir categoria/marca em lote (IA)
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
productIds |
uuid[] | sim | IDs dos produtos (máx. 60) |
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}'const res = await fetch("https://api.nivesistemas.com.br/products/classification/suggest", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "productIds": null }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/classification/suggest", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "productIds": None },)print(res.json())POST /products/classification/apply
Seção intitulada “POST /products/classification/apply”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
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products/classification/apply", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "items": [] }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/classification/apply", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "items": [] },)print(res.json())GET /products/composites/incomplete
Seção intitulada “GET /products/composites/incomplete”Kits/compostos incompletos (faltam componentes)
curl -X GET "https://api.nivesistemas.com.br/products/composites/incomplete" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/composites/incomplete", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/composites/incomplete", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/composites/incomplete/suggest
Seção intitulada “GET /products/composites/incomplete/suggest”Sugestões para completar kits incompletos
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"const res = await fetch("https://api.nivesistemas.com.br/products/composites/incomplete/suggest", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/composites/incomplete/suggest", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/by-component/:variantId/parents
Seção intitulada “GET /products/by-component/:variantId/parents”Produtos pai que usam a variante como componente
Parâmetros de rota: variantId
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"const res = await fetch("https://api.nivesistemas.com.br/products/by-component/{variantId}/parents", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/by-component/{variantId}/parents", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/:id/components
Seção intitulada “POST /products/:id/components”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 |
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"}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/components", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "componentVariantId": "00000000-0000-0000-0000-000000000000", "quantity": 0, "parentVariantId": "00000000-0000-0000-0000-000000000000" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/components", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "componentVariantId": "00000000-0000-0000-0000-000000000000", "quantity": 0, "parentVariantId": "00000000-0000-0000-0000-000000000000" },)print(res.json())POST /products/:id/composition/mark-ready
Seção intitulada “POST /products/:id/composition/mark-ready”Marcar composição do kit como pronta para venda
Parâmetros de rota: id
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/composition/mark-ready", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/composition/mark-ready", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/inactivate-out-of-stock-jobs
Seção intitulada “GET /products/inactivate-out-of-stock-jobs”Listar jobs de inativação de produtos sem estoque
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"const res = await fetch("https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/inactivate-out-of-stock-jobs
Seção intitulada “POST /products/inactivate-out-of-stock-jobs”Enfileirar inativação de todos os produtos ativos sem estoque
Resposta: 202 Accepted
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"const res = await fetch("https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())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
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"const res = await fetch("https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/inactivate-out-of-stock-jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/name-format-jobs
Seção intitulada “GET /products/name-format-jobs”Listar jobs de correção de nomes de produtos
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"const res = await fetch("https://api.nivesistemas.com.br/products/name-format-jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/name-format-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/name-format-jobs
Seção intitulada “POST /products/name-format-jobs”Enfileirar correção dos nomes de produtos já cadastrados
Resposta: 202 Accepted
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"const res = await fetch("https://api.nivesistemas.com.br/products/name-format-jobs", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/name-format-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /products/name-format-jobs/:jobId
Seção intitulada “DELETE /products/name-format-jobs/:jobId”Cancelar job de correção de nomes de produtos
Parâmetros de rota: jobId
Resposta: 204 No Content
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"const res = await fetch("https://api.nivesistemas.com.br/products/name-format-jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/name-format-jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/image-optimize-jobs
Seção intitulada “GET /products/image-optimize-jobs”Listar jobs de otimização de fotos e quantas fotos ainda não foram otimizadas
Resposta: { jobs, pendingImages }
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"const res = await fetch("https://api.nivesistemas.com.br/products/image-optimize-jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/image-optimize-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/image-optimize-jobs
Seção intitulada “POST /products/image-optimize-jobs”Enfileirar a otimização das fotos de produto enviadas antes da otimização no upload
Resposta: 202 Accepted
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"const res = await fetch("https://api.nivesistemas.com.br/products/image-optimize-jobs", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/image-optimize-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /products/image-optimize-jobs/:jobId
Seção intitulada “DELETE /products/image-optimize-jobs/:jobId”Cancelar job de otimização de fotos
Parâmetros de rota: jobId
Resposta: 204 No Content
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"const res = await fetch("https://api.nivesistemas.com.br/products/image-optimize-jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/image-optimize-jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/price-adjust-jobs
Seção intitulada “GET /products/price-adjust-jobs”Listar reajustes de preços em massa (últimos 30)
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"const res = await fetch("https://api.nivesistemas.com.br/products/price-adjust-jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/price-adjust-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/price-adjust-jobs/preview
Seção intitulada “POST /products/price-adjust-jobs/preview”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 }
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}'const res = await fetch("https://api.nivesistemas.com.br/products/price-adjust-jobs/preview", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "operation": "", "target": "", "value": 0, "rounding": "", "categoryId": "", "brandId": "", "includeInactive": true }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/price-adjust-jobs/preview", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "operation": "", "target": "", "value": 0, "rounding": "", "categoryId": "", "brandId": "", "includeInactive": True },)print(res.json())POST /products/price-adjust-jobs
Seção intitulada “POST /products/price-adjust-jobs”Enfileirar um reajuste de preços em massa (mesmo corpo da prévia)
Resposta: 202 Accepted
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"const res = await fetch("https://api.nivesistemas.com.br/products/price-adjust-jobs", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/price-adjust-jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/price-adjust-jobs/:jobId/revert
Seção intitulada “POST /products/price-adjust-jobs/:jobId/revert”Enfileirar a reversão de um reajuste (restaura o preço anterior de cada produto)
Parâmetros de rota: jobId
Resposta: 202 Accepted
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"const res = await fetch("https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}/revert", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}/revert", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /products/price-adjust-jobs/:jobId
Seção intitulada “DELETE /products/price-adjust-jobs/:jobId”Cancelar reajuste de preços pendente ou em processamento
Parâmetros de rota: jobId
Resposta: 204 No Content
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"const res = await fetch("https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/price-adjust-jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/:id/image
Seção intitulada “POST /products/:id/image”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
curl -X POST "https://api.nivesistemas.com.br/products/{id}/image" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/image", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/image", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /products/:id/image
Seção intitulada “DELETE /products/:id/image”Remover imagem do produto
Parâmetros de rota: id
curl -X DELETE "https://api.nivesistemas.com.br/products/{id}/image" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/image", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/products/{id}/image", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/:id/sales-history
Seção intitulada “GET /products/:id/sales-history”Obter histórico de vendas
Parâmetros de rota: id
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/sales-history", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/{id}/sales-history", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/:id/last-entries
Seção intitulada “GET /products/:id/last-entries”Obter última nota de entrada por grade
Parâmetros de rota: id
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/last-entries", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/{id}/last-entries", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/:id/purchase-codes
Seção intitulada “GET /products/:id/purchase-codes”Listar códigos de compra do produto (fardo, código do fornecedor)
Parâmetros de rota: id
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/purchase-codes", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/{id}/purchase-codes", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PUT /products/:id/purchase-codes
Seção intitulada “PUT /products/:id/purchase-codes”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)
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":[]}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/purchase-codes", { method: "PUT", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "codes": [] }),});const data = await res.json();import requests
res = requests.request( "PUT", "https://api.nivesistemas.com.br/products/{id}/purchase-codes", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "codes": [] },)print(res.json())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
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"const res = await fetch("https://api.nivesistemas.com.br/products/{id}/variants/{variantId}/stock-movements", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/{id}/variants/{variantId}/stock-movements", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /products/composites/match
Seção intitulada “GET /products/composites/match”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 |
curl -X GET "https://api.nivesistemas.com.br/products/composites/match" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/products/composites/match", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/products/composites/match", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /products/:id/composites/grades
Seção intitulada “POST /products/:id/composites/grades”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 |
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}'const res = await fetch("https://api.nivesistemas.com.br/products/{id}/composites/grades", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "grades": [], "expectedComponentCount": 1 }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/products/{id}/composites/grades", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "grades": [], "expectedComponentCount": 1 },)print(res.json())
