diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a73d80..940058c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +### v1.16.0 +- Added the `entity_seller_name` parameter to the `property_v2.search` endpoint + ### v1.15.2 - Update `property_v2.search` to fix limit logic bug. diff --git a/parcllabs/__version__.py b/parcllabs/__version__.py index d7bd6a9..781742d 100644 --- a/parcllabs/__version__.py +++ b/parcllabs/__version__.py @@ -1 +1 @@ -VERSION = "1.15.2" +VERSION = "1.16.0" diff --git a/parcllabs/schemas/schemas.py b/parcllabs/schemas/schemas.py index f727850..ec4899d 100644 --- a/parcllabs/schemas/schemas.py +++ b/parcllabs/schemas/schemas.py @@ -101,6 +101,9 @@ class PropertyV2RetrieveParams(BaseModel): owner_name: list[str] | None = Field( default=None, description="List of owner names to filter by" ) + entity_seller_name: list[str] | None = Field( + default=None, description="List of entity seller names to filter by" + ) is_investor_owned: bool | None = Field( default=None, description="Whether to filter by investor owned" ) @@ -169,6 +172,14 @@ def validate_owner_names(cls, v: list[str] | None) -> list[str] | None: return [name.upper() for name in v] return v + @field_validator("entity_seller_name") + @classmethod + def validate_entity_seller_names(cls, v: list[str] | None) -> list[str] | None: + """Validate entity seller names and convert to uppercase.""" + if v is not None: + return [name.upper() for name in v] + return v + @field_validator( "min_record_added_date", "max_record_added_date", diff --git a/parcllabs/services/properties/property_v2.py b/parcllabs/services/properties/property_v2.py index 54a9589..7051eb8 100644 --- a/parcllabs/services/properties/property_v2.py +++ b/parcllabs/services/properties/property_v2.py @@ -412,6 +412,12 @@ def _build_owner_filters(self, params: PropertyV2RetrieveParams) -> dict[str, An if params.owner_name: owner_filters["owner_name"] = [owner_name.upper() for owner_name in params.owner_name] + # Handle entity seller names + if params.entity_seller_name: + owner_filters["entity_seller_name"] = [ + entity_seller_name.upper() for entity_seller_name in params.entity_seller_name + ] + # Handle boolean parameters if params.is_current_owner is not None: owner_filters["is_current_owner"] = self.simple_bool_validator(params.is_current_owner) @@ -482,6 +488,7 @@ def retrieve( max_record_updated_date: str | None = None, is_current_owner: bool | None = None, owner_name: list[str] | None = None, + entity_seller_name: list[str] | None = None, is_investor_owned: bool | None = None, is_owner_occupied: bool | None = None, current_on_market_flag: bool | None = None, @@ -525,6 +532,7 @@ def retrieve( max_record_updated_date: Maximum record updated date to filter by. is_current_owner: Whether to filter by current owner. owner_name: List of owner names to filter by. + entity_seller_name: List of entity seller names to filter by. is_investor_owned: Whether to filter by investor owned. is_owner_occupied: Whether to filter by owner occupied. current_on_market_flag: Whether to filter by current_on_market flag. @@ -569,6 +577,7 @@ def retrieve( max_record_updated_date=max_record_updated_date, is_current_owner=is_current_owner, owner_name=owner_name, + entity_seller_name=entity_seller_name, is_investor_owned=is_investor_owned, is_owner_occupied=is_owner_occupied, current_on_market_flag=current_on_market_flag,