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 Volume Pricing usando APIs

Atualize uma regra de Volume Pricing existente pela API pública, com a referência completa do corpo da requisição.

Este documento explica como atualizar uma regra de Volume Pricing existente usando a API pública.


Para atualizar um registro de Volume Pricing existente, use o seguinte endpoint:

PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}
  • {id} é o ID do registro de Volume Pricing
  • O ID pode ser obtido na interface do app (sem o símbolo “#”)
  • Exemplo de referência:

PUT https://wholesale.samita.io/api/v1/volume-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 o Volume Pricing devem ser enviados em formato JSON. Um exemplo de estrutura JSON é apresentado no final deste documento.

_ Somente os campos que precisam ser atualizados são necessá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 permanecem inalterados

Exemplo de JSON da requisição:

{
"title": "New Volume Pricing",
"status": true,
"type": "quantity",
"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,
"duplicated": false,
"variant_pricing": true,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
],
"variants": [
{
"id": 46747346763943,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
],
"apply_market": {
"type": "all",
"handle": []
},
"discount_method": "variant",
"discount_groups": [
{
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"type": "percent",
"value": "10"
}
],
"active_date": {
"types": ["start date", "end date"],
"start_at": "2026-01-15T10:00:00",
"end_at": "2026-01-15T10:00:00"
}
}

  • O nome usado para identificar o registro de Volume Pricing
  • Deve ser uma string
  • Tamanho máximo: 255 caracteres

  • Define se o registro está ativo ou nã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 se o preço por volume é calculado por quantidade ou por valor.

Valores aceitos:

  • quantity
  • amount

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

Estrutura:

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

type

Valores aceitos (apenas um dos seguintes):

  • all – Aplica a todos os clientes
  • logged – Aplica somente a clientes conectados
  • non-logged – Aplica somente a clientes visitantes
  • customer-tags – Aplica somente a clientes com tags específicas

tags

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

Se o type não for customer-tags, este campo pode ser ignorado.


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 exclui nenhum cliente
customer-tags Exclui clientes por tags

tags

  • Obrigatório somente quando type == customer-tags
  • Array separado por vírgulas
  • Exemplo: ["vip","internal"]

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

product_ids

  • Obrigatório somente quando type == products
  • Lista de IDs de produtos separados por vírgulas
  • Exemplo: [1,2,3]

product_tags

  • Obrigatório somente quando type == product-tags
  • Exemplo: ["tag1","tag2"]

collection_ids

  • Obrigatório somente quando type == collections
  • Exemplo: [1,2,3]

apply_for_variants

  • Determina se os descontos podem ser configurados por variante
  • Valores aceitos: true ou false
  • Valor padrão: false

Define os produtos a serem excluídos da regra.

Estrutura:

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

type

  • Padrão: none
  • Valores aceitos:
Valor Descrição
none Não exclui nenhum produto
products Exclui produtos específicos
collections Exclui coleções específicas

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


Define a configuração de desconto no nível de produto e/ou de variante.

  • Deixe este campo vazio se apply_product.apply_for_variants == false.
  • Se apply_product.apply_for_variants == true, este campo é obrigatório.
  • A estrutura deve ser um array de configurações de produto.

Estrutura:

"discount_for_variants": [
{
"id": 8516448190631,
"duplicated": false,
"variant_pricing": true,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
],
"variants": [
{
"id": 46747346763943,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
],

i.1. id (obrigatório)

  • ID do produto.
  • Deve corresponder a um produto existente.

i.2. duplicated

Indica se o produto tem várias faixas de quantidade/valor.

Valores aceitos:

  • true
  • false

Regras:

  • Se true: o produto contém várias faixas de quantidade/valor.
  • Se false: o produto tem apenas uma faixa de quantidade/valor.

i.3. from_qty / from_amount

Quantidade ou valor inicial da faixa.

Regras:

  • O primeiro item pode ficar vazio (o padrão é 1).
  • Todos os itens seguintes são obrigatórios.

i.4. to_qty / to_amount

Quantidade ou valor final da faixa.

Regras:

  • Pode ficar vazio (será calculado automaticamente como o valor de from do próximo item menos 1).
  • Se informado, deve ser menor que o valor de from do próximo item.

Exemplos:

  • Item 1: 0–10 → Item 2: 11–20
  • Item 1: 0–em branco → Item 2: 10–em branco
  • Item 1: em branco–10 → Item 2: 11–em branco

i.5. discount_groups (nível de produto)

Define a configuração de desconto de cada faixa de quantidade/valor no nível de produto.

  • Obrigatório se variant_pricing == false.
  • Deixe vazio se variant_pricing == true.
  • Deve ser um array de objetos de desconto correspondente ao apply_customer.type configurado.

Estrutura:

{
"name": "all",
"type": "percent",
"value": "10"
}

+ name

Valores aceitos:

  • all (se apply_customer.type == all)
  • logged (se apply_customer.type == logged)
  • non-logged (se apply_customer.type == non-logged)

Se outro valor for informado, ele será tratado como uma tag de cliente e deve corresponder a uma das tags definidas em apply_customer.tags.

+ type

Define o tipo de desconto.

Valores aceitos:

  • percent – Desconto percentual
  • amount – Valor fixo deduzido do preço
  • fixed-amount – Preço final fixo

+ value

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

i.6. variant_pricing

Indica se o desconto é aplicado no nível de variante.

Valores aceitos:

  • true
  • false

i.7. variants

Define a configuração de desconto no nível de variante.

  • Obrigatório se variant_pricing == true
  • Deixe vazio se variant_pricing == false
  • Deve ser um array de configurações de variante

Estrutura:

{
"id": 46747346763943,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}

+ id (obrigatório)

  • ID da variante.

+ duplicate

Indica se a variante tem várias faixas de quantidade/valor.

Valores aceitos:

  • true
  • false

Regras:

  • Se true: a variante contém várias faixas.
  • Se false: a variante tem apenas uma faixa.

+ from_qty / from_amount

Quantidade ou valor inicial.

Regras:

  • O primeiro item pode ficar vazio (o padrão é 1).
  • Todos os itens seguintes são obrigatórios.

+ to_qty / to_amount

Quantidade ou valor final.

Regras:

  • Pode ficar vazio (calculado automaticamente como o from do próximo item menos 1).
  • Se informado, deve ser menor que o valor de from do próximo item.

Exemplos:

  • Item 1: 0–10 → Item 2: 11–20
  • Item 1: 0–em branco → Item 2: 10–em branco
  • Item 1: em branco–10 → Item 2: 11–em branco

+ discount_groups (nível de variante)

Define a configuração de desconto por faixa de quantidade/valor no nível de variante.

Regras:

  • Se apply_customer.type for:
    • all
    • logged
    • non-logged
      → O array deve conter apenas um item.
  • Se apply_customer.type == customer-tags
    → O array deve conter vários itens (um por tag de cliente).

name

Valores aceitos:

  • all
  • logged
  • non-logged

Se outro valor for informado, ele será tratado como uma tag de cliente e deve corresponder a uma tag definida em apply_customer.tags.

type

Valores aceitos:

  • percent
  • amount
  • fixed-amount

value

  • Deve ser um número
  • Deve ser maior que 0
  • Se type == 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 somente quando type == specific-market
  • Lista de handles de mercados separados por vírgulas
  • Exemplo: ["japan","us"]

Valores aceitos:

  • variant → Same Variant
  • across_group → Mix Variants
  • within_each_group → Mix Products

Eles correspondem às opções disponíveis no app.

Exemplo:

"discount_method": "variant",

Define as faixas de quantidade/valor e os valores de desconto.

from_qty / from_amount

to_qty / to_amount

Mesmas regras de validação descritas acima.

Valores de “type” aceitos:

  • percent
  • amount
  • fixed-amount

value:

  • Deve ser > 0
  • Se percent → deve ser < 100

Estrutura:

"discount_groups": [
{
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"type": "percent",
"value": "10"
}
],

As regras são as mesmas descritas acima para os tipos e valores de desconto.


Usado para configurar o início e o fim da regra de preço.

Estrutura:

"active_date": {
"types": ["start_date", "end_date"],
"start_at": "2026-01-15 10:00:00",
"end_at": "2026-01-15 10:00:00"
}

types

  • Opcional
  • Valores aceitos: start_date, end_date
  • Pode incluir um ou ambos, separados por vírgula
  • 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 – Unauthorized

Possíveis motivos:

  • 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 – This action is unauthorized

  • A chave de API não tem a permissão Update
  • Cada chave de API pode ter as permissões: View, Create, Update, Delete
  • Esta API exige a permissão Update
  • Também é retornado quando o ID informado não existe

429 – Too Many Requests

Limite de requisições excedido:

  • No máximo 1 requisição a cada 5 minutos
  • No máximo 50 requisições por dia

200 – API Success

  • Registro de Volume Pricing atualizado com sucesso
  • Resposta retornada em formato JSON

Exemplo de JSON da resposta:

{
"id": 1,
"title": "New Volume Pricing",
"status": true,
"type": "quantity",
"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,
"duplicated": false,
"variant_pricing": true,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
],
"variants": [
{
"id": 46747346763943,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
],
"apply_market": {
"type": "all",
"handle": []
},
"discount_method": "variant",
"discount_groups": [
{
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"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?