import {z} from 'zod' export type AdPolicyTopicAppealInfo = {appealFormLink?: string | undefined, appealType?: ('AD_POLICY_APPEAL_TYPE_UNKNOWN' | 'SELF_SERVICE_APPEAL' | 'APPEAL_FORM') | undefined}; export type AdPolicyCriterionRestriction = {countryCriterionId?: unknown | undefined, countryLabel?: string | undefined}; export type AdPolicyTopicConstraintAdPolicyCountryConstraintList = {countries?: Array | undefined}; export type AdPolicyTopicConstraintAdPolicyGlobalCertificateDomainMismatchConstraint = Record; export type AdPolicyTopicConstraintAdPolicyGlobalCertificateMissingConstraint = Record; export type AdPolicyTopicConstraintAdPolicyResellerConstraint = Record; export type AdPolicyTopicConstraint = {certificateDomainMismatchCountryList?: AdPolicyTopicConstraintAdPolicyCountryConstraintList | undefined, certificateMissingCountryList?: AdPolicyTopicConstraintAdPolicyCountryConstraintList | undefined, countryConstraint?: AdPolicyTopicConstraintAdPolicyCountryConstraintList | undefined, globalCertificateDomainMismatch?: AdPolicyTopicConstraintAdPolicyGlobalCertificateDomainMismatchConstraint | undefined, globalCertificateMissing?: AdPolicyTopicConstraintAdPolicyGlobalCertificateMissingConstraint | undefined, requestCertificateFormLink?: string | undefined, resellerConstraint?: AdPolicyTopicConstraintAdPolicyResellerConstraint | undefined}; export type AdPolicyTopicEvidenceCounterfeit = {owners?: Array | undefined}; export type AdPolicyTopicEvidenceDestinationMismatch = {uriTypes?: (Array<'AD_POLICY_TOPIC_EVIDENCE_DESTINATION_MISMATCH_URL_TYPE_UNKNOWN' | 'DISPLAY_URL' | 'FINAL_URL' | 'FINAL_MOBILE_URL' | 'TRACKING_URL' | 'MOBILE_TRACKING_URL'>) | undefined}; export type AdPolicyTopicEvidenceDestinationNotWorking = {device?: ('AD_POLICY_TOPIC_EVIDENCE_DESTINATION_NOT_WORKING_DEVICE_TYPE_UNKNOWN' | 'DESKTOP' | 'ANDROID' | 'IOS') | undefined, dnsErrorType?: ('AD_POLICY_TOPIC_EVIDENCE_DESTINATION_NOT_WORKING_DNS_ERROR_TYPE_UNKNOWN' | 'HOSTNAME_NOT_FOUND' | 'GOOGLE_CRAWLER_DNS_ISSUE') | undefined, expandedUri?: string | undefined, httpErrorCode?: unknown | undefined, lastCheckedTime?: unknown | undefined}; export type AdPolicyTopicEvidenceDestinationTextList = {destinationTexts?: Array | undefined}; export type AdPolicyTopicEvidenceLegalRemovalDmca = {complainant?: string | undefined}; export type AdPolicyTopicEvidenceLegalRemovalLocalLegal = {lawType?: string | undefined}; export type AdPolicyTopicEvidenceLegalRemoval = {complaintType?: ('AD_POLICY_TOPIC_EVIDENCE_LEGAL_REMOVAL_COMPLAINT_TYPE_UNKNOWN' | 'COPYRIGHT' | 'COURT_ORDER' | 'LOCAL_LEGAL') | undefined, countryRestrictions?: Array | undefined, dmca?: AdPolicyTopicEvidenceLegalRemovalDmca | undefined, localLegal?: AdPolicyTopicEvidenceLegalRemovalLocalLegal | undefined, restrictedUris?: Array | undefined}; export type AdPolicyTopicEvidenceRegionalRequirementsRegionalRequirementsEntry = {countryRestrictions?: Array | undefined, legalPolicy?: string | undefined}; export type AdPolicyTopicEvidenceRegionalRequirements = {regionalRequirementsEntries?: Array | undefined}; export type AdPolicyTopicEvidenceTextList = {texts?: Array | undefined}; export type AdPolicyTopicEvidenceTrademark = {countryRestrictions?: Array | undefined, owner?: string | undefined, term?: string | undefined}; export type AdPolicyTopicEvidenceWebsiteList = {websites?: Array | undefined}; export type AdPolicyTopicEvidence = {counterfeit?: AdPolicyTopicEvidenceCounterfeit | undefined, destinationMismatch?: AdPolicyTopicEvidenceDestinationMismatch | undefined, destinationNotWorking?: AdPolicyTopicEvidenceDestinationNotWorking | undefined, destinationTextList?: AdPolicyTopicEvidenceDestinationTextList | undefined, httpCode?: number | undefined, languageCode?: string | undefined, legalRemoval?: AdPolicyTopicEvidenceLegalRemoval | undefined, regionalRequirements?: AdPolicyTopicEvidenceRegionalRequirements | undefined, textList?: AdPolicyTopicEvidenceTextList | undefined, trademark?: AdPolicyTopicEvidenceTrademark | undefined, websiteList?: AdPolicyTopicEvidenceWebsiteList | undefined}; export type AdPolicyTopicEntry = {appealInfo?: AdPolicyTopicAppealInfo | undefined, helpCenterLink?: string | undefined, policyDecisionType?: ('AD_POLICY_DECISION_TYPE_UNKNOWN' | 'PURSUANT_TO_NOTICE' | 'GOOGLE_INVESTIGATION') | undefined, policyEnforcementMeans?: ('AD_POLICY_ENFORCEMENT_MEANS_UNKNOWN' | 'AUTOMATED' | 'HUMAN_REVIEW') | undefined, policyLabel?: string | undefined, policyTopic?: string | undefined, policyTopicConstraints?: Array | undefined, policyTopicDescription?: string | undefined, policyTopicEvidences?: Array | undefined, policyTopicType?: ('AD_POLICY_TOPIC_ENTRY_TYPE_UNKNOWN' | 'PROHIBITED' | 'FULLY_LIMITED' | 'LIMITED' | 'DESCRIPTIVE' | 'BROADENING' | 'AREA_OF_INTEREST_ONLY') | undefined}; export type AdPolicy = {adPolicyApprovalStatus?: ('AD_POLICY_APPROVAL_STATUS_UNKNOWN' | 'DISAPPROVED' | 'APPROVED_LIMITED' | 'APPROVED' | 'AREA_OF_INTEREST_ONLY') | undefined, adPolicyReviewStatus?: ('AD_POLICY_REVIEW_STATUS_UNKNOWN' | 'REVIEW_IN_PROGRESS' | 'REVIEWED' | 'UNDER_APPEAL' | 'ELIGIBLE_MAY_SERVE') | undefined, adPolicyTopicEntry?: Array | undefined}; export type AdUrl = {type?: ('AD_URL_TYPE_UNSPECIFIED' | 'AD_URL_TYPE_BEACON_IMPRESSION' | 'AD_URL_TYPE_BEACON_EXPANDABLE_DCM_IMPRESSION' | 'AD_URL_TYPE_BEACON_CLICK' | 'AD_URL_TYPE_BEACON_SKIP') | undefined, url?: string | undefined}; export type YoutubeVideoDetails = {id?: string | undefined, unavailableReason?: ('VIDEO_UNAVAILABLE_REASON_UNSPECIFIED' | 'VIDEO_UNAVAILABLE_REASON_PRIVATE' | 'VIDEO_UNAVAILABLE_REASON_DELETED') | undefined, videoAssetId?: unknown | undefined}; export type AudioAd = {displayUrl?: string | undefined, finalUrl?: string | undefined, trackingUrl?: string | undefined, video?: YoutubeVideoDetails | undefined}; export type Dimensions = {heightPixels?: number | undefined, widthPixels?: number | undefined}; export type ImageAsset = {assetId?: unknown | undefined, fileSize?: unknown | undefined, fullSize?: Dimensions | undefined, mimeType?: string | undefined}; export type CommonInStreamAttribute = {actionButtonLabel?: string | undefined, actionHeadline?: string | undefined, companionBanner?: ImageAsset | undefined, displayUrl?: string | undefined, finalUrl?: string | undefined, trackingUrl?: string | undefined, video?: YoutubeVideoDetails | undefined}; export type BumperAd = {commonInStreamAttribute?: CommonInStreamAttribute | undefined}; export type DcmTrackingInfo = {creativeId?: unknown | undefined, placementId?: unknown | undefined, trackingAdId?: unknown | undefined}; export type CarouselCard = {callToAction?: string | undefined, finalMobileUrl?: string | undefined, finalUrl?: string | undefined, headline?: string | undefined, marketingImage?: ImageAsset | undefined, portraitMarketingImage?: ImageAsset | undefined, squareMarketingImage?: ImageAsset | undefined}; export type DemandGenCarouselAd = {businessName?: string | undefined, cards?: Array | undefined, customParameters?: {[key: string]: string} | undefined, description?: string | undefined, finalUrl?: string | undefined, finalUrlSuffix?: string | undefined, headline?: string | undefined, logo?: ImageAsset | undefined, trackingUrl?: string | undefined, userSpecifiedTrackingUrl?: string | undefined}; export type DemandGenImageAd = {businessName?: string | undefined, callToAction?: string | undefined, customParameters?: {[key: string]: string} | undefined, descriptions?: Array | undefined, finalMobileUrl?: string | undefined, finalUrl?: string | undefined, finalUrlSuffix?: string | undefined, headlines?: Array | undefined, logoImages?: Array | undefined, marketingImages?: Array | undefined, portraitMarketingImages?: Array | undefined, squareMarketingImages?: Array | undefined, trackingUrl?: string | undefined, userSpecifiedTrackingUrl?: string | undefined}; export type DemandGenProductAd = {businessName?: string | undefined, callToAction?: ('CALL_TO_ACTION_UNSPECIFIED' | 'AUTOMATED' | 'LEARN_MORE' | 'GET_QUOTE' | 'APPLY_NOW' | 'SIGN_UP' | 'CONTACT_US' | 'SUBSCRIBE' | 'DOWNLOAD' | 'BOOK_NOW' | 'SHOP_NOW' | 'BUY_NOW' | 'DONATE_NOW' | 'ORDER_NOW' | 'PLAY_NOW' | 'SEE_MORE' | 'START_NOW' | 'VISIT_SITE' | 'WATCH_NOW') | undefined, customParameters?: {[key: string]: string} | undefined, description?: string | undefined, displayUrlBreadcrumb1?: string | undefined, displayUrlBreadcrumb2?: string | undefined, finalUrl?: string | undefined, finalUrlSuffix?: string | undefined, headline?: string | undefined, logo?: ImageAsset | undefined, trackingUrl?: string | undefined, userSpecifiedTrackingUrl?: string | undefined}; export type DemandGenVideoAd = {businessName?: string | undefined, callToAction?: ('CALL_TO_ACTION_UNSPECIFIED' | 'AUTOMATED' | 'LEARN_MORE' | 'GET_QUOTE' | 'APPLY_NOW' | 'SIGN_UP' | 'CONTACT_US' | 'SUBSCRIBE' | 'DOWNLOAD' | 'BOOK_NOW' | 'SHOP_NOW' | 'BUY_NOW' | 'DONATE_NOW' | 'ORDER_NOW' | 'PLAY_NOW' | 'SEE_MORE' | 'START_NOW' | 'VISIT_SITE' | 'WATCH_NOW') | undefined, companionBanner?: ImageAsset | undefined, customParameters?: {[key: string]: string} | undefined, descriptions?: Array | undefined, displayUrlBreadcrumb1?: string | undefined, displayUrlBreadcrumb2?: string | undefined, finalMobileUrl?: string | undefined, finalUrl?: string | undefined, finalUrlSuffix?: string | undefined, headlines?: Array | undefined, logo?: ImageAsset | undefined, longHeadlines?: Array | undefined, trackingUrl?: string | undefined, userSpecifiedTrackingUrl?: string | undefined, videos?: Array | undefined}; export type DisplayVideoSourceAd = {creativeId?: unknown | undefined}; export type InStreamAd = {commonInStreamAttribute?: CommonInStreamAttribute | undefined, customParameters?: {[key: string]: string} | undefined}; export type MastheadAd = {autoplayVideoDuration?: unknown | undefined, autoplayVideoStartMillisecond?: unknown | undefined, callToActionButtonLabel?: string | undefined, callToActionFinalUrl?: string | undefined, callToActionTrackingUrl?: string | undefined, companionYoutubeVideos?: Array | undefined, description?: string | undefined, headline?: string | undefined, showChannelArt?: boolean | undefined, video?: YoutubeVideoDetails | undefined, videoAspectRatio?: ('VIDEO_ASPECT_RATIO_UNSPECIFIED' | 'VIDEO_ASPECT_RATIO_WIDESCREEN' | 'VIDEO_ASPECT_RATIO_FIXED_16_9') | undefined}; export type NonSkippableAd = {commonInStreamAttribute?: CommonInStreamAttribute | undefined, customParameters?: {[key: string]: string} | undefined}; export type VideoDiscoveryAd = {description1?: string | undefined, description2?: string | undefined, headline?: string | undefined, thumbnail?: ('THUMBNAIL_UNSPECIFIED' | 'THUMBNAIL_DEFAULT' | 'THUMBNAIL_1' | 'THUMBNAIL_2' | 'THUMBNAIL_3') | undefined, video?: YoutubeVideoDetails | undefined}; export type VideoPerformanceAd = {actionButtonLabels?: Array | undefined, businessName?: string | undefined, companionBanners?: Array | undefined, customParameters?: {[key: string]: string} | undefined, descriptions?: Array | undefined, displayUrlBreadcrumb1?: string | undefined, displayUrlBreadcrumb2?: string | undefined, domain?: string | undefined, finalUrl?: string | undefined, headlines?: Array | undefined, logo?: ImageAsset | undefined, longHeadlines?: Array | undefined, trackingUrl?: string | undefined, videos?: Array | undefined}; export type AdGroupAd = {adGroupAdId?: unknown | undefined, adGroupId?: unknown | undefined, adPolicy?: AdPolicy | undefined, adUrls?: Array | undefined, advertiserId?: unknown | undefined, audioAd?: AudioAd | undefined, bumperAd?: BumperAd | undefined, dcmTrackingInfo?: DcmTrackingInfo | undefined, demandGenCarouselAd?: DemandGenCarouselAd | undefined, demandGenImageAd?: DemandGenImageAd | undefined, demandGenProductAd?: DemandGenProductAd | undefined, demandGenVideoAd?: DemandGenVideoAd | undefined, displayName?: string | undefined, displayVideoSourceAd?: DisplayVideoSourceAd | undefined, entityStatus?: ('ENTITY_STATUS_UNSPECIFIED' | 'ENTITY_STATUS_ACTIVE' | 'ENTITY_STATUS_ARCHIVED' | 'ENTITY_STATUS_DRAFT' | 'ENTITY_STATUS_PAUSED' | 'ENTITY_STATUS_SCHEDULED_FOR_DELETION') | undefined, inStreamAd?: InStreamAd | undefined, mastheadAd?: MastheadAd | undefined, name?: string | undefined, nonSkippableAd?: NonSkippableAd | undefined, videoDiscoverAd?: VideoDiscoveryAd | undefined, videoPerformanceAd?: VideoPerformanceAd | undefined}; export type PatchApiV4AdvertisersAdvertisersIdAdGroupAdsAdGroupAdsIdArgs = {advertisersId: string, adGroupAdsId: string, updateMask?: unknown | undefined, body: AdGroupAd}; export type PatchApiV4AdvertisersAdvertisersIdAdGroupAdsAdGroupAdsIdOptions = {baseUrl?: string | undefined, Oauth2?: string | undefined, Oauth2c?: string | undefined, fetch?: typeof fetch | undefined}; export const adPolicyTopicAppealInfo = z.object({appealFormLink: z.string().optional(), appealType: z.enum(["AD_POLICY_APPEAL_TYPE_UNKNOWN", "SELF_SERVICE_APPEAL", "APPEAL_FORM"]).optional()}); export const adPolicyCriterionRestriction = z.object({countryCriterionId: z.string().optional(), countryLabel: z.string().optional()}); export const adPolicyTopicConstraintAdPolicyCountryConstraintList = z.object({countries: z.array(adPolicyCriterionRestriction).optional()}); export const adPolicyTopicConstraintAdPolicyGlobalCertificateDomainMismatchConstraint = z.object({}); export const adPolicyTopicConstraintAdPolicyGlobalCertificateMissingConstraint = z.object({}); export const adPolicyTopicConstraintAdPolicyResellerConstraint = z.object({}); export const adPolicyTopicConstraint = z.object({certificateDomainMismatchCountryList: adPolicyTopicConstraintAdPolicyCountryConstraintList.optional(), certificateMissingCountryList: adPolicyTopicConstraintAdPolicyCountryConstraintList.optional(), countryConstraint: adPolicyTopicConstraintAdPolicyCountryConstraintList.optional(), globalCertificateDomainMismatch: adPolicyTopicConstraintAdPolicyGlobalCertificateDomainMismatchConstraint.optional(), globalCertificateMissing: adPolicyTopicConstraintAdPolicyGlobalCertificateMissingConstraint.optional(), requestCertificateFormLink: z.string().optional(), resellerConstraint: adPolicyTopicConstraintAdPolicyResellerConstraint.optional()}); export const adPolicyTopicEvidenceCounterfeit = z.object({owners: z.array(z.string()).optional()}); export const adPolicyTopicEvidenceDestinationMismatch = z.object({uriTypes: z.array(z.enum(["AD_POLICY_TOPIC_EVIDENCE_DESTINATION_MISMATCH_URL_TYPE_UNKNOWN", "DISPLAY_URL", "FINAL_URL", "FINAL_MOBILE_URL", "TRACKING_URL", "MOBILE_TRACKING_URL"])).optional()}); export const adPolicyTopicEvidenceDestinationNotWorking = z.object({device: z.enum(["AD_POLICY_TOPIC_EVIDENCE_DESTINATION_NOT_WORKING_DEVICE_TYPE_UNKNOWN", "DESKTOP", "ANDROID", "IOS"]).optional(), dnsErrorType: z.enum(["AD_POLICY_TOPIC_EVIDENCE_DESTINATION_NOT_WORKING_DNS_ERROR_TYPE_UNKNOWN", "HOSTNAME_NOT_FOUND", "GOOGLE_CRAWLER_DNS_ISSUE"]).optional(), expandedUri: z.string().optional(), httpErrorCode: z.string().optional(), lastCheckedTime: z.string().optional()}); export const adPolicyTopicEvidenceDestinationTextList = z.object({destinationTexts: z.array(z.string()).optional()}); export const adPolicyTopicEvidenceLegalRemovalDmca = z.object({complainant: z.string().optional()}); export const adPolicyTopicEvidenceLegalRemovalLocalLegal = z.object({lawType: z.string().optional()}); export const adPolicyTopicEvidenceLegalRemoval = z.object({complaintType: z.enum(["AD_POLICY_TOPIC_EVIDENCE_LEGAL_REMOVAL_COMPLAINT_TYPE_UNKNOWN", "COPYRIGHT", "COURT_ORDER", "LOCAL_LEGAL"]).optional(), countryRestrictions: z.array(adPolicyCriterionRestriction).optional(), dmca: adPolicyTopicEvidenceLegalRemovalDmca.optional(), localLegal: adPolicyTopicEvidenceLegalRemovalLocalLegal.optional(), restrictedUris: z.array(z.string()).optional()}); export const adPolicyTopicEvidenceRegionalRequirementsRegionalRequirementsEntry = z.object({countryRestrictions: z.array(adPolicyCriterionRestriction).optional(), legalPolicy: z.string().optional()}); export const adPolicyTopicEvidenceRegionalRequirements = z.object({regionalRequirementsEntries: z.array(adPolicyTopicEvidenceRegionalRequirementsRegionalRequirementsEntry).optional()}); export const adPolicyTopicEvidenceTextList = z.object({texts: z.array(z.string()).optional()}); export const adPolicyTopicEvidenceTrademark = z.object({countryRestrictions: z.array(adPolicyCriterionRestriction).optional(), owner: z.string().optional(), term: z.string().optional()}); export const adPolicyTopicEvidenceWebsiteList = z.object({websites: z.array(z.string()).optional()}); export const adPolicyTopicEvidence = z.object({counterfeit: adPolicyTopicEvidenceCounterfeit.optional(), destinationMismatch: adPolicyTopicEvidenceDestinationMismatch.optional(), destinationNotWorking: adPolicyTopicEvidenceDestinationNotWorking.optional(), destinationTextList: adPolicyTopicEvidenceDestinationTextList.optional(), httpCode: z.number().int().optional(), languageCode: z.string().optional(), legalRemoval: adPolicyTopicEvidenceLegalRemoval.optional(), regionalRequirements: adPolicyTopicEvidenceRegionalRequirements.optional(), textList: adPolicyTopicEvidenceTextList.optional(), trademark: adPolicyTopicEvidenceTrademark.optional(), websiteList: adPolicyTopicEvidenceWebsiteList.optional()}); export const adPolicyTopicEntry = z.object({appealInfo: adPolicyTopicAppealInfo.optional(), helpCenterLink: z.string().optional(), policyDecisionType: z.enum(["AD_POLICY_DECISION_TYPE_UNKNOWN", "PURSUANT_TO_NOTICE", "GOOGLE_INVESTIGATION"]).optional(), policyEnforcementMeans: z.enum(["AD_POLICY_ENFORCEMENT_MEANS_UNKNOWN", "AUTOMATED", "HUMAN_REVIEW"]).optional(), policyLabel: z.string().optional(), policyTopic: z.string().optional(), policyTopicConstraints: z.array(adPolicyTopicConstraint).optional(), policyTopicDescription: z.string().optional(), policyTopicEvidences: z.array(adPolicyTopicEvidence).optional(), policyTopicType: z.enum(["AD_POLICY_TOPIC_ENTRY_TYPE_UNKNOWN", "PROHIBITED", "FULLY_LIMITED", "LIMITED", "DESCRIPTIVE", "BROADENING", "AREA_OF_INTEREST_ONLY"]).optional()}); export const adPolicy = z.object({adPolicyApprovalStatus: z.enum(["AD_POLICY_APPROVAL_STATUS_UNKNOWN", "DISAPPROVED", "APPROVED_LIMITED", "APPROVED", "AREA_OF_INTEREST_ONLY"]).optional(), adPolicyReviewStatus: z.enum(["AD_POLICY_REVIEW_STATUS_UNKNOWN", "REVIEW_IN_PROGRESS", "REVIEWED", "UNDER_APPEAL", "ELIGIBLE_MAY_SERVE"]).optional(), adPolicyTopicEntry: z.array(adPolicyTopicEntry).optional()}); export const adUrl = z.object({type: z.enum(["AD_URL_TYPE_UNSPECIFIED", "AD_URL_TYPE_BEACON_IMPRESSION", "AD_URL_TYPE_BEACON_EXPANDABLE_DCM_IMPRESSION", "AD_URL_TYPE_BEACON_CLICK", "AD_URL_TYPE_BEACON_SKIP"]).optional(), url: z.string().optional()}); export const youtubeVideoDetails = z.object({id: z.string().optional(), unavailableReason: z.enum(["VIDEO_UNAVAILABLE_REASON_UNSPECIFIED", "VIDEO_UNAVAILABLE_REASON_PRIVATE", "VIDEO_UNAVAILABLE_REASON_DELETED"]).optional(), videoAssetId: z.string().optional()}); export const audioAd = z.object({displayUrl: z.string().optional(), finalUrl: z.string().optional(), trackingUrl: z.string().optional(), video: youtubeVideoDetails.optional()}); export const dimensions = z.object({heightPixels: z.number().int().optional(), widthPixels: z.number().int().optional()}); export const imageAsset = z.object({assetId: z.string().optional(), fileSize: z.string().optional(), fullSize: dimensions.optional(), mimeType: z.string().optional()}); export const commonInStreamAttribute = z.object({actionButtonLabel: z.string().optional(), actionHeadline: z.string().optional(), companionBanner: imageAsset.optional(), displayUrl: z.string().optional(), finalUrl: z.string().optional(), trackingUrl: z.string().optional(), video: youtubeVideoDetails.optional()}); export const bumperAd = z.object({commonInStreamAttribute: commonInStreamAttribute.optional()}); export const dcmTrackingInfo = z.object({creativeId: z.string().optional(), placementId: z.string().optional(), trackingAdId: z.string().optional()}); export const carouselCard = z.object({callToAction: z.string().optional(), finalMobileUrl: z.string().optional(), finalUrl: z.string().optional(), headline: z.string().optional(), marketingImage: imageAsset.optional(), portraitMarketingImage: imageAsset.optional(), squareMarketingImage: imageAsset.optional()}); export const demandGenCarouselAd = z.object({businessName: z.string().optional(), cards: z.array(carouselCard).optional(), customParameters: z.record(z.string(), z.string()).optional(), description: z.string().optional(), finalUrl: z.string().optional(), finalUrlSuffix: z.string().optional(), headline: z.string().optional(), logo: imageAsset.optional(), trackingUrl: z.string().optional(), userSpecifiedTrackingUrl: z.string().optional()}); export const demandGenImageAd = z.object({businessName: z.string().optional(), callToAction: z.string().optional(), customParameters: z.record(z.string(), z.string()).optional(), descriptions: z.array(z.string()).optional(), finalMobileUrl: z.string().optional(), finalUrl: z.string().optional(), finalUrlSuffix: z.string().optional(), headlines: z.array(z.string()).optional(), logoImages: z.array(imageAsset).optional(), marketingImages: z.array(imageAsset).optional(), portraitMarketingImages: z.array(imageAsset).optional(), squareMarketingImages: z.array(imageAsset).optional(), trackingUrl: z.string().optional(), userSpecifiedTrackingUrl: z.string().optional()}); export const demandGenProductAd = z.object({businessName: z.string().optional(), callToAction: z.enum(["CALL_TO_ACTION_UNSPECIFIED", "AUTOMATED", "LEARN_MORE", "GET_QUOTE", "APPLY_NOW", "SIGN_UP", "CONTACT_US", "SUBSCRIBE", "DOWNLOAD", "BOOK_NOW", "SHOP_NOW", "BUY_NOW", "DONATE_NOW", "ORDER_NOW", "PLAY_NOW", "SEE_MORE", "START_NOW", "VISIT_SITE", "WATCH_NOW"]).optional(), customParameters: z.record(z.string(), z.string()).optional(), description: z.string().optional(), displayUrlBreadcrumb1: z.string().optional(), displayUrlBreadcrumb2: z.string().optional(), finalUrl: z.string().optional(), finalUrlSuffix: z.string().optional(), headline: z.string().optional(), logo: imageAsset.optional(), trackingUrl: z.string().optional(), userSpecifiedTrackingUrl: z.string().optional()}); export const demandGenVideoAd = z.object({businessName: z.string().optional(), callToAction: z.enum(["CALL_TO_ACTION_UNSPECIFIED", "AUTOMATED", "LEARN_MORE", "GET_QUOTE", "APPLY_NOW", "SIGN_UP", "CONTACT_US", "SUBSCRIBE", "DOWNLOAD", "BOOK_NOW", "SHOP_NOW", "BUY_NOW", "DONATE_NOW", "ORDER_NOW", "PLAY_NOW", "SEE_MORE", "START_NOW", "VISIT_SITE", "WATCH_NOW"]).optional(), companionBanner: imageAsset.optional(), customParameters: z.record(z.string(), z.string()).optional(), descriptions: z.array(z.string()).optional(), displayUrlBreadcrumb1: z.string().optional(), displayUrlBreadcrumb2: z.string().optional(), finalMobileUrl: z.string().optional(), finalUrl: z.string().optional(), finalUrlSuffix: z.string().optional(), headlines: z.array(z.string()).optional(), logo: imageAsset.optional(), longHeadlines: z.array(z.string()).optional(), trackingUrl: z.string().optional(), userSpecifiedTrackingUrl: z.string().optional(), videos: z.array(youtubeVideoDetails).optional()}); export const displayVideoSourceAd = z.object({creativeId: z.string().optional()}); export const inStreamAd = z.object({commonInStreamAttribute: commonInStreamAttribute.optional(), customParameters: z.record(z.string(), z.string()).optional()}); export const mastheadAd = z.object({autoplayVideoDuration: z.string().optional(), autoplayVideoStartMillisecond: z.string().optional(), callToActionButtonLabel: z.string().optional(), callToActionFinalUrl: z.string().optional(), callToActionTrackingUrl: z.string().optional(), companionYoutubeVideos: z.array(youtubeVideoDetails).optional(), description: z.string().optional(), headline: z.string().optional(), showChannelArt: z.boolean().optional(), video: youtubeVideoDetails.optional(), videoAspectRatio: z.enum(["VIDEO_ASPECT_RATIO_UNSPECIFIED", "VIDEO_ASPECT_RATIO_WIDESCREEN", "VIDEO_ASPECT_RATIO_FIXED_16_9"]).optional()}); export const nonSkippableAd = z.object({commonInStreamAttribute: commonInStreamAttribute.optional(), customParameters: z.record(z.string(), z.string()).optional()}); export const videoDiscoveryAd = z.object({description1: z.string().optional(), description2: z.string().optional(), headline: z.string().optional(), thumbnail: z.enum(["THUMBNAIL_UNSPECIFIED", "THUMBNAIL_DEFAULT", "THUMBNAIL_1", "THUMBNAIL_2", "THUMBNAIL_3"]).optional(), video: youtubeVideoDetails.optional()}); export const videoPerformanceAd = z.object({actionButtonLabels: z.array(z.string()).optional(), businessName: z.string().optional(), companionBanners: z.array(imageAsset).optional(), customParameters: z.record(z.string(), z.string()).optional(), descriptions: z.array(z.string()).optional(), displayUrlBreadcrumb1: z.string().optional(), displayUrlBreadcrumb2: z.string().optional(), domain: z.string().optional(), finalUrl: z.string().optional(), headlines: z.array(z.string()).optional(), logo: imageAsset.optional(), longHeadlines: z.array(z.string()).optional(), trackingUrl: z.string().optional(), videos: z.array(youtubeVideoDetails).optional()}); export const adGroupAd = z.object({adGroupAdId: z.string().optional(), adGroupId: z.string().optional(), adPolicy: adPolicy.optional(), adUrls: z.array(adUrl).optional(), advertiserId: z.string().optional(), audioAd: audioAd.optional(), bumperAd: bumperAd.optional(), dcmTrackingInfo: dcmTrackingInfo.optional(), demandGenCarouselAd: demandGenCarouselAd.optional(), demandGenImageAd: demandGenImageAd.optional(), demandGenProductAd: demandGenProductAd.optional(), demandGenVideoAd: demandGenVideoAd.optional(), displayName: z.string().optional(), displayVideoSourceAd: displayVideoSourceAd.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(), inStreamAd: inStreamAd.optional(), mastheadAd: mastheadAd.optional(), name: z.string().optional(), nonSkippableAd: nonSkippableAd.optional(), videoDiscoverAd: videoDiscoveryAd.optional(), videoPerformanceAd: videoPerformanceAd.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 ad group ad. * * PATCH /v4/advertisers/{advertisersId}/adGroupAds/{adGroupAdsId} */ export const patchApiV4AdvertisersAdvertisersIdAdGroupAdsAdGroupAdsId = async (args: PatchApiV4AdvertisersAdvertisersIdAdGroupAdsAdGroupAdsIdArgs, options?: PatchApiV4AdvertisersAdvertisersIdAdGroupAdsAdGroupAdsIdOptions) => { 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))}/adGroupAds/${encodeURIComponent(String(args.adGroupAdsId))}${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(adGroupAd, await res.json()) };