from pydantic import BaseModel, ConfigDict, Field from dmp.ad_reporting.types import AwareDatetime from dmp.audiences.types import FanDataListId from dmp.fandata.enums import AcquisitionChannel class CrmCampaign(BaseModel): model_config = ConfigDict(from_attributes=True, populate_by_name=True) id: str name: str url: str | None acquisition_channel: AcquisitionChannel = Field(alias="acquisitionChannel") fandata_list_id: FanDataListId = Field(alias="fanDataListId") created_at: AwareDatetime = Field(alias="createdAt") class CrmCampaigns(BaseModel): items: list[CrmCampaign] class GetCrmCampaignsInput(BaseModel): vendor_id: int | None = Field( None, alias="vendorId", description="Account vendor id", ) subaccount_id: int | None = Field( None, alias="subaccountId", description="Account subaccount id", ) global_participant_ids: list[str] | None = Field( None, alias="globalParticipantIds", description="Artist ids", ) custom_list_ids: list[str] | None = Field( None, alias="customListIds", description="Custom list ids", ) campaign_ids: list[str] | None = Field( None, alias="campaignIds", description="Campaign ids", ) search: str | None = Field(None) limit: int | None = Field(None, ge=1, le=200)