--- title: "Paginacja" source: https://docs.senuto.com/types/pagination --- --- title: Paginacja sidebarTitle: Paginacja ----------------------- # Paginacja Endpointy zwracające listę (tablicę w polu `data`) stronicują wyniki. Rozmiar strony i numer strony sterujesz parametrami żądania **`limit`** i **`page`**, a metadane bieżącego wycinka znajdziesz w polu **`pagination`** odpowiedzi. > **Informacja:** > Koperta paginacji jest **spójna w całym API** i została potwierdzona na żywym produkcyjnym API (`api.senuto.com`) na kilkudziesięciu endpointach. Akcje zwracające pojedynczy obiekt (np. dashboardy, wykresy) **nie zawierają** pola `pagination`. ## Parametry żądania ```ts type PaginationParams = { /** * Rozmiar strony — liczba wierszy w `data`. Nieujemna liczba całkowita. * Maksimum zależy od endpointu (często `maxLimit = 100`). * @default 10 */ limit?: number; /** * Numer strony (liczony od 1). Nieujemna liczba całkowita. * @default 1 */ page?: number; } export default PaginationParams ``` > **Ostrzeżenie:** > `limit` i `page` są opcjonalne, ale walidowane — np. przy wartościach spoza dozwolonego zakresu endpoint zwróci `418`. W raportach Bazy słów kluczowych oba pola bywają przyjmowane, lecz **bez efektu** (akcja zwraca pojedynczy obiekt) — sprawdzaj stronę konkretnego endpointu. ## Pole `pagination` w odpowiedzi ```ts type Pagination = { /** Łączna liczba stron dla bieżących kryteriów */ page_count: number; /** Numer bieżącej strony */ current_page: number; /** Czy istnieje kolejna strona */ has_next_page: boolean; /** Czy istnieje poprzednia strona */ has_prev_page: boolean; /** Łączna liczba wierszy spełniających kryteria (przed stronicowaniem) */ count: number; /** Rozmiar strony użyty w tym żądaniu */ limit: number; } export default Pagination ``` > **Uwaga:** > **Pułapki typów.** W części endpointów `pagination.count` bywa zwracane jako **string** (np. `"94"`), a nie liczba — np. w Monitoringu (`rank_tracker`). Rzutuj wartość po stronie klienta. Sporadycznie `page_count` bywa niespójne przy `count: 0` (np. `1` zamiast `0`) — traktuj `has_next_page` jako źródło prawdy o kolejnej stronie. ## Przykład ```json filename="fragment odpowiedzi" { "success": true, "data": [ /* wiersze bieżącej strony */ ], "pagination": { "page_count": 97041, "current_page": 1, "has_next_page": true, "has_prev_page": false, "count": 291121, "limit": 10 } } ``` ## Iterowanie po wszystkich stronach Zwiększaj `page` aż `has_next_page` będzie `false`. Wzorzec: ```jsonc filename="pętla stronicowania (pseudokod)" // page = 1 // dopóki true: // wyślij żądanie z { ...params, page, limit } // przetwórz odpowiedź.data // jeśli odpowiedź.pagination.has_next_page == false → przerwij // page += 1 ``` > **Informacja:** > Aby ograniczyć liczbę żądań, ustaw `limit` na maksimum wspierane przez endpoint (często `100`). Zwróć uwagę na limity konta — patrz [Limity zapytań](/rate-limits).