diff --git a/src/gfwapiclient/resources/bulk_downloads/base/models/response.py b/src/gfwapiclient/resources/bulk_downloads/base/models/response.py index 652b53c..9cd4826 100644 --- a/src/gfwapiclient/resources/bulk_downloads/base/models/response.py +++ b/src/gfwapiclient/resources/bulk_downloads/base/models/response.py @@ -95,6 +95,10 @@ class BulkReportItem(ResultItem): Unique identifier (ID) of the bulk report (e.g., `"adbb9b62-5c08-4142-82e0-b2b575f3e058"`). + dataset (Optional[str]): + The dataset used to generate the bulk report (e.g., + `"public-fixed-infrastructure-data:v1.1"`.). + name (Optional[str]): Human-readable name of the bulk report (e.g., `"sar-fixed-infrastructure-data-202409"`). @@ -137,6 +141,7 @@ class BulkReportItem(ResultItem): """ id: Optional[str] = Field(None, alias="id") + dataset: Optional[str] = Field(None, alias="dataset") name: Optional[str] = Field(None, alias="name") file_path: Optional[str] = Field(None, alias="filepath") format: Optional[BulkReportFormat] = Field(None, alias="format") diff --git a/src/gfwapiclient/resources/bulk_downloads/list/models/request.py b/src/gfwapiclient/resources/bulk_downloads/list/models/request.py index fb6b45f..420586e 100644 --- a/src/gfwapiclient/resources/bulk_downloads/list/models/request.py +++ b/src/gfwapiclient/resources/bulk_downloads/list/models/request.py @@ -42,9 +42,15 @@ class BulkReportListParams(RequestParams): status (Optional[BulkReportStatus]): Current status of the bulk report generation process (e.g., `"done"` etc.). + + dataset (Optional[str]): + The dataset used to generate the bulk report (e.g., + `"public-fixed-infrastructure-data:latest"`, + `"public-fixed-infrastructure-data:v1.1"` etc.). """ limit: Optional[int] = Field(99999, ge=0, alias="limit") offset: Optional[int] = Field(0, ge=0, alias="offset") sort: Optional[str] = Field("-createdAt", alias="sort") status: Optional[BulkReportStatus] = Field(None, alias="status") + dataset: Optional[str] = Field(None, alias="dataset") diff --git a/src/gfwapiclient/resources/bulk_downloads/resources.py b/src/gfwapiclient/resources/bulk_downloads/resources.py index ba7f04f..7f76c2c 100644 --- a/src/gfwapiclient/resources/bulk_downloads/resources.py +++ b/src/gfwapiclient/resources/bulk_downloads/resources.py @@ -242,6 +242,7 @@ async def get_all_bulk_reports( offset: Optional[int] = None, sort: Optional[str] = None, status: Optional[Union[BulkReportStatus, str]] = None, + dataset: Optional[str] = None, **kwargs: Any, ) -> BulkReportListResult: """Get all bulk reports created by user or application. @@ -279,6 +280,13 @@ async def get_all_bulk_reports( Allowed values: `"pending"`, `"processing"`, `"done"`, `"failed"`. Example: `"done"`. + dataset (Optional[str], default=None): + Dataset used to generate the bulk report. + Defaults to `None`. + Allowed values: `"public-fixed-infrastructure-data:latest"`, + `"public-fixed-infrastructure-data:v1.1"`. + Example: `"public-fixed-infrastructure-data:latest"`. + **kwargs (Dict[str, Any]): Additional keyword arguments. diff --git a/tests/fixtures/bulk_downloads/bulk_report_item.json b/tests/fixtures/bulk_downloads/bulk_report_item.json index 2293d67..77dcc5e 100644 --- a/tests/fixtures/bulk_downloads/bulk_report_item.json +++ b/tests/fixtures/bulk_downloads/bulk_report_item.json @@ -1,5 +1,6 @@ { "id": "adbb9b62-5c08-4142-82e0-b2b575f3e058", + "dataset": "public-fixed-infrastructure-data:v1.1", "name": "sar-fixed-infrastructure-data-202409", "filepath": "sar_fixed_infrastructure_data_202409.json", "format": "JSON", diff --git a/tests/fixtures/bulk_downloads/bulk_report_list_request_params.json b/tests/fixtures/bulk_downloads/bulk_report_list_request_params.json index 20bade6..202e494 100644 --- a/tests/fixtures/bulk_downloads/bulk_report_list_request_params.json +++ b/tests/fixtures/bulk_downloads/bulk_report_list_request_params.json @@ -2,5 +2,6 @@ "limit": 99999, "offset": 0, "sort": "-createdAt", - "status": "done" + "status": "done", + "dataset": "public-fixed-infrastructure-data:latest" } diff --git a/tests/resources/bulk_downloads/base/models/test_response_models.py b/tests/resources/bulk_downloads/base/models/test_response_models.py index c75bab1..10b88b4 100644 --- a/tests/resources/bulk_downloads/base/models/test_response_models.py +++ b/tests/resources/bulk_downloads/base/models/test_response_models.py @@ -69,6 +69,7 @@ def test_bulk_report_item_deserializes_all_fields( """Test that `BulkReportItem` deserializes all fields correctly.""" bulk_report_item: BulkReportItem = BulkReportItem(**mock_raw_bulk_report_item) assert bulk_report_item.id is not None + assert bulk_report_item.dataset is not None assert bulk_report_item.name is not None assert bulk_report_item.file_path is not None assert bulk_report_item.format is not None @@ -86,6 +87,7 @@ def test_bulk_report_item_deserializes_optional_fields_to_none() -> None: """Test that `BulkReportItem` sets missing optional fields to `None`.""" bulk_report_item: BulkReportItem = BulkReportItem() # type: ignore[call-arg] assert bulk_report_item.id is None + assert bulk_report_item.dataset is None assert bulk_report_item.name is None assert bulk_report_item.file_path is None assert bulk_report_item.format is None diff --git a/tests/resources/bulk_downloads/create/models/test_response_models.py b/tests/resources/bulk_downloads/create/models/test_response_models.py index 5dd47b3..b3440f5 100644 --- a/tests/resources/bulk_downloads/create/models/test_response_models.py +++ b/tests/resources/bulk_downloads/create/models/test_response_models.py @@ -16,6 +16,7 @@ def test_bulk_report_create_item_deserializes_all_fields( **mock_raw_bulk_report_item ) assert bulk_report_item.id is not None + assert bulk_report_item.dataset is not None assert bulk_report_item.name is not None assert bulk_report_item.file_path is not None assert bulk_report_item.format is not None diff --git a/tests/resources/bulk_downloads/detail/models/test_response_models.py b/tests/resources/bulk_downloads/detail/models/test_response_models.py index b034cf9..4ffaa5a 100644 --- a/tests/resources/bulk_downloads/detail/models/test_response_models.py +++ b/tests/resources/bulk_downloads/detail/models/test_response_models.py @@ -16,6 +16,7 @@ def test_bulk_report_detail_item_deserializes_all_fields( **mock_raw_bulk_report_item ) assert bulk_report_item.id is not None + assert bulk_report_item.dataset is not None assert bulk_report_item.name is not None assert bulk_report_item.file_path is not None assert bulk_report_item.format is not None diff --git a/tests/resources/bulk_downloads/list/models/test_request_models.py b/tests/resources/bulk_downloads/list/models/test_request_models.py index 43bf184..5cb4ea8 100644 --- a/tests/resources/bulk_downloads/list/models/test_request_models.py +++ b/tests/resources/bulk_downloads/list/models/test_request_models.py @@ -18,4 +18,5 @@ def test_bulk_report_list_request_params_serializes_all_fields( assert bulk_report_list_request_params.offset is not None assert bulk_report_list_request_params.sort is not None assert bulk_report_list_request_params.status is not None + assert bulk_report_list_request_params.dataset is not None assert bulk_report_list_request_params.to_query_params() is not None diff --git a/tests/resources/bulk_downloads/list/models/test_response_models.py b/tests/resources/bulk_downloads/list/models/test_response_models.py index b379487..303b2bc 100644 --- a/tests/resources/bulk_downloads/list/models/test_response_models.py +++ b/tests/resources/bulk_downloads/list/models/test_response_models.py @@ -16,6 +16,7 @@ def test_bulk_report_list_item_deserializes_all_fields( **mock_raw_bulk_report_item ) assert bulk_report_list_item.id is not None + assert bulk_report_list_item.dataset is not None assert bulk_report_list_item.name is not None assert bulk_report_list_item.file_path is not None assert bulk_report_list_item.format is not None