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 BulkUpdateLineItemsRequest = {lineItemIds?: Array | undefined, targetLineItem?: LineItem | undefined, updateMask?: unknown | undefined}; export type CreateApiV4AdvertisersAdvertisersIdLineItemsBulkUpdateArgs = {advertisersId: string, body: BulkUpdateLineItemsRequest}; export type CreateApiV4AdvertisersAdvertisersIdLineItemsBulkUpdateOptions = {baseUrl?: string | undefined, Oauth2?: string | undefined, Oauth2c?: string | undefined, fetch?: typeof fetch | undefined}; export const status = z.object({code: z.number().int().optional(), details: z.array(z.record(z.string(), z.unknown())).optional(), message: z.string().optional()}); export const bulkUpdateLineItemsResponse = z.object({errors: z.array(status).optional(), failedLineItemIds: z.array(z.string()).optional(), skippedLineItemIds: z.array(z.string()).optional(), updatedLineItemIds: z.array(z.string()).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 multiple line items. Requests to this endpoint cannot be made concurrently with the following requests updating the same line item: * BulkEditAssignedTargetingOptions * UpdateLineItem * assignedTargetingOptions.create * assignedTargetingOptions.delete YouTube & Partners line items cannot be created or updated using the API. * * POST /v4/advertisers/{advertisersId}/lineItems:bulkUpdate */ export const createApiV4AdvertisersAdvertisersIdLineItemsBulkUpdate = async (args: CreateApiV4AdvertisersAdvertisersIdLineItemsBulkUpdateArgs, options?: CreateApiV4AdvertisersAdvertisersIdLineItemsBulkUpdateOptions) => { 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 (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:bulkUpdate${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", 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(bulkUpdateLineItemsResponse, await res.json()) };