diff --git a/linkedin_api/clients/restli/response.py b/linkedin_api/clients/restli/response.py index 27f0a86..4d5090f 100644 --- a/linkedin_api/clients/restli/response.py +++ b/linkedin_api/clients/restli/response.py @@ -10,6 +10,7 @@ def __init__( start: Optional[int] = None, count: Optional[int] = None, total: Optional[int] = None, + next_page_token: Optional[str] = None, ): self.start = start """ @@ -26,6 +27,12 @@ def __init__( The total number of results available. """ + self.next_page_token = next_page_token + """ + An opaque cursor string for cursor-based pagination, returned by versioned APIs (202404+). + Pass this value as the `pageToken` query parameter to retrieve the next page. + """ + class BaseRestliResponse(BaseResponse): pass diff --git a/linkedin_api/clients/restli/response_formatter.py b/linkedin_api/clients/restli/response_formatter.py index 0f7da7b..0957341 100644 --- a/linkedin_api/clients/restli/response_formatter.py +++ b/linkedin_api/clients/restli/response_formatter.py @@ -74,10 +74,11 @@ def format_response(cls, response: Response) -> CollectionResponse: paging.get("start", None), paging.get("count", None), paging.get("total", None), + paging.get("nextPageToken", None), ) if paging else Paging(), - metadata=getattr(json_data, "metadata", None), + metadata=json_data.get("metadata", None), ) diff --git a/tests/clients/restli/client_test.py b/tests/clients/restli/client_test.py index e397449..079dc7c 100644 --- a/tests/clients/restli/client_test.py +++ b/tests/clients/restli/client_test.py @@ -300,7 +300,7 @@ "checked_headers": {"X-RestLi-Method": RESTLI_METHODS.GET_ALL.value}, "response_properties": { "elements": [{"name": "A"}, {"name": "B"}], - "paging": {"start": 0, "count": 2, "total": 10}, + "paging": {"start": 0, "count": 2, "total": 10, "next_page_token": None}, }, }, ), @@ -336,7 +336,7 @@ "checked_headers": {"X-RestLi-Method": RESTLI_METHODS.FINDER.value}, "response_properties": { "elements": [{"name": "A"}, {"name": "B"}], - "paging": {"start": 0, "count": 2, "total": 10}, + "paging": {"start": 0, "count": 2, "total": 10, "next_page_token": None}, }, }, ),