Skapa Volume Pricing med API:er
Skapa en ny Volume Pricing-regel via det publika API:et, inklusive fullständig referens för begärandekroppen.
Det här dokumentet förklarar hur du skapar en ny Volume Pricing-regel med det publika API:et.
1. Slutpunkt
Section titled “1. Slutpunkt”Om du vill skapa en ny Volume Pricing-post använder du följande slutpunkt:
POST - https://wholesale.samita.io/api/v1/volume-pricingsMed den här slutpunkten kan du skapa en ny Volume Pricing-konfiguration.
2. Begäranderubriker
Section titled “2. Begäranderubriker”Alla API-förfrågningar måste innehålla följande obligatoriska rubriker:
| Rubrik | Beskrivning | Obligatorisk |
|---|---|---|
X-SAMITA-API-KEY |
API-nyckel som tillhandahålls i appen Wholesale | Ja |
X-SAMITA-SHOP-URL |
Shopify-butikens domän i formatet xxx.myshopify.com | Ja |
CONTENT-TYPE |
Måste vara application/json |
Ja |
Om någon obligatorisk rubrik saknas avvisas förfrågan.
3. Begärandekropp
Section titled “3. Begärandekropp”a. Allmänt format
Section titled “a. Allmänt format”Data som används för att skapa Volume Pricing måste skickas i JSON-format.
Ett exempel på JSON-struktur finns i slutet av det här dokumentet.
Exempel på JSON för begäran:
{ "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 (obligatoriskt)
Section titled “b. title (obligatoriskt)”- Namnet som identifierar Volume Pricing-posten
- Måste vara en sträng
- Maximal längd: 255 tecken
c. status (obligatoriskt)
Section titled “c. status (obligatoriskt)”- Anger om posten är aktiv eller inte
- Godtar bara följande värden:
| Värde | Beskrivning |
|---|---|
true |
Prisregeln är aktiv |
false |
Prisregeln är inaktiv |
d. type (obligatoriskt)
Section titled “d. type (obligatoriskt)”Anger om mängdprissättningen beräknas utifrån antal eller belopp.
Godtagna värden:
quantityamount
e. apply_customer (obligatoriskt)
Section titled “e. apply_customer (obligatoriskt)”Anger vilka kunder som omfattas av den här prisregeln.
Struktur:
"apply_customer": { "type": "all", "tags": []}type
Godtagna värden (endast ett av följande):
all– gäller alla kunderlogged– gäller bara inloggade kundernon-logged– gäller bara gästkundercustomer-tags– gäller bara kunder med vissa taggar
tags
- Krävs bara när
type == customer-tags - Måste vara en kommaseparerad array
- Exempel:
["wholesale","b2b"]
Om type inte är customer-tags kan det här fältet ignoreras.
f. exclude_customer
Section titled “f. exclude_customer”Används för att undanta vissa kunder från prisregeln.
Struktur:
"exclude_customer": { "type": "none", "tags": []}type
- Standardvärde:
none - Godtagna värden:
| Värde | Beskrivning |
|---|---|
none |
Exkludera inga kunder |
customer-tags |
Exkludera kunder via taggar |
tags
- Krävs bara när
type == customer-tags - Kommaseparerad array
- Exempel:
["vip","internal"]
g. apply_product (obligatoriskt)
Section titled “g. apply_product (obligatoriskt)”Anger vilka produkter prisregeln gäller för.
Struktur:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false}type
Godtagna värden:
allproductscollectionsproduct-tags
product_ids
- Krävs bara när
type == products - Kommaseparerad lista med produkt-ID
- Exempel:
[1,2,3]
product_tags
- Krävs bara när
type == product-tags - Exempel:
["tag1","tag2"]
collection_ids
- Krävs bara när
type == collections - Exempel:
[1,2,3]
apply_for_variants
- Avgör om rabatter kan konfigureras per variant
- Godtagna värden:
trueellerfalse - Standardvärde:
false
h. exclude_product
Section titled “h. exclude_product”Anger produkter som ska undantas från regeln.
Struktur:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}type
- Standard:
none - Godtagna värden:
| Värde | Beskrivning |
|---|---|
none |
Exkludera inga produkter |
products |
Exkludera vissa produkter |
collections |
Exkludera vissa kollektioner |
Övriga fält krävs bara beroende på vald type.
i. discount_for_variants
Section titled “i. discount_for_variants”Anger rabattkonfigurationen på produkt- och/eller variantnivå.
- Lämna det här fältet tomt om
apply_product.apply_for_variants == false. - Om
apply_product.apply_for_variants == truekrävs det här fältet. - Strukturen måste vara en array med produktkonfigurationer.
Struktur:
"discount_for_variants": [
{
"id": 8516448190631,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
],
"variant_pricing": true,
"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 (obligatoriskt)
- Produkt-ID.
- Måste motsvara en befintlig produkt.
i.2. duplicated
Anger om produkten har flera antals-/beloppsintervall.
Godtagna värden:
truefalse
Regler:
- Om
true: produkten innehåller flera antals-/beloppsintervall. - Om
false: produkten har bara ett antals-/beloppsintervall.
i.3. from_qty / from_amount
Intervallets start i antal eller belopp.
Regler:
- Det första objektet får vara tomt (standard är 1).
- Alla efterföljande objekt är obligatoriska.
i.4. to_qty / to_amount
Intervallets slut i antal eller belopp.
Regler:
- Får vara tomt (beräknas då automatiskt som nästa objekts
from-värde minus 1). - Om det anges måste det vara lägre än nästa objekts
from-värde.
Exempel:
- Objekt 1: from:0 – to:10 → Objekt 2: from:11 – to:20
- Objekt 1: from:0 – to:tomt → Objekt 2: from:10 – to:tomt
- Objekt 1: from:tomt – to:10 → Objekt 2: from:11 – to:tomt
i.5. discount_groups (produktnivå)
Anger rabattkonfigurationen för varje antals-/beloppsintervall på produktnivå.
- Krävs om
variant_pricing == false. - Lämna tomt om
variant_pricing == true. - Måste vara en array med rabattobjekt som motsvarar den konfigurerade
apply_customer.type.
Struktur:
{ "name": "all", "type": "percent", "value": "10"}+ name
Godtagna värden:
all(omapply_customer.type == all)logged(omapply_customer.type == logged)non-logged(omapply_customer.type == non-logged)
Om något annat värde anges behandlas det som en kundtagg och måste motsvara en av taggarna som definierats i apply_customer.tags.
+ type
Anger rabatttypen.
Godtagna värden:
percent– procentrabattamount– fast belopp som dras av från prisetfixed-amount– slutligt fast pris
+ value
- Måste vara ett tal
- Måste vara större än 0
- Om
type == percentmåste value vara mindre än 100
i.6. variant_pricing
Anger om rabatten tillämpas på variantnivå.
Godtagna värden:
truefalse
i.7. variants
Anger rabattkonfigurationen på variantnivå.
- Krävs om
variant_pricing == true - Lämna tomt om
variant_pricing == false - Måste vara en array med variantkonfigurationer
Struktur:
{ "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 (obligatoriskt)
- Variant-ID.
+ duplicate
Anger om varianten har flera antals-/beloppsintervall.
Godtagna värden:
truefalse
Regler:
- Om
true: varianten innehåller flera intervall. - Om
false: varianten har bara ett intervall.
+ from_qty / from_amount
Start i antal eller belopp.
Regler:
- Det första objektet får vara tomt (standard är 1).
- Alla efterföljande objekt är obligatoriska.
+ to_qty / to_amount
Slut i antal eller belopp.
Regler:
- Får vara tomt (beräknas automatiskt som nästa objekts
fromminus 1). - Om det anges måste det vara lägre än nästa objekts
from-värde.
Exempel:
- Objekt 1: from:0 – to:10 → Objekt 2: from:11 – to:20
- Objekt 1: from:0 – to:tomt → Objekt 2: from:10 – to:tomt
- Objekt 1: from:tomt – to:10 → Objekt 2: from:11 – to:tomt
+ discount_groups (variantnivå)
Anger rabattkonfigurationen per antals-/beloppsintervall på variantnivå.
Regler:
- Om
apply_customer.typeär:allloggednon-logged
→ Måste arrayen innehålla bara ett objekt.
- Om
apply_customer.type == customer-tags
→ Måste arrayen innehålla flera objekt (ett per kundtagg).
name
Godtagna värden:
allloggednon-logged
Om något annat värde anges behandlas det som en kundtagg och måste motsvara en tagg som definierats i apply_customer.tags.
type
Godtagna värden:
percentamountfixed-amount
value
- Måste vara ett tal
- Måste vara större än 0
- Om
type == percentmåste value vara mindre än 100
j. apply_market (obligatoriskt)
Section titled “j. apply_market (obligatoriskt)”Anger vilka Shopify-marknader regeln gäller för.
Struktur:
"apply_market": { "type": "all", "handle": []}type
Godtagna värden:
allspecific-market
handle
- Krävs bara när
type == specific-market - Kommaseparerad lista med marknadshandtag
- Exempel:
["japan","us"]
Så här hittar du marknadshandtaget:
- Gå till avsnittet Marknader på sidan i Shopify-admin > klicka på Fler åtgärder > välj Redigera marknadshandtag > kopiera handtaget som visas där:


k. discount_methods (obligatoriskt)
Section titled “k. discount_methods (obligatoriskt)”Godtagna värden:
variant→ Same Variantacross_group→ Mix Variantswithin_each_group→ Mix Products
Dessa motsvarar alternativen som finns i appen.
Exempel:
"discount_method": "variant",l. discount_group (obligatoriskt)
Section titled “l. discount_group (obligatoriskt)”Anger antals-/beloppsintervall och rabattvärden.
from_qty / from_amount
to_qty / to_amount
Samma valideringsregler som beskrivs ovan.
Godtagna “type”-värden:
percentamountfixed-amount
value:
- Måste vara > 0
- Om percent → måste vara < 100
Struktur:
"discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ],Reglerna är desamma som ovan för rabatttyper och värden.
m. active_date
Section titled “m. active_date”Används för att ange start- och sluttid för prisregeln.
Struktur:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- Valfritt
- Godtagna värden:
start_date,end_date - Kan innehålla ett eller båda, åtskilda med kommatecken
- Exempel:
["start_date","end_date"]
start_at
- Krävs om
typesinnehållerstart_date - Format:
YYYY-MM-DD HH:MM:SS
end_at
- Krävs om
typesinnehållerend_date - Format:
YYYY-MM-DD HH:MM:SS
4. API-svar
Section titled “4. API-svar”a. Felsvar
Section titled “a. Felsvar”401 – Unauthorized
Möjliga orsaker:
- Butikens URL saknas
- API-nyckel saknas
- Ogiltig butiks-URL
- Ogiltig API-nyckel
- API-nyckeln matchar inte butiken
403 – This action is unauthorized
- API-nyckeln saknar behörigheten Create
- Varje API-nyckel kan ha behörigheterna: View, Create, Update, Delete
- Det här API:et kräver behörigheten Create
- Returneras också när ett angivet ID inte finns
429 – Too Many Requests
- Förfrågningsgränsen har överskridits
- Högsta tillåtna:
| Gräns | Värde |
|---|---|
| Förfrågningsfrekvens | 1 förfrågan per 5 minuter |
| Daglig gräns | 50 förfrågningar per dag |
b. Lyckat svar
Section titled “b. Lyckat svar”200 – API Success
- Volume Pricing-posten har skapats
- Svaret returneras i JSON-format
{ "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"}