77from pydantic import Field as FieldInfo
88
99from .._models import BaseModel
10- from .entity_beneficial_owner import EntityBeneficialOwner
1110from .entity_supplemental_document import EntitySupplementalDocument
1211
1312__all__ = [
1413 "Entity" ,
1514 "Corporation" ,
1615 "CorporationAddress" ,
16+ "CorporationBeneficialOwner" ,
17+ "CorporationBeneficialOwnerIndividual" ,
18+ "CorporationBeneficialOwnerIndividualAddress" ,
19+ "CorporationBeneficialOwnerIndividualIdentification" ,
1720 "GovernmentAuthority" ,
1821 "GovernmentAuthorityAddress" ,
1922 "GovernmentAuthorityAuthorizedPerson" ,
@@ -61,6 +64,108 @@ class CorporationAddress(BaseModel):
6164 """The ZIP code of the address."""
6265
6366
67+ class CorporationBeneficialOwnerIndividualAddress (BaseModel ):
68+ """The person's address."""
69+
70+ city : Optional [str ] = None
71+ """The city, district, town, or village of the address."""
72+
73+ country : str
74+ """The two-letter ISO 3166-1 alpha-2 code for the country of the address."""
75+
76+ line1 : str
77+ """The first line of the address."""
78+
79+ line2 : Optional [str ] = None
80+ """The second line of the address."""
81+
82+ state : Optional [str ] = None
83+ """
84+ The two-letter United States Postal Service (USPS) abbreviation for the US
85+ state, province, or region of the address.
86+ """
87+
88+ zip : Optional [str ] = None
89+ """The ZIP or postal code of the address."""
90+
91+
92+ class CorporationBeneficialOwnerIndividualIdentification (BaseModel ):
93+ """A means of verifying the person's identity."""
94+
95+ method : Literal [
96+ "social_security_number" , "individual_taxpayer_identification_number" , "passport" , "drivers_license" , "other"
97+ ]
98+ """A method that can be used to verify the individual's identity.
99+
100+ - `social_security_number` - A social security number.
101+ - `individual_taxpayer_identification_number` - An individual taxpayer
102+ identification number (ITIN).
103+ - `passport` - A passport number.
104+ - `drivers_license` - A driver's license number.
105+ - `other` - Another identifying document.
106+ """
107+
108+ number_last4 : str
109+ """
110+ The last 4 digits of the identification number that can be used to verify the
111+ individual's identity.
112+ """
113+
114+ if TYPE_CHECKING :
115+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
116+ # value to this field, so for compatibility we avoid doing it at runtime.
117+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
118+
119+ # Stub to indicate that arbitrary properties are accepted.
120+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
121+ # `getattr(obj, '$type')`
122+ def __getattr__ (self , attr : str ) -> object : ...
123+ else :
124+ __pydantic_extra__ : Dict [str , object ]
125+
126+
127+ class CorporationBeneficialOwnerIndividual (BaseModel ):
128+ """Personal details for the beneficial owner."""
129+
130+ address : CorporationBeneficialOwnerIndividualAddress
131+ """The person's address."""
132+
133+ date_of_birth : date
134+ """The person's date of birth in YYYY-MM-DD format."""
135+
136+ identification : CorporationBeneficialOwnerIndividualIdentification
137+ """A means of verifying the person's identity."""
138+
139+ name : str
140+ """The person's legal name."""
141+
142+
143+ class CorporationBeneficialOwner (BaseModel ):
144+ id : str
145+ """The identifier of this beneficial owner."""
146+
147+ company_title : Optional [str ] = None
148+ """This person's role or title within the entity."""
149+
150+ individual : CorporationBeneficialOwnerIndividual
151+ """Personal details for the beneficial owner."""
152+
153+ prongs : List [Literal ["ownership" , "control" ]]
154+ """Why this person is considered a beneficial owner of the entity."""
155+
156+ if TYPE_CHECKING :
157+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
158+ # value to this field, so for compatibility we avoid doing it at runtime.
159+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
160+
161+ # Stub to indicate that arbitrary properties are accepted.
162+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
163+ # `getattr(obj, '$type')`
164+ def __getattr__ (self , attr : str ) -> object : ...
165+ else :
166+ __pydantic_extra__ : Dict [str , object ]
167+
168+
64169class Corporation (BaseModel ):
65170 """Details of the corporation entity.
66171
@@ -70,7 +175,7 @@ class Corporation(BaseModel):
70175 address : CorporationAddress
71176 """The corporation's address."""
72177
73- beneficial_owners : List [EntityBeneficialOwner ]
178+ beneficial_owners : List [CorporationBeneficialOwner ]
74179 """
75180 The identifying details of anyone controlling or owning 25% or more of the
76181 corporation.
0 commit comments