Aggiornare/modificare Wholesale Pricing tramite API
Aggiorna una regola Wholesale Pricing esistente tramite l'API pubblica, con il riferimento completo del corpo della richiesta.
Questo documento spiega come aggiornare una regola Wholesale Pricing esistente tramite l’API pubblica.
1. Endpoint
Sezione intitolata “1. Endpoint”Per aggiornare un record Wholesale Pricing esistente, usa il seguente endpoint:
PUT https://wholesale.samita.io/api/v1/wholesale-pricings/{id}{id}è l’ID del record Wholesale Pricing- L’ID si trova nell’interfaccia dell’app (senza il simbolo «#»)
- Esempio di riferimento:

Esempio:
Sezione intitolata “Esempio:”PUT https://wholesale.samita.io/api/v1/wholesale-pricings/12. 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”_ I dati usati per aggiornare Wholesale Pricing devono essere inviati in formato JSON. Un esempio di struttura JSON è riportato alla fine di questo documento.
_ Nella richiesta servono solo i campi da aggiornare. Non è obbligatorio inviare tutti i campi, come invece avviene con il metodo API di creazione.
_ I campi non specificati restano invariati
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" }}c. title
Sezione intitolata “c. title”- Il nome usato per identificare il record Wholesale Pricing
- Facoltativo nell’API di aggiornamento
- Deve essere una stringa
- Lunghezza massima: 255 caratteri
d. status
Sezione intitolata “d. status”- Definisce se il record è attivo oppure no
- Facoltativo nell’API di aggiornamento
- Accetta solo i seguenti valori:
| Valore | Descrizione |
|---|---|
true |
La regola di prezzo è attiva |
false |
La regola di prezzo non è attiva |
e. apply_customer
Sezione intitolata “e. apply_customer”Definisce quali clienti possono usufruire di questa regola di prezzo.
Struttura:
"apply_customer": { "type": "all", "tags": []}type
Valori accettati:
allloggednon-loggedcustomer-tags
tags
- Obbligatorio solo quando
type == customer-tags - Deve essere un array separato da virgole
- Esempio:
["wholesale","b2b"]
f. exclude_customer
Sezione intitolata “f. 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 - Esempio:
["vip","wholesale"]
g. apply_product (obbligatorio)
Sezione intitolata “g. 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
Gli altri campi sono obbligatori in base al tipo selezionato:
product_ids→ obbligatorio setype == productsproduct_tags→ obbligatorio setype == product-tagscollection_ids→ obbligatorio setype == collections
apply_for_variants
- Valori accettati:
trueofalse - Valore predefinito:
false
h. exclude_product
Sezione intitolata “h. exclude_product”Definisce i prodotti da escludere dalla regola.
Struttura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}Tipi accettati:
noneproductscollections
i. discount_for_variants
Sezione intitolata “i. discount_for_variants”Si usa quando gli sconti sono configurati 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 contiene:
id– ID variantediscount_groups– Array di configurazioni di sconto
Regole di discount_groups
- Se
apply_customer.typeèall,loggedonon-logged
→ è 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
j. apply_market (obbligatorio)
Sezione intitolata “j. 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"]
k. discount_group
Sezione intitolata “k. 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"}Regole:
typedeve essere uno tra:percentamountfixed-amount
value- Deve essere maggiore di 0
- Se type è
percent, il valore deve essere inferiore a 100
l. active_date
Sezione intitolata “l. 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-15T10:00:00", "end_at": "2026-01-15T10:00:00"}types
- Facoltativo
- Valori accettati:
start_date,end_date - 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 Update
- Ogni chiave API può avere le autorizzazioni View, Create, Update e Delete
- Questa API richiede l’autorizzazione Update
- Viene restituito anche quando l’ID fornito non esiste
429 – Too Many Requests
Limite di frequenza superato:
- Massimo 1 richiesta ogni 5 minuti
- Massimo 50 richieste al giorno
b. Risposta di successo
Sezione intitolata “b. Risposta di successo”200 – API Success
- Record Wholesale Pricing aggiornato correttamente
- Risposta restituita in formato JSON
Esempio di risposta 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_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}