Volume Pricing bijwerken of bewerken met API's
Werk een bestaande Volume Pricing-regel bij via de Public API, inclusief de volledige referentie voor de request body.
Dit document legt uit hoe je een bestaande Volume Pricing-regel bijwerkt met de Public API.
1. Endpoint
Section titled “1. Endpoint”Gebruik het volgende endpoint om een bestaand Volume Pricing-record bij te werken:
PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}{id}is de ID van het Volume Pricing-record- Je vindt de ID in de interface van de app (zonder het symbool “#”)
- Voorbeeld ter referentie:

Voorbeeld:
Section titled “Voorbeeld:”PUT https://wholesale.samita.io/api/v1/volume-pricings/12. Request headers
Section titled “2. Request headers”Alle API-requests moeten de volgende vereiste headers bevatten:
| Header | Beschrijving | Vereist |
|---|---|---|
X-SAMITA-API-KEY |
API-sleutel uit de Wholesale-app | Ja |
X-SAMITA-SHOP-URL |
Shopify-shopdomein in het formaat xxx.myshopify.com | Ja |
CONTENT-TYPE |
Moet application/json zijn |
Ja |
Als een vereiste header ontbreekt, wordt het request geweigerd.
3. Request body
Section titled “3. Request body”_ De gegevens voor het bijwerken van Volume Pricing moeten worden verzonden in JSON-formaat. Een voorbeeld van een JSON-structuur staat aan het einde van dit document.
_ In het request zijn alleen de velden nodig die moeten worden bijgewerkt. Het is niet verplicht om alle velden mee te sturen, zoals bij de Create API-methode.
_ Niet-opgegeven velden blijven ongewijzigd
Voorbeeld van request-JSON:
{ "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" }}b. title
Section titled “b. title”- De naam waarmee het Volume Pricing-record wordt geïdentificeerd
- Moet een string zijn
- Maximale lengte: 255 tekens
c. status
Section titled “c. status”- Bepaalt of het record actief is of niet
- Accepteert alleen de volgende waarden:
| Waarde | Beschrijving |
|---|---|
true |
Prijsregel is actief |
false |
Prijsregel is inactief |
d. type
Section titled “d. type”Bepaalt of volume pricing wordt berekend op basis van hoeveelheid of bedrag.
Geaccepteerde waarden:
quantityamount
e. apply_customer
Section titled “e. apply_customer”Bepaalt welke klanten in aanmerking komen voor deze prijsregel.
Structuur:
"apply_customer": { "type": "all", "tags": []}type
Geaccepteerde waarden (slechts een van de volgende):
all– Toepassen op alle klantenlogged– Alleen toepassen op ingelogde klantennon-logged– Alleen toepassen op gastklantencustomer-tags– Alleen toepassen op klanten met specifieke tags
tags
- Alleen vereist als
type == customer-tags - Moet een array zijn met door komma’s gescheiden waarden
- Voorbeeld:
["wholesale","b2b"]
Als type niet customer-tags is, kan dit veld worden genegeerd.
f. exclude_customer
Section titled “f. exclude_customer”Wordt gebruikt om specifieke klanten uit te sluiten van de prijsregel.
Structuur:
"exclude_customer": { "type": "none", "tags": []}type
- Standaardwaarde:
none - Geaccepteerde waarden:
| Waarde | Beschrijving |
|---|---|
none |
Geen enkele klant uitsluiten |
customer-tags |
Klanten uitsluiten op basis van tags |
tags
- Alleen vereist als
type == customer-tags - Array met door komma’s gescheiden waarden
- Voorbeeld:
["vip","internal"]
g. apply_product
Section titled “g. apply_product”Bepaalt op welke producten de prijsregel wordt toegepast.
Structuur:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false },type
Geaccepteerde waarden:
allproductscollectionsproduct-tags
product_ids
- Alleen vereist als
type == products - Lijst met product-ID’s, gescheiden door komma’s
- Voorbeeld:
[1,2,3]
product_tags
- Alleen vereist als
type == product-tags - Voorbeeld:
["tag1","tag2"]
collection_ids
- Alleen vereist als
type == collections - Voorbeeld:
[1,2,3]
apply_for_variants
- Bepaalt of kortingen per variant kunnen worden geconfigureerd
- Geaccepteerde waarden:
trueoffalse - Standaardwaarde:
false
h. exclude_product
Section titled “h. exclude_product”Bepaalt welke producten van de regel worden uitgesloten.
Structuur:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] },type
- Standaard:
none - Geaccepteerde waarden:
| Waarde | Beschrijving |
|---|---|
none |
Geen enkel product uitsluiten |
products |
Specifieke producten uitsluiten |
collections |
Specifieke collecties uitsluiten |
Andere velden zijn alleen vereist afhankelijk van het geselecteerde type.
i. discount_for_variants
Section titled “i. discount_for_variants”Bepaalt de kortingsconfiguratie op product- en/of variantniveau.
- Laat dit veld leeg als
apply_product.apply_for_variants == false. - Als
apply_product.apply_for_variants == true, is dit veld vereist. - De structuur moet een array met productconfiguraties zijn.
Structuur:
"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 (vereist)
- Product-ID.
- Moet overeenkomen met een bestaand product.
i.2. duplicated
Geeft aan of het product meerdere hoeveelheids- of bedragbereiken heeft.
Geaccepteerde waarden:
truefalse
Regels:
- Bij
true: het product bevat meerdere hoeveelheids- of bedragbereiken. - Bij
false: het product heeft maar één hoeveelheids- of bedragbereik.
i.3. from_qty / from_amount
Beginhoeveelheid of beginbedrag van het bereik.
Regels:
- Het eerste item mag leeg zijn (standaard 1).
- Alle volgende items zijn vereist.
i.4. to_qty / to_amount
Eindhoeveelheid of eindbedrag van het bereik.
Regels:
- Mag leeg zijn (wordt automatisch berekend als de
from-waarde van het volgende item min 1). - Indien opgegeven, moet het lager zijn dan de
from-waarde van het volgende item.
Voorbeelden:
- Item 1: 0–10 → Item 2: 11–20
- Item 1: 0–leeg → Item 2: 10–leeg
- Item 1: leeg–10 → Item 2: 11–leeg
i.5. discount_groups (productniveau)
Bepaalt de kortingsconfiguratie voor elk hoeveelheids- of bedragbereik op productniveau.
- Vereist als
variant_pricing == false. - Laat leeg als
variant_pricing == true. - Moet een array zijn met kortingsobjecten die overeenkomen met het geconfigureerde
apply_customer.type.
Structuur:
{ "name": "all", "type": "percent", "value": "10"}+ name
Geaccepteerde waarden:
all(alsapply_customer.type == all)logged(alsapply_customer.type == logged)non-logged(alsapply_customer.type == non-logged)
Als een andere waarde wordt opgegeven, wordt die behandeld als een klanttag en moet die overeenkomen met een van de tags die zijn gedefinieerd in apply_customer.tags.
+ type
Bepaalt het kortingstype.
Geaccepteerde waarden:
percent– Procentuele kortingamount– Vast bedrag dat van de prijs wordt afgetrokkenfixed-amount– Vaste eindprijs
+ value
- Moet een getal zijn
- Moet groter zijn dan 0
- Als
type == percent, moet de waarde lager zijn dan 100
i.6. variant_pricing
Geeft aan of de korting op variantniveau wordt toegepast.
Geaccepteerde waarden:
truefalse
i.7. variants
Bepaalt de kortingsconfiguratie op variantniveau.
- Vereist als
variant_pricing == true - Laat leeg als
variant_pricing == false - Moet een array met variantconfiguraties zijn
Structuur:
{ "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 (vereist)
- Variant-ID.
+ duplicate
Geeft aan of de variant meerdere hoeveelheids- of bedragbereiken heeft.
Geaccepteerde waarden:
truefalse
Regels:
- Bij
true: de variant bevat meerdere bereiken. - Bij
false: de variant heeft maar één bereik.
+ from_qty / from_amount
Beginhoeveelheid of beginbedrag.
Regels:
- Het eerste item mag leeg zijn (standaard 1).
- Alle volgende items zijn vereist.
+ to_qty / to_amount
Eindhoeveelheid of eindbedrag.
Regels:
- Mag leeg zijn (automatisch berekend als de
from-waarde van het volgende item min 1). - Indien opgegeven, moet het lager zijn dan de
from-waarde van het volgende item.
Voorbeelden:
- Item 1: 0–10 → Item 2: 11–20
- Item 1: 0–leeg → Item 2: 10–leeg
- Item 1: leeg–10 → Item 2: 11–leeg
+ discount_groups (variantniveau)
Bepaalt de kortingsconfiguratie per hoeveelheids- of bedragbereik op variantniveau.
Regels:
- Als
apply_customer.typegelijk is aan:allloggednon-logged
→ Moet de array maar één item bevatten.
- Als
apply_customer.type == customer-tags
→ Moet de array meerdere items bevatten (één per klanttag).
name
Geaccepteerde waarden:
allloggednon-logged
Als een andere waarde wordt opgegeven, wordt die behandeld als een klanttag en moet die overeenkomen met een tag die is gedefinieerd in apply_customer.tags.
type
Geaccepteerde waarden:
percentamountfixed-amount
value
- Moet een getal zijn
- Moet groter zijn dan 0
- Als
type == percent, moet de waarde lager zijn dan 100
j. apply_market
Section titled “j. apply_market”Bepaalt op welke Shopify-markten de regel van toepassing is.
Structuur:
"apply_market": { "type": "all", "handle": []}type
Geaccepteerde waarden:
allspecific-market
handle
- Alleen vereist als
type == specific-market - Lijst met markt-handles, gescheiden door komma’s
- Voorbeeld:
["japan","us"]
k. discount_methods
Section titled “k. discount_methods”Geaccepteerde waarden:
variant→ Same Variantacross_group→ Mix Variantswithin_each_group→ Mix Products
Deze komen overeen met de opties die beschikbaar zijn in de app.
Voorbeeld:
"discount_method": "variant",l. discount_group
Section titled “l. discount_group”Bepaalt hoeveelheids- of bedragbereiken en kortingswaarden.
from_qty / from_amount
to_qty / to_amount
Dezelfde validatieregels als hierboven beschreven.
Geaccepteerde waarden voor “type”:
percentamountfixed-amount
value:
- Moet > 0 zijn
- Bij percent → moet < 100 zijn
Structuur:
"discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ],De regels zijn dezelfde als hierboven beschreven voor kortingstypen en -waarden.
m. active_date
Section titled “m. active_date”Wordt gebruikt om de begin- en eindtijd van de prijsregel in te stellen.
Structuur:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- Optioneel
- Geaccepteerde waarden:
start_date,end_date - Kan een of beide bevatten, gescheiden door een komma
- Voorbeeld:
["start_date","end_date"]
start_at
- Vereist als
typesstart_datebevat - Formaat:
YYYY-MM-DD HH:MM:SS
end_at
- Vereist als
typesend_datebevat - Formaat:
YYYY-MM-DD HH:MM:SS
4. API-response
Section titled “4. API-response”a. Foutmeldingen
Section titled “a. Foutmeldingen”401 – Unauthorized
Mogelijke oorzaken:
- Ontbrekende shop-URL
- Ontbrekende API-sleutel
- Ongeldige shop-URL
- Ongeldige API-sleutel
- API-sleutel komt niet overeen met de shop
403 – This action is unauthorized
- API-sleutel heeft geen machtiging Update
- Elke API-sleutel kan de machtigingen View, Create, Update en Delete hebben
- Voor deze API is de machtiging Update nodig
- Wordt ook teruggegeven als de opgegeven ID niet bestaat
429 – Too Many Requests
Limiet voor het aantal requests overschreden:
- Maximaal 1 request per 5 minuten
- Maximaal 50 requests per dag
b. Succesvolle response
Section titled “b. Succesvolle response”200 – API Success
- Volume Pricing-record succesvol bijgewerkt
- Response wordt teruggegeven in JSON-formaat
Voorbeeld van response-JSON:
{ "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"}