Actualizar o editar Wholesale Pricing con las API
Actualiza una regla de Wholesale Pricing existente con la Public API, con la referencia completa del cuerpo de la solicitud.
Este documento explica cómo actualizar una regla de Wholesale Pricing existente con la Public API.
1. Endpoint
Sección titulada «1. Endpoint»Para actualizar un registro de Wholesale Pricing existente, usa el siguiente endpoint:
PUT https://wholesale.samita.io/api/v1/wholesale-pricings/{id}{id}es el ID del registro de Wholesale Pricing- El ID se puede obtener en la interfaz de la aplicación (sin el símbolo “#”)
- Ejemplo de referencia:

Ejemplo:
Sección titulada «Ejemplo:»PUT https://wholesale.samita.io/api/v1/wholesale-pricings/12. Encabezados de la solicitud
Sección titulada «2. Encabezados de la solicitud»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á.
3. Cuerpo de la solicitud
Sección titulada «3. Cuerpo de la solicitud»_ Los datos para actualizar Wholesale 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 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
Sección titulada «c. title»- El nombre que identifica el registro de Wholesale Pricing
- Opcional en la API Update
- Debe ser una cadena de texto
- Longitud máxima: 255 caracteres
d. status
Sección titulada «d. status»- Define si el registro está activo o no
- Opcional en la API Update
- Solo acepta los siguientes valores:
| Valor | Descripción |
|---|---|
true |
La regla de precios está activa |
false |
La regla de precios está inactiva |
e. apply_customer
Sección titulada «e. apply_customer»Define qué clientes pueden acceder a esta regla de precios.
Estructura:
"apply_customer": { "type": "all", "tags": []}type
Valores aceptados:
allloggednon-loggedcustomer-tags
tags
- Obligatorio solo cuando
type == customer-tags - Debe ser un array separado por comas
- Ejemplo:
["wholesale","b2b"]
f. exclude_customer
Sección titulada «f. exclude_customer»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 - Ejemplo:
["vip","wholesale"]
g. apply_product (obligatorio)
Sección titulada «g. apply_product (obligatorio)»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:
allproductscollectionsproduct-tags
Los demás campos son obligatorios según el type seleccionado:
product_ids→ obligatorio sitype == productsproduct_tags→ obligatorio sitype == product-tagscollection_ids→ obligatorio sitype == collections
apply_for_variants
- Valores aceptados:
trueofalse - Valor predeterminado:
false
h. exclude_product
Sección titulada «h. exclude_product»Define los productos que se excluyen de la regla.
Estructura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}Tipos aceptados:
noneproductscollections
i. discount_for_variants
Sección titulada «i. discount_for_variants»Se usa cuando los descuentos se configuran por variante.
- Debe estar vacío si
apply_product.apply_for_variants == false - Obligatorio cuando
apply_product.apply_for_variants == true
Ejemplo de estructura:
"discount_for_variants": [
{
"id": 8516448190631,
"variant_pricing": true,
"variants": [
{
"id": 46747346763943,
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
]
Estructura:
- Array de productos
- Cada producto contiene:
id– ID del productovariant_pricing– Debe sertruevariants– Array de variantes
Cada variante contiene:
id– ID de la variantediscount_groups– Array de configuraciones de descuento
Reglas de discount_groups
- Si
apply_customer.typeesall,loggedonon-logged
→ Solo se permite un elemento - Si
apply_customer.type == customer-tags
→ Se pueden indicar varios grupos de descuento
Campos dentro de discount_groups:
| Campo | Descripción |
|---|---|
name |
Debe coincidir con el tipo de cliente o la etiqueta de cliente |
type |
Tipo de descuento |
value |
Valor del descuento |
Tipos de descuento aceptados:
percentamountfixed-amount
Reglas del valor:
- Debe ser un número mayor que 0
- Si type es
percent, el valor debe ser menor que 100
j. apply_market (obligatorio)
Sección titulada «j. apply_market (obligatorio)»Define a qué mercados de Shopify se aplica la regla.
Estructura:
"apply_market": { "type": "all", "handle": []}type
Valores aceptados:
allspecific-market
handle
- Obligatorio solo cuando
type == specific-market - Lista de handles de mercado separados por comas
- Ejemplo:
["japan","us"]
k. discount_group
Sección titulada «k. discount_group»Se usa cuando el descuento no se configura por variante.
Obligatorio cuando:
apply_product.typeno esproducts, Oapply_product.type == productsY no se aplican variantes
Estructura:
"discount_group": { "type": "percent", "value": "10"}Reglas:
typedebe ser uno de estos:percentamountfixed-amount
value- Debe ser mayor que 0
- Si type es
percent, el valor debe ser menor que 100
l. active_date
Sección titulada «l. active_date»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-15T10:00:00", "end_at": "2026-01-15T10:00:00"}types
- Opcional
- Valores aceptados:
start_date,end_date - Ejemplo:
["start_date","end_date"]
start_at
- Obligatorio si
typesincluyestart_date - Formato:
YYYY-MM-DD HH:MM:SS
end_at
- Obligatorio si
typesincluyeend_date - Formato:
YYYY-MM-DD HH:MM:SS
4. Respuesta de la API
Sección titulada «4. Respuesta de la API»a. Respuestas de error
Sección titulada «a. Respuestas de error»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
b. Respuesta correcta
Sección titulada «b. Respuesta correcta»200 – API Success
- El registro de Wholesale Pricing se actualizó correctamente
- La respuesta se devuelve en formato JSON
Ejemplo de JSON de respuesta:
{ "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"}