from typing import Any, List, Optional from pydantic import BaseModel, Field class Store(BaseModel): store_id: int = Field(..., alias='storeId') zone_id: int = Field(..., alias='zoneId') type: str class FlatDetails(BaseModel): entrance: Optional[str] floor: Optional[str] door: Optional[str] block: Optional[str] apartment: Optional[str] staircase: Optional[str] intercom: Optional[str] additional_info: Optional[str] = Field(..., alias='additionalInfo') class Address(BaseModel): id: int city: str street: str house_number: str = Field(..., alias='houseNumber') orientation_number: str = Field(..., alias='orientationNumber') latitude: float longitude: float postal_code: str = Field(..., alias='postalCode') display: str stores: List[Store] flat_details: FlatDetails = Field(..., alias='flatDetails') additional_address_details: List[str] = Field(..., alias='additionalAddressDetails') class Destination(BaseModel): id: int name: str type: str access_type: str = Field(..., alias='accessType') location_type: str = Field(..., alias='locationType') delivery_point_provider: Optional[str] = Field(..., alias='deliveryPointProvider') photos: Optional[str] address: Address class Item(BaseModel): product_id: int = Field(..., alias='productId') amount: int sale_id: int = Field(..., alias='saleId') result: str class Cart(BaseModel): status: str cart_id: int = Field(..., alias='cartId') store: Store destination: Destination items: List[Item] class AddItem(BaseModel): source: Optional[str] product_id: Optional[int] = Field(alias='productId') sale_id: Optional[int] = Field(alias='saleId') action_type: Optional[str] = Field(alias='actionType') amount: Optional[int] uuid: Optional[str] class Add(BaseModel): items: Optional[List[AddItem]]