Pular para o conteúdo
platform
PT EN

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

Adicionar Produtos ao Contrato

Método
PUT
Rota
/pricing/contract/:contractId/items
URL base
https://ws.autorei.net
Parâmetros de rota
:contractId
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

Adiciona produtos ao contrato com o preço de cada um, ou atualiza o preço dos que já estão nele. Cada produto é processado de forma independente: o resultado de cada um vem no campo status da resposta.

Envie de 1 a 100 produtos por requisição.

Parâmetros de Rota

Parâmetro Tipo Obrigatório Descrição
contractId integer Sim Id do contrato, devolvido em id na criação.

Corpo da Requisição (JSON)

Campo Tipo Obrigatório Descrição
items array Sim De 1 a 100 produtos.
Identificação do produto, não é um campo, é um grupo - Sim Uma das duas formas da seção Como identificar o produto: items[].partnerPartCode · items[].skuAttributeValue com skuAttributeName.
items[].price number Não Preço do produto no contrato. Não pode ser negativo.
items[].targetMargin number Não Margem alvo do produto no contrato, de 0 a 100.
items[].totalCost number Não Custo total do produto. Não pode ser negativo.
items[].priceTypeId integer Não Tipo de preço a que este produto fica restrito dentro do contrato.
skuAttributeName string Condicional Nome do atributo usado para resolver items[].skuAttributeValue. Obrigatório quando você identifica os produtos por atributo. Vale para o envio inteiro, não por item.

items[].value é o nome legado de items[].price e continua aceito, com o mesmo efeito. Enviando os dois no mesmo item, vale price.

Como identificar o produto

Cada produto precisa trazer uma das duas formas, nesta ordem de precedência:

Forma Campos Quando usar
Por código do parceiro partnerPartCode Você identifica o produto pelo seu próprio código.
Por atributo skuAttributeValue com skuAttributeName no envelope Você contratou o serviço de catálogo de produtos com atributo próprio.

Ao contrário do envio de estoque, formas diferentes podem conviver no mesmo envio: cada produto é resolvido pela forma que trouxer.

Regras de negócio

O produto precisa ser da loja

O produto é resolvido dentro do catálogo da loja dona do contrato. O que não resolve volta em notFound.items e os demais são gravados.

Produto repetido no mesmo envio não é processado

Dois produtos do mesmo envio que resolvem para o mesmo SKU, pelo código repetido ou pelo atributo, vão os dois para notFound.items e nenhum é gravado. Envie cada produto uma única vez por requisição.

Produto recusado por valor volta na lista, não derruba o envio

Preço negativo, custo negativo, margem fora de 0 a 100 e produto sem nenhuma forma de identificação são recusados item a item: o produto volta em items com status: ERROR e o motivo em error, e os demais são gravados. A resposta é 200.

Resposta · 200

Campo Descrição
id Id do contrato.
items[].skuId Id do SKU resolvido pela plataforma. Vem ausente no produto recusado que não trouxe identificação.
items[].price Preço gravado.
items[].targetMargin · items[].totalCost Margem alvo e custo gravados. Vêm null quando você não os envia.
items[].status inserted produto novo no contrato · updated produto que já estava e mudou de valor · unchanged produto que já estava com os mesmos valores · ERROR produto recusado.
items[].error Motivo da recusa. Presente só quando status é ERROR.
items[].partnerPartCode · items[].skuAttributeValue Eco da identificação que você enviou, no produto recusado.
notFound.items Produtos que você enviou e não foram resolvidos no catálogo da loja, ou que se repetiram no envio.

Erros

Código Quando
400 contractId da rota não é um número maior que zero: {"error":"invalid contract id: \"...\""}.
400 O corpo não é um JSON válido. O detalhe vem em error.
400 O contrato não existe ou não é da loja do token: {"error":"priceContract.notFound"}.
422 items ausente, vazio ou com mais de 100 entradas. O detalhe vem em error.
401 Token ausente, malformado ou expirado.

Exemplo de requisição

curl --request PUT 'https://ws.autorei.net/pricing/contract/:contractId/items' \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data '{
  "items": [
    {
      "partnerPartCode": "SKU-A-001",
      "price": 149.9,
      "targetMargin": 18.5,
      "totalCost": 120.0
    },
    {
      "partnerPartCode": "SKU-B-002",
      "price": 89.9
    }
  ]
}'

Respostas de exemplo

200Sucesso: identificação por código do parceiro

{
  "id": 4610001,
  "items": [
    {
      "skuId": 500101,
      "price": 149.9,
      "targetMargin": 18.5,
      "totalCost": 120,
      "status": "inserted"
    },
    {
      "skuId": 500102,
      "price": 89.9,
      "targetMargin": null,
      "totalCost": null,
      "status": "inserted"
    }
  ],
  "notFound": {
    "items": []
  }
}

200Sucesso: identificação por atributo, com item recusado

{
  "id": 4610001,
  "items": [
    {
      "skuId": 500101,
      "price": 139.9,
      "targetMargin": null,
      "totalCost": null,
      "status": "updated"
    },
    {
      "price": 50,
      "targetMargin": null,
      "totalCost": null,
      "status": "ERROR",
      "error": "must provide skuId, partnerPartCode, or skuAttributeValue"
    }
  ],
  "notFound": {
    "items": [
      {
        "skuAttributeValue": "SKU-Z-999",
        "price": 10,
        "targetMargin": null,
        "totalCost": null
      }
    ]
  }
}

Usado em

Endpoints relacionados

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