import {z} from 'zod' export type DemandGenBiddingStrategy = {effectiveBiddingValue?: unknown | undefined, effectiveBiddingValueSource?: ('BIDDING_SOURCE_UNSPECIFIED' | 'BIDDING_SOURCE_LINE_ITEM' | 'BIDDING_SOURCE_AD_GROUP') | undefined, type?: ('DEMAND_GEN_BIDDING_STRATEGY_TYPE_UNSPECIFIED' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPA' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_ROAS' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSIONS' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSION_VALUE' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CLICKS' | 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPC') | undefined, value?: unknown | undefined}; export type FixedBidStrategy = {bidAmountMicros?: unknown | undefined}; export type MaximizeSpendBidStrategy = {customBiddingAlgorithmId?: unknown | undefined, maxAverageCpmBidAmountMicros?: unknown | undefined, performanceGoalType?: ('BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_REACH') | undefined, raiseBidForDeals?: boolean | undefined}; export type PerformanceGoalBidStrategy = {customBiddingAlgorithmId?: unknown | undefined, maxAverageCpmBidAmountMicros?: unknown | undefined, performanceGoalAmountMicros?: unknown | undefined, performanceGoalType?: ('BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED' | 'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_REACH') | undefined}; export type YoutubeAndPartnersBiddingStrategy = {adGroupEffectiveTargetCpaSource?: ('BIDDING_SOURCE_UNSPECIFIED' | 'BIDDING_SOURCE_LINE_ITEM' | 'BIDDING_SOURCE_AD_GROUP') | undefined, adGroupEffectiveTargetCpaValue?: unknown | undefined, type?: ('YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_UNSPECIFIED' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPV' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPM' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPA' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPM' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_RESERVE_CPM' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_LIFT' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSIONS' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPV' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_ROAS' | 'YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSION_VALUE') | undefined, value?: unknown | undefined}; export type BiddingStrategy = {demandGenBid?: DemandGenBiddingStrategy | undefined, fixedBid?: FixedBidStrategy | undefined, maximizeSpendAutoBid?: MaximizeSpendBidStrategy | undefined, performanceGoalAutoBid?: PerformanceGoalBidStrategy | undefined, youtubeAndPartnersBid?: YoutubeAndPartnersBiddingStrategy | undefined}; export type LineItemBudget = {budgetAllocationType?: ('LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNSPECIFIED' | 'LINE_ITEM_BUDGET_ALLOCATION_TYPE_AUTOMATIC' | 'LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED' | 'LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNLIMITED') | undefined, budgetUnit?: ('BUDGET_UNIT_UNSPECIFIED' | 'BUDGET_UNIT_CURRENCY' | 'BUDGET_UNIT_IMPRESSIONS') | undefined, maxAmount?: unknown | undefined}; export type TrackingFloodlightActivityConfig = {floodlightActivityId?: unknown | undefined, postClickLookbackWindowDays?: number | undefined, postViewLookbackWindowDays?: number | undefined}; export type ConversionCountingConfig = {floodlightActivityConfigs?: Array | undefined, postViewCountPercentageMillis?: unknown | undefined, primaryAttributionModelId?: unknown | undefined}; export type ThirdPartyVendorConfig = {placementId?: string | undefined, vendor?: ('THIRD_PARTY_VENDOR_UNSPECIFIED' | 'THIRD_PARTY_VENDOR_MOAT' | 'THIRD_PARTY_VENDOR_DOUBLE_VERIFY' | 'THIRD_PARTY_VENDOR_INTEGRAL_AD_SCIENCE' | 'THIRD_PARTY_VENDOR_COMSCORE' | 'THIRD_PARTY_VENDOR_TELEMETRY' | 'THIRD_PARTY_VENDOR_MEETRICS' | 'THIRD_PARTY_VENDOR_ZEFR' | 'THIRD_PARTY_VENDOR_NIELSEN' | 'THIRD_PARTY_VENDOR_KANTAR' | 'THIRD_PARTY_VENDOR_DYNATA' | 'THIRD_PARTY_VENDOR_TRANSUNION' | 'THIRD_PARTY_VENDOR_ORIGIN' | 'THIRD_PARTY_VENDOR_GEMIUS' | 'THIRD_PARTY_VENDOR_MEDIA_SCOPE' | 'THIRD_PARTY_VENDOR_AUDIENCE_PROJECT' | 'THIRD_PARTY_VENDOR_VIDEO_AMP' | 'THIRD_PARTY_VENDOR_ISPOT_TV' | 'THIRD_PARTY_VENDOR_INTAGE' | 'THIRD_PARTY_VENDOR_MACROMILL' | 'THIRD_PARTY_VENDOR_VIDEO_RESEARCH' | 'THIRD_PARTY_VENDOR_AQUILA') | undefined}; export type ThirdPartyMeasurementConfigs = {brandLiftVendorConfigs?: Array | undefined, brandSafetyVendorConfigs?: Array | undefined, reachVendorConfigs?: Array | undefined, viewabilityVendorConfigs?: Array | undefined}; export type DemandGenSettings = {geoLanguageTargetingEnabled?: boolean | undefined, linkedMerchantId?: unknown | undefined, thirdPartyMeasurementConfigs?: ThirdPartyMeasurementConfigs | undefined}; export type Date = {day?: number | undefined, month?: number | undefined, year?: number | undefined}; export type DateRange = {endDate?: Date | undefined, startDate?: Date | undefined}; export type LineItemFlight = {dateRange?: DateRange | undefined, flightDateType?: ('LINE_ITEM_FLIGHT_DATE_TYPE_UNSPECIFIED' | 'LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED' | 'LINE_ITEM_FLIGHT_DATE_TYPE_CUSTOM') | undefined}; export type FrequencyCap = {maxImpressions?: number | undefined, maxViews?: number | undefined, timeUnit?: ('TIME_UNIT_UNSPECIFIED' | 'TIME_UNIT_LIFETIME' | 'TIME_UNIT_MONTHS' | 'TIME_UNIT_WEEKS' | 'TIME_UNIT_DAYS' | 'TIME_UNIT_HOURS' | 'TIME_UNIT_MINUTES') | undefined, timeUnitCount?: number | undefined, unlimited?: boolean | undefined}; export type IntegrationDetails = {details?: string | undefined, integrationCode?: string | undefined}; export type MobileApp = {appId?: string | undefined, displayName?: string | undefined, platform?: ('PLATFORM_UNSPECIFIED' | 'IOS' | 'ANDROID') | undefined, publisher?: string | undefined}; export type Pacing = {dailyMaxImpressions?: unknown | undefined, dailyMaxMicros?: unknown | undefined, pacingPeriod?: ('PACING_PERIOD_UNSPECIFIED' | 'PACING_PERIOD_DAILY' | 'PACING_PERIOD_FLIGHT') | undefined, pacingType?: ('PACING_TYPE_UNSPECIFIED' | 'PACING_TYPE_AHEAD' | 'PACING_TYPE_ASAP' | 'PACING_TYPE_EVEN') | undefined}; export type PartnerCost = {costType?: ('PARTNER_COST_TYPE_UNSPECIFIED' | 'PARTNER_COST_TYPE_ADLOOX' | 'PARTNER_COST_TYPE_ADLOOX_PREBID' | 'PARTNER_COST_TYPE_ADSAFE' | 'PARTNER_COST_TYPE_ADXPOSE' | 'PARTNER_COST_TYPE_AGGREGATE_KNOWLEDGE' | 'PARTNER_COST_TYPE_AGENCY_TRADING_DESK' | 'PARTNER_COST_TYPE_DV360_FEE' | 'PARTNER_COST_TYPE_COMSCORE_VCE' | 'PARTNER_COST_TYPE_DATA_MANAGEMENT_PLATFORM' | 'PARTNER_COST_TYPE_DEFAULT' | 'PARTNER_COST_TYPE_DOUBLE_VERIFY' | 'PARTNER_COST_TYPE_DOUBLE_VERIFY_PREBID' | 'PARTNER_COST_TYPE_EVIDON' | 'PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_VIDEO' | 'PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_PREBID' | 'PARTNER_COST_TYPE_MEDIA_COST_DATA' | 'PARTNER_COST_TYPE_MOAT_VIDEO' | 'PARTNER_COST_TYPE_NIELSEN_DAR' | 'PARTNER_COST_TYPE_SHOP_LOCAL' | 'PARTNER_COST_TYPE_TERACENT' | 'PARTNER_COST_TYPE_THIRD_PARTY_AD_SERVER' | 'PARTNER_COST_TYPE_TRUST_METRICS' | 'PARTNER_COST_TYPE_VIZU' | 'PARTNER_COST_TYPE_CUSTOM_FEE_1' | 'PARTNER_COST_TYPE_CUSTOM_FEE_2' | 'PARTNER_COST_TYPE_CUSTOM_FEE_3' | 'PARTNER_COST_TYPE_CUSTOM_FEE_4' | 'PARTNER_COST_TYPE_CUSTOM_FEE_5' | 'PARTNER_COST_TYPE_SCIBIDS_FEE') | undefined, feeAmount?: unknown | undefined, feePercentageMillis?: unknown | undefined, feeType?: ('PARTNER_COST_FEE_TYPE_UNSPECIFIED' | 'PARTNER_COST_FEE_TYPE_CPM_FEE' | 'PARTNER_COST_FEE_TYPE_MEDIA_FEE') | undefined, invoiceType?: ('PARTNER_COST_INVOICE_TYPE_UNSPECIFIED' | 'PARTNER_COST_INVOICE_TYPE_DV360' | 'PARTNER_COST_INVOICE_TYPE_PARTNER') | undefined}; export type PartnerRevenueModel = {markupAmount?: unknown | undefined, markupType?: ('PARTNER_REVENUE_MODEL_MARKUP_TYPE_UNSPECIFIED' | 'PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM' | 'PARTNER_REVENUE_MODEL_MARKUP_TYPE_MEDIA_COST_MARKUP' | 'PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP') | undefined}; export type TargetingExpansionConfig = {audienceExpansionLevel?: ('UNKNOWN' | 'NO_REACH' | 'LEAST_REACH' | 'MID_REACH' | 'MOST_REACH') | undefined, audienceExpansionSeedListExcluded?: boolean | undefined, enableOptimizedTargeting?: boolean | undefined, excludeDemographicExpansion?: boolean | undefined}; export type YoutubeAndPartnersInventorySourceConfig = {includeGoogleTv?: boolean | undefined, includeYoutube?: boolean | undefined, includeYoutubeVideoPartners?: boolean | undefined}; export type TargetFrequency = {targetCount?: unknown | undefined, timeUnit?: ('TIME_UNIT_UNSPECIFIED' | 'TIME_UNIT_LIFETIME' | 'TIME_UNIT_MONTHS' | 'TIME_UNIT_WEEKS' | 'TIME_UNIT_DAYS' | 'TIME_UNIT_HOURS' | 'TIME_UNIT_MINUTES') | undefined, timeUnitCount?: number | undefined}; export type VideoAdInventoryControl = {allowInFeed?: boolean | undefined, allowInStream?: boolean | undefined, allowNonSkippableInStream?: boolean | undefined, allowShorts?: boolean | undefined}; export type VideoAdSequenceStep = {adGroupId?: unknown | undefined, interactionType?: ('INTERACTION_TYPE_UNSPECIFIED' | 'INTERACTION_TYPE_PAID_VIEW' | 'INTERACTION_TYPE_SKIP' | 'INTERACTION_TYPE_IMPRESSION' | 'INTERACTION_TYPE_ENGAGED_IMPRESSION') | undefined, previousStepId?: unknown | undefined, stepId?: unknown | undefined}; export type VideoAdSequenceSettings = {minimumDuration?: ('VIDEO_AD_SEQUENCE_MINIMUM_DURATION_UNSPECIFIED' | 'VIDEO_AD_SEQUENCE_MINIMUM_DURATION_WEEK' | 'VIDEO_AD_SEQUENCE_MINIMUM_DURATION_MONTH') | undefined, steps?: Array | undefined}; export type YoutubeAndPartnersSettings = {contentCategory?: ('YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED') | undefined, effectiveContentCategory?: ('YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED' | 'YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED') | undefined, inventorySourceSettings?: YoutubeAndPartnersInventorySourceConfig | undefined, leadFormId?: unknown | undefined, linkedMerchantId?: unknown | undefined, relatedVideoIds?: Array | undefined, targetFrequency?: TargetFrequency | undefined, thirdPartyMeasurementConfigs?: ThirdPartyMeasurementConfigs | undefined, videoAdInventoryControl?: VideoAdInventoryControl | undefined, videoAdSequenceSettings?: VideoAdSequenceSettings | undefined, viewFrequencyCap?: FrequencyCap | undefined}; export type LineItem = {advertiserId?: unknown | undefined, bidStrategy?: BiddingStrategy | undefined, budget?: LineItemBudget | undefined, campaignId?: unknown | undefined, containsEuPoliticalAds?: ('EU_POLITICAL_ADVERTISING_STATUS_UNKNOWN' | 'CONTAINS_EU_POLITICAL_ADVERTISING' | 'DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING') | undefined, conversionCounting?: ConversionCountingConfig | undefined, creativeIds?: Array | undefined, demandGenSettings?: DemandGenSettings | undefined, displayName?: string | undefined, entityStatus?: ('ENTITY_STATUS_UNSPECIFIED' | 'ENTITY_STATUS_ACTIVE' | 'ENTITY_STATUS_ARCHIVED' | 'ENTITY_STATUS_DRAFT' | 'ENTITY_STATUS_PAUSED' | 'ENTITY_STATUS_SCHEDULED_FOR_DELETION') | undefined, excludeNewExchanges?: boolean | undefined, flight?: LineItemFlight | undefined, frequencyCap?: FrequencyCap | undefined, insertionOrderId?: unknown | undefined, integrationDetails?: IntegrationDetails | undefined, lineItemId?: unknown | undefined, lineItemType?: ('LINE_ITEM_TYPE_UNSPECIFIED' | 'LINE_ITEM_TYPE_DISPLAY_DEFAULT' | 'LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL' | 'LINE_ITEM_TYPE_VIDEO_DEFAULT' | 'LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL' | 'LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INVENTORY' | 'LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INVENTORY' | 'LINE_ITEM_TYPE_AUDIO_DEFAULT' | 'LINE_ITEM_TYPE_VIDEO_OVER_THE_TOP' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_ACTION' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_AUDIO' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE_OVER_THE_TOP' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH_OVER_THE_TOP' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE_OVER_THE_TOP' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_TARGET_FREQUENCY' | 'LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIEW' | 'LINE_ITEM_TYPE_DISPLAY_OUT_OF_HOME' | 'LINE_ITEM_TYPE_VIDEO_OUT_OF_HOME' | 'LINE_ITEM_TYPE_DEMAND_GEN') | undefined, mobileApp?: MobileApp | undefined, name?: string | undefined, optimizeFixedBidding?: boolean | undefined, pacing?: Pacing | undefined, partnerCosts?: Array | undefined, partnerRevenueModel?: PartnerRevenueModel | undefined, reservationType?: ('RESERVATION_TYPE_UNSPECIFIED' | 'RESERVATION_TYPE_NOT_GUARANTEED' | 'RESERVATION_TYPE_PROGRAMMATIC_GUARANTEED' | 'RESERVATION_TYPE_TAG_GUARANTEED' | 'RESERVATION_TYPE_PETRA_VIRAL' | 'RESERVATION_TYPE_INSTANT_RESERVE') | undefined, targetingExpansion?: TargetingExpansionConfig | undefined, updateTime?: unknown | undefined, warningMessages?: (Array<'LINE_ITEM_WARNING_MESSAGE_UNSPECIFIED' | 'INVALID_FLIGHT_DATES' | 'EXPIRED' | 'PENDING_FLIGHT' | 'ALL_PARTNER_ENABLED_EXCHANGES_NEGATIVELY_TARGETED' | 'INVALID_INVENTORY_SOURCE' | 'APP_INVENTORY_INVALID_SITE_TARGETING' | 'APP_INVENTORY_INVALID_AUDIENCE_LISTS' | 'NO_VALID_CREATIVE' | 'PARENT_INSERTION_ORDER_PAUSED' | 'PARENT_INSERTION_ORDER_EXPIRED'>) | undefined, youtubeAndPartnersSettings?: YoutubeAndPartnersSettings | undefined}; export type PatchApiV4AdvertisersAdvertisersIdLineItemsLineItemsIdArgs = {advertisersId: string, lineItemsId: string, updateMask?: unknown | undefined, body: LineItem}; export type PatchApiV4AdvertisersAdvertisersIdLineItemsLineItemsIdOptions = {baseUrl?: string | undefined, Oauth2?: string | undefined, Oauth2c?: string | undefined, fetch?: typeof fetch | undefined}; export const demandGenBiddingStrategy = z.object({effectiveBiddingValue: z.string().optional(), effectiveBiddingValueSource: z.enum(["BIDDING_SOURCE_UNSPECIFIED", "BIDDING_SOURCE_LINE_ITEM", "BIDDING_SOURCE_AD_GROUP"]).optional(), type: z.enum(["DEMAND_GEN_BIDDING_STRATEGY_TYPE_UNSPECIFIED", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPA", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_ROAS", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSIONS", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSION_VALUE", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_MAXIMIZE_CLICKS", "DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPC"]).optional(), value: z.string().optional()}); export const fixedBidStrategy = z.object({bidAmountMicros: z.string().optional()}); export const maximizeSpendBidStrategy = z.object({customBiddingAlgorithmId: z.string().optional(), maxAverageCpmBidAmountMicros: z.string().optional(), performanceGoalType: z.enum(["BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_REACH"]).optional(), raiseBidForDeals: z.boolean().optional()}); export const performanceGoalBidStrategy = z.object({customBiddingAlgorithmId: z.string().optional(), maxAverageCpmBidAmountMicros: z.string().optional(), performanceGoalAmountMicros: z.string().optional(), performanceGoalType: z.enum(["BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED", "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_REACH"]).optional()}); export const youtubeAndPartnersBiddingStrategy = z.object({adGroupEffectiveTargetCpaSource: z.enum(["BIDDING_SOURCE_UNSPECIFIED", "BIDDING_SOURCE_LINE_ITEM", "BIDDING_SOURCE_AD_GROUP"]).optional(), adGroupEffectiveTargetCpaValue: z.string().optional(), type: z.enum(["YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_UNSPECIFIED", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPV", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPM", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPA", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPM", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_RESERVE_CPM", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_LIFT", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSIONS", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPV", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_ROAS", "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSION_VALUE"]).optional(), value: z.string().optional()}); export const biddingStrategy = z.object({demandGenBid: demandGenBiddingStrategy.optional(), fixedBid: fixedBidStrategy.optional(), maximizeSpendAutoBid: maximizeSpendBidStrategy.optional(), performanceGoalAutoBid: performanceGoalBidStrategy.optional(), youtubeAndPartnersBid: youtubeAndPartnersBiddingStrategy.optional()}); export const lineItemBudget = z.object({budgetAllocationType: z.enum(["LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNSPECIFIED", "LINE_ITEM_BUDGET_ALLOCATION_TYPE_AUTOMATIC", "LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED", "LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNLIMITED"]).optional(), budgetUnit: z.enum(["BUDGET_UNIT_UNSPECIFIED", "BUDGET_UNIT_CURRENCY", "BUDGET_UNIT_IMPRESSIONS"]).optional(), maxAmount: z.string().optional()}); export const trackingFloodlightActivityConfig = z.object({floodlightActivityId: z.string().optional(), postClickLookbackWindowDays: z.number().int().optional(), postViewLookbackWindowDays: z.number().int().optional()}); export const conversionCountingConfig = z.object({floodlightActivityConfigs: z.array(trackingFloodlightActivityConfig).optional(), postViewCountPercentageMillis: z.string().optional(), primaryAttributionModelId: z.string().optional()}); export const thirdPartyVendorConfig = z.object({placementId: z.string().optional(), vendor: z.enum(["THIRD_PARTY_VENDOR_UNSPECIFIED", "THIRD_PARTY_VENDOR_MOAT", "THIRD_PARTY_VENDOR_DOUBLE_VERIFY", "THIRD_PARTY_VENDOR_INTEGRAL_AD_SCIENCE", "THIRD_PARTY_VENDOR_COMSCORE", "THIRD_PARTY_VENDOR_TELEMETRY", "THIRD_PARTY_VENDOR_MEETRICS", "THIRD_PARTY_VENDOR_ZEFR", "THIRD_PARTY_VENDOR_NIELSEN", "THIRD_PARTY_VENDOR_KANTAR", "THIRD_PARTY_VENDOR_DYNATA", "THIRD_PARTY_VENDOR_TRANSUNION", "THIRD_PARTY_VENDOR_ORIGIN", "THIRD_PARTY_VENDOR_GEMIUS", "THIRD_PARTY_VENDOR_MEDIA_SCOPE", "THIRD_PARTY_VENDOR_AUDIENCE_PROJECT", "THIRD_PARTY_VENDOR_VIDEO_AMP", "THIRD_PARTY_VENDOR_ISPOT_TV", "THIRD_PARTY_VENDOR_INTAGE", "THIRD_PARTY_VENDOR_MACROMILL", "THIRD_PARTY_VENDOR_VIDEO_RESEARCH", "THIRD_PARTY_VENDOR_AQUILA"]).optional()}); export const thirdPartyMeasurementConfigs = z.object({brandLiftVendorConfigs: z.array(thirdPartyVendorConfig).optional(), brandSafetyVendorConfigs: z.array(thirdPartyVendorConfig).optional(), reachVendorConfigs: z.array(thirdPartyVendorConfig).optional(), viewabilityVendorConfigs: z.array(thirdPartyVendorConfig).optional()}); export const demandGenSettings = z.object({geoLanguageTargetingEnabled: z.boolean().optional(), linkedMerchantId: z.string().optional(), thirdPartyMeasurementConfigs: thirdPartyMeasurementConfigs.optional()}); export const date = z.object({day: z.number().int().optional(), month: z.number().int().optional(), year: z.number().int().optional()}); export const dateRange = z.object({endDate: date.optional(), startDate: date.optional()}); export const lineItemFlight = z.object({dateRange: dateRange.optional(), flightDateType: z.enum(["LINE_ITEM_FLIGHT_DATE_TYPE_UNSPECIFIED", "LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED", "LINE_ITEM_FLIGHT_DATE_TYPE_CUSTOM"]).optional()}); export const frequencyCap = z.object({maxImpressions: z.number().int().optional(), maxViews: z.number().int().optional(), timeUnit: z.enum(["TIME_UNIT_UNSPECIFIED", "TIME_UNIT_LIFETIME", "TIME_UNIT_MONTHS", "TIME_UNIT_WEEKS", "TIME_UNIT_DAYS", "TIME_UNIT_HOURS", "TIME_UNIT_MINUTES"]).optional(), timeUnitCount: z.number().int().optional(), unlimited: z.boolean().optional()}); export const integrationDetails = z.object({details: z.string().optional(), integrationCode: z.string().optional()}); export const mobileApp = z.object({appId: z.string().optional(), displayName: z.string().optional(), platform: z.enum(["PLATFORM_UNSPECIFIED", "IOS", "ANDROID"]).optional(), publisher: z.string().optional()}); export const pacing = z.object({dailyMaxImpressions: z.string().optional(), dailyMaxMicros: z.string().optional(), pacingPeriod: z.enum(["PACING_PERIOD_UNSPECIFIED", "PACING_PERIOD_DAILY", "PACING_PERIOD_FLIGHT"]).optional(), pacingType: z.enum(["PACING_TYPE_UNSPECIFIED", "PACING_TYPE_AHEAD", "PACING_TYPE_ASAP", "PACING_TYPE_EVEN"]).optional()}); export const partnerCost = z.object({costType: z.enum(["PARTNER_COST_TYPE_UNSPECIFIED", "PARTNER_COST_TYPE_ADLOOX", "PARTNER_COST_TYPE_ADLOOX_PREBID", "PARTNER_COST_TYPE_ADSAFE", "PARTNER_COST_TYPE_ADXPOSE", "PARTNER_COST_TYPE_AGGREGATE_KNOWLEDGE", "PARTNER_COST_TYPE_AGENCY_TRADING_DESK", "PARTNER_COST_TYPE_DV360_FEE", "PARTNER_COST_TYPE_COMSCORE_VCE", "PARTNER_COST_TYPE_DATA_MANAGEMENT_PLATFORM", "PARTNER_COST_TYPE_DEFAULT", "PARTNER_COST_TYPE_DOUBLE_VERIFY", "PARTNER_COST_TYPE_DOUBLE_VERIFY_PREBID", "PARTNER_COST_TYPE_EVIDON", "PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_VIDEO", "PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_PREBID", "PARTNER_COST_TYPE_MEDIA_COST_DATA", "PARTNER_COST_TYPE_MOAT_VIDEO", "PARTNER_COST_TYPE_NIELSEN_DAR", "PARTNER_COST_TYPE_SHOP_LOCAL", "PARTNER_COST_TYPE_TERACENT", "PARTNER_COST_TYPE_THIRD_PARTY_AD_SERVER", "PARTNER_COST_TYPE_TRUST_METRICS", "PARTNER_COST_TYPE_VIZU", "PARTNER_COST_TYPE_CUSTOM_FEE_1", "PARTNER_COST_TYPE_CUSTOM_FEE_2", "PARTNER_COST_TYPE_CUSTOM_FEE_3", "PARTNER_COST_TYPE_CUSTOM_FEE_4", "PARTNER_COST_TYPE_CUSTOM_FEE_5", "PARTNER_COST_TYPE_SCIBIDS_FEE"]).optional(), feeAmount: z.string().optional(), feePercentageMillis: z.string().optional(), feeType: z.enum(["PARTNER_COST_FEE_TYPE_UNSPECIFIED", "PARTNER_COST_FEE_TYPE_CPM_FEE", "PARTNER_COST_FEE_TYPE_MEDIA_FEE"]).optional(), invoiceType: z.enum(["PARTNER_COST_INVOICE_TYPE_UNSPECIFIED", "PARTNER_COST_INVOICE_TYPE_DV360", "PARTNER_COST_INVOICE_TYPE_PARTNER"]).optional()}); export const partnerRevenueModel = z.object({markupAmount: z.string().optional(), markupType: z.enum(["PARTNER_REVENUE_MODEL_MARKUP_TYPE_UNSPECIFIED", "PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM", "PARTNER_REVENUE_MODEL_MARKUP_TYPE_MEDIA_COST_MARKUP", "PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP"]).optional()}); export const targetingExpansionConfig = z.object({audienceExpansionLevel: z.enum(["UNKNOWN", "NO_REACH", "LEAST_REACH", "MID_REACH", "MOST_REACH"]).optional(), audienceExpansionSeedListExcluded: z.boolean().optional(), enableOptimizedTargeting: z.boolean().optional(), excludeDemographicExpansion: z.boolean().optional()}); export const youtubeAndPartnersInventorySourceConfig = z.object({includeGoogleTv: z.boolean().optional(), includeYoutube: z.boolean().optional(), includeYoutubeVideoPartners: z.boolean().optional()}); export const targetFrequency = z.object({targetCount: z.string().optional(), timeUnit: z.enum(["TIME_UNIT_UNSPECIFIED", "TIME_UNIT_LIFETIME", "TIME_UNIT_MONTHS", "TIME_UNIT_WEEKS", "TIME_UNIT_DAYS", "TIME_UNIT_HOURS", "TIME_UNIT_MINUTES"]).optional(), timeUnitCount: z.number().int().optional()}); export const videoAdInventoryControl = z.object({allowInFeed: z.boolean().optional(), allowInStream: z.boolean().optional(), allowNonSkippableInStream: z.boolean().optional(), allowShorts: z.boolean().optional()}); export const videoAdSequenceStep = z.object({adGroupId: z.string().optional(), interactionType: z.enum(["INTERACTION_TYPE_UNSPECIFIED", "INTERACTION_TYPE_PAID_VIEW", "INTERACTION_TYPE_SKIP", "INTERACTION_TYPE_IMPRESSION", "INTERACTION_TYPE_ENGAGED_IMPRESSION"]).optional(), previousStepId: z.string().optional(), stepId: z.string().optional()}); export const videoAdSequenceSettings = z.object({minimumDuration: z.enum(["VIDEO_AD_SEQUENCE_MINIMUM_DURATION_UNSPECIFIED", "VIDEO_AD_SEQUENCE_MINIMUM_DURATION_WEEK", "VIDEO_AD_SEQUENCE_MINIMUM_DURATION_MONTH"]).optional(), steps: z.array(videoAdSequenceStep).optional()}); export const youtubeAndPartnersSettings = z.object({contentCategory: z.enum(["YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED"]).optional(), effectiveContentCategory: z.enum(["YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED", "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED"]).optional(), inventorySourceSettings: youtubeAndPartnersInventorySourceConfig.optional(), leadFormId: z.string().optional(), linkedMerchantId: z.string().optional(), relatedVideoIds: z.array(z.string()).optional(), targetFrequency: targetFrequency.optional(), thirdPartyMeasurementConfigs: thirdPartyMeasurementConfigs.optional(), videoAdInventoryControl: videoAdInventoryControl.optional(), videoAdSequenceSettings: videoAdSequenceSettings.optional(), viewFrequencyCap: frequencyCap.optional()}); export const lineItem = z.object({advertiserId: z.string().optional(), bidStrategy: biddingStrategy.optional(), budget: lineItemBudget.optional(), campaignId: z.string().optional(), containsEuPoliticalAds: z.enum(["EU_POLITICAL_ADVERTISING_STATUS_UNKNOWN", "CONTAINS_EU_POLITICAL_ADVERTISING", "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"]).optional(), conversionCounting: conversionCountingConfig.optional(), creativeIds: z.array(z.string()).optional(), demandGenSettings: demandGenSettings.optional(), displayName: z.string().optional(), entityStatus: z.enum(["ENTITY_STATUS_UNSPECIFIED", "ENTITY_STATUS_ACTIVE", "ENTITY_STATUS_ARCHIVED", "ENTITY_STATUS_DRAFT", "ENTITY_STATUS_PAUSED", "ENTITY_STATUS_SCHEDULED_FOR_DELETION"]).optional(), excludeNewExchanges: z.boolean().optional(), flight: lineItemFlight.optional(), frequencyCap: frequencyCap.optional(), insertionOrderId: z.string().optional(), integrationDetails: integrationDetails.optional(), lineItemId: z.string().optional(), lineItemType: z.enum(["LINE_ITEM_TYPE_UNSPECIFIED", "LINE_ITEM_TYPE_DISPLAY_DEFAULT", "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL", "LINE_ITEM_TYPE_VIDEO_DEFAULT", "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL", "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INVENTORY", "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INVENTORY", "LINE_ITEM_TYPE_AUDIO_DEFAULT", "LINE_ITEM_TYPE_VIDEO_OVER_THE_TOP", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_ACTION", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_AUDIO", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE_OVER_THE_TOP", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH_OVER_THE_TOP", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE_OVER_THE_TOP", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_TARGET_FREQUENCY", "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIEW", "LINE_ITEM_TYPE_DISPLAY_OUT_OF_HOME", "LINE_ITEM_TYPE_VIDEO_OUT_OF_HOME", "LINE_ITEM_TYPE_DEMAND_GEN"]).optional(), mobileApp: mobileApp.optional(), name: z.string().optional(), optimizeFixedBidding: z.boolean().optional(), pacing: pacing.optional(), partnerCosts: z.array(partnerCost).optional(), partnerRevenueModel: partnerRevenueModel.optional(), reservationType: z.enum(["RESERVATION_TYPE_UNSPECIFIED", "RESERVATION_TYPE_NOT_GUARANTEED", "RESERVATION_TYPE_PROGRAMMATIC_GUARANTEED", "RESERVATION_TYPE_TAG_GUARANTEED", "RESERVATION_TYPE_PETRA_VIRAL", "RESERVATION_TYPE_INSTANT_RESERVE"]).optional(), targetingExpansion: targetingExpansionConfig.optional(), updateTime: z.string().optional(), warningMessages: z.array(z.enum(["LINE_ITEM_WARNING_MESSAGE_UNSPECIFIED", "INVALID_FLIGHT_DATES", "EXPIRED", "PENDING_FLIGHT", "ALL_PARTNER_ENABLED_EXCHANGES_NEGATIVELY_TARGETED", "INVALID_INVENTORY_SOURCE", "APP_INVENTORY_INVALID_SITE_TARGETING", "APP_INVENTORY_INVALID_AUDIENCE_LISTS", "NO_VALID_CREATIVE", "PARENT_INSERTION_ORDER_PAUSED", "PARENT_INSERTION_ORDER_EXPIRED"])).optional(), youtubeAndPartnersSettings: youtubeAndPartnersSettings.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Updates an existing line item. Returns the updated line item if successful. Requests to this endpoint cannot be made concurrently with the following requests updating the same line item: * BulkEditAssignedTargetingOptions * BulkUpdateLineItems * assignedTargetingOptions.create * assignedTargetingOptions.delete YouTube & Partners line items cannot be created or updated using the API. **This method regularly experiences high latency.** We recommend [increasing your default timeout](/display-video/api/guides/best-practices/timeouts#client_library_timeout) to avoid errors. * * PATCH /v4/advertisers/{advertisersId}/lineItems/{lineItemsId} */ export const patchApiV4AdvertisersAdvertisersIdLineItemsLineItemsId = async (args: PatchApiV4AdvertisersAdvertisersIdLineItemsLineItemsIdArgs, options?: PatchApiV4AdvertisersAdvertisersIdLineItemsLineItemsIdOptions) => { const {baseUrl = "https://displayvideo.googleapis.com", fetch: fetchFn = fetch, Oauth2, Oauth2c} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args.updateMask != null) query.append("updateMask", String(args.updateMask)) if (Oauth2 !== undefined) headers.set('authorization', `Bearer ${Oauth2}`) if (Oauth2c !== undefined) headers.set('authorization', `Bearer ${Oauth2c}`) const url = `${baseUrl.replace(/\/+$/, '')}/v4/advertisers/${encodeURIComponent(String(args.advertisersId))}/lineItems/${encodeURIComponent(String(args.lineItemsId))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PATCH", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(lineItem, await res.json()) };