Source code for ab.api.endpoints.address

"""Address API endpoints (2 routes)."""

from __future__ import annotations

from typing import TYPE_CHECKING, Optional

if TYPE_CHECKING:
    from ab.api.models.address import AddressIsValidResult

from ab.api.base import BaseEndpoint
from ab.api.route import Route

_IS_VALID = Route(
    "GET", "/address/isvalid", params_model="AddressValidateParams", response_model="AddressIsValidResult"
)
_PROPERTY_TYPE = Route(
    "GET", "/address/propertytype", params_model="AddressPropertyTypeParams", response_model="int"
)


[docs] class AddressEndpoint(BaseEndpoint): """Address validation (ACPortal API)."""
[docs] def validate( self, *, line1: str, city: str, state: str, zip: str ) -> AddressIsValidResult: """GET /address/isvalid Docs: https://ab-sdk.readthedocs.io/en/latest/api/address/validate.html Query params: AddressValidateParams Response model: AddressIsValidResult """ return self._request( _IS_VALID, params=dict(line1=line1, city=city, state=state, zip=zip) )
[docs] def get_property_type( self, *, address1: str, address2: Optional[str] = None, city: str, state: str, zip_code: str, ) -> Optional[int]: """GET /address/propertytype Docs: https://ab-sdk.readthedocs.io/en/latest/api/address/get_property_type.html Query params: AddressPropertyTypeParams """ return self._request( _PROPERTY_TYPE, params=dict( address1=address1, address2=address2, city=city, state=state, zip_code=zip_code ), )