Исходный код tbank.special_accounts.models
from __future__ import annotations
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from tbank.core.models import Rubles
from tbank.special_accounts.enums import EtpArrestStatus
[документация]
class SpecialAccountModel(BaseModel):
"""Базовая модель домена: snake_case в Python, camelCase на проводе."""
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra="ignore",
)
[документация]
class Recipient(SpecialAccountModel):
inn: str
name: Optional[str] = None
account: Optional[str] = None
[документация]
class Bank(SpecialAccountModel):
bik: Optional[str] = None
cor_account: Optional[str] = None
name: Optional[str] = None
[документация]
class Etp(SpecialAccountModel):
"""Списание по картотеке ЭТП / за нарушение контракта."""
id: str
amount: Rubles
currency: str
status: EtpArrestStatus
date: datetime
payed_amount: Rubles
sender_inn: str
recipient: Recipient
bank: Bank
external_id: Optional[str] = None
payment_purpose: Optional[str] = None
office_name: Optional[str] = None
[документация]
class Arrest(SpecialAccountModel):
"""Арест средств на специальном счёте."""
id: str
amount: Rubles
currency: str
status: EtpArrestStatus
date: datetime
unblock_date: datetime
external_id: Optional[str] = None
circumstances: Optional[str] = None
office_name: Optional[str] = None
[документация]
class ArrestList(SpecialAccountModel):
sum: Rubles
values: Optional[List[Arrest]] = None
[документация]
class OperationsResponse(SpecialAccountModel):
"""Операции по специальному счёту: аресты, картотеки ЭТП, списания."""
arrests: ArrestList
etp_fees: Optional[List[Etp]] = Field(default=None, alias="etpFees")
contract_breaches: Optional[List[Etp]] = None