Referência da API · Contratos · Gestão Matriz
Criar Contrato da Filial
- Método
- POST
- Rota
-
/priceContract/store/:partnerId - URL base
https://ws.autorei.net- Parâmetros de rota
:partnerId- Token
- Exige token Bearer
Abre esta requisição na documentação pública da API, a fonte oficial da referência.
Descrição
Permite que uma conta matriz crie um contrato de preço em uma de suas filiais. 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 da Filial e Adicionar Produtos ao Contrato da Filial.
O corpo e a resposta são idênticos aos da criação na própria loja, a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.
Parâmetros de Rota
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
partnerId |
integer | Sim | Id da filial dona do contrato. Precisa estar vinculada à matriz do token. |
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 filial. Veja Abrangência de clientes. |
allPartners |
boolean | Sim | true aplica o contrato a todas as filiais da matriz. 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 | partnerId da rota não é numérico: {"error":"Invalid target partner ID"}. |
| 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: {"error":"Authentication required for this route"}. |
| 403 | A filial não está vinculada à sua matriz: {"error":"Access denied: Invalid partnership"}. Diferente de 400, aqui o payload está certo, o que falta é o vínculo. |
Exemplo de requisição
curl --request POST 'https://ws.autorei.net/priceContract/store/:partnerId' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--data '{
"name": "Tabela Atacado Filial 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": 4610002,
"name": "Tabela Atacado Filial 2026",
"active": true,
"partner": {
"id": 5057,
"name": "Loja Exemplo - Filial Campinas",
"document": "30.424.972/0002-55"
},
"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
- Casos de usoIntegração ERP: o caminho típico pela API
- Casos de usoPortal B2B próprio: o caminho típico pela API
- Casos de usoMarketplace B2B: o caminho típico pela API
- Casos de usoVarejo complexo e B2B2C: o caminho típico pela API
Endpoints relacionados
- PUT Adicionar Clientes ao Contrato da Filial
/pricing/contract/:contractId/customers/store/:partnerId - DELETE Remover Clientes do Contrato da Filial
/pricing/contract/:contractId/customers/store/:partnerId
Gerado a partir da coleção pública da API, publicada em 04/09/2026: api-docs.cws.digital.