11from decimal import Decimal
2- from pydantic import ConfigDict , Field
2+ from pydantic import ConfigDict , EmailStr , Field
33from fiscalapi .models .common_models import BaseDto , CatalogDto
44from typing import Literal , Optional
55
@@ -45,3 +45,32 @@ class Product(BaseDto):
4545 populate_by_name = True ,
4646 json_encoders = {Decimal : str }
4747 )
48+
49+
50+
51+ class Person (BaseDto ):
52+ """Modelo persona en FiscalAPI."""
53+
54+ legal_name : Optional [str ] = Field (default = None , alias = "legalName" , description = "Razón social de la persona sin régimen de capital." )
55+ email : Optional [EmailStr ] = Field (default = None , alias = "email" , description = "Correo electrónico de la persona." )
56+ password : Optional [str ] = Field (default = None , alias = "password" , description = "Contraseña para acceder al dashboard." )
57+ capital_regime : Optional [str ] = Field (default = None , alias = "CapitalRegime" , description = "Régimen de capital de la persona." )
58+ sat_tax_regime_id : Optional [Literal ["601" , "603" , "605" , "606" , "607" , "608" , "610" , "611" , "612" , "614" , "615" , "616" , "620" , "621" , "622" , "623" , "624" , "625" , "626" ]] = Field (default = None , alias = "satTaxRegimeId" , description = "Código del régimen fiscal del emisor." )
59+ sat_tax_regime : Optional [CatalogDto ] = Field (default = None , alias = "satTaxRegime" , description = "Código del régimen fiscal expandido." )
60+ sat_cfdi_use_id : Optional [Literal ["G01" , "G02" , "G03" , "I01" , "I02" , "I03" , "I04" , "I05" , "I06" , "I07" , "I08" , "D01" , "D02" , "D03" , "D04" , "D05" , "D06" , "D07" , "D08" , "D09" , "D10" , "S01" , "CP01" , "CN01" ]] = Field (default = None , alias = "satCfdiUseId" , description = "Código de uso del CFDI." )
61+ sat_cfdi_use : Optional [CatalogDto ] = Field (default = None , alias = "cfdiUse" , description = "Código de uso del CFDI expandido." )
62+ user_type_id : Optional [Literal ["T" ,"C" , "U" ]] = Field (default = None , alias = "userTypeId" , description = "Tipo de persona." )
63+ user_type : Optional [CatalogDto ] = Field (default = None , alias = "userType" , description = "Tipo de persona expandido." )
64+ tin : Optional [str ] = Field (default = None , alias = "tin" , description = "RFC del emisor (Tax Identification Number)." )
65+ zip_code : Optional [str ] = Field (default = None , alias = "zipCode" , description = "Código postal del emisor." )
66+ base64_photo : Optional [str ] = Field (default = None , alias = "base64Photo" , description = "Foto de perfil en formato base64." )
67+ tax_password : Optional [str ] = Field (default = None , alias = "taxPassword" , description = "Contraseña de los certificados CSD del emisor." )
68+ available_balance : Optional [Decimal ] = Field (default = None , alias = "availableBalance" , description = "Saldo disponible en la cuenta." )
69+ committed_balance : Optional [Decimal ] = Field (default = None , alias = "committedBalance" , description = "Saldo en tránsito." )
70+ tenant_id : Optional [str ] = Field (default = None , alias = "tenantId" , description = "ID del tenant al que pertenece el emisor." )
71+ tenant : Optional [CatalogDto ] = Field (default = None , alias = "tenant" , description = "Tenant expandido." )
72+
73+ model_config = ConfigDict (
74+ populate_by_name = True ,
75+ json_encoders = {Decimal : str }
76+ )
0 commit comments