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ę

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.


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:

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

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

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

  • 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

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

Struktura:

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

type

Dozwolone wartości:

  • all
  • logged
  • non-logged
  • customer-tags

tags

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

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

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

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

  • product_ids → wymagane, jeśli type == products
  • product_tags → wymagane, jeśli type == product-tags
  • collection_ids → wymagane, jeśli type == collections

apply_for_variants

  • 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": []
}

Dozwolone typy:

  • none
  • products
  • collections

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

Każdy wariant zawiera:

  • id – identyfikator wariantu
  • discount_groups – tablica konfiguracji rabatów

Zasady dla discount_groups

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

  • 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"]

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:

  • type musi mieć jedną z wartości:
    • percent
    • amount
    • fixed-amount
  • value
    • Musi być większa od 0
    • Jeśli type ma wartość percent, wartość musi być mniejsza niż 100

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

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

Czy to było pomocne?