diff --git a/.generator/src/generator/templates/api_client.j2 b/.generator/src/generator/templates/api_client.j2 index 4357a5c46e..a3ff6670a6 100644 --- a/.generator/src/generator/templates/api_client.j2 +++ b/.generator/src/generator/templates/api_client.j2 @@ -350,9 +350,13 @@ class ApiClient: host=host, collection_formats=params["collection_format"], ) - for item in get_attribute_from_path(response, pagination.get("results_path")): + results = get_attribute_from_path(response, pagination.get("results_path")) + for item in results: yield item - if len(get_attribute_from_path(response, pagination.get("results_path"))) < pagination["limit_value"]: + if "cursor_param" in pagination: + if len(results) == 0: + break + elif len(results) < pagination["limit_value"]: break params = self._update_paginated_params(pagination, response) @@ -651,9 +655,13 @@ class AsyncApiClient(ApiClient): host=host, collection_formats=params["collection_format"], ) - for item in get_attribute_from_path(response, pagination.get("results_path")): + results = get_attribute_from_path(response, pagination.get("results_path")) + for item in results: yield item - if len(get_attribute_from_path(response, pagination.get("results_path"))) < pagination["limit_value"]: + if "cursor_param" in pagination: + if len(results) == 0: + break + elif len(results) < pagination["limit_value"]: break params = self._update_paginated_params(pagination, response) diff --git a/src/datadog_api_client/api_client.py b/src/datadog_api_client/api_client.py index 5471b20b3f..683cf866d8 100644 --- a/src/datadog_api_client/api_client.py +++ b/src/datadog_api_client/api_client.py @@ -357,9 +357,13 @@ def call_api_paginated( host=host, collection_formats=params["collection_format"], ) - for item in get_attribute_from_path(response, pagination.get("results_path")): + results = get_attribute_from_path(response, pagination.get("results_path")) + for item in results: yield item - if len(get_attribute_from_path(response, pagination.get("results_path"))) < pagination["limit_value"]: + if "cursor_param" in pagination: + if len(results) == 0: + break + elif len(results) < pagination["limit_value"]: break params = self._update_paginated_params(pagination, response) @@ -659,9 +663,13 @@ async def call_api_paginated( host=host, collection_formats=params["collection_format"], ) - for item in get_attribute_from_path(response, pagination.get("results_path")): + results = get_attribute_from_path(response, pagination.get("results_path")) + for item in results: yield item - if len(get_attribute_from_path(response, pagination.get("results_path"))) < pagination["limit_value"]: + if "cursor_param" in pagination: + if len(results) == 0: + break + elif len(results) < pagination["limit_value"]: break params = self._update_paginated_params(pagination, response)