Przejdź do głównej zawartości
Wypróbuj za darmo przez 14 dni
Polski
Otwórz w Claude Zadaj pytania o tę stronęOtwórz w ChatGPT Zadaj pytania o tę stronę

Aktualizowanie i edytowanie Volume Pricing za pomocą API

Zaktualizuj istniejącą regułę Volume Pricing za pomocą publicznego interfejsu API, wraz z pełnym opisem treści żądania.

W tym dokumencie wyjaśniono, jak zaktualizować istniejącą regułę Volume Pricing za pomocą publicznego interfejsu API.


Aby zaktualizować istniejący rekord Volume Pricing, użyj następującego punktu końcowego:

PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}
  • {id} to ID rekordu Volume Pricing
  • ID można znaleźć w interfejsie aplikacji (bez symbolu „#”)
  • Przykład:

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

Wszystkie żądania API muszą zawierać następujące wymagane nagłówki:

Nagłówek Opis Wymagane
X-SAMITA-API-KEY Klucz API dostępny w aplikacji Wholesale Tak
X-SAMITA-SHOP-URL Domena sklepu Shopify w formacie xxx.myshopify.com Tak
CONTENT-TYPE Musi mieć wartość application/json Tak

Jeśli którykolwiek wymagany nagłówek jest nieobecny, żądanie zostanie odrzucone.


_ Dane użyte do aktualizacji Volume Pricing muszą być wysyłane w formacie JSON. Przykładowa struktura JSON znajduje się na końcu tego dokumentu.

_ W żądaniu wymagane są tylko pola, które mają zostać zaktualizowane. Nie trzeba wysyłać wszystkich pól, jak w metodzie Create API.

_ Pola, których nie określono, pozostaną bez zmian

Przykładowy JSON żądania:

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

  • Nazwa służąca do identyfikacji rekordu Volume Pricing
  • Musi być ciągiem znaków
  • Maksymalna długość: 255 znaków

  • Określa, czy rekord jest aktywny
  • Akceptuje tylko następujące wartości:
Wartość Opis
true Reguła cenowa jest aktywna
false Reguła cenowa jest nieaktywna

Określa, czy ceny zależne od ilości są obliczane na podstawie ilości, czy kwoty.

Akceptowane wartości:

  • quantity
  • amount

Określa, którzy klienci kwalifikują się do tej reguły cenowej.

Struktura:

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

type

Akceptowane wartości (tylko jedna z poniższych):

  • all – dotyczy wszystkich klientów
  • logged – dotyczy tylko zalogowanych klientów
  • non-logged – dotyczy tylko klientów-gości
  • customer-tags – dotyczy tylko klientów z określonymi tagami

tags

  • Wymagane tylko wtedy, gdy type == customer-tags
  • Musi być tablicą wartości rozdzielonych przecinkami
  • Przykład: ["wholesale","b2b"]

Jeśli type nie ma wartości customer-tags, to pole można pominąć.


Służy do wyłączania wybranych klientów z reguły cenowej.

Struktura:

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

type

  • Wartość domyślna: none
  • Akceptowane wartości:
Wartość Opis
none Nie wyłączaj żadnego klienta
customer-tags Wyłącz klientów według tagów

tags

  • Wymagane tylko wtedy, gdy type == customer-tags
  • Tablica wartości rozdzielonych przecinkami
  • Przykład: ["vip","internal"]

Określa, do których produktów będzie stosowana reguła cenowa.

Struktura:

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

type

Akceptowane wartości:

  • all
  • products
  • collections
  • product-tags

product_ids

  • Wymagane tylko wtedy, gdy type == products
  • Lista ID produktów rozdzielona przecinkami
  • Przykład: [1,2,3]

product_tags

  • Wymagane tylko wtedy, gdy type == product-tags
  • Przykład: ["tag1","tag2"]

collection_ids

  • Wymagane tylko wtedy, gdy type == collections
  • Przykład: [1,2,3]

apply_for_variants

  • Określa, czy rabaty można konfigurować dla poszczególnych wariantów
  • Akceptowane wartości: true lub false
  • Wartość domyślna: false

Określa produkty, które mają zostać wyłączone z reguły.

Struktura:

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

type

  • Domyślnie: none
  • Akceptowane wartości:
Wartość Opis
none Nie wyłączaj żadnego produktu
products Wyłącz wybrane produkty
collections Wyłącz wybrane kolekcje

Pozostałe pola są wymagane tylko w zależności od wybranego typu.


Określa konfigurację rabatów na poziomie produktu i/lub wariantu.

  • Zostaw to pole puste, jeśli apply_product.apply_for_variants == false.
  • Jeśli apply_product.apply_for_variants == true, to pole jest wymagane.
  • Struktura musi być tablicą konfiguracji produktów.

Struktura:

"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 (wymagane)

  • ID produktu.
  • Musi odpowiadać istniejącemu produktowi.

i.2. duplicated

Wskazuje, czy produkt ma wiele przedziałów ilości/kwoty.

Akceptowane wartości:

  • true
  • false

Zasady:

  • Jeśli true: produkt ma wiele przedziałów ilości/kwoty.
  • Jeśli false: produkt ma tylko jeden przedział ilości/kwoty.

i.3. from_qty / from_amount

Początkowa ilość lub kwota przedziału.

Zasady:

  • Pierwszy element może być pusty (domyślnie 1).
  • Wszystkie kolejne elementy są wymagane.

i.4. to_qty / to_amount

Końcowa ilość lub kwota przedziału.

Zasady:

  • Może być puste (zostanie automatycznie obliczone jako wartość from następnego elementu minus 1).
  • Jeśli zostanie podane, musi być mniejsze niż wartość from następnego elementu.

Przykłady:

  • Element 1: 0–10 → Element 2: 11–20
  • Element 1: 0–blank → Element 2: 10–blank
  • Element 1: blank–10 → Element 2: 11–blank

i.5. discount_groups (poziom produktu)

Określa konfigurację rabatów dla każdego przedziału ilości/kwoty na poziomie produktu.

  • Wymagane, jeśli variant_pricing == false.
  • Zostaw puste, jeśli variant_pricing == true.
  • Musi być tablicą obiektów rabatów odpowiadających skonfigurowanemu apply_customer.type.

Struktura:

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

+ name

Akceptowane wartości:

  • all (jeśli apply_customer.type == all)
  • logged (jeśli apply_customer.type == logged)
  • non-logged (jeśli apply_customer.type == non-logged)

Jeśli zostanie podana inna wartość, będzie traktowana jako tag klienta i musi odpowiadać jednemu z tagów zdefiniowanych w apply_customer.tags.

+ type

Określa typ rabatu.

Akceptowane wartości:

  • percent – rabat procentowy
  • amount – stała kwota odejmowana od ceny
  • fixed-amount – ostateczna stała cena

+ value

  • Musi być liczbą
  • Musi być większe niż 0
  • Jeśli type == percent, wartość musi być mniejsza niż 100

i.6. variant_pricing

Wskazuje, czy rabat jest stosowany na poziomie wariantu.

Akceptowane wartości:

  • true
  • false

i.7. variants

Określa konfigurację rabatów na poziomie wariantu.

  • Wymagane, jeśli variant_pricing == true
  • Zostaw puste, jeśli variant_pricing == false
  • Musi być tablicą konfiguracji wariantów

Struktura:

{
"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 (wymagane)

  • ID wariantu.

+ duplicate

Wskazuje, czy wariant ma wiele przedziałów ilości/kwoty.

Akceptowane wartości:

  • true
  • false

Zasady:

  • Jeśli true: wariant ma wiele przedziałów.
  • Jeśli false: wariant ma tylko jeden przedział.

+ from_qty / from_amount

Początkowa ilość lub kwota.

Zasady:

  • Pierwszy element może być pusty (domyślnie 1).
  • Wszystkie kolejne elementy są wymagane.

+ to_qty / to_amount

Końcowa ilość lub kwota.

Zasady:

  • Może być puste (obliczane automatycznie jako from następnego elementu minus 1).
  • Jeśli zostanie podane, musi być mniejsze niż wartość from następnego elementu.

Przykłady:

  • Element 1: 0–10 → Element 2: 11–20
  • Element 1: 0–blank → Element 2: 10–blank
  • Element 1: blank–10 → Element 2: 11–blank

+ discount_groups (poziom wariantu)

Określa konfigurację rabatów dla każdego przedziału ilości/kwoty na poziomie wariantu.

Zasady:

  • Jeśli apply_customer.type ma wartość:
    • all
    • logged
    • non-logged
      → Tablica musi zawierać tylko jeden element.
  • Jeśli apply_customer.type == customer-tags
    → Tablica musi zawierać wiele elementów (po jednym na każdy tag klienta).

name

Akceptowane wartości:

  • all
  • logged
  • non-logged

Jeśli zostanie podana inna wartość, będzie traktowana jako tag klienta i musi odpowiadać tagowi zdefiniowanemu w apply_customer.tags.

type

Akceptowane wartości:

  • percent
  • amount
  • fixed-amount

value

  • Musi być liczbą
  • Musi być większe niż 0
  • Jeśli type == percent, wartość musi być mniejsza niż 100

Określa, do których rynków Shopify odnosi się reguła.

Struktura:

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

type

Akceptowane wartości:

  • all
  • specific-market

handle

  • Wymagane tylko wtedy, gdy type == specific-market
  • Lista uchwytów rynków rozdzielona przecinkami
  • Przykład: ["japan","us"]

Akceptowane wartości:

  • variant → ten sam wariant
  • across_group → mieszane warianty
  • within_each_group → mieszane produkty

Odpowiadają one opcjom dostępnym w aplikacji.

Przykład:

"discount_method": "variant",

Określa przedziały ilości/kwoty i wartości rabatów.

from_qty / from_amount

to_qty / to_amount

Obowiązują te same zasady walidacji, co opisane powyżej.

Akceptowane wartości “type”:

  • percent
  • amount
  • fixed-amount

value:

  • Musi być > 0
  • Jeśli percent → musi być < 100

Struktura:

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

Zasady są takie same, jak opisano powyżej dla typów i wartości rabatów.


Służy do konfigurowania czasu rozpoczęcia i zakończenia reguły cenowej.

Struktura:

"active_date": {
"types": ["start_date", "end_date"],
"start_at": "2026-01-15 10:00:00",
"end_at": "2026-01-15 10:00:00"
}

types

  • Opcjonalne
  • Akceptowane wartości: start_date, end_date
  • Może zawierać jedną lub obie, rozdzielone przecinkiem
  • Przykład: ["start_date","end_date"]

start_at

  • Wymagane, jeśli types zawiera start_date
  • Format: YYYY-MM-DD HH:MM:SS

end_at

  • Wymagane, jeśli types zawiera end_date
  • Format: YYYY-MM-DD HH:MM:SS

401 – Brak autoryzacji

Możliwe przyczyny:

  • Brak adresu URL sklepu
  • Brak klucza API
  • Nieprawidłowy adres URL sklepu
  • Nieprawidłowy klucz API
  • Klucz API nie pasuje do sklepu

403 – Ta akcja jest nieautoryzowana

  • Klucz API nie ma uprawnienia Update
  • Każdy klucz API może mieć uprawnienia: View, Create, Update, Delete
  • Ten interfejs API wymaga uprawnienia Update
  • Zwracany także wtedy, gdy podane ID nie istnieje

429 – Zbyt wiele żądań

Przekroczono limit żądań:

  • Maksymalnie 1 żądanie na 5 minut
  • Maksymalnie 50 żądań dziennie

200 – Sukces API

  • Rekord Volume Pricing został zaktualizowany pomyślnie
  • Odpowiedź zwracana w formacie JSON

Przykładowy JSON odpowiedzi:

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

Czy to było pomocne?