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ę

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.


Aby utworzyć nowy rekord Wholesale Pricing, użyj poniższego endpointu:

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

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.


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

  • Nazwa identyfikująca rekord Wholesale Pricing
  • Musi być ciągiem znaków
  • Maksymalna długość: 255 znaków

  • 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

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ów
  • logged – dotyczy tylko zalogowanych klientów
  • non-logged – dotyczy tylko klientów niezalogowanych
  • 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 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"]

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:

  • all
  • products
  • collections
  • product-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: true lub false
  • Wartość domyślna: false

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.


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 produktu
    • variant_pricing – musi mieć wartość true
    • variants – tablica wariantów

Każdy wariant zawiera:

  • id – identyfikator wariantu
  • discount_groups – tablica ustawień rabatów

Zasady dla discount_groups

  • Jeśli apply_customer.type ma wartość all, logged lub non-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:

  • percent
  • amount
  • fixed-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

Określa, do jakich rynków Shopify ma zastosowanie reguła.

Struktura:

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

type

Dozwolone wartości:

  • all
  • specific-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:


Używane, gdy rabat nie jest konfigurowany osobno dla wariantów.

Wymagane, gdy:

  • apply_product.type nie ma wartości products, LUB
  • apply_product.type == products ORAZ 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.


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 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 – 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

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

Czy to było pomocne?