Gerenciamento de preços por SKU

Depois de configurar uma tabela de preços, este guia mostra como consultar e gravar os preços dos SKUs nela. O cadastro da tabela — nome, modo, posição e status — está em Configuração de tabelas de preços.

O preço de tabela é separado do preço do marketplace. Alterar um não altera o outro.

Pré-requisitos e acesso

A loja precisa ter:

  1. a feature sales_force habilitada;
  2. o sistema de tabelas ligado em price_lists_enabled.

O acesso via integrador usa token sk_* com store_products_read para leitura e store_products_write para gravar. Não é necessário atribuir store_sales_force_read ou store_sales_force_manage para este fluxo.

Se price_lists_enabled estiver false, as tabelas e os preços existentes são preservados, mas o PUT de preço por SKU responde 400. Consulte Configuração de tabelas de preços para ligar o sistema.

Consultar preços por tabela

O {sku} na URL é o ULID do SKU, o mesmo id do produto — não o código sku cadastrado.

curl 'https://api.unisupri.com/api/products/{{SKU_ID}}/price-lists' \
  -H 'Authorization: Bearer {{INTEGRATION_TOKEN}}'

O GET devolve todas as tabelas ativas da loja e o estado do SKU em cada uma. Quando o produto ainda não participa da tabela, retorna active: false e tiers: [].

{
  "success": true,
  "data": [
    {
      "price_list_id": "01K9...",
      "name": "Ouro",
      "mode": "auto",
      "active": true,
      "base_price": 100.00,
      "tiers": [
        { "min_quantity": 1,  "price": 100.00, "discount_percent": 0 },
        { "min_quantity": 10, "price": 88.00,  "discount_percent": 12 }
      ]
    }
  ]
}

Gravar preços do SKU

O PUT substitui a lista inteira de faixas do SKU naquela tabela. Envie sempre o estado completo; a operação é idempotente.

Tabela manual

Informe o preço de cada faixa:

curl -X PUT 'https://api.unisupri.com/api/products/{{SKU_ID}}/price-lists/{{PRICE_LIST_ID}}' \
  -H 'Authorization: Bearer {{INTEGRATION_TOKEN}}' \
  -H 'Content-Type: application/json' \
  -d '{
    "active": true,
    "tiers": [
      {"min_quantity": 1, "price": 100.00},
      {"min_quantity": 10, "price": 88.00}
    ]
  }'

Tabela automática

Informe base_price e o desconto de cada faixa:

{
  "active": true,
  "base_price": 100.00,
  "tiers": [
    {"min_quantity": 1, "discount_percent": 0},
    {"min_quantity": 10, "discount_percent": 12},
    {"min_quantity": 50, "discount_percent": 25}
  ]
}

O preço de cada faixa é calculado por base_price × (1 − discount_percent / 100). A faixa base (min_quantity: 1) não recebe desconto e os descontos precisam ser progressivos.

CampoRegra
activeObrigatório e booleano. Controla a participação do SKU na tabela.
base_priceUsado no modo auto. Número ≥ 0.
tiersObrigatório, com pelo menos 1 e no máximo 5 faixas.
tiers[].min_quantityObrigatório, inteiro ≥ 1.
tiers[].priceUsado no modo manual. Número ≥ 0.
tiers[].discount_percentUsado no modo auto, de 0 a 99.99.

A resposta 200 traz o estado reconciliado. Faixas ausentes no corpo são removidas.

Isolamento do marketplace

O preço do anúncio continua sendo gerenciado em Produtos · Preços. As tabelas deste guia valem para os pedidos originados pela força de vendas.

Erros mais comuns

ErroQuando aconteceComo tratar
403feature_disabledA loja não tem força de vendas habilitada.Solicite a habilitação da feature.
400price_lists_enabled está false.Ligue o sistema no guia de configuração das tabelas.
422Payload inválido, mais de 5 faixas ou descontos não progressivos.Corrija os campos apontados em errors.
404SKU ou tabela inexistente, ou de outra loja.Use os IDs retornados pela API da loja.