caller-api-manager/src/CallerApiManager/yandex_fleet_models.py

75 lines
No EOL
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from enum import Enum
from typing import Optional
from pydantic import BaseModel, validator, Field
class WorkStatus(Enum):
WORKING = "working"
NOT_WORKING = "not_working"
FIRED = "fired"
class EmploymentType(str, Enum):
selfemployed = "selfemployed"
park_employee = "park_employee"
individual_entrepreneur = "individual_entrepreneur"
class Account(BaseModel):
balance_limit: str = Field(..., description="Лимит по счету, например: 50")
block_orders_on_balance_below_limit: bool = Field(
False, description="Запрещены ли все заказы при балансе ниже лимита"
)
payment_service_id: str = Field(..., description="ID для платежа, например: 12345")
work_rule_id: Optional[str] = Field(None, description="Идентификатор условия работы, например: bc43tre6ba054dfdb7143ckfgvcby63e")
class OrderProvider(BaseModel):
partner: bool = Field(..., description="Доступны ли заказы от партнера")
platform: bool = Field(..., description="Доступны ли заказы от платформы")
class Profile(BaseModel):
comment: Optional[str] = Field(None, description="Прочее, например: great driver")
feedback: Optional[str] = Field(None, description="Прочее (доступно сотрудникам парка), например: great driver")
fire_date: Optional[str] = Field(None, description="Дата увольнения из парка в формате ISO 8601 без временной зоны, например: 2020-10-28")
hire_date: Optional[str] = Field(None, description="Дата приема в парк в формате ISO 8601 без временной зоны, например: 2020-10-28")
work_status: WorkStatus = Field(..., description="Статус работы водителя: working, not_working, fired")
class FullName(BaseModel):
first_name: str = Field(..., description="Имя, например: Ivan")
last_name: str = Field(..., description="Фамилия, например: Ivanov")
middle_name: Optional[str] = Field(None, description="Отчество, например: Ivanovich")
class DriverLicenseExperience(BaseModel):
total_since_date: str = Field(..., description="Дата начала водительских обязанностей в формате ISO 8601 без временной зоны, например: 1970-01-01")
class DriverLicense(BaseModel):
birth_date: Optional[str] = Field(None, description="Дата рождения в формате ISO 8601 без временной зоны, например: 1975-10-28")
country: Optional[str] = Field(None, description="Страна выдачи водительского удостоверения (трехбуквенный код), например: rus")
expiry_date: Optional[str] = Field(None, description="Дата окончания действия в формате ISO 8601 без временной зоᔊы, например: 2050-10-28")
issue_date: Optional[str] = Field(None, description="Дата выдачи в формате ISO 8601 без временной зоны, например: 2020-10-28")
number: Optional[str] = Field(None, description="Серия и номер водительского удостоверения, например: 070236")
class ContactInfo(BaseModel):
address: Optional[str] = Field(None, description="Адрес, например: Moscow, Ivanovskaya Ul., bld. 40/2, appt. 63")
email: Optional[str] = Field(None, description="Э trueлронная почта, например: example-email@example.com")
phone: Optional[str] = Field(None, description="Номер телефона, например: +79999999999", pattern=r"^\+\d{1,15}$")
class Person(BaseModel):
contact_info: Optional[ContactInfo] = Field(None, description="Контактная информация водителя")
driver_license: Optional[DriverLicense] = Field(None, description="Информация о водительском уд揪тверении")
driver_license_experience: Optional[DriverLicenseExperience] = Field(None, description="Водительский стаж с даты")
employment_type: EmploymentType = Field(..., description="Тип занятости: selfemployed, park_employee, individual_entrepreneur")
full_name: Optional[FullName] = Field(None, description="Полное имя водителя")
tax_identification_number: str = Field(..., min_length=1, description="Идентификационный номер налогоплательщика, например: 7743013902")
class DriverProfile(BaseModel):
account: Optional[Account] = Field(None, description="Счет водителя")
profile: Optional[Profile] = Field(None, description="Профиль водителя")
person: Optional[Person] = Field(None, description="Персональная информация водителя")
order_provider: Optional[OrderProvider] = Field(None, description="Доступность заказов водителем")
car_id: str = Field(..., description="ID машины, например: 12345", min_length=1, max_length=100)