Pular para o conteúdo
platform
PT EN

Referência da API · Contratos · Gestão loja

Criar Contrato

Método
POST
Rota
/priceContract
URL base
https://ws.autorei.net
Token
Exige token Bearer
Testar no Postman

Abre esta requisição na documentação pública da API, a fonte oficial da referência.

Descrição

Cria um contrato de preço: a tabela de preços especiais que a loja aplica a um conjunto de clientes durante um período. A criação grava o cabeçalho do contrato, vigência, abrangência e filtros de aplicação. Os clientes e os produtos entram depois, por Adicionar Clientes ao Contrato e Adicionar Produtos ao Contrato.

A loja é sempre a do token. Para criar o contrato de uma filial, use Criar Contrato da Filial.

Corpo da Requisição (JSON)

Campo Tipo Obrigatório Descrição
name string Sim Nome do contrato.
startDate datetime Sim Início da vigência. Veja Formatos de data aceitos.
endDate datetime Sim Fim da vigência. Precisa ser igual ou posterior a startDate.
allCustomers boolean Sim true aplica o contrato a todos os clientes da loja. Veja Abrangência de clientes.
allPartners boolean Sim true aplica o contrato a todas as filiais da loja. Com true, partners é ignorado.
active boolean Não Contrato ativo. Default true. Só contrato ativo e dentro da vigência entra no cálculo de preço.
priority integer Não Prioridade na disputa entre contratos. Default 0. Veja Qual contrato vence.
contractType string Não BASIC (default) ou COUNTDOWN. Veja Oferta regressiva.
priceBeforeAfter boolean Não true devolve o preço de tabela do produto como preço anterior, para a exibição "de/por". Veja Oferta regressiva.
isDiscountBlockedByAttendant boolean Não true impede o atendente de dar desconto sobre o preço do contrato no carrinho.
stateList array Não Siglas das UFs em que o contrato vale, com duas letras maiúsculas: ["SP","MG"]. Sem a lista, o contrato vale em qualquer UF.
storeList array Não Ids das lojas em que o contrato vale. Sem a lista, vale em qualquer loja.
partners array Não Ids das filiais em que o contrato vale. Ignorado quando allPartners é true.
customerGroupList array Não Grupos de clientes (tipos de preço) que o contrato alcança.
customerGroupList[].externalId string Sim Id do grupo no seu sistema, resolvido para o id da plataforma.

Formatos de data aceitos

startDate e endDate aceitam quatro formatos: 2026-09-01, 2026-09-01 08:30, 2026-09-01T08:30:00 e 2026-09-01T08:30:00Z. Enviada só a data, a vigência começa e termina à meia-noite.

Regras de negócio

Abrangência de clientes

allCustomers: true aplica o contrato a todos os clientes da loja, e o contrato passa a recusar a inclusão de cliente avulso com 400. Com allCustomers: false, o contrato vale só para os clientes que você adicionar depois, um a um.

Qual contrato vence

Quando mais de um contrato ativo alcança o mesmo produto para o mesmo cliente, vence o de maior priority. Empatada a prioridade, vence o contrato restrito a clientes específicos sobre o que vale para todos os clientes. Persistindo o empate, vence o contrato mais antigo.

Oferta regressiva

contractType: COUNTDOWN marca o contrato como oferta regressiva: o preço devolvido passa a carregar o desconto e a data final da oferta. O contrato regressivo só entra no cálculo de preço com priceBeforeAfter: true.

Resposta · 200

Campo Descrição
id Id do contrato criado. É ele que vai na rota dos demais endpoints do contrato.
name Nome gravado.
active Contrato ativo.
partner.id Id do parceiro dono do contrato.
partner.name · partner.document Nome e documento do parceiro dono do contrato.
allCustomers · allPartners Abrangência gravada.
priority Prioridade gravada.
dateStart · dateEnd Vigência gravada, em UTC.
dateCreated · lastUpdated Criação e última alteração, em UTC.
priceBeforeAfter Preço anterior habilitado. Vem null quando você não envia o campo.
contractType Tipo gravado.
isDiscountBlockedByAttendant Bloqueio de desconto gravado.
priceContractPartners Ids das filiais gravadas a partir de partners.
priceContractStates UFs gravadas a partir de stateList.
priceContractCustomerGroups Ids dos grupos de clientes gravados a partir de customerGroupList.
priceContractStores Ids das lojas gravadas a partir de storeList.

Erros

Código Quando
400 O corpo não é um JSON válido. O detalhe vem em error.
422 Corpo vazio, campo obrigatório ausente (name, startDate, endDate, allCustomers, allPartners), data em formato não aceito ou endDate anterior a startDate. O detalhe vem em error.
401 Token ausente, malformado ou expirado.

Exemplo de requisição

curl --request POST 'https://ws.autorei.net/priceContract' \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Tabela Atacado 2026",
  "startDate": "2026-09-01",
  "endDate": "2026-12-31",
  "allCustomers": false,
  "allPartners": false,
  "active": true,
  "priority": 10,
  "contractType": "BASIC",
  "isDiscountBlockedByAttendant": false,
  "stateList": [
    "SP",
    "MG"
  ],
  "customerGroupList": [
    {
      "externalId": "GRUPO-ATACADO"
    }
  ]
}'

Respostas de exemplo

200Sucesso: contrato criado

{
  "id": 4610001,
  "name": "Tabela Atacado 2026",
  "active": true,
  "partner": {
    "id": 5050,
    "name": "Loja Exemplo",
    "document": "30.424.972/0001-74"
  },
  "allCustomers": false,
  "allPartners": false,
  "priority": 10,
  "dateStart": "2026-09-01T00:00:00Z",
  "dateEnd": "2026-12-31T00:00:00Z",
  "dateCreated": "2026-09-04T13:22:32.687284Z",
  "lastUpdated": "2026-09-04T13:22:32.687284Z",
  "priceBeforeAfter": null,
  "contractType": "BASIC",
  "isDiscountBlockedByAttendant": false,
  "priceContractPartners": [],
  "priceContractStates": [
    "SP",
    "MG"
  ],
  "priceContractCustomerGroups": [
    4610101
  ],
  "priceContractStores": []
}

Usado em

Endpoints relacionados

Gerado a partir da coleção pública da API, publicada em 04/09/2026: api-docs.cws.digital.