Pular para o conteúdo
Teste grátis por 14 dias
Português
Abrir no Claude Fazer perguntas sobre esta páginaAbrir no ChatGPT Fazer perguntas sobre esta página

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.


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:

PUT https://wholesale.samita.io/api/v1/wholesale-pricings/1

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.


_ 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"
}
}

  • 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

  • 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

Define quais clientes são elegíveis para esta regra de preço.

Estrutura:

"apply_customer": {
"type": "all",
"tags": []
}

type

Valores aceitos:

  • all
  • logged
  • non-logged
  • customer-tags

tags

  • Obrigatório apenas quando type == customer-tags
  • Deve ser um array separado por vírgulas
  • Exemplo: ["wholesale","b2b"]

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"]

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:

  • all
  • products
  • collections
  • product-tags

Os demais campos são obrigatórios conforme o type selecionado:

  • product_ids → obrigatório se type == products
  • product_tags → obrigatório se type == product-tags
  • collection_ids → obrigatório se type == collections

apply_for_variants

  • Valores aceitos: true ou false
  • Valor padrão: false

Define os produtos que serão excluídos da regra.

Estrutura:

"exclude_product": {
"type": "none",
"product_ids": [],
"collection_ids": []
}

Types aceitos:

  • none
  • products
  • collections

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 produto
    • variant_pricing – Deve ser true
    • variants – Array de variantes

Cada variante contém:

  • id – ID da variante
  • discount_groups – Array de configurações de desconto

Regras de discount_groups

  • Se apply_customer.type for all, logged ou non-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:

  • percent
  • amount
  • fixed-amount

Regras do valor:

  • Deve ser um número maior que 0
  • Se o type for percent, o valor deve ser menor que 100

Define a quais mercados da Shopify a regra se aplica.

Estrutura:

"apply_market": {
"type": "all",
"handle": []
}

type

Valores aceitos:

  • all
  • specific-market

handle

  • Obrigatório apenas quando type == specific-market
  • Lista de handles de mercado separados por vírgulas
  • Exemplo: ["japan","us"]

Usado quando o desconto não é configurado por variante.

Obrigatório quando:

  • apply_product.type não for products, OU
  • apply_product.type == products E as variantes não forem aplicadas

Estrutura:

"discount_group": {
"type": "percent",
"value": "10"
}

Regras:

  • type deve ser um destes:
    • percent
    • amount
    • fixed-amount
  • value
    • Deve ser maior que 0
    • Se o type for percent, o valor deve ser menor que 100

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 types incluir start_date
  • Formato: YYYY-MM-DD HH:MM:SS

end_at

  • Obrigatório se types incluir end_date
  • Formato: YYYY-MM-DD HH:MM:SS

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

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"
}

Isso foi útil?