# API wersja 3

Wersja 3 w odróżnieniu od poprzednich wersji wprowadza nowy i jednolity sposób stronicowania wyników zapytania.

W tej wersji zostały uwzględnione wszystkie endpointy z poprzednich dwóch wersji.

# Stronicowanie

W wersji 3 wszystkie wyniki zapytań zwracające listę obiektów są dzielone na strony w jednakowy sposób. Zastosowane zostało stronicowanie według tzw. cursor paging. Oznacza to, że każda kolejna strona wymaga podania identyfikatora ostatniego wiersza z poprzedniej strony.

# Przykład

Chcemy pobrać listę czynności wykonanych przez pracowników z zakresu dat 2023-01-01 do 2023-05-31. W tym celu należy wykonać zapytanie inicjujące:

GET /v2/activities?from=2023-01-01&to=2023-05-31

System zwróci pierwszą stronę danych począwszy od zadanej daty początkowej.

{
    "items": [ ... ],
    "paging":
    {
        "firstRowId": 123,
        "lastRowId": 1123,
        "fetched": 1000,
        "calculation":
        {
            "minRowId": 123,
            "maxRowId": 123005,
            "estimatedPages": 123
        }
    }
}

Do kolejnego zapytania należy dołączyć informacje o indeksach rekordów, gdzie pod afterid podstawiamy wartość z pola lastRowId, a pod beforeid wartość z pola maxRowId.

GET /v2/activities?from=2023-01-01&to=2023-05-31&afterid=123&beforeid=123005

Po wykonaniu zapytania otrzymamy następujący wynik:

{
    "items": [ ... ],
    "paging":
    {
        "firstRowId": 1124,
        "lastRowId": 2124,
        "fetched": 1000
    }
}

Kolejne zapytanie powinno wyglądać następująco:

GET /v2/activities?from=2023-01-01&to=2023-05-31&afterid=1124&beforeid=123005

Jak widać parametr beforeid nie zmienia się. Podstawiamy tylko afterid.