Tworzenie cen hurtowych za pomocą API
Utwórz nową regułę Wholesale Pricing przez publiczne API wraz z pełnym opisem treści żądania.
Ten dokument opisuje, jak utworzyć nową regułę Wholesale Pricing za pomocą publicznego API.
1. Endpoint
Dział zatytułowany „1. Endpoint”Aby utworzyć nowy rekord Wholesale Pricing, użyj poniższego endpointu:
POST - https://wholesale.samita.io/api/v1/wholesale-pricings2. Nagłówki żądania
Dział zatytułowany „2. Nagłówki żądania”Wszystkie żądania API muszą zawierać następujące wymagane nagłówki:
| Nagłówek | Opis | Wymagany |
|---|---|---|
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 brakuje któregokolwiek z wymaganych nagłówków, żądanie zostanie odrzucone.
3. Treść żądania
Dział zatytułowany „3. Treść żądania”a. Format ogólny
Dział zatytułowany „a. Format ogólny”Dane służące do utworzenia Wholesale Pricing muszą zostać wysłane w formacie JSON.
Przykładowa struktura JSON znajduje się na końcu tego dokumentu.
Przykładowy JSON żądania:
{ "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" }}b. title (wymagane)
Dział zatytułowany „b. title (wymagane)”- Nazwa identyfikująca rekord Wholesale Pricing
- Musi być ciągiem znaków
- Maksymalna długość: 255 znaków
c. status (wymagane)
Dział zatytułowany „c. status (wymagane)”- Określa, czy rekord jest aktywny
- Akceptuje wyłącznie następujące wartości:
| Wartość | Opis |
|---|---|
true |
Reguła cenowa jest aktywna |
false |
Reguła cenowa jest nieaktywna |
d. apply_customer (wymagane)
Dział zatytułowany „d. apply_customer (wymagane)”Określa, którzy klienci kwalifikują się do tej reguły cenowej.
Struktura:
"apply_customer": { "type": "all", "tags": []}type
Dozwolone wartości (tylko jedna z poniższych):
all– dotyczy wszystkich klientówlogged– dotyczy tylko zalogowanych klientównon-logged– dotyczy tylko klientów niezalogowanychcustomer-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ąć.
e. exclude_customer
Dział zatytułowany „e. exclude_customer”Służy do wykluczenia wybranych klientów z reguły cenowej.
Struktura:
"exclude_customer": { "type": "none", "tags": []}type
- Wartość domyślna:
none - Dozwolone wartości:
| Wartość | Opis |
|---|---|
none |
Nie wykluczaj żadnych klientów |
customer-tags |
Wyklucz klientów według tagów |
tags
- Wymagane tylko wtedy, gdy
type == customer-tags - Tablica wartości rozdzielonych przecinkami
- Przykład:
["vip","wholesale"]
f. apply_product (wymagane)
Dział zatytułowany „f. apply_product (wymagane)”Określa, do jakich produktów zostanie zastosowana reguła cenowa.
Struktura:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false}type
Dozwolone wartości:
allproductscollectionsproduct-tags
product_ids
- Wymagane tylko wtedy, gdy
type == products - Lista identyfikatorów produktów rozdzielonych 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ć osobno dla każdego wariantu
- Dozwolone wartości:
truelubfalse - Wartość domyślna:
false
g. exclude_product
Dział zatytułowany „g. exclude_product”Określa produkty, które mają zostać wykluczone z reguły.
Struktura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}type
- Domyślnie:
none - Dozwolone wartości:
| Wartość | Opis |
|---|---|
none |
Nie wykluczaj żadnych produktów |
products |
Wyklucz wybrane produkty |
collections |
Wyklucz wybrane kolekcje |
Pozostałe pola są wymagane tylko w zależności od wybranego typu.
h. discount_for_variants
Dział zatytułowany „h. discount_for_variants”Używane przy stosowaniu rabatów dla poszczególnych wariantów.
- Musi być puste, jeśli
apply_product.apply_for_variants == false - Wymagane, gdy
apply_product.apply_for_variants == true
Przykładowa struktura:
"discount_for_variants": [ { "id": 8516448190631, "variant_pricing": true, "variants": [ { "id": 46747346763943, "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] }]Struktura:
- Tablica produktów
- Każdy produkt zawiera:
id– identyfikator produktuvariant_pricing– musi mieć wartośćtruevariants– tablica wariantów
Każdy wariant zawiera:
id– identyfikator wariantudiscount_groups– tablica ustawień rabatów
Zasady dla discount_groups
- Jeśli
apply_customer.typema wartośćall,loggedlubnon-logged:
→ w tablicy dozwolony jest tylko jeden element - Jeśli
apply_customer.type == customer-tags:
→ można podać wiele grup rabatowych
Pola w discount_groups:
| Pole | Opis |
|---|---|
name |
Musi odpowiadać typowi klienta lub tagowi klienta |
type |
Typ rabatu |
value |
Wartość rabatu |
Dozwolone typy rabatu:
percentamountfixed-amount
Zasady dotyczące wartości:
- Musi być liczbą większą od 0
- Jeśli type ma wartość
percent, wartość musi być mniejsza niż 100
i. apply_market (wymagane)
Dział zatytułowany „i. apply_market (wymagane)”Określa, do jakich rynków Shopify ma zastosowanie reguła.
Struktura:
"apply_market": { "type": "all", "handle": []}type
Dozwolone wartości:
allspecific-market
handle
- Wymagane tylko wtedy, gdy
type == specific-market - Lista uchwytów rynków rozdzielonych przecinkami
- Przykład:
["japan","us"]
Aby uzyskać uchwyt rynku, wykonaj następujące kroki:
- W panelu administracyjnym Shopify przejdź do sekcji Rynki > kliknij Więcej akcji > wybierz Edytuj uchwyty rynków > skopiuj wyświetlony tam uchwyt:


j. discount_group
Dział zatytułowany „j. discount_group”Używane, gdy rabat nie jest konfigurowany osobno dla wariantów.
Wymagane, gdy:
apply_product.typenie ma wartościproducts, LUBapply_product.type == productsORAZ warianty nie są stosowane
Struktura:
"discount_group": { "type": "percent", "value": "10"}Zasady są takie same jak opisane powyżej dla typów i wartości rabatów.
k. active_date
Dział zatytułowany „k. active_date”Służy do ustawienia 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
- Dozwolone wartości:
start_date,end_date - Można podać jedną lub obie, rozdzielone przecinkiem
- Przykład:
["start_date","end_date"]
start_at
- Wymagane, jeśli
typeszawierastart_date - Format:
YYYY-MM-DD HH:MM:SS
end_at
- Wymagane, jeśli
typeszawieraend_date - Format:
YYYY-MM-DD HH:MM:SS
4. Odpowiedź API
Dział zatytułowany „4. Odpowiedź API”a. Odpowiedzi z błędem
Dział zatytułowany „a. Odpowiedzi z błędem”401 – Unauthorized
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 – This action is unauthorized
- Klucz API nie ma uprawnienia Create
- Każdy klucz API może mieć uprawnienia: View, Create, Update, Delete
- To API wymaga uprawnienia Create
- Zwracane również wtedy, gdy podany identyfikator nie istnieje
429 – Too Many Requests
- Przekroczono limit żądań
- Maksymalnie dozwolone:
| Limit | Wartość |
|---|---|
| Częstotliwość żądań | 1 żądanie na 5 minut |
| Limit dzienny | 50 żądań dziennie |
b. Odpowiedź w przypadku powodzenia
Dział zatytułowany „b. Odpowiedź w przypadku powodzenia”200 – API Success
- Rekord Wholesale Pricing został utworzony
- Odpowiedź jest zwracana w formacie 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_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}