Uwierzytelnianie w API zewnętrznym
Dostęp do API zewnętrznego AMPER: klucz API do odczytu albo logowanie integratora (/external/v1/auth/) z tokenem do odczytu i składania zamówień.
Ostatnia aktualizacja: 26 października 2026
API zewnętrzne przyjmuje dwa rodzaje dostępu. Oba są przypisane do konta w AMPER – API zwraca dane tego konta (klienta) i tylko na nie pozwala.
| Klucz API | Logowanie integratora (token) | |
|---|---|---|
| Co dostajesz | identyfikator UUID od administratora AMPER | login i hasło konta |
| Jak przekazać | parametr ?api_key= w adresie |
nagłówek Authorization: Bearer <token> |
Odczyt danych (GET) |
tak | tak |
Zamówienia (create-order) |
nie | tak |
| Ważność | do daty ustawionej przy kluczu albo do wyłączenia | token kilka minut, potem odświeżenie |
Jeśli integracja tylko czyta katalog (sklep, porównywarka, plik XML), wystarczy klucz API. Jeśli ma składać zamówienia – potrzebny jest login.
Klucz API
Klucz generuje administrator w panelu AMPER (Ustawienia → Klucze API) i przypisuje go do konta klienta. Klucz ma nazwę, datę ważności i może zostać wyłączony.
Klucz przekazujesz w parametrze api_key w adresie każdego zapytania:
GET https://{amper_ws}/external/v1/products/?api_key={api_key}
- Klucz działa tylko dla zapytań
GET. Zamówienia z kluczem API są odrzucane (403). - API zwraca dane klienta, do którego przypisano klucz: jego asortyment, ceny, stany i promocje.
- Wygasły albo wyłączony klucz, a także klucz klienta, którego konto jest nieaktywne, daje odpowiedź
401. Wyłączenie klucza w panelu działa od razu.
Logowanie integratora
Integracja loguje się loginem i hasłem konta w AMPER – zwykle konta klienta w sklepie B2B, dla którego działa. W odpowiedzi dostaje token dostępu (JWT).
POST https://{amper_ws}/external/v1/auth/
Content-Type: application/json
{
"username": "login_konta",
"password": "haslo"
}
Odpowiedź 200 OK:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cC...",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5c...",
"token_type": "Bearer",
"amper-company-assigned": "amper-xyz"
}
Odpowiedź może zawierać też pola techniczne serwera logowania (np. session_state, scope) – integracja ich nie potrzebuje.
| Pole | Opis |
|---|---|
access_token |
token dostępu – przekazuj go w nagłówku Authorization: Bearer <access_token> |
expires_in |
ważność tokena w sekundach |
refresh_token |
token do odświeżenia sesji bez ponownego logowania |
refresh_expires_in |
ważność refresh_token w sekundach |
amper-company-assigned |
identyfikator instalacji AMPER, do której należy konto |
Token z /external/v1/auth/ działa tylko w API zewnętrznym (adresy /external/v1/…). Pozostałe adresy serwera odrzucają go z kodem 403 i komunikatem This access token was issued for the external API and is accepted only by /external/v1/.
Logowanie integratora nie wymaga captchy, dlatego nieudane próby są ograniczone:
- 5 nieudanych prób na godzinę dla jednego loginu,
- 20 nieudanych prób na godzinę z jednego adresu IP.
Po przekroczeniu limitu odpowiedź to 429 (Too many failed sign-in attempts. Try again later.). Udane logowania się nie liczą. Nie ponawiaj logowania w pętli po błędnym haśle – poproś o poprawne dane.
Odświeżenie tokena
Gdy access_token wygaśnie, odśwież go tokenem refresh_token zamiast logować się ponownie:
POST https://{amper_ws}/external/v1/auth/refresh/
Content-Type: application/json
{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5c..."
}
Odpowiedź ma ten sam format co przy logowaniu – nowy access_token i nowy refresh_token. Gdy refresh_token wygasł, odpowiedź to 400 z błędem invalid_grant – wtedy zaloguj się ponownie przez /external/v1/auth/. Ten adres odświeża tylko tokeny wydane przez /external/v1/auth/.
Zalecane postępowanie
- Zaloguj się raz i używaj tokena, dopóki jest ważny. Nie loguj się przed każdym zapytaniem.
- Przed zapytaniem sprawdź, czy token nie wygasł (
expires_in), i w razie potrzeby odśwież go. - Po odpowiedzi
401odśwież token i ponów zapytanie. - Gdy odświeżenie się nie uda (
400), zaloguj się ponownie.
Gotowa implementacja: Przykłady kodu.
Kody odpowiedzi logowania
| Kod | /external/v1/auth/ |
/external/v1/auth/refresh/ |
|---|---|---|
200 |
token wydany | nowy token wydany |
400 |
brak loginu lub hasła | brak refresh_token albo token wygasł lub jest nieprawidłowy (invalid_grant) |
403 |
błędny login lub hasło, konto wyłączone, konto spoza tej instalacji AMPER albo zablokowany adres IP | – |
404 |
logowanie integratora nie jest włączone na tej instalacji – skontaktuj się z działem IT firmy | jak obok |
429 |
przekroczony limit nieudanych prób | – |
Jakie konto i do czego
Odczyt danych (GET) zawsze pokazuje katalog klienta, do którego należy klucz albo login. Do pobrania katalogu konkretnego klienta używaj jego klucza API albo jego loginu.
Przy składaniu zamówień liczy się rodzaj konta:
| Konto | Zamówienia dla |
|---|---|
| konto klienta w sklepie B2B | tego klienta i klientów z nim powiązanych (np. oddziałów) |
| konto integracji ERP (Translator), konto API, administrator | dowolnego klienta |
Zamówienie dla klienta, dla którego konto nie ma uprawnień, jest odrzucane z kodem 403. Szczegóły: Tworzenie zamówienia „create-order”.
Bezpieczeństwo
- Klucz API i login dają dostęp do danych handlowych klienta (ceny, rabaty, promocje), a login – także do składania zamówień. Przechowuj je po stronie serwera – nigdy w kodzie strony www ani aplikacji mobilnej.
- Każda integracja powinna mieć własny klucz albo login. Gdy integracja przestaje działać albo dane wyciekną, administrator wyłącza klucz lub zmienia hasło.
- Łącz się wyłącznie przez HTTPS.
Wcześniejszy sposób logowania
Integracje, które logowały się przez POST /auth/ (logowanie sklepu B2B) i składały zamówienia przez POST /create-order, powinny przejść na POST /external/v1/auth/ i POST /external/v1/create-order. Logowanie sklepu może wymagać captchy, a adres /create-order zostanie wyłączony. Token z /external/v1/auth/ nie działa pod starym adresem /create-order.
Potrzebujesz pomocy? Napisz na support@ampliapps.com albo zadzwoń: +48 85 6000 263.