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.Createsam uzupełniaconsents.legalVersionzShop.Legal.Versioni zawsze wysyłaIdempotency-Key(wygenerowany alboinput.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,OrderIDsw wyniku), więcej niż 20 →CART_TOO_LARGE. StareOrderIDFromReturnURL/Orders.Statusobsługują wyłącznie zamówienia sprzed 3.0. Vouchers.Redeemnie 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
nullablew typach odpowiedzi to wskaźniki.
Klient API (z kluczem)
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):
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-Afterzastę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.
WithTimeoutogranicza 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ń.