Crear Wholesale Pricing con las API
Crea una regla de Wholesale Pricing con la Public API, con la referencia completa del cuerpo de la solicitud.
Este documento explica cómo crear una regla de Wholesale Pricing con la Public API.
1. Endpoint
Sección titulada «1. Endpoint»Para crear un registro de Wholesale Pricing, usa el siguiente endpoint:
POST - https://wholesale.samita.io/api/v1/wholesale-pricings2. 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»a. Formato general
Sección titulada «a. Formato general»Los datos para crear Wholesale Pricing deben enviarse en formato JSON.
Al final de este documento encontrarás un ejemplo de estructura JSON.
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" }}b. title (obligatorio)
Sección titulada «b. title (obligatorio)»- El nombre que identifica el registro de Wholesale Pricing
- Debe ser una cadena de texto
- Longitud máxima: 255 caracteres
c. status (obligatorio)
Sección titulada «c. status (obligatorio)»- 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 |
d. apply_customer (obligatorio)
Sección titulada «d. apply_customer (obligatorio)»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 clientelalogged– Se aplica solo a quienes han iniciado sesiónnon-logged– Se aplica solo a quienes visitan la tienda sin cuentacustomer-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.
e. exclude_customer
Sección titulada «e. 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 - Array separado por comas
- Ejemplo:
["vip","wholesale"]
f. apply_product (obligatorio)
Sección titulada «f. 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
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:
trueofalse - Valor predeterminado:
false
g. exclude_product
Sección titulada «g. exclude_product»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.
h. discount_for_variants
Sección titulada «h. discount_for_variants»Se usa cuando se aplican descuentos 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 incluye:
id– ID de la variantediscount_groups– Array de ajustes de descuento
Reglas de discount_groups
- Si
apply_customer.typeesall,loggedonon-logged:
→ Solo se permite un elemento en el array - 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
i. apply_market (obligatorio)
Sección titulada «i. 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"]
Para obtener el handle de un mercado, sigue estos pasos:
- En el panel de administración de Shopify, ve a la sección Markets > haz clic en More actions > elige Edit Market handles > copia el handle que aparece allí:


j. discount_group
Sección titulada «j. 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"}Las reglas son las mismas que se describen arriba para los tipos y valores de descuento.
k. active_date
Sección titulada «k. 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-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
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 Create
- Cada clave de API puede tener los permisos View, Create, Update y Delete
- Esta API requiere el permiso Create
- También se devuelve cuando un ID indicado no existe
429 – Too Many Requests
- Se superó el límite de solicitudes
- Máximo permitido:
| Límite | Valor |
|---|---|
| Frecuencia de solicitudes | 1 solicitud cada 5 minutos |
| Límite diario | 50 solicitudes al día |
b. Respuesta correcta
Sección titulada «b. Respuesta correcta»200 – API Success
- El registro de Wholesale Pricing se creó correctamente
- La respuesta se devuelve en formato JSON
{ "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_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}