Skip to main content
Oficjalne SDK Pythona (≥ 3.10): wersja synchroniczna i asynchroniczna (httpx), modele pydantic v2, mypy --strict. Odpowiada @itemshop/sdk z TypeScript.

Instalacja

Storefront (publiczne, bez sekretów)

Kasa

Strona nigdy nie dotyka danych płatniczych: checkout.create zwraca redirect_url (bramka albo strona statusu dla darmowego zamówienia). SDK dodaje losowy Idempotency-Key i ponawia błędy sieci z tym samym kluczem, więc zerwane połączenie nie utworzy dwóch zamówień. Koszyk ma 1–20 pozycji; dwie lub więcej tworzą jedną grupę płatności (result.group_id, result.order_ids).
Własny klucz (idempotency_key=...) zapisz razem z koszykiem, jeśli ponowienia mają być idempotentne po restarcie procesu; itemshop.new_idempotency_key() generuje poprawny.

Vouchery i widżety

Widżet wyłączony przez właściciela sklepu zwraca puste dane.

Klient (klucz API, po stronie serwera)

Klucz utworzysz w panelu: Ustawienia → Klucze API — nadaj tylko potrzebne uprawnienia. Zobacz API z kluczem.
Zasoby: shops, team, servers, products, payment_methods, blacklist, discounts, vouchers, stats, uploads, orders, payment_errors, site (files, draft, revisions, builds, deployments), templates, agents, skills. Ustawienia i tokeny AI Workspace są tylko dla panelu (klucze API są tam odrzucane), więc nie ma ich w kliencie. Wersja async jest identyczna z await / async for:

Strona: wdrożenie z CI

Błędy

Każdy wyjątek to itemshop.ItemShopError z zawsze ustawionym code (UPPER_SNAKE_CASE): kod z backendu, jeśli był (CART_TOO_LARGE, LEGAL_DOCUMENTS_CHANGED…), inaczej wyprowadzony ze statusu (NOT_FOUND, RATE_LIMITED…), inaczej kod SDK (NETWORK_ERROR, TIMEOUT, CONFIG_ERROR, VALIDATION_FAILED). status wynosi 0, gdy nie było odpowiedzi. Odpowiedzi spoza 2xx rzucają podklasę itemshop.APIStatusError:

Ponowienia i limity czasu

GET oraz zapisy z Idempotency-Key (kasa) są ponawiane po błędach sieci i statusach 408/425/429/500/502/503/504; inne zapisy tylko po 429. Backoff wykładniczy od 300 ms, maks. 5 s, z jitterem, z poszanowaniem Retry-After. Zasady są wspólne dla wszystkich SDK ItemShop.

Webhooki

Backend nie wysyła jeszcze podpisanych webhooków wychodzących (zamówienia trafiają na Discord i do pluginu) — zob. Webhooki. Webhook implementuje planowany schemat Standard Webhooks (webhook-id, webhook-timestamp, webhook-signature: v1,<base64 HMAC-SHA256>), więc możesz pisać kod już dziś.

Modele

Modele żądań i odpowiedzi są w itemshop.models (pydantic v2). Atrybuty to snake_case, format sieciowy zostaje camelCase. Pola nieznane SDK trafiają do model.model_extra, więc nowszy backend nie psuje starszego SDK. model.to_dict() zwraca słownik w formacie sieciowym.

Storefront API

Endpointy pod spodem SDK.

Błędy i limity

Kody błędów i limity zapytań.