Skip to main content
github.com/itemshop/sdk-go — bez zależności (tylko net/http), Go ≥ 1.23 (iteratory iter.Seq2). Każda metoda przyjmuje context.Context i zwraca (wynik, error).

Instalacja

Storefront (bez klucza)

  • Checkout.Create sam uzupełnia consents.legalVersion z Shop.Legal.Version i zawsze wysyła Idempotency-Key (wygenerowany albo input.IdempotencyKey), więc ponowienie po zerwanym połączeniu nie utworzy drugiego zamówienia. Token Turnstile jest opcjonalny.
  • Koszyk ma 1–20 pozycji (Items); dwie lub więcej tworzą jedną grupę płatności (GroupID, OrderIDs w wyniku), więcej niż 20 → CART_TOO_LARGE. Stare OrderIDFromReturnURL / Orders.Status obsługują wyłącznie zamówienia sprzed 3.0.
  • Vouchers.Redeem nie jest ponawiany (poza 429).
  • Widżety: sf.Widgets.RecentPurchases, TopSpenders, MonthlyGoal, OnlinePlayers — wyłączone przez właściciela zwracają puste wyniki, nie błąd.
  • Pola nullable w typach odpowiedzi to wskaźniki.

Klient API (z kluczem)

Serwisy: Shops, Servers, Products, PaymentMethods, PaymentErrors, Blacklist, Discounts, Vouchers, Stats, Uploads, Orders oraz ręczne Site, Templates, Workspace, Agents, Skills. Tokeny Workspace wymagają sesji panelu — kluczem API dostaniesz 401/403. Endpoint bez metody: client.Do(ctx, "GET", "/api/v2/…", nil, &out). Pola opcjonalne w typach api.* to wskaźniki — pomocniki itemshop.String/Bool/Float/Int/Ptr.

Błędy

Każdy błąd to *itemshop.Error (w pakiecie storefront ten sam typ):
Kody SDK: BAD_REQUEST, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, CONFLICT, VALIDATION_FAILED, RATE_LIMITED, SERVER_ERROR, NETWORK_ERROR, TIMEOUT, ABORTED… — te same co w SDK TypeScript.

Ponowienia, limity czasu, idempotencja

  • Domyślnie 2 ponowienia (WithMaxRetries), backoff 300 ms·2ⁿ (maks. 5 s) z jitterem; Retry-After zastępuje opóźnienie.
  • GET/HEAD i żądania z Idempotency-Key (Orders.Create, Checkout.Create, itemshop.WithIdempotencyKey) są ponawiane po błędach sieci, timeoutach i 408/425/429/500/502/503/504.
  • Pozostałe zapisy — tylko po 429.
  • WithTimeout ogranicza jedną próbę (domyślnie 30 s); context — całe wywołanie z ponowieniami.
  • Opcje: WithBaseURL (lub $ITEMSHOP_API_BASE), WithHTTPClient, WithUserAgent, WithLocale, WithHeader.

Webhooki

Backend nie wysyła podpisanych webhooków do właścicieli sklepów (powiadomienia idą na Discord — zob. Webhooki), więc SDK nie ma weryfikatora podpisów.

Storefront API

Endpointy pod spodem SDK.

Błędy i limity

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