Zum Inhalt springen
14 Tage kostenlos testen
Deutsch
English简体中文繁體中文ČeštinaBald verfügbarDanskBald verfügbarNederlandsSuomiBald verfügbarFrançaisDeutschItaliano日本語한국어Norsk bokmålBald verfügbarPolskiPortuguêsEspañolSvenskaTürkçe
In Claude öffnen Fragen zu dieser Seite stellenIn ChatGPT öffnen Fragen zu dieser Seite stellen

Volume Pricing über APIs erstellen

Erstellen Sie über die Public API eine neue Volume-Pricing-Regel, einschließlich der vollständigen Referenz zum Request-Body.

Dieses Dokument erklärt, wie Sie mit der Public API eine neue Volume Pricing-Regel erstellen.


Um einen neuen Volume Pricing-Datensatz zu erstellen, verwenden Sie den folgenden Endpunkt:

POST - https://wholesale.samita.io/api/v1/volume-pricings

Mit diesem Endpunkt erstellen Sie eine neue Volume Pricing-Konfiguration.


Alle API-Anfragen müssen die folgenden Pflicht-Header enthalten:

Header Beschreibung Erforderlich
X-SAMITA-API-KEY In der Wholesale-App bereitgestellter API-Schlüssel Ja
X-SAMITA-SHOP-URL Shopify-Shop-Domain im Format xxx.myshopify.com Ja
CONTENT-TYPE Muss application/json sein Ja

Fehlt ein Pflicht-Header, wird die Anfrage abgelehnt.


Die Daten zum Erstellen von Volume Pricing müssen im JSON-Format gesendet werden.
Eine Beispielstruktur im JSON-Format finden Sie am Ende dieses Dokuments.

Beispiel-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"
}
}

  • Der Name zur Identifizierung des Volume Pricing-Datensatzes
  • Muss ein String sein
  • Maximale Länge: 255 Zeichen

  • Legt fest, ob der Datensatz aktiv ist oder nicht
  • Akzeptiert nur die folgenden Werte:
Wert Beschreibung
true Preisregel ist aktiv
false Preisregel ist inaktiv

Legt fest, ob Volume Pricing nach Menge oder nach Betrag berechnet wird.

Akzeptierte Werte:

  • quantity
  • amount

Legt fest, welche Kundschaft für diese Preisregel infrage kommt.

Struktur:

"apply_customer": {
"type": "all",
"tags": []
}

type

Akzeptierte Werte (nur einer davon):

  • all – für die gesamte Kundschaft
  • logged – nur für angemeldete Kundschaft
  • non-logged – nur für Gäste
  • customer-tags – nur für Kundschaft mit bestimmten Tags

tags

  • Nur erforderlich, wenn type == customer-tags
  • Muss ein Array mit kommagetrennten Werten sein
  • Beispiel: ["wholesale","b2b"]

Wenn type nicht customer-tags ist, kann dieses Feld ignoriert werden.


Schließt bestimmte Kundschaft von der Preisregel aus.

Struktur:

"exclude_customer": {
"type": "none",
"tags": []
}

type

  • Standardwert: none
  • Akzeptierte Werte:
Wert Beschreibung
none Keine Kundschaft ausschließen
customer-tags Kundschaft nach Tags ausschließen

tags

  • Nur erforderlich, wenn type == customer-tags
  • Array mit kommagetrennten Werten
  • Beispiel: ["vip","internal"]

Legt fest, auf welche Produkte die Preisregel angewendet wird.

Struktur:

"apply_product": {
"type": "all",
"product_ids": [],
"product_tags": [],
"collection_ids": [],
"apply_for_variants": false
}

type

Akzeptierte Werte:

  • all
  • products
  • collections
  • product-tags

product_ids

  • Nur erforderlich, wenn type == products
  • Kommagetrennte Liste von Produkt-IDs
  • Beispiel: [1,2,3]

product_tags

  • Nur erforderlich, wenn type == product-tags
  • Beispiel: ["tag1","tag2"]

collection_ids

  • Nur erforderlich, wenn type == collections
  • Beispiel: [1,2,3]

apply_for_variants

  • Legt fest, ob Rabatte pro Variante konfiguriert werden können
  • Akzeptierte Werte: true oder false
  • Standardwert: false

Legt Produkte fest, die von der Regel ausgeschlossen werden.

Struktur:

"exclude_product": {
"type": "none",
"product_ids": [],
"collection_ids": []
}

type

  • Standard: none
  • Akzeptierte Werte:
Wert Beschreibung
none Keine Produkte ausschließen
products Bestimmte Produkte ausschließen
collections Bestimmte Kollektionen ausschließen

Weitere Felder sind je nach gewähltem type erforderlich.


Legt die Rabattkonfiguration auf Produkt- und/oder Variantenebene fest.

  • Lassen Sie dieses Feld leer, wenn apply_product.apply_for_variants == false.
  • Wenn apply_product.apply_for_variants == true, ist dieses Feld erforderlich.
  • Die Struktur muss ein Array von Produktkonfigurationen sein.

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 (erforderlich)

  • Produkt-ID.
  • Muss einem vorhandenen Produkt entsprechen.

i.2. duplicated

Gibt an, ob das Produkt mehrere Mengen-/Betragsbereiche hat.

Akzeptierte Werte:

  • true
  • false

Regeln:

  • Bei true: Das Produkt enthält mehrere Mengen-/Betragsbereiche.
  • Bei false: Das Produkt hat nur einen Mengen-/Betragsbereich.

i.3. from_qty / from_amount

Start-Menge oder Start-Betrag des Bereichs.

Regeln:

  • Der erste Eintrag darf leer sein (Standardwert ist 1).
  • Alle folgenden Einträge sind erforderlich.

i.4. to_qty / to_amount

End-Menge oder End-Betrag des Bereichs.

Regeln:

  • Darf leer sein (wird automatisch als from-Wert des nächsten Eintrags minus 1 berechnet).
  • Wenn angegeben, muss er kleiner sein als der from-Wert des nächsten Eintrags.

Beispiele:

  • Eintrag 1: from:0 – to:10 → Eintrag 2: from:11 – to:20
  • Eintrag 1: from:0 – to:leer → Eintrag 2: from:10 – to:leer
  • Eintrag 1: from:leer – to:10 → Eintrag 2: from:11 – to:leer

i.5. discount_groups (Produktebene)

Legt die Rabattkonfiguration für jeden Mengen-/Betragsbereich auf Produktebene fest.

  • Erforderlich, wenn variant_pricing == false.
  • Leer lassen, wenn variant_pricing == true.
  • Muss ein Array von Rabattobjekten sein, passend zum konfigurierten apply_customer.type.

Struktur:

{
"name": "all",
"type": "percent",
"value": "10"
}

+ name

Akzeptierte Werte:

  • all (wenn apply_customer.type == all)
  • logged (wenn apply_customer.type == logged)
  • non-logged (wenn apply_customer.type == non-logged)

Wird ein anderer Wert angegeben, wird er als Kunden-Tag behandelt und muss einem der in apply_customer.tags definierten Tags entsprechen.

+ type

Legt die Rabattart fest.

Akzeptierte Werte:

  • percent – prozentualer Rabatt
  • amount – fester Betrag, der vom Preis abgezogen wird
  • fixed-amount – fester Endpreis

+ value

  • Muss eine Zahl sein
  • Muss größer als 0 sein
  • Bei type == percent muss der Wert kleiner als 100 sein

i.6. variant_pricing

Gibt an, ob der Rabatt auf Variantenebene angewendet wird.

Akzeptierte Werte:

  • true
  • false

i.7. variants

Legt die Rabattkonfiguration auf Variantenebene fest.

  • Erforderlich, wenn variant_pricing == true
  • Leer lassen, wenn variant_pricing == false
  • Muss ein Array von Variantenkonfigurationen sein

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 (erforderlich)

  • Varianten-ID.

+ duplicate

Gibt an, ob die Variante mehrere Mengen-/Betragsbereiche hat.

Akzeptierte Werte:

  • true
  • false

Regeln:

  • Bei true: Die Variante enthält mehrere Bereiche.
  • Bei false: Die Variante hat nur einen Bereich.

+ from_qty / from_amount

Start-Menge oder Start-Betrag.

Regeln:

  • Der erste Eintrag darf leer sein (Standardwert ist 1).
  • Alle folgenden Einträge sind erforderlich.

+ to_qty / to_amount

End-Menge oder End-Betrag.

Regeln:

  • Darf leer sein (wird automatisch als from des nächsten Eintrags minus 1 berechnet).
  • Wenn angegeben, muss er kleiner sein als der from-Wert des nächsten Eintrags.

Beispiele:

  • Eintrag 1: from:0 – to:10 → Eintrag 2: from:11 – to:20
  • Eintrag 1: from:0 – to:leer → Eintrag 2: from:10 – to:leer
  • Eintrag 1: from:leer – to:10 → Eintrag 2: from:11 – to:leer

+ discount_groups (Variantenebene)

Legt die Rabattkonfiguration pro Mengen-/Betragsbereich auf Variantenebene fest.

Regeln:

  • Wenn apply_customer.type Folgendes ist:
    • all
    • logged
    • non-logged
      → Das Array darf nur einen Eintrag enthalten.
  • Wenn apply_customer.type == customer-tags
    → Das Array muss mehrere Einträge enthalten (einen pro Kunden-Tag).

name

Akzeptierte Werte:

  • all
  • logged
  • non-logged

Wird ein anderer Wert angegeben, wird er als Kunden-Tag behandelt und muss einem in apply_customer.tags definierten Tag entsprechen.

type

Akzeptierte Werte:

  • percent
  • amount
  • fixed-amount

value

  • Muss eine Zahl sein
  • Muss größer als 0 sein
  • Bei type == percent muss der Wert kleiner als 100 sein

Legt fest, für welche Shopify-Märkte die Regel gilt.

Struktur:

"apply_market": {
"type": "all",
"handle": []
}

type

Akzeptierte Werte:

  • all
  • specific-market

handle

  • Nur erforderlich, wenn type == specific-market
  • Kommagetrennte Liste von Markt-Handles
  • Beispiel: ["japan","us"]

So finden Sie das Markt-Handle:

  • Gehen Sie in Shopify Admin zu Märkte, klicken Sie auf Weitere Aktionen, wählen Sie Markt-Handles bearbeiten und kopieren Sie das dort angezeigte Handle:


Akzeptierte Werte:

  • variant → Same Variant
  • across_group → Mix Variants
  • within_each_group → Mix Products

Diese entsprechen den Optionen, die in der App verfügbar sind.

Beispiel:

"discount_method": "variant",

Legt Mengen-/Betragsbereiche und Rabattwerte fest.

from_qty / from_amount

to_qty / to_amount

Es gelten dieselben Validierungsregeln wie oben beschrieben.

Akzeptierte „type“-Werte:

  • percent
  • amount
  • fixed-amount

value:

  • Muss > 0 sein
  • Bei percent → muss < 100 sein

Struktur:

"discount_groups": [
{
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"type": "percent",
"value": "10"
}
],

Für Rabattarten und Rabattwerte gelten dieselben Regeln wie oben beschrieben.


Legt Start- und Endzeitpunkt der Preisregel fest.

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

  • Optional
  • Akzeptierte Werte: start_date, end_date
  • Kann einen oder beide Werte enthalten, durch Komma getrennt
  • Beispiel: ["start_date","end_date"]

start_at

  • Erforderlich, wenn types den Wert start_date enthält
  • Format: YYYY-MM-DD HH:MM:SS

end_at

  • Erforderlich, wenn types den Wert end_date enthält
  • Format: YYYY-MM-DD HH:MM:SS

401 – Unauthorized

Mögliche Gründe:

  • Shop-URL fehlt
  • API-Schlüssel fehlt
  • Ungültige Shop-URL
  • Ungültiger API-Schlüssel
  • API-Schlüssel passt nicht zum Shop

403 – This action is unauthorized

  • API-Schlüssel hat keine Berechtigung Create
  • Jeder API-Schlüssel kann die Berechtigungen View, Create, Update und Delete haben
  • Diese API erfordert die Berechtigung Create
  • Wird auch zurückgegeben, wenn eine angegebene ID nicht existiert

429 – Too Many Requests

  • Ratenlimit überschritten
  • Maximal zulässig:
Limit Wert
Anfragehäufigkeit 1 Anfrage pro 5 Minuten
Tageslimit 50 Anfragen pro Tag

200 – API Success

  • Volume Pricing-Datensatz erfolgreich erstellt
  • Antwort wird im JSON-Format zurückgegeben
{
"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"
}

War diese Seite hilfreich?