from __future__ import annotations import enum class AdReportingPlatform(enum.StrEnum): META = "META" TIKTOK = "TIKTOK" GOOGLE = "GOOGLE" class AdReportingBudgetType(enum.StrEnum): DAILY_BUDGET = "DAILY_BUDGET" LIFETIME_BUDGET = "LIFETIME_BUDGET" CAMPAIGN_BUDGET = "CAMPAIGN_BUDGET" AD_SET_BUDGET = "AD_SET_BUDGET" UNKNOWN = "UNKNOWN" class AdReportingStatus(enum.StrEnum): ACTIVE = "ACTIVE" PAUSED = "PAUSED" ARCHIVED = "ARCHIVED" DELETED = "DELETED" FROZEN = "FROZEN" ENABLE = "ENABLE" DISABLE = "DISABLE" class AdReportingCampaignEffectiveStatus(enum.StrEnum): # ordered ASC GOOGLE_ACTIVE = "GOOGLE_ACTIVE" GOOGLE_DELETED = "GOOGLE_DELETED" GOOGLE_PAUSED = "GOOGLE_PAUSED" META_ACTIVE = "META_ACTIVE" META_ARCHIVED = "META_ARCHIVED" META_DELETED = "META_DELETED" META_IN_PROCESS = "META_IN_PROCESS" META_PAUSED = "META_PAUSED" META_WITH_ISSUES = "META_WITH_ISSUES" TIKTOK_ADVERTISER_ACCOUNT_PUNISH = "TIKTOK_ADVERTISER_ACCOUNT_PUNISH" TIKTOK_ADVERTISER_CONTRACT_PENDING = "TIKTOK_ADVERTISER_CONTRACT_PENDING" TIKTOK_CAMPAIGN_STATUS_ADVERTISER_AUDIT = "TIKTOK_CAMPAIGN_STATUS_ADVERTISER_AUDIT" TIKTOK_CAMPAIGN_STATUS_ADVERTISER_AUDIT_DENY = ( "TIKTOK_CAMPAIGN_STATUS_ADVERTISER_AUDIT_DENY" ) TIKTOK_CAMPAIGN_STATUS_AWAITING_RELEASE = "TIKTOK_CAMPAIGN_STATUS_AWAITING_RELEASE" TIKTOK_CAMPAIGN_STATUS_BUDGET_EXCEED = "TIKTOK_CAMPAIGN_STATUS_BUDGET_EXCEED" TIKTOK_CAMPAIGN_STATUS_DELETE = "TIKTOK_CAMPAIGN_STATUS_DELETE" TIKTOK_CAMPAIGN_STATUS_DISABLE = "TIKTOK_CAMPAIGN_STATUS_DISABLE" TIKTOK_CAMPAIGN_STATUS_ENABLE = "TIKTOK_CAMPAIGN_STATUS_ENABLE" TIKTOK_CAMPAIGN_STATUS_IDENTITY_USED_BY_GMV_MAX_AD = ( "TIKTOK_CAMPAIGN_STATUS_IDENTITY_USED_BY_GMV_MAX_AD" ) OTHER = "OTHER" @classmethod def _missing_(cls, value: object) -> AdReportingCampaignEffectiveStatus: # noqa: ARG003 return cls.OTHER class AdReportingAdSetEffectiveStatus(enum.StrEnum): # ordered ASC GOOGLE_ACTIVE = "GOOGLE_ACTIVE" GOOGLE_DELETED = "GOOGLE_DELETED" GOOGLE_PAUSED = "GOOGLE_PAUSED" META_ACTIVE = "META_ACTIVE" META_ARCHIVED = "META_ARCHIVED" META_CAMPAIGN_PAUSED = "META_CAMPAIGN_PAUSED" META_DELETED = "META_DELETED" META_IN_PROCESS = "META_IN_PROCESS" META_PAUSED = "META_PAUSED" META_WITH_ISSUES = "META_WITH_ISSUES" TIKTOK_ADGROUP_STATUS_ADGROUP_PRE_ONLINE = ( "TIKTOK_ADGROUP_STATUS_ADGROUP_PRE_ONLINE" ) TIKTOK_ADGROUP_STATUS_ADGROUP_QUOTA_LIMIT = ( "TIKTOK_ADGROUP_STATUS_ADGROUP_QUOTA_LIMIT" ) TIKTOK_ADGROUP_STATUS_ADVERTISER_AUDIT = "TIKTOK_ADGROUP_STATUS_ADVERTISER_AUDIT" TIKTOK_ADGROUP_STATUS_ADVERTISER_AUDIT_DENY = ( "TIKTOK_ADGROUP_STATUS_ADVERTISER_AUDIT_DENY" ) TIKTOK_ADGROUP_STATUS_ASSET_AUTHORIZATION_LOST = ( "TIKTOK_ADGROUP_STATUS_ASSET_AUTHORIZATION_LOST" ) TIKTOK_ADGROUP_STATUS_AUDIT = "TIKTOK_ADGROUP_STATUS_AUDIT" TIKTOK_ADGROUP_STATUS_AUDIT_DENY = "TIKTOK_ADGROUP_STATUS_AUDIT_DENY" TIKTOK_ADGROUP_STATUS_BALANCE_EXCEED = "TIKTOK_ADGROUP_STATUS_BALANCE_EXCEED" TIKTOK_ADGROUP_STATUS_BUDGET_EXCEED = "TIKTOK_ADGROUP_STATUS_BUDGET_EXCEED" TIKTOK_ADGROUP_STATUS_CAMPAIGN_DELETE = "TIKTOK_ADGROUP_STATUS_CAMPAIGN_DELETE" TIKTOK_ADGROUP_STATUS_CAMPAIGN_DISABLE = "TIKTOK_ADGROUP_STATUS_CAMPAIGN_DISABLE" TIKTOK_ADGROUP_STATUS_CAMPAIGN_EXCEED = "TIKTOK_ADGROUP_STATUS_CAMPAIGN_EXCEED" TIKTOK_ADGROUP_STATUS_CREATE = "TIKTOK_ADGROUP_STATUS_CREATE" TIKTOK_ADGROUP_STATUS_DELETE = "TIKTOK_ADGROUP_STATUS_DELETE" TIKTOK_ADGROUP_STATUS_DELIVERY_OK = "TIKTOK_ADGROUP_STATUS_DELIVERY_OK" TIKTOK_ADGROUP_STATUS_DISABLE = "TIKTOK_ADGROUP_STATUS_DISABLE" TIKTOK_ADGROUP_STATUS_FROZEN = "TIKTOK_ADGROUP_STATUS_FROZEN" TIKTOK_ADGROUP_STATUS_IDENTITY_USED_BY_GMV_MAX_AD = ( "TIKTOK_ADGROUP_STATUS_IDENTITY_USED_BY_GMV_MAX_AD" ) TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_DENY = ( "TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_DENY" ) TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_EXPIRED = ( "TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_EXPIRED" ) TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_MISSING = ( "TIKTOK_ADGROUP_STATUS_INDUSTRY_QUALIFICATION_MISSING" ) TIKTOK_ADGROUP_STATUS_LIVE_NOT_START = "TIKTOK_ADGROUP_STATUS_LIVE_NOT_START" TIKTOK_ADGROUP_STATUS_NOT_START = "TIKTOK_ADGROUP_STATUS_NOT_START" TIKTOK_ADGROUP_STATUS_PARTIAL_AUDIT_DELIVERY_OK = ( "TIKTOK_ADGROUP_STATUS_PARTIAL_AUDIT_DELIVERY_OK" ) TIKTOK_ADGROUP_STATUS_PARTIAL_AUDIT_NO_DELIVERY = ( "TIKTOK_ADGROUP_STATUS_PARTIAL_AUDIT_NO_DELIVERY" ) TIKTOK_ADGROUP_STATUS_PIXEL_UNBIND = "TIKTOK_ADGROUP_STATUS_PIXEL_UNBIND" TIKTOK_ADGROUP_STATUS_PROMOTE_AD_NOT_APPROVED = ( "TIKTOK_ADGROUP_STATUS_PROMOTE_AD_NOT_APPROVED" ) TIKTOK_ADGROUP_STATUS_PROMOTE_WITHDRAW_ORDER = ( "TIKTOK_ADGROUP_STATUS_PROMOTE_WITHDRAW_ORDER" ) TIKTOK_ADGROUP_STATUS_REAUDIT = "TIKTOK_ADGROUP_STATUS_REAUDIT" TIKTOK_ADGROUP_STATUS_REVIEW_PARTIALLY_APPROVED = ( "TIKTOK_ADGROUP_STATUS_REVIEW_PARTIALLY_APPROVED" ) TIKTOK_ADGROUP_STATUS_RF_ADGROUP_INVALID = ( "TIKTOK_ADGROUP_STATUS_RF_ADGROUP_INVALID" ) TIKTOK_ADGROUP_STATUS_RF_AD_AUDIT_DENY = "TIKTOK_ADGROUP_STATUS_RF_AD_AUDIT_DENY" TIKTOK_ADGROUP_STATUS_RF_BOOKING = "TIKTOK_ADGROUP_STATUS_RF_BOOKING" TIKTOK_ADGROUP_STATUS_RF_CLOSED_OTHERS = "TIKTOK_ADGROUP_STATUS_RF_CLOSED_OTHERS" TIKTOK_ADGROUP_STATUS_RF_DEDUCTION_FAILED = ( "TIKTOK_ADGROUP_STATUS_RF_DEDUCTION_FAILED" ) TIKTOK_ADGROUP_STATUS_RF_NO_DELIVERY_CREATIVE = ( "TIKTOK_ADGROUP_STATUS_RF_NO_DELIVERY_CREATIVE" ) TIKTOK_ADGROUP_STATUS_RF_NO_VALID_CREATIVE = ( "TIKTOK_ADGROUP_STATUS_RF_NO_VALID_CREATIVE" ) TIKTOK_ADGROUP_STATUS_RF_SCHEDULE = "TIKTOK_ADGROUP_STATUS_RF_SCHEDULE" TIKTOK_ADGROUP_STATUS_RF_SHORT_BALANCE = "TIKTOK_ADGROUP_STATUS_RF_SHORT_BALANCE" TIKTOK_ADGROUP_STATUS_RF_TERMINATE = "TIKTOK_ADGROUP_STATUS_RF_TERMINATE" TIKTOK_ADGROUP_STATUS_RF_TIME_DONE = "TIKTOK_ADGROUP_STATUS_RF_TIME_DONE" TIKTOK_ADGROUP_STATUS_RF_WITHDRAW_ORDER = "TIKTOK_ADGROUP_STATUS_RF_WITHDRAW_ORDER" TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_IN_REVIEW = ( "TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_IN_REVIEW" ) TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_NOT_AVAILABLE = ( "TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_NOT_AVAILABLE" ) TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_PARTIAL_APPROVED = ( "TIKTOK_ADGROUP_STATUS_SEARCH_KEYWORDS_PARTIAL_APPROVED" ) TIKTOK_ADGROUP_STATUS_SHADOW_ADGROUP_REAUDIT = ( "TIKTOK_ADGROUP_STATUS_SHADOW_ADGROUP_REAUDIT" ) TIKTOK_ADGROUP_STATUS_TIME_DONE = "TIKTOK_ADGROUP_STATUS_TIME_DONE" TIKTOK_ADGROUP_STATUS_TRANSCODING_FAIL = "TIKTOK_ADGROUP_STATUS_TRANSCODING_FAIL" TIKTOK_ADVERTISER_ACCOUNT_INVALID = "TIKTOK_ADVERTISER_ACCOUNT_INVALID" TIKTOK_ADVERTISER_ACCOUNT_PUNISH = "TIKTOK_ADVERTISER_ACCOUNT_PUNISH" TIKTOK_ADVERTISER_CONTRACT_PENDING = "TIKTOK_ADVERTISER_CONTRACT_PENDING" OTHER = "OTHER" @classmethod def _missing_(cls, value: object) -> AdReportingAdSetEffectiveStatus: # noqa: ARG003 return cls.OTHER class AdReportingAdEffectiveStatus(enum.StrEnum): # ordered ASC GOOGLE_ACTIVE = "GOOGLE_ACTIVE" GOOGLE_DELETED = "GOOGLE_DELETED" GOOGLE_PAUSED = "GOOGLE_PAUSED" META_ACTIVE = "META_ACTIVE" META_ADSET_PAUSED = "META_ADSET_PAUSED" META_ARCHIVED = "META_ARCHIVED" META_CAMPAIGN_PAUSED = "META_CAMPAIGN_PAUSED" META_DELETED = "META_DELETED" META_DISAPPROVED = "META_DISAPPROVED" META_IN_PROCESS = "META_IN_PROCESS" META_PAUSED = "META_PAUSED" META_PENDING_BILLING_INFO = "META_PENDING_BILLING_INFO" META_PENDING_REVIEW = "META_PENDING_REVIEW" META_PREAPPROVED = "META_PREAPPROVED" META_WITH_ISSUES = "META_WITH_ISSUES" TIKTOK_ADGROUP_STATUS_FROZEN = "TIKTOK_ADGROUP_STATUS_FROZEN" TIKTOK_ADVERTISER_ACCOUNT_PUNISH = "TIKTOK_ADVERTISER_ACCOUNT_PUNISH" TIKTOK_ADVERTISER_CONTRACT_PENDING = "TIKTOK_ADVERTISER_CONTRACT_PENDING" TIKTOK_AD_STATUS_ADGROUP_ASSET_AUTHORIZATION_LOST = ( "TIKTOK_AD_STATUS_ADGROUP_ASSET_AUTHORIZATION_LOST" ) TIKTOK_AD_STATUS_ADGROUP_AUDIT_DENY = "TIKTOK_AD_STATUS_ADGROUP_AUDIT_DENY" TIKTOK_AD_STATUS_ADGROUP_DELETE = "TIKTOK_AD_STATUS_ADGROUP_DELETE" TIKTOK_AD_STATUS_ADGROUP_DISABLE = "TIKTOK_AD_STATUS_ADGROUP_DISABLE" TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_DENY = ( "TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_DENY" ) TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_EXPIRED = ( "TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_EXPIRED" ) TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_MISSING = ( "TIKTOK_AD_STATUS_ADGROUP_INDUSTRY_QUALIFICATION_MISSING" ) TIKTOK_AD_STATUS_ADGROUP_PARTIAL_AUDIT_NO_DELIVERY = ( "TIKTOK_AD_STATUS_ADGROUP_PARTIAL_AUDIT_NO_DELIVERY" ) TIKTOK_AD_STATUS_ADVERTISER_AUDIT = "TIKTOK_AD_STATUS_ADVERTISER_AUDIT" TIKTOK_AD_STATUS_ADVERTISER_AUDIT_DENY = "TIKTOK_AD_STATUS_ADVERTISER_AUDIT_DENY" TIKTOK_AD_STATUS_AD_PRE_ONLINE = "TIKTOK_AD_STATUS_AD_PRE_ONLINE" TIKTOK_AD_STATUS_AD_QUOTA_LIMIT = "TIKTOK_AD_STATUS_AD_QUOTA_LIMIT" TIKTOK_AD_STATUS_ANCHOR_UNAVAILABLE = "TIKTOK_AD_STATUS_ANCHOR_UNAVAILABLE" TIKTOK_AD_STATUS_ASSET_AUTHORIZATION_LOST = ( "TIKTOK_AD_STATUS_ASSET_AUTHORIZATION_LOST" ) TIKTOK_AD_STATUS_AUDIT = "TIKTOK_AD_STATUS_AUDIT" TIKTOK_AD_STATUS_AUDIT_DENY = "TIKTOK_AD_STATUS_AUDIT_DENY" TIKTOK_AD_STATUS_BALANCE_EXCEED = "TIKTOK_AD_STATUS_BALANCE_EXCEED" TIKTOK_AD_STATUS_BUDGET_EXCEED = "TIKTOK_AD_STATUS_BUDGET_EXCEED" TIKTOK_AD_STATUS_CAMPAIGN_DELETE = "TIKTOK_AD_STATUS_CAMPAIGN_DELETE" TIKTOK_AD_STATUS_CAMPAIGN_DISABLE = "TIKTOK_AD_STATUS_CAMPAIGN_DISABLE" TIKTOK_AD_STATUS_CAMPAIGN_EXCEED = "TIKTOK_AD_STATUS_CAMPAIGN_EXCEED" TIKTOK_AD_STATUS_DELETE = "TIKTOK_AD_STATUS_DELETE" TIKTOK_AD_STATUS_DELIVERY_OK = "TIKTOK_AD_STATUS_DELIVERY_OK" TIKTOK_AD_STATUS_DISABLE = "TIKTOK_AD_STATUS_DISABLE" TIKTOK_AD_STATUS_DONE = "TIKTOK_AD_STATUS_DONE" TIKTOK_AD_STATUS_LIVE_OFFLINE = "TIKTOK_AD_STATUS_LIVE_OFFLINE" TIKTOK_AD_STATUS_MUSIC_AUTHORIZATION_MISSING = ( "TIKTOK_AD_STATUS_MUSIC_AUTHORIZATION_MISSING" ) TIKTOK_AD_STATUS_NOT_START = "TIKTOK_AD_STATUS_NOT_START" TIKTOK_AD_STATUS_NO_AUTHORIZATION_OF_SHOWCASE = ( "TIKTOK_AD_STATUS_NO_AUTHORIZATION_OF_SHOWCASE" ) TIKTOK_AD_STATUS_PARTIAL_AUDIT_DELIVERY_OK = ( "TIKTOK_AD_STATUS_PARTIAL_AUDIT_DELIVERY_OK" ) TIKTOK_AD_STATUS_PARTIAL_AUDIT_NO_DELIVERY = ( "TIKTOK_AD_STATUS_PARTIAL_AUDIT_NO_DELIVERY" ) TIKTOK_AD_STATUS_PROCESS_AUDIO = "TIKTOK_AD_STATUS_PROCESS_AUDIO" TIKTOK_AD_STATUS_PRODUCT_UNAVAILABLE = "TIKTOK_AD_STATUS_PRODUCT_UNAVAILABLE" TIKTOK_AD_STATUS_PROMOTE_ADGROUP_CLOSED = "TIKTOK_AD_STATUS_PROMOTE_ADGROUP_CLOSED" TIKTOK_AD_STATUS_PROMOTE_AD_OFFLINE_AUDIT = ( "TIKTOK_AD_STATUS_PROMOTE_AD_OFFLINE_AUDIT" ) TIKTOK_AD_STATUS_REAUDIT = "TIKTOK_AD_STATUS_REAUDIT" TIKTOK_AD_STATUS_RF_ADGROUP_CLOSED = "TIKTOK_AD_STATUS_RF_ADGROUP_CLOSED" TIKTOK_AD_STATUS_TRANSCODING_FAIL = "TIKTOK_AD_STATUS_TRANSCODING_FAIL" TIKTOK_AD_STAUS_PIXEL_UNBIND = "TIKTOK_AD_STAUS_PIXEL_UNBIND" TIKTOK_AD_STATUS_REVIEW_PARTIALLY_APPROVED = ( "TIKTOK_AD_STATUS_REVIEW_PARTIALLY_APPROVED" ) OTHER = "OTHER" @classmethod def _missing_(cls, value: object) -> AdReportingAdEffectiveStatus: # noqa: ARG003 return cls.OTHER class AdReportingActionType(enum.StrEnum): EAR = "EAR" PURCHASES = "PURCHASES" CLICKS = "CLICKS" VIEWS = "VIEWS" FOLLOWS = "FOLLOWS" REACH = "REACH" ORDERS_PLACED = "ORDERS_PLACED" class AdReportingRateType(enum.StrEnum): VTR = "VTR" CR = "CR" CTR = "CTR" EARR = "EARR" FR = "FR" FREQUENCY = "FREQUENCY" class AdReportingObjective(enum.StrEnum): OUTCOME_AWARENESS = "OUTCOME_AWARENESS" OUTCOME_SALES = "OUTCOME_SALES" OUTCOME_TRAFFIC = "OUTCOME_TRAFFIC" OUTCOME_ENGAGEMENT = "OUTCOME_ENGAGEMENT" OUTCOME_LEADS = "OUTCOME_LEADS" OUTCOME_APP_PROMOTION = "OUTCOME_APP_PROMOTION" APP_PROMOTION = "APP_PROMOTION" WEB_CONVERSIONS = "WEB_CONVERSIONS" PRODUCT_SALES = "PRODUCT_SALES" ENGAGEMENT = "ENGAGEMENT" TRAFFIC = "TRAFFIC" VIDEO_VIEWS = "VIDEO_VIEWS" REACH = "REACH" VIDEO = "VIDEO" SEARCH = "SEARCH" DISPLAY = "DISPLAY" LEAD_GENERATION = "LEAD_GENERATION" DEMAND_GEN = "DEMAND_GEN" TOPVIEW_REACH = "TOPVIEW_REACH" APP_INSTALLS = "APP_INSTALLS" OTHER = "OTHER" @classmethod def _missing_(cls, value: object) -> AdReportingObjective: # noqa: ARG003 return cls.OTHER class AdReportingCreativeType(enum.StrEnum): IMAGE = "IMAGE" VIDEO = "VIDEO" YOUTUBE_VIDEO = "YOUTUBE_VIDEO" INSTAGRAM_POST = "INSTAGRAM_POST" TIKTOK_POST = "TIKTOK_POST" IMAGE_THUMBNAIL = "IMAGE_THUMBNAIL" LINK = "LINK" @property def url_patterns(self) -> list[str]: if self == self.YOUTUBE_VIDEO: return ["youtube.com/watch", "youtube.com/shorts"] return []