from interloper.schema import AssetSchema
from pydantic import Field


class ConversionsReport(AssetSchema):
    """
    The Conversions report provides insights on conversion events tracked within campaigns.
    It includes key metrics such as the amount of conversions, conversion time, currency, IP geolocation data,
    media information, order details, and user device information such as browser, device, and operating system.
    """

    agent_id: int = Field(description="Agent ID")
    amount: str = Field(description="Amount")
    camp_id: int = Field(description="Campaign ID")
    camp_title: str = Field(description="Campaign Title")
    cart_id: int = Field(description="Cart ID")
    click_ref_id: int = Field(description="Click Reference ID")
    click_stamp: int = Field(description="Click Stamp")
    coid: int = Field(description="COID")
    company_name: str = Field(description="Company Name")
    conversion_time: int = Field(description="Conversion Time")
    currency: str = Field(description="Currency")
    id: int = Field(description="ID")
    ip_city: str = Field(description="IP City")
    ip_country_geoname_id: int = Field(description="IP Country Geoname ID")
    ip_country_iso_code: str = Field(description="IP Country ISO Code")
    ip_country_names_de: str = Field(description="IP Country Names (German)")
    ip_country_names_en: str = Field(description="IP Country Names (English)")
    ip_country_names_es: str = Field(description="IP Country Names (Spanish)")
    ip_country_names_fr: str = Field(description="IP Country Names (French)")
    ip_country_names_ja: str = Field(description="IP Country Names (Japanese)")
    ip_country_names_pt_br: str = Field(description="IP Country Names (Portuguese - Brazil)")
    ip_country_names_ru: str = Field(description="IP Country Names (Russian)")
    ip_country_names_zh_cn: str = Field(description="IP Country Names (Chinese - Simplified)")
    leaddata: str = Field(description="Lead Data")
    media_id: int = Field(description="Media ID")
    media_url: int = Field(description="Media URL")
    medianame: str = Field(description="Media Name")
    order_id: str = Field(description="Order ID")
    price: str = Field(description="Price")
    pricevariable: str = Field(description="Price Variable")
    reject_reason: int = Field(description="Reject Reason")
    result: str = Field(description="Result")
    sensitive_data: int = Field(description="Sensitive Data")
    stamp: str = Field(description="Stamp")
    status: str = Field(description="Status")
    user_agent: str = Field(description="User Agent")
    user_browser: int = Field(description="User Browser")
    user_device: int = Field(description="User Device")
    user_os: int = Field(description="User OS")
