VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Brasil: preço por UF e destinos

Preço por UF em lote e simulação

Grava várias regras de um produto de uma vez e simula qual preço vale para uma UF e quantidade.

O lote é a forma prática de carregar a tabela de preços de um produto (um preço por UF). Diferente da criação unitária, ele atualiza a regra se o trio (produto, UF, min_qty) já existir. A simulação responde "quanto este cliente pagaria?" sem criar nada.

Gravar várias regras

Tudo ou nada: se qualquer regra for inválida, nenhuma é gravada.

POST/api/v1/admin/brazil/state-pricing/bulkAdmin

Grava regras em lote

Corpo da requisição

product_iduuidobrigatório
Produto de todas as regras.
rulesarrayobrigatório

Pelo menos uma regra.

state_codestringobrigatório
UF.
price_centavosintegerobrigatório
Preço em centavos.
min_qtyintegerpadrão: 1
Quantidade mínima (padrão 1).
statusstring
active/A ou disabled/D.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/brazil/state-pricing/bulk" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
    "rules": [
      {
        "state_code": "SP",
        "price_centavos": 15990,
        "min_qty": 1
      },
      {
        "state_code": "RJ",
        "price_centavos": 16490,
        "min_qty": 1
      },
      {
        "state_code": "SP",
        "price_centavos": 14990,
        "min_qty": 10
      }
    ]
  }'

Resposta

201Regras gravadas
json
{
  "product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
  "total": 3,
  "rules": [
    {
      "id": 12,
      "product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
      "state_code": "SP",
      "price_centavos": 15990,
      "min_qty": 1,
      "status": "A",
      "created_at": "2026-10-11T12:00:00Z",
      "updated_at": "2026-10-11T12:00:00Z"
    }
  ]
}

Campos da resposta

totalinteger
Regras gravadas.
rulesarray
Regras criadas ou atualizadas, no formato da lista.

Erros

StatusQuandoCorpo de exemplo
400product_id ou rules ausente, UF inexistente ou preço negativo.{"error":"rules array is required"}
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não tem manage_brazil nem manage_settings.{"error":"insufficient privileges","privilege_required_any":["manage_brazil","manage_settings"]}
Modo por filtro

O corpo também aceita filter, simulate e confirm_token para aplicar as mesmas regras a todos os produtos de um recorte do catálogo, com prévia antes de gravar. Esse modo é compartilhado com as demais operações em lote do painel e não é detalhado aqui.

Simular o preço efetivo

Aplica a mesma lógica do carrinho: a regra ativa da UF com a maior min_qty que não passa de qty; sem regra, o preço normal do produto.

POST/api/v1/admin/brazil/state-pricing/effectiveAdmin

Simula o preço efetivo

Corpo da requisição

product_iduuidobrigatório
Produto.
state_codestringobrigatório
UF.
qtyintegerpadrão: 1
Quantidade; menor que 1 vira 1.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/brazil/state-pricing/effective" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
    "state_code": "SP",
    "qty": 10
  }'

Resposta

200Preço efetivo
json
{
  "price_centavos": 14990,
  "source": "state_rule",
  "rule_id": 13,
  "state_code": "SP"
}

Campos da resposta

price_centavosinteger
Preço unitário em centavos.
sourcestring
state_ruledefault
state_rule ou default.
rule_idinteger
Regra aplicada; 0 quando é o preço normal.
state_codestring
UF consultada.

Erros

StatusQuandoCorpo de exemplo
400product_id ou state_code ausente.{"error":"state_code is required"}
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não tem manage_brazil nem manage_settings.{"error":"insufficient privileges","privilege_required_any":["manage_brazil","manage_settings"]}
404Produto inexistente e sem regra.{"error":"product d8a6c5e7-... not found"}
A UF não é validada aqui

Uma UF inexistente não dá erro: volta o preço normal com source: default. Confira a sigla.

Veja também

  • Brasil
Anterior
Regras de preço por UF
Próxima
Regras de destino
Nesta página
  • Gravar várias regras
  • Exemplo de requisição
  • Resposta
  • Erros
  • Simular o preço efetivo
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também