Source code for ab.api.models.common

"""Shared sub-models reused across multiple response models."""

from __future__ import annotations

from typing import Optional

from pydantic import Field

from ab.api.models.base import ResponseModel


[docs] class Coordinates(ResponseModel): """GPS coordinates — nested in address objects.""" latitude: Optional[float] = Field(None, description="Latitude") longitude: Optional[float] = Field(None, description="Longitude")
[docs] class CompanyAddress(ResponseModel): """Full address object — used by CompanyDetails.address and ContactPrimaryDetails.address.""" id: Optional[int] = Field(None, description="Address integer ID") is_valid: Optional[bool] = Field(None, alias="isValid", description="Whether address is validated") dont_validate: Optional[bool] = Field(None, alias="dontValidate", description="Skip validation flag") property_type: Optional[int] = Field(None, alias="propertyType", description="Property type classification") address1_value: Optional[str] = Field(None, alias="address1Value", description="Primary address line (raw)") address2_value: Optional[str] = Field(None, alias="address2Value", description="Secondary address line (raw)") country_name: Optional[str] = Field(None, alias="countryName", description="Country name") country_code: Optional[str] = Field(None, alias="countryCode", description="ISO country code") country_id: Optional[str] = Field(None, alias="countryId", description="Country UUID") country_skip_zip_code_verification: Optional[bool] = Field( None, alias="countrySkipZipCodeVerification", description="Skip ZIP code verification" ) zip_code_resolving_failed: Optional[bool] = Field( None, alias="zipCodeResolvingFailed", description="ZIP code resolution failed" ) latitude: Optional[float] = Field(None, description="Latitude") longitude: Optional[float] = Field(None, description="Longitude") full_city_line: Optional[str] = Field(None, alias="fullCityLine", description="Formatted city/state/zip line") coordinates: Optional[Coordinates] = Field(None, description="GPS coordinates object") address1: Optional[str] = Field(None, description="Primary address line") address2: Optional[str] = Field(None, description="Secondary address line") city: Optional[str] = Field(None, description="City") state: Optional[str] = Field(None, description="State/province code") zip_code: Optional[str] = Field(None, alias="zipCode", description="ZIP/postal code")