Aktualizacja i edycja cen hurtowych za pomocą API
Zaktualizuj istniejącą regułę Wholesale Pricing przez publiczne API wraz z pełnym opisem treści żądania.
Ten dokument opisuje, jak zaktualizować istniejącą regułę Wholesale Pricing za pomocą publicznego API.
1. Endpoint
Dział zatytułowany „1. Endpoint”Aby zaktualizować istniejący rekord Wholesale Pricing, użyj poniższego endpointu:
PUT https://wholesale.samita.io/api/v1/wholesale-pricings/{id}{id}to identyfikator rekordu Wholesale Pricing- Identyfikator można znaleźć w interfejsie aplikacji (bez symbolu „#”)
- Przykład:

Przykład:
Dział zatytułowany „Przykład:”PUT https://wholesale.samita.io/api/v1/wholesale-pricings/12. 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”_ Dane służące do aktualizacji Wholesale Pricing muszą zostać wysł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. W przeciwieństwie do metody Create nie trzeba wysyłać wszystkich pól.
_ Pola, których nie podano, pozostaną bez zmian
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" }}c. title
Dział zatytułowany „c. title”- Nazwa identyfikująca rekord Wholesale Pricing
- Opcjonalne w API aktualizacji
- Musi być ciągiem znaków
- Maksymalna długość: 255 znaków
d. status
Dział zatytułowany „d. status”- Określa, czy rekord jest aktywny
- Opcjonalne w API aktualizacji
- Akceptuje wyłącznie następujące wartości:
| Wartość | Opis |
|---|---|
true |
Reguła cenowa jest aktywna |
false |
Reguła cenowa jest nieaktywna |
e. apply_customer
Dział zatytułowany „e. apply_customer”Określa, którzy klienci kwalifikują się do tej reguły cenowej.
Struktura:
"apply_customer": { "type": "all", "tags": []}type
Dozwolone wartości:
allloggednon-loggedcustomer-tags
tags
- Wymagane tylko wtedy, gdy
type == customer-tags - Musi być tablicą wartości rozdzielonych przecinkami
- Przykład:
["wholesale","b2b"]
f. exclude_customer
Dział zatytułowany „f. 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 - Przykład:
["vip","wholesale"]
g. apply_product (wymagane)
Dział zatytułowany „g. 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
Pozostałe pola są wymagane w zależności od wybranego typu:
product_ids→ wymagane, jeślitype == productsproduct_tags→ wymagane, jeślitype == product-tagscollection_ids→ wymagane, jeślitype == collections
apply_for_variants
- Dozwolone wartości:
truelubfalse - Wartość domyślna:
false
h. exclude_product
Dział zatytułowany „h. exclude_product”Określa produkty, które mają zostać wykluczone z reguły.
Struktura:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}Dozwolone typy:
noneproductscollections
i. discount_for_variants
Dział zatytułowany „i. discount_for_variants”Używane, gdy rabaty są konfigurowane 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 konfiguracji rabatów
Zasady dla discount_groups
- Jeśli
apply_customer.typema wartośćall,loggedlubnon-logged
→ 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
j. apply_market (wymagane)
Dział zatytułowany „j. 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"]
k. discount_group
Dział zatytułowany „k. 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:
typemusi mieć jedną z wartości:percentamountfixed-amount
value- Musi być większa od 0
- Jeśli type ma wartość
percent, wartość musi być mniejsza niż 100
l. active_date
Dział zatytułowany „l. 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-15T10:00:00", "end_at": "2026-01-15T10:00:00"}types
- Opcjonalne
- Dozwolone wartości:
start_date,end_date - 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 Update
- Każdy klucz API może mieć uprawnienia: View, Create, Update, Delete
- To API wymaga uprawnienia Update
- Zwracane również wtedy, gdy podany identyfikator nie istnieje
429 – Too Many Requests
Przekroczono limit żądań:
- Maksymalnie 1 żądanie na 5 minut
- Maksymalnie 50 żądań dziennie
b. Odpowiedź w przypadku powodzenia
Dział zatytułowany „b. Odpowiedź w przypadku powodzenia”200 – API Success
- Rekord Wholesale Pricing został zaktualizowany
- Odpowiedź jest zwracana w formacie JSON
Przykładowy JSON odpowiedzi:
{ "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_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}