VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Regras de preço B2B

Criar, alterar e excluir regra de preço B2B

Cria, ajusta e remove uma regra de preço por faixa de quantidade.

Crie uma regra por faixa e por grupo. Para três degraus de atacado (10-49, 50-99, 100 ou mais) crie três regras. O PUT é parcial: envie só o que muda. A exclusão é definitiva (não há lixeira); para suspender uma regra sem perdê-la use is_active: false.

Criar uma regra

POST/api/v1/admin/b2b-price-rulesAdmin

Cria uma regra de preço B2B

Corpo da requisição

product_iduuidobrigatório
Produto da regra. Precisa existir.
min_qtyintegerobrigatório
Quantidade mínima. Menor que 1 vira 1.
max_qtyintegerpadrão: 0
Quantidade máxima. 0 = sem limite. Se maior que zero, não pode ser menor que min_qty.
discount_bpsintegerpadrão: 0
Desconto em pontos-base, de 0 a 10000. Tem precedência sobre price_cents.
price_centsintegerpadrão: 0
Preço unitário fixo, em centavos. Obrigatório (maior que zero) quando discount_bps é 0.
usergroup_iduuid
Grupo de usuários. Omita para valer para todos. A existência do grupo não é conferida.
priorityintegerpadrão: 0
Prioridade de avaliação.
is_activebooleanpadrão: true
Se a regra já nasce valendo.

Exemplo de requisição: criar

bash
curl -X POST "$BASE_URL/api/v1/admin/b2b-price-rules" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "b2e4c104-a926-4da7-a242-03bcc6c5c860",
    "usergroup_id": "a1111111-1111-1111-1111-111111111111",
    "min_qty": 50,
    "max_qty": 99,
    "discount_bps": 1500,
    "priority": 2
  }'

Resposta: criar

201Regra criada
json
{
  "id": 5,
  "product_id": "b2e4c104-a926-4da7-a242-03bcc6c5c860",
  "usergroup_id": "a1111111-1111-1111-1111-111111111111",
  "min_qty": 50,
  "max_qty": 99,
  "price_cents": 0,
  "discount_bps": 1500,
  "priority": 2,
  "is_active": true,
  "created_at": "2026-07-01T01:42:06.978203Z",
  "updated_at": "2026-07-01T01:42:06.978203Z",
  "product_name": "Mochila Moderno Cinza 03701",
  "product_sku": "SD-003701",
  "product_price": 15990
}

Campos da resposta

idinteger
Identificador da regra. Atenção: é um número inteiro, não UUID.
product_iduuid
Produto ao qual a regra se aplica.
usergroup_iduuid | omitted
Grupo de usuários que recebe o preço. Ausente = vale para todos os clientes.
min_qtyinteger
Quantidade mínima (inclusive) para a regra valer.
max_qtyinteger
Quantidade máxima (inclusive). 0 = sem limite.
price_centsinteger
Preço unitário fixo, em centavos. Só vale quando discount_bps é 0.
discount_bpsinteger
Desconto sobre o preço base, em pontos-base (1500 = 15%). Quando maior que zero, tem precedência sobre price_cents.
priorityinteger
Prioridade de avaliação (maior primeiro). Veja a regra de escolha na home da seção.
is_activeboolean
Se a regra está valendo.
created_atstring (RFC 3339)
Criação.
updated_atstring (RFC 3339)
Última alteração.
product_namestring | omitted
Nome do produto (para exibição).
product_skustring | omitted
SKU do produto.
product_priceinteger | omitted
Preço base atual do produto, em centavos.
usergroup_namestring | omitted
Nome do grupo de usuários.

Erros: criar

StatusQuandoCorpo de exemplo
401Token ausente ou inválido.{"error":"authentication required"}
403O módulo b2b-pricing está desligado na loja.{"error":"module_disabled","module":"b2b-pricing"}
403Falta o privilégio manage_b2b (ou manage_promotions), também para leitura.{"error":"insufficient privileges","required":"manage_b2b"}
400Corpo inválido; max_qty menor que min_qty; discount_bps fora de 0 a 10000; ou nem price_cents nem discount_bps positivos. A mensagem vem em detail, em inglês.{"error":"failed to create price rule","detail":"either price_cents or discount_bps must be positive"}
404O produto não existe (ou foi excluído).{"error":"product not found"}

Alterar uma regra

PUT/api/v1/admin/b2b-price-rules/{id}Admin

Altera campos de uma regra de preço B2B

Parâmetros de caminho

idintegerobrigatório
Id da regra (inteiro).

Corpo da requisição

min_qtyinteger
Nova quantidade mínima.
max_qtyinteger
Nova quantidade máxima.
discount_bpsinteger
Novo desconto em pontos-base.
price_centsinteger
Novo preço fixo, em centavos.
usergroup_iduuid
Novo grupo. Não é possível limpar o grupo por aqui.
priorityinteger
Nova prioridade.
is_activeboolean
Liga ou desliga a regra.

Exemplo de requisição: alterar

bash
curl -X PUT "$BASE_URL/api/v1/admin/b2b-price-rules/5" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "discount_bps": 2000,
    "is_active": true
  }'

Resposta: alterar

200Regra alterada
json
{
  "id": 5,
  "product_id": "b2e4c104-a926-4da7-a242-03bcc6c5c860",
  "usergroup_id": "a1111111-1111-1111-1111-111111111111",
  "min_qty": 50,
  "max_qty": 99,
  "price_cents": 0,
  "discount_bps": 2000,
  "priority": 2,
  "is_active": true,
  "created_at": "2026-07-01T01:42:06.978203Z",
  "updated_at": "2026-07-01T01:42:06.978203Z",
  "product_name": "Mochila Moderno Cinza 03701",
  "product_sku": "SD-003701",
  "product_price": 15990
}

Campos da resposta

idinteger
Identificador da regra. Atenção: é um número inteiro, não UUID.
product_iduuid
Produto ao qual a regra se aplica.
usergroup_iduuid | omitted
Grupo de usuários que recebe o preço. Ausente = vale para todos os clientes.
min_qtyinteger
Quantidade mínima (inclusive) para a regra valer.
max_qtyinteger
Quantidade máxima (inclusive). 0 = sem limite.
price_centsinteger
Preço unitário fixo, em centavos. Só vale quando discount_bps é 0.
discount_bpsinteger
Desconto sobre o preço base, em pontos-base (1500 = 15%). Quando maior que zero, tem precedência sobre price_cents.
priorityinteger
Prioridade de avaliação (maior primeiro). Veja a regra de escolha na home da seção.
is_activeboolean
Se a regra está valendo.
created_atstring (RFC 3339)
Criação.
updated_atstring (RFC 3339)
Última alteração.
product_namestring | omitted
Nome do produto (para exibição).
product_skustring | omitted
SKU do produto.
product_priceinteger | omitted
Preço base atual do produto, em centavos.
usergroup_namestring | omitted
Nome do grupo de usuários.

Erros: alterar

StatusQuandoCorpo de exemplo
401Token ausente ou inválido.{"error":"authentication required"}
403O módulo b2b-pricing está desligado na loja.{"error":"module_disabled","module":"b2b-pricing"}
403Falta o privilégio manage_b2b (ou manage_promotions), também para leitura.{"error":"insufficient privileges","required":"manage_b2b"}
400O id da regra não é um número inteiro.{"error":"invalid rule id"}
404Não existe regra com esse id.{"error":"price rule not found"}
400Corpo que não é JSON.{"error":"invalid request body","detail":"..."}
500O banco recusou o valor (por exemplo usergroup_id que não é UUID).{"error":"failed to update price rule","detail":"..."}

Excluir uma regra

DELETE/api/v1/admin/b2b-price-rules/{id}Admin

Exclui definitivamente uma regra de preço B2B

Parâmetros de caminho

idintegerobrigatório
Id da regra (inteiro).

Exemplo de requisição: excluir

bash
curl -X DELETE "$BASE_URL/api/v1/admin/b2b-price-rules/5" \
  -H "Authorization: Bearer $TOKEN"

Resposta: excluir

200Regra excluída
json
{
  "message": "price rule deleted"
}

Erros: excluir

StatusQuandoCorpo de exemplo
401Token ausente ou inválido.{"error":"authentication required"}
403O módulo b2b-pricing está desligado na loja.{"error":"module_disabled","module":"b2b-pricing"}
403Falta o privilégio manage_b2b (ou manage_promotions), também para leitura.{"error":"insufficient privileges","required":"manage_b2b"}
400O id da regra não é um número inteiro.{"error":"invalid rule id"}
404Não existe regra com esse id.{"error":"price rule not found"}
O `PUT` não revalida a faixa

Ao contrário da criação, a alteração grava min_qty, max_qty e discount_bps sem conferir o intervalo. Um max_qty menor que min_qty ou um discount_bps acima de 10000 entra e a regra deixa de casar com qualquer compra (ou dá preço zero). Valide do seu lado.

Teste pelo carrinho

Depois de criar uma regra, adicione a quantidade da faixa ao carrinho com um cliente do grupo e confira o preço unitário. É o teste que vale, pois leva em conta tabelas de preço e propostas aceitas.

Veja também

  • Regras de preço B2B: visão geral
  • Consultar regras
Anterior
Consultar regras de preço B2B
Próxima
Excluir faixa de preço
Nesta página
  • Criar uma regra
  • Exemplo de requisição: criar
  • Resposta: criar
  • Erros: criar
  • Alterar uma regra
  • Exemplo de requisição: alterar
  • Resposta: alterar
  • Erros: alterar
  • Excluir uma regra
  • Exemplo de requisição: excluir
  • Resposta: excluir
  • Erros: excluir
  • Veja também