Atualizar/editar preços de atacado usando APIs
Atualize uma regra de preços de atacado existente pela API pública, com a referência completa do corpo da requisição.
Este documento explica como atualizar uma regra de preços de atacado existente usando a API pública.
1. Endpoint
Seção intitulada “1. Endpoint”Para atualizar um registro de preços de atacado existente, use o seguinte endpoint:
PUT https://wholesale.samita.io/api/v1/wholesale-pricings/{id}{id}é o ID do registro de preços de atacado- O ID pode ser obtido na interface do app (sem o símbolo “#”)
- Exemplo de referência:

Exemplo:
Seção intitulada “Exemplo:”PUT https://wholesale.samita.io/api/v1/wholesale-pricings/12. Cabeçalhos da requisição
Seção intitulada “2. Cabeçalhos da requisição”Todas as requisições à API devem incluir os seguintes cabeçalhos obrigatórios:
| Cabeçalho | Descrição | Obrigatório |
|---|---|---|
X-SAMITA-API-KEY |
Chave de API fornecida no app Wholesale | Sim |
X-SAMITA-SHOP-URL |
Domínio da loja Shopify no formato xxx.myshopify.com | Sim |
CONTENT-TYPE |
Deve ser application/json |
Sim |
Se algum cabeçalho obrigatório estiver ausente, a requisição será rejeitada.
3. Corpo da requisição
Seção intitulada “3. Corpo da requisição”_ Os dados usados para atualizar os preços de atacado devem ser enviados em formato JSON. Um exemplo de estrutura JSON está no final deste documento.
_ Apenas os campos que precisam ser atualizados são obrigatórios na requisição. Não é obrigatório enviar todos os campos, como no método de criação da API.
_ Os campos não informados permanecerão inalterados
Exemplo de JSON da requisição:
{ "title": "New Wholesale Pricing", "status": true, "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "variant_pricing": true, "variants": [ { "id": 46747346763943, "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_group": { "type": "percent", "value": "10" }, "active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00" }}c. title
Seção intitulada “c. title”- O nome usado para identificar o registro de preços de atacado
- Opcional na API de atualização
- Deve ser uma string
- Comprimento máximo: 255 caracteres
d. status
Seção intitulada “d. status”- Define se o registro está ativo ou não
- Opcional na API de atualização
- Aceita apenas os seguintes valores:
| Valor | Descrição |
|---|---|
true |
A regra de preço está ativa |
false |
A regra de preço está inativa |
e. apply_customer
Seção intitulada “e. apply_customer”Define quais clientes são elegíveis para esta regra de preço.
Estrutura:
"apply_customer": { "type": "all", "tags": []}type
Valores aceitos:
allloggednon-loggedcustomer-tags
tags
- Obrigatório apenas quando
type == customer-tags - Deve ser um array separado por vírgulas
- Exemplo:
["wholesale","b2b"]
f. exclude_customer
Seção intitulada “f. exclude_customer”Usado para excluir clientes específicos da regra de preço.
Estrutura:
"exclude_customer": { "type": "none", "tags": []}type
- Valor padrão:
none - Valores aceitos:
| Valor | Descrição |
|---|---|
none |
Não excluir nenhum cliente |
customer-tags |
Excluir clientes por tags |
tags
- Obrigatório apenas quando
type == customer-tags - Exemplo:
["vip","wholesale"]
g. apply_product (obrigatório)
Seção intitulada “g. apply_product (obrigatório)”Define a quais produtos a regra de preço será aplicada.
Estrutura:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false}type
Valores aceitos:
allproductscollectionsproduct-tags
Os demais campos são obrigatórios conforme o type selecionado:
product_ids→ obrigatório setype == productsproduct_tags→ obrigatório setype == product-tagscollection_ids→ obrigatório setype == collections
apply_for_variants
- Valores aceitos:
trueoufalse - Valor padrão:
false
h. exclude_product
Seção intitulada “h. exclude_product”Define os produtos que serão excluídos da regra.
Estrutura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}Types aceitos:
noneproductscollections
i. discount_for_variants
Seção intitulada “i. discount_for_variants”Usado quando os descontos são configurados por variante.
- Deve estar vazio se
apply_product.apply_for_variants == false - Obrigatório quando
apply_product.apply_for_variants == true
Exemplo de estrutura:
"discount_for_variants": [
{
"id": 8516448190631,
"variant_pricing": true,
"variants": [
{
"id": 46747346763943,
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
]
Estrutura:
- Array de produtos
- Cada produto contém:
id– ID do produtovariant_pricing– Deve sertruevariants– Array de variantes
Cada variante contém:
id– ID da variantediscount_groups– Array de configurações de desconto
Regras de discount_groups
- Se
apply_customer.typeforall,loggedounon-logged
→ Só é permitido um item - Se
apply_customer.type == customer-tags
→ É possível informar vários grupos de desconto
Campos dentro de discount_groups:
| Campo | Descrição |
|---|---|
name |
Deve corresponder ao tipo de cliente ou à tag de cliente |
type |
Tipo de desconto |
value |
Valor do desconto |
Tipos de desconto aceitos:
percentamountfixed-amount
Regras do valor:
- Deve ser um número maior que 0
- Se o type for
percent, o valor deve ser menor que 100
j. apply_market (obrigatório)
Seção intitulada “j. apply_market (obrigatório)”Define a quais mercados da Shopify a regra se aplica.
Estrutura:
"apply_market": { "type": "all", "handle": []}type
Valores aceitos:
allspecific-market
handle
- Obrigatório apenas quando
type == specific-market - Lista de handles de mercado separados por vírgulas
- Exemplo:
["japan","us"]
k. discount_group
Seção intitulada “k. discount_group”Usado quando o desconto não é configurado por variante.
Obrigatório quando:
apply_product.typenão forproducts, OUapply_product.type == productsE as variantes não forem aplicadas
Estrutura:
"discount_group": { "type": "percent", "value": "10"}Regras:
typedeve ser um destes:percentamountfixed-amount
value- Deve ser maior que 0
- Se o type for
percent, o valor deve ser menor que 100
l. active_date
Seção intitulada “l. active_date”Usado para configurar o horário de início e de término da regra de preço.
Estrutura:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15T10:00:00", "end_at": "2026-01-15T10:00:00"}types
- Opcional
- Valores aceitos:
start_date,end_date - Exemplo:
["start_date","end_date"]
start_at
- Obrigatório se
typesincluirstart_date - Formato:
YYYY-MM-DD HH:MM:SS
end_at
- Obrigatório se
typesincluirend_date - Formato:
YYYY-MM-DD HH:MM:SS
4. Resposta da API
Seção intitulada “4. Resposta da API”a. Respostas de erro
Seção intitulada “a. Respostas de erro”401 – Não autorizado
Motivos possíveis:
- URL da loja ausente
- Chave de API ausente
- URL da loja inválida
- Chave de API inválida
- A chave de API não corresponde à loja
403 – Esta ação não é autorizada
- A chave de API não tem permissão de Update
- Cada chave de API pode ter as permissões View, Create, Update e Delete
- Esta API exige a permissão Update
- Também é retornado quando o ID informado não existe
429 – Excesso de requisições
Limite de requisições excedido:
- Máximo de 1 requisição a cada 5 minutos
- Máximo de 50 requisições por dia
b. Resposta de sucesso
Seção intitulada “b. Resposta de sucesso”200 – Sucesso da API
- Registro de preços de atacado atualizado com sucesso
- Resposta retornada em formato JSON
Exemplo de JSON da resposta:
{ "id": 1, "title": "New Wholesale Pricing", "status": true, "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "variant_pricing": true, "variants": [ { "id": 46747346763943, "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_group": { "type": "percent", "value": "10" }, "active_date": { "types": [], "start_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}