Przejdź do treści
StayPark Suite · Pomoc
StayPark Suite · Pomoc
Zamknij menu
Szukaj w pomocy Ctrl K
Wprowadzenie Przewodniki Panel - obsługa Portal i aplikacje Wdrożenie i konfiguracja Integracje i API Nowości
Przegląd API i uwierzytelnianie

Przegląd API i uwierzytelnianie

Trzy interfejsy REST StayPark Suite - kto ich używa, jak się uwierzytelnić, jak wygląda koperta odpowiedzi, stronicowanie i limity żądań.

Integrator

Zaktualizowano 2 listopada 2026

Na tej stronie
Podświetlone słowa z wyszukiwania: ()

StayPark Suite udostępnia trzy interfejsy REST. Ten przewodnik zbiera to, co jest w nich wspólne: adresy, uwierzytelnianie, kształt odpowiedzi, stronicowanie i limity. Szczegóły każdej operacji (pola, przykłady, odpowiedzi) są w dokumentacji referencyjnej OpenAPI, opisanej niżej.

Trzy interfejsy

API Adres bazowy Kto z niego korzysta Uwierzytelnianie
Synchronizacja /api/sync/v1 serwer lokalny lokalizacji (kasa) token synchronizacji lokalizacji + identyfikator instalacji; przy operacjach w imieniu pracownika także X-User-Uuid
Aplikacja pracownika /api/employee-app/v1 aplikacja mobilna personelu (kolektory danych) token Sanctum ze zdolnością employee-app (logowanie e-mailem i hasłem)
Aplikacja mobilna klienta /api/mobile-app/v1 aplikacja klienta marki marka w nagłówku X-Brand-Slug; token Sanctum związany z marką (część treści działa bez tokenu)

Adres bazowy poprzedza adres instancji, np. https://<adres panelu>/api/sync/v1. Wszystkie interfejsy przyjmują i zwracają JSON. Wyjątkiem są strumienie plików i PDF-ów.

Gdzie jest dokumentacja referencyjna

Jedynym źródłem kontraktu są pliki OpenAPI 3.0.3 w panelu, w katalogu public/api-docs:

Plik Adres pliku Podgląd w panelu (po zalogowaniu)
sync.yaml https://<adres panelu>/api-docs/sync.yaml https://<adres panelu>/help/api/sync
employee-app.yaml https://<adres panelu>/api-docs/employee-app.yaml https://<adres panelu>/help/api/employee-app
mobile-app.yaml https://<adres panelu>/api-docs/mobile-app.yaml https://<adres panelu>/help/api/mobile-app

Pliki YAML są publiczne - możesz je wczytać do własnego narzędzia (Postman, Insomnia, generator klienta). Podgląd w panelu (Swagger UI) wymaga zalogowania do panelu. Przewodniki w tej sekcji niczego nie dodają do kontraktu: gdy coś się różni, rozstrzyga plik OpenAPI.

Uwierzytelnianie

Koperta odpowiedzi

Wszystkie trzy interfejsy zwracają ten sam kształt odpowiedzi. Powodzenie:

JSON
{ "success": true, "data": { } }

Błąd - także 404 przy strumieniach PDF:

JSON
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "...",
    "errors": { "email": ["..."] }
  }
}

Program kliencki powinien rozpoznawać błąd po error.code, a nie po treści message. Komunikaty są po polsku i mogą się zmieniać. errors występuje przy błędach walidacji. Niektóre kody dokładają własne pola, np. error.required_permission (aplikacja pracownika) albo error.feature i error.field (aplikacja klienta). Pełna lista kodów: Kody błędów.

Nieoczekiwany błąd serwera (500 spoza obsługi operacji) też przychodzi w tej kopercie, z kodem SERVER_ERROR. Szczegóły wyjątku (error.debug) są tylko w trybie debugowania. Traktuj każdą odpowiedź 5xx jako błąd przejściowy, niezależnie od treści.

Pozostałe zasady wspólne:

  • daty i znaczniki czasu w ISO 8601;
  • zasoby wskazuje się przez uuid; numery id są wewnętrzne dla bazy, a stare pola liczbowe (np. item_id) zostały tylko dla zgodności i są oznaczone jako przestarzałe;
  • kwoty: w synchronizacji pola *_minor w groszach, w aplikacji pracownika liczby w złotych, w aplikacji klienta obiekt { "minor": 10000, "amount": "100.00", "formatted": "100,00 zł" }.

Stronicowanie

Listy w API aplikacji pracownika i klienta mają ten sam kształt: data.items i data.pagination z polami current_page, last_page, per_page, total, from, to.

API Parametry per_page
Aplikacja pracownika page, per_page 1-100, domyślnie 25
Aplikacja klienta page, per_page najwyżej 50; domyślna wartość zależy od listy
Synchronizacja bez stron - kursory i batch_limit (1-1000, domyślnie 500) nie dotyczy

Synchronizacja nie stronicuje: pobranie zwraca paczkę zmian i kursory, a kasa pyta dalej, dopóki has_more = true. Opis: API synchronizacji.

Limity żądań

Przekroczenie limitu daje odpowiedź 429 z nagłówkiem Retry-After (liczba sekund do kolejnej próby).

API Limit
Synchronizacja całe API: 600 żądań na minutę na adres IP (ustawienie SYNC_RATE_LIMIT_PER_MINUTE); wybrane operacje mają limit własny 60, 120 albo 240 na minutę, liczony obok ogólnego, każdy własnym licznikiem dla adresu IP (lista)
Aplikacja pracownika całe API: 120 żądań na minutę; logowanie: 5 prób na minutę na parę e-mail + IP; prośby o zamianę zmiany i wydruki PDF: po 30 na minutę (opis)
Aplikacja klienta limit przy każdej grupie operacji, liczony osobno dla konta (np. sklep 120/min, złożenie zamówienia 10/min, zdarzenia treści 240/min); trasy logowania (30, 60 i 10 na minutę) liczą na adres IP, każda własnym licznikiem (lista)

Limit konkretnej operacji jest w jej opisie w dokumentacji referencyjnej. Kod błędu zależy od miejsca, które odmówiło: limit trasy daje HTTP_ERROR, a limit prób w samej operacji (np. odbiór nagrody, kod rabatowy) daje TOO_MANY_REQUESTS albo kod operacji, np. SHOP_TOO_MANY_ATTEMPTS w sklepie czy TOO_MANY_ATTEMPTS przy kodach weryfikacji dwuetapowej w aplikacji pracownika.

Ponawianie żądań

Ponawiaj tylko po braku odpowiedzi, po 5xx i po 429 (po czasie z Retry-After). Odpowiedź 4xx to decyzja serwera - ta sama treść żądania dostanie tę samą odmowę. W aplikacji klienta operacje zmieniające stan zabezpiecz nagłówkiem Idempotency-Key (Aplikacja mobilna klienta).

Powiązane

Brak wyników