Creare Wholesale Pricing tramite API
Crea una nuova regola Wholesale Pricing tramite l'API pubblica, con il riferimento completo del corpo della richiesta.
Questo documento spiega come creare una nuova regola Wholesale Pricing tramite l’API pubblica.
1. Endpoint
Sezione intitolata “1. Endpoint”Per creare un nuovo record Wholesale Pricing, usa il seguente endpoint:
POST - https://wholesale.samita.io/api/v1/wholesale-pricings2. Intestazioni della richiesta
Sezione intitolata “2. Intestazioni della richiesta”Tutte le richieste API devono includere le seguenti intestazioni obbligatorie:
| Intestazione | Descrizione | Obbligatoria |
|---|---|---|
X-SAMITA-API-KEY |
Chiave API fornita nell’app Wholesale | Sì |
X-SAMITA-SHOP-URL |
Dominio del negozio Shopify nel formato xxx.myshopify.com | Sì |
CONTENT-TYPE |
Deve essere application/json |
Sì |
Se manca anche una sola intestazione obbligatoria, la richiesta viene rifiutata.
3. Corpo della richiesta
Sezione intitolata “3. Corpo della richiesta”a. Formato generale
Sezione intitolata “a. Formato generale”I dati usati per creare Wholesale Pricing devono essere inviati in formato JSON.
Un esempio di struttura JSON è riportato alla fine di questo documento.
Esempio di JSON della richiesta:
{ "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 (obbligatorio)
Sezione intitolata “b. title (obbligatorio)”- Il nome usato per identificare il record Wholesale Pricing
- Deve essere una stringa
- Lunghezza massima: 255 caratteri
c. status (obbligatorio)
Sezione intitolata “c. status (obbligatorio)”- Definisce se il record è attivo oppure no
- Accetta solo i seguenti valori:
| Valore | Descrizione |
|---|---|
true |
La regola di prezzo è attiva |
false |
La regola di prezzo non è attiva |
d. apply_customer (obbligatorio)
Sezione intitolata “d. apply_customer (obbligatorio)”Definisce quali clienti possono usufruire di questa regola di prezzo.
Struttura:
"apply_customer": { "type": "all", "tags": []}type
Valori accettati (uno solo tra i seguenti):
all– Applica a tutta la clientelalogged– Applica solo a chi ha effettuato l’accessonon-logged– Applica solo a chi acquista come ospitecustomer-tags– Applica solo a chi ha tag specifici
tags
- Obbligatorio solo quando
type == customer-tags - Deve essere un array separato da virgole
- Esempio:
["wholesale","b2b"]
Se type non è customer-tags, questo campo può essere ignorato.
e. exclude_customer
Sezione intitolata “e. exclude_customer”Serve a escludere clienti specifici dalla regola di prezzo.
Struttura:
"exclude_customer": { "type": "none", "tags": []}type
- Valore predefinito:
none - Valori accettati:
| Valore | Descrizione |
|---|---|
none |
Non escludere nessun cliente |
customer-tags |
Escludi i clienti in base ai tag |
tags
- Obbligatorio solo quando
type == customer-tags - Array separato da virgole
- Esempio:
["vip","wholesale"]
f. apply_product (obbligatorio)
Sezione intitolata “f. apply_product (obbligatorio)”Definisce a quali prodotti viene applicata la regola di prezzo.
Struttura:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false}type
Valori accettati:
allproductscollectionsproduct-tags
product_ids
- Obbligatorio solo quando
type == products - Elenco di ID prodotto separati da virgole
- Esempio:
[1,2,3]
product_tags
- Obbligatorio solo quando
type == product-tags - Esempio:
["tag1","tag2"]
collection_ids
- Obbligatorio solo quando
type == collections - Esempio:
[1,2,3]
apply_for_variants
- Determina se gli sconti possono essere configurati per singola variante
- Valori accettati:
trueofalse - Valore predefinito:
false
g. exclude_product
Sezione intitolata “g. exclude_product”Definisce i prodotti da escludere dalla regola.
Struttura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}type
- Predefinito:
none - Valori accettati:
| Valore | Descrizione |
|---|---|
none |
Non escludere nessun prodotto |
products |
Escludi prodotti specifici |
collections |
Escludi collezioni specifiche |
Gli altri campi sono obbligatori solo in base al tipo selezionato.
h. discount_for_variants
Sezione intitolata “h. discount_for_variants”Si usa quando gli sconti vengono applicati per singola variante.
- Deve essere vuoto se
apply_product.apply_for_variants == false - Obbligatorio quando
apply_product.apply_for_variants == true
Esempio di struttura:
"discount_for_variants": [ { "id": 8516448190631, "variant_pricing": true, "variants": [ { "id": 46747346763943, "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] }]Struttura:
- Array di prodotti
- Ogni prodotto contiene:
id– ID prodottovariant_pricing– Deve esseretruevariants– Array di varianti
Ogni variante include:
id– ID variantediscount_groups– Array di impostazioni di sconto
Regole di discount_groups
- Se
apply_customer.typeèall,loggedonon-logged:
→ nell’array è consentito un solo elemento - Se
apply_customer.type == customer-tags:
→ è possibile fornire più gruppi di sconto
Campi all’interno di discount_groups:
| Campo | Descrizione |
|---|---|
name |
Deve corrispondere al tipo di cliente o al tag cliente |
type |
Tipo di sconto |
value |
Valore dello sconto |
Tipi di sconto accettati:
percentamountfixed-amount
Regole per il valore:
- Deve essere un numero maggiore di 0
- Se type è
percent, il valore deve essere inferiore a 100
i. apply_market (obbligatorio)
Sezione intitolata “i. apply_market (obbligatorio)”Definisce a quali mercati Shopify si applica la regola.
Struttura:
"apply_market": { "type": "all", "handle": []}type
Valori accettati:
allspecific-market
handle
- Obbligatorio solo quando
type == specific-market - Elenco di handle dei mercati separati da virgole
- Esempio:
["japan","us"]
Per trovare l’handle del mercato, procedi così:
- Nell’amministrazione Shopify, vai alla sezione Mercati > fai clic su Altre azioni > scegli Modifica handle dei mercati > copia l’handle visualizzato:


j. discount_group
Sezione intitolata “j. discount_group”Si usa quando lo sconto non è configurato per singola variante.
Obbligatorio quando:
apply_product.typenon èproducts, OPPUREapply_product.type == productsE le varianti non sono applicate
Struttura:
"discount_group": { "type": "percent", "value": "10"}Le regole sono le stesse descritte sopra per i tipi e i valori di sconto.
k. active_date
Sezione intitolata “k. active_date”Serve a configurare l’ora di inizio e di fine della regola di prezzo.
Struttura:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- Facoltativo
- Valori accettati:
start_date,end_date - Può includerne uno o entrambi, separati da virgola
- Esempio:
["start_date","end_date"]
start_at
- Obbligatorio se
typesincludestart_date - Formato:
YYYY-MM-DD HH:MM:SS
end_at
- Obbligatorio se
typesincludeend_date - Formato:
YYYY-MM-DD HH:MM:SS
4. Risposta dell’API
Sezione intitolata “4. Risposta dell’API”a. Risposte di errore
Sezione intitolata “a. Risposte di errore”401 – Unauthorized
Possibili motivi:
- URL del negozio mancante
- Chiave API mancante
- URL del negozio non valido
- Chiave API non valida
- La chiave API non corrisponde al negozio
403 – This action is unauthorized
- La chiave API non ha l’autorizzazione Create
- Ogni chiave API può avere le autorizzazioni View, Create, Update e Delete
- Questa API richiede l’autorizzazione Create
- Viene restituito anche quando un ID fornito non esiste
429 – Too Many Requests
- Limite di frequenza superato
- Massimo consentito:
| Limite | Valore |
|---|---|
| Frequenza delle richieste | 1 richiesta ogni 5 minuti |
| Limite giornaliero | 50 richieste al giorno |
b. Risposta di successo
Sezione intitolata “b. Risposta di successo”200 – API Success
- Record Wholesale Pricing creato correttamente
- Risposta restituita in 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"}