Ir al contenido
Prueba gratis durante 14 días
Español
English简体中文繁體中文ČeštinaPróximamenteDanskPróximamenteNederlandsSuomiPróximamenteFrançaisDeutschItaliano日本語한국어Norsk bokmålPróximamentePolskiPortuguêsEspañolSvenskaTürkçe
Abrir en Claude Hacer preguntas sobre esta páginaAbrir en ChatGPT Hacer preguntas sobre esta página

Actualizar o editar Volume Pricing con las API

Actualiza una regla de Volume Pricing existente con la Public API, con la referencia completa del cuerpo de la solicitud.

Este documento explica cómo actualizar una regla de Volume Pricing existente con la Public API.


Para actualizar un registro de Volume Pricing existente, usa el siguiente endpoint:

PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}
  • {id} es el ID del registro de Volume Pricing
  • El ID se puede obtener en la interfaz de la aplicación (sin el símbolo “#”)
  • Ejemplo de referencia:

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

Todas las solicitudes a la API deben incluir los siguientes encabezados obligatorios:

Encabezado Descripción Obligatorio
X-SAMITA-API-KEY Clave de API proporcionada en la aplicación Wholesale Sí
X-SAMITA-SHOP-URL Dominio de la tienda de Shopify con el formato xxx.myshopify.com Sí
CONTENT-TYPE Debe ser application/json Sí

Si falta alguno de los encabezados obligatorios, la solicitud se rechazará.


_ Los datos para actualizar Volume Pricing deben enviarse en formato JSON. Al final de este documento encontrarás un ejemplo de estructura JSON.

_ En la solicitud solo se requieren los campos que quieras actualizar. No es obligatorio enviar todos los campos, como sí ocurre en el método Create de la API.

_ Los campos no especificados permanecerán sin cambios

Ejemplo de JSON de solicitud:

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

  • El nombre que identifica el registro de Volume Pricing
  • Debe ser una cadena de texto
  • Longitud máxima: 255 caracteres

  • Define si el registro está activo o no
  • Solo acepta los siguientes valores:
Valor Descripción
true La regla de precios está activa
false La regla de precios está inactiva

Define si el volume pricing se calcula por cantidad o por importe.

Valores aceptados:

  • quantity
  • amount

Define qué clientes pueden acceder a esta regla de precios.

Estructura:

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

type

Valores aceptados (solo uno de los siguientes):

  • all – Se aplica a toda la clientela
  • logged – Se aplica solo a quienes han iniciado sesión
  • non-logged – Se aplica solo a quienes visitan la tienda sin cuenta
  • customer-tags – Se aplica solo a clientes con etiquetas concretas

tags

  • Obligatorio solo cuando type == customer-tags
  • Debe ser un array separado por comas
  • Ejemplo: ["wholesale","b2b"]

Si type no es customer-tags, este campo se puede ignorar.


Sirve para excluir a determinados clientes de la regla de precios.

Estructura:

"exclude_customer": {
"type": "none",
"tags": []
}

type

  • Valor predeterminado: none
  • Valores aceptados:
Valor Descripción
none No excluir a ningún cliente
customer-tags Excluir clientes por etiquetas

tags

  • Obligatorio solo cuando type == customer-tags
  • Array separado por comas
  • Ejemplo: ["vip","internal"]

Define a qué productos se aplicará la regla de precios.

Estructura:

"apply_product": {
"type": "all",
"product_ids": [],
"product_tags": [],
"collection_ids": [],
"apply_for_variants": false
},

type

Valores aceptados:

  • all
  • products
  • collections
  • product-tags

product_ids

  • Obligatorio solo cuando type == products
  • Lista de IDs de producto separados por comas
  • Ejemplo: [1,2,3]

product_tags

  • Obligatorio solo cuando type == product-tags
  • Ejemplo: ["tag1","tag2"]

collection_ids

  • Obligatorio solo cuando type == collections
  • Ejemplo: [1,2,3]

apply_for_variants

  • Determina si los descuentos se pueden configurar por variante
  • Valores aceptados: true o false
  • Valor predeterminado: false

Define los productos que se excluyen de la regla.

Estructura:

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

type

  • Valor predeterminado: none
  • Valores aceptados:
Valor Descripción
none No excluir ningún producto
products Excluir productos concretos
collections Excluir colecciones concretas

Los demás campos solo son obligatorios según el type seleccionado.


Define la configuración del descuento a nivel de producto o de variante.

  • Deja este campo vacío si apply_product.apply_for_variants == false.
  • Si apply_product.apply_for_variants == true, este campo es obligatorio.
  • La estructura debe ser un array de configuraciones de producto.

Estructura:

"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 (obligatorio)

  • ID del producto.
  • Debe coincidir con un producto existente.

i.2. duplicated

Indica si el producto tiene varios rangos de cantidad o importe.

Valores aceptados:

  • true
  • false

Reglas:

  • Si es true: el producto contiene varios rangos de cantidad o importe.
  • Si es false: el producto tiene un único rango de cantidad o importe.

i.3. from_qty / from_amount

Cantidad o importe inicial del rango.

Reglas:

  • El primer elemento puede estar vacío (por defecto, 1).
  • Todos los elementos siguientes son obligatorios.

i.4. to_qty / to_amount

Cantidad o importe final del rango.

Reglas:

  • Puede estar vacío (se calculará automáticamente como el valor from del siguiente elemento menos 1).
  • Si se indica, debe ser menor que el valor from del siguiente elemento.

Ejemplos:

  • Elemento 1: 0–10 → Elemento 2: 11–20
  • Elemento 1: 0–blank → Elemento 2: 10–blank
  • Elemento 1: blank–10 → Elemento 2: 11–blank

i.5. discount_groups (nivel de producto)

Define la configuración del descuento para cada rango de cantidad o importe a nivel de producto.

  • Obligatorio si variant_pricing == false.
  • Déjalo vacío si variant_pricing == true.
  • Debe ser un array de objetos de descuento que correspondan al apply_customer.type configurado.

Estructura:

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

+ name

Valores aceptados:

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

Si se indica otro valor, se tratará como una etiqueta de cliente y debe coincidir con una de las etiquetas definidas en apply_customer.tags.

+ type

Define el tipo de descuento.

Valores aceptados:

  • percent – Descuento porcentual
  • amount – Importe fijo que se resta del precio
  • fixed-amount – Precio final fijo

+ value

  • Debe ser un número
  • Debe ser mayor que 0
  • Si type == percent, el valor debe ser menor que 100

i.6. variant_pricing

Indica si el descuento se aplica a nivel de variante.

Valores aceptados:

  • true
  • false

i.7. variants

Define la configuración del descuento a nivel de variante.

  • Obligatorio si variant_pricing == true
  • Déjalo vacío si variant_pricing == false
  • Debe ser un array de configuraciones de variante

Estructura:

{
"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 (obligatorio)

  • ID de la variante.

+ duplicate

Indica si la variante tiene varios rangos de cantidad o importe.

Valores aceptados:

  • true
  • false

Reglas:

  • Si es true: la variante contiene varios rangos.
  • Si es false: la variante tiene un único rango.

+ from_qty / from_amount

Cantidad o importe inicial.

Reglas:

  • El primer elemento puede estar vacío (por defecto, 1).
  • Todos los elementos siguientes son obligatorios.

+ to_qty / to_amount

Cantidad o importe final.

Reglas:

  • Puede estar vacío (se calcula automáticamente como el from del siguiente elemento menos 1).
  • Si se indica, debe ser menor que el valor from del siguiente elemento.

Ejemplos:

  • Elemento 1: 0–10 → Elemento 2: 11–20
  • Elemento 1: 0–blank → Elemento 2: 10–blank
  • Elemento 1: blank–10 → Elemento 2: 11–blank

+ discount_groups (nivel de variante)

Define la configuración del descuento por rango de cantidad o importe a nivel de variante.

Reglas:

  • Si apply_customer.type es:
    • all
    • logged
    • non-logged
      → El array debe contener un único elemento.
  • Si apply_customer.type == customer-tags
    → El array debe contener varios elementos (uno por etiqueta de cliente).

name

Valores aceptados:

  • all
  • logged
  • non-logged

Si se indica otro valor, se tratará como una etiqueta de cliente y debe coincidir con una etiqueta definida en apply_customer.tags.

type

Valores aceptados:

  • percent
  • amount
  • fixed-amount

value

  • Debe ser un número
  • Debe ser mayor que 0
  • Si type == percent, el valor debe ser menor que 100

Define a qué mercados de Shopify se aplica la regla.

Estructura:

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

type

Valores aceptados:

  • all
  • specific-market

handle

  • Obligatorio solo cuando type == specific-market
  • Lista de handles de mercado separados por comas
  • Ejemplo: ["japan","us"]

Valores aceptados:

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

Corresponden a las opciones disponibles en la aplicación.

Ejemplo:

"discount_method": "variant",

Define los rangos de cantidad o importe y los valores de descuento.

from_qty / from_amount

to_qty / to_amount

Se aplican las mismas reglas de validación descritas arriba.

Valores aceptados de “type”:

  • percent
  • amount
  • fixed-amount

value:

  • Debe ser > 0
  • Si es percent → debe ser < 100

Estructura:

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

Las reglas son las mismas que se describen arriba para los tipos y valores de descuento.


Sirve para configurar la fecha y hora de inicio y fin de la regla de precios.

Estructura:

"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 aceptados: start_date, end_date
  • Puede incluir uno o ambos, separados por comas
  • Ejemplo: ["start_date","end_date"]

start_at

  • Obligatorio si types incluye start_date
  • Formato: YYYY-MM-DD HH:MM:SS

end_at

  • Obligatorio si types incluye end_date
  • Formato: YYYY-MM-DD HH:MM:SS

401 – Unauthorized

Posibles motivos:

  • Falta la URL de la tienda
  • Falta la clave de API
  • URL de la tienda no válida
  • Clave de API no válida
  • La clave de API no corresponde a la tienda

403 – This action is unauthorized

  • La clave de API no tiene el permiso Update
  • Cada clave de API puede tener los permisos View, Create, Update y Delete
  • Esta API requiere el permiso Update
  • También se devuelve cuando el ID indicado no existe

429 – Too Many Requests

Se superó el límite de solicitudes:

  • Máximo 1 solicitud cada 5 minutos
  • Máximo 50 solicitudes al día

200 – API Success

  • El registro de Volume Pricing se actualizó correctamente
  • La respuesta se devuelve en formato JSON

Ejemplo de JSON de respuesta:

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

¿Te resultó útil esta página?