async def METHOD_NAME(
    app: web.Application,
    api_key: str,
    api_secret: str,
    method: str,
    path: str,
    return_type_creator: Callable[..., _T],
) -> list[_T]:
    page = 1
    objs = []
    while (
        response := cast(
            dict[str, Any],
            await _request(
                app, api_key, api_secret, method, path, params={"page": page}
            ),
        )
    ) and response.get("items"):
        log.debug(
            "called %s [%d/%d], received %d objects",
            path,
            page,
            ceil(response.get("total", -1) / response.get("size", 1)),
            len(response.get("items", [])),
        )
        objs += [return_type_creator(d) for d in response.get("items", [])]
        page += 1
    return objs