VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/B2B: preços e pedidos programados

Tabelas de preço

Lista, consulta, cria, altera e exclui as tabelas de preço B2B da loja.

Uma tabela de preço é o "cabeçalho" da política: nome, código, vigência e prioridade. Os preços ficam nos itens e o alcance fica nas atribuições. Estas cinco rotas cuidam só do cabeçalho. Todas exigem o módulo b2b-pricing e o privilégio manage_b2b ou manage_promotions.

Listar tabelas

Devolve todas as tabelas não excluídas, da maior prioridade para a menor e, em empate, por nome. Não há paginação: a lista de uma loja costuma ser curta.

GET/api/v1/admin/b2b/price-listsAdmin

Lista as tabelas de preço

Parâmetros de consulta

statusstring
draftactivearchived
Filtra pelo status. Um valor fora da lista não dá erro: a resposta vem vazia.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/b2b/price-lists?status=active" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Tabelas devolvidas
json
{
  "price_lists": [
    {
      "id": "3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10",
      "name": "Atacado SP",
      "code": "atacado-sp",
      "description": "",
      "status": "active",
      "valid_from": "2026-10-01",
      "valid_until": "2026-12-31",
      "priority": 20,
      "item_count": 1,
      "assignment_count": 3,
      "created_at": "2026-07-07T01:15:19.519929Z",
      "updated_at": "2026-07-21T21:00:22.113279Z"
    }
  ]
}

Campos da resposta

price_listsarray
Tabelas. Lista vazia quando nada casa.
iduuid
Id da tabela.
namestring
Nome para exibição.
codestring
Código único entre as tabelas não excluídas.
descriptionstring
Texto livre. Vazio quando não informado.
statusstring
draftactivearchived
Estado da tabela.
valid_fromstring
Início da vigência, YYYY-MM-DD. O campo some da resposta quando é nulo.
valid_untilstring
Fim da vigência, YYYY-MM-DD, inclusive. Some quando é nulo.
priorityinteger
Quanto maior, mais precedência na escolha do preço.
item_countinteger
Quantidade de linhas de preço.
assignment_countinteger
Quantidade de atribuições. 0 significa que ninguém recebe esta tabela.
created_atstring
Criação, RFC 3339 (UTC).
updated_atstring
Última alteração, RFC 3339 (UTC).

Erros

StatusQuandoCorpo
401Sem token{"error":"missing authorization header"}
403Sem privilégio{"error":"insufficient privileges","privilege_required_any":["manage_b2b","manage_promotions"]}
403Módulo desligado{"error":"module_disabled","module":"b2b-pricing"}
500Falha ao consultar{"error":"failed to list price lists","detail":"..."}
Veja quais tabelas não alcançam ninguém

Filtre a resposta por status=active e procure assignment_count: 0. Uma tabela ativa sem atribuição é o motivo mais comum de "o preço da tabela não aparece na vitrine".

Criar uma tabela

Cria uma tabela em rascunho. Ela ainda não afeta nenhum preço: preencha os itens, atribua a quem vale e só então ative.

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

Cria uma tabela de preço

Corpo da requisição

namestringobrigatório
Nome da tabela. Espaços nas pontas não contam: só espaços equivale a vazio e é recusado.
codestringobrigatório
Código único (por exemplo atacado-sp-2026s2). Repetir o código de outra tabela não excluída é recusado.
descriptionstring
Texto livre.
valid_fromstring
Início da vigência, YYYY-MM-DD. Vazio ou ausente significa "sem início".
valid_untilstring
Fim da vigência, YYYY-MM-DD, inclusive. Vazio ou ausente significa "sem fim".
priorityintegerpadrão: 0
Maior vence. Pode ser negativo.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/b2b/price-lists" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Atacado SP",
    "code": "atacado-sp",
    "description": "Condição para revendedores do estado de São Paulo",
    "valid_from": "2026-10-01",
    "valid_until": "2026-12-31",
    "priority": 20
  }'

Resposta

201Tabela criada
json
{
  "id": "3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10",
  "name": "Atacado SP",
  "code": "atacado-sp",
  "description": "Condição para revendedores do estado de São Paulo",
  "status": "draft",
  "valid_from": "2026-10-01",
  "valid_until": "2026-12-31",
  "priority": 20,
  "item_count": 0,
  "assignment_count": 0,
  "created_at": "2026-10-11T22:10:00Z",
  "updated_at": "2026-10-11T22:10:00Z"
}

Os campos são os da listagem. A tabela volta com status: draft e contagens zeradas.

Erros

StatusQuandoCorpo
400JSON inválido{"error":"invalid request body","detail":"..."}
400name vazio{"error":"failed to create price list","detail":"name is required"}
400code vazio{"error":"failed to create price list","detail":"code is required"}
400Código repetido ou data inválida{"error":"failed to create price list","detail":"insert price list: ..."}
401 / 403Sem token, sem privilégio, módulo desligadoveja a lista acima
created_by fica vazio

Esta rota não grava o usuário autenticado na tabela, então o campo created_by não aparece nas tabelas criadas por ela. Para saber quem criou, consulte o histórico de atividade da loja (ação create_price_list).

Consultar uma tabela

Devolve uma tabela pelo id, com as contagens de itens e atribuições.

GET/api/v1/admin/b2b/price-lists/{id}Admin

Consulta uma tabela de preço

Parâmetros de caminho

iduuidobrigatório
Id da tabela.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/b2b/price-lists/3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Tabela devolvida
json
{
  "id": "3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10",
  "name": "Atacado SP",
  "code": "atacado-sp",
  "description": "",
  "status": "active",
  "priority": 20,
  "item_count": 1,
  "assignment_count": 3,
  "created_at": "2026-07-07T01:15:19.519929Z",
  "updated_at": "2026-07-21T21:00:22.113279Z"
}

Erros

StatusQuandoCorpo
404UUID válido que não existe, ou tabela excluída{"error":"price list not found"}
400Id 0{"error":"invalid id parameter"}
500Id que não é UUID{"error":"price list operation failed","detail":"..."}

Alterar uma tabela

Altera só os campos enviados (os demais ficam como estão). Não muda o status: use as rotas de ativar e arquivar. O code não é editável.

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

Altera uma tabela de preço

Parâmetros de caminho

iduuidobrigatório
Id da tabela.

Corpo da requisição

namestring
Novo nome. Enviar "" grava um nome vazio (a API não valida aqui).
descriptionstring
Nova descrição.
valid_fromstring
Novo início, YYYY-MM-DD. Enviar "" remove a data.
valid_untilstring
Novo fim, YYYY-MM-DD. Enviar "" remove a data.
priorityinteger
Nova prioridade.

Exemplo de requisição

bash
curl -X PUT "$BASE_URL/api/v1/admin/b2b/price-lists/3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "valid_until": "2027-03-31", "priority": 25 }'

Resposta

200Tabela atualizada
json
{
  "id": "3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10",
  "name": "Atacado SP",
  "code": "atacado-sp",
  "description": "",
  "status": "active",
  "valid_until": "2027-03-31",
  "priority": 25,
  "item_count": 1,
  "assignment_count": 3,
  "created_at": "2026-07-07T01:15:19.519929Z",
  "updated_at": "2026-10-11T22:12:00Z"
}

A resposta é a tabela completa depois da alteração.

Erros

StatusQuandoCorpo
400JSON inválido{"error":"invalid request body","detail":"..."}
404Tabela inexistente ou excluída{"error":"price list not found"}
500Id que não é UUID, ou data inválida{"error":"price list operation failed","detail":"..."}
Alterar uma tabela ativa muda o preço na hora

Prioridade e vigência de uma tabela active entram no cálculo imediatamente. Para testar mudanças com segurança, duplique a tabela, edite a cópia e só então ative.

Excluir uma tabela

Exclusão lógica: a tabela some das listagens e o code fica livre para reutilização. Só funciona para draft ou archived.

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

Exclui uma tabela de preço

Parâmetros de caminho

iduuidobrigatório
Id da tabela.

Exemplo de requisição

bash
curl -X DELETE "$BASE_URL/api/v1/admin/b2b/price-lists/3f0c1a52-8d7e-4c1b-9a64-2b5e7d9c1a10" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Tabela excluída
json
{ "deleted": true }

Erros

StatusQuandoCorpo
409Tabela ativa, já excluída ou inexistente{"error":"failed to delete price list","detail":"price list not found or not in a deletable state (must be draft/archived)"}
A resposta 409 mistura dois casos

A mesma mensagem cobre "tabela ativa" e "tabela que não existe". Se o id está certo, arquive a tabela e tente de novo.

Veja também

  • Ativar, arquivar e duplicar
  • Itens da tabela
  • Atribuições
Anterior
B2B, preços e pedidos programados
Próxima
Ativar, arquivar e duplicar
Nesta página
  • Listar tabelas
  • Exemplo de requisição
  • Resposta
  • Erros
  • Criar uma tabela
  • Exemplo de requisição
  • Resposta
  • Erros
  • Consultar uma tabela
  • Exemplo de requisição
  • Resposta
  • Erros
  • Alterar uma tabela
  • Exemplo de requisição
  • Resposta
  • Erros
  • Excluir uma tabela
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também