import {z} from 'zod' export type GetApiUserprofilesUserprofilesIdCreativesCreativesIdArgs = {userprofilesId: string, creativesId: string}; export type GetApiUserprofilesUserprofilesIdCreativesCreativesIdOptions = {baseUrl?: string | undefined, Oauth2?: string | undefined, Oauth2c?: string | undefined, fetch?: typeof fetch | undefined}; export const size = z.object({height: z.number().int().optional(), iab: z.boolean().optional(), id: z.string().optional(), kind: z.string().optional(), width: z.number().int().optional()}); export const creativeAssetId = z.object({name: z.string().optional(), type: z.enum(["IMAGE", "FLASH", "VIDEO", "HTML", "HTML_IMAGE", "AUDIO"]).optional()}); export const creativeClickThroughUrl = z.object({computedClickThroughUrl: z.string().optional(), customClickThroughUrl: z.string().optional(), landingPageId: z.string().optional()}); export const offsetPosition = z.object({left: z.number().int().optional(), top: z.number().int().optional()}); export const popupWindowProperties = z.object({dimension: size.optional(), offset: offsetPosition.optional(), positionType: z.enum(["CENTER", "COORDINATES"]).optional(), showAddressBar: z.boolean().optional(), showMenuBar: z.boolean().optional(), showScrollBar: z.boolean().optional(), showStatusBar: z.boolean().optional(), showToolBar: z.boolean().optional(), title: z.string().optional()}); export const creativeCustomEvent = z.object({advertiserCustomEventId: z.string().optional(), advertiserCustomEventName: z.string().optional(), advertiserCustomEventType: z.enum(["ADVERTISER_EVENT_TIMER", "ADVERTISER_EVENT_EXIT", "ADVERTISER_EVENT_COUNTER"]).optional(), artworkLabel: z.string().optional(), artworkType: z.enum(["ARTWORK_TYPE_FLASH", "ARTWORK_TYPE_HTML5", "ARTWORK_TYPE_MIXED", "ARTWORK_TYPE_IMAGE"]).optional(), exitClickThroughUrl: creativeClickThroughUrl.optional(), id: z.string().optional(), popupWindowProperties: popupWindowProperties.optional(), targetType: z.enum(["TARGET_BLANK", "TARGET_TOP", "TARGET_SELF", "TARGET_PARENT", "TARGET_POPUP"]).optional(), videoReportingId: z.string().optional()}); export const dimensionValue = z.object({dimensionName: z.string().optional(), etag: z.string().optional(), id: z.string().optional(), kind: z.string().optional(), matchType: z.enum(["EXACT", "BEGINS_WITH", "CONTAINS", "WILDCARD_EXPRESSION"]).optional(), value: z.string().optional()}); export const creativeAsset = z.object({actionScript3: z.boolean().optional(), active: z.boolean().optional(), additionalSizes: z.array(size).optional(), alignment: z.enum(["ALIGNMENT_TOP", "ALIGNMENT_RIGHT", "ALIGNMENT_BOTTOM", "ALIGNMENT_LEFT"]).optional(), artworkType: z.enum(["ARTWORK_TYPE_FLASH", "ARTWORK_TYPE_HTML5", "ARTWORK_TYPE_MIXED", "ARTWORK_TYPE_IMAGE"]).optional(), assetIdentifier: creativeAssetId.optional(), audioBitRate: z.number().int().optional(), audioSampleRate: z.number().int().optional(), backupImageExit: creativeCustomEvent.optional(), bitRate: z.number().int().optional(), childAssetType: z.enum(["CHILD_ASSET_TYPE_FLASH", "CHILD_ASSET_TYPE_VIDEO", "CHILD_ASSET_TYPE_IMAGE", "CHILD_ASSET_TYPE_DATA"]).optional(), collapsedSize: size.optional(), companionCreativeIds: z.array(z.string()).optional(), customStartTimeValue: z.number().int().optional(), detectedFeatures: z.array(z.enum(["CSS_FONT_FACE", "CSS_BACKGROUND_SIZE", "CSS_BORDER_IMAGE", "CSS_BORDER_RADIUS", "CSS_BOX_SHADOW", "CSS_FLEX_BOX", "CSS_HSLA", "CSS_MULTIPLE_BGS", "CSS_OPACITY", "CSS_RGBA", "CSS_TEXT_SHADOW", "CSS_ANIMATIONS", "CSS_COLUMNS", "CSS_GENERATED_CONTENT", "CSS_GRADIENTS", "CSS_REFLECTIONS", "CSS_TRANSFORMS", "CSS_TRANSFORMS3D", "CSS_TRANSITIONS", "APPLICATION_CACHE", "CANVAS", "CANVAS_TEXT", "DRAG_AND_DROP", "HASH_CHANGE", "HISTORY", "AUDIO", "VIDEO", "INDEXED_DB", "INPUT_ATTR_AUTOCOMPLETE", "INPUT_ATTR_AUTOFOCUS", "INPUT_ATTR_LIST", "INPUT_ATTR_PLACEHOLDER", "INPUT_ATTR_MAX", "INPUT_ATTR_MIN", "INPUT_ATTR_MULTIPLE", "INPUT_ATTR_PATTERN", "INPUT_ATTR_REQUIRED", "INPUT_ATTR_STEP", "INPUT_TYPE_SEARCH", "INPUT_TYPE_TEL", "INPUT_TYPE_URL", "INPUT_TYPE_EMAIL", "INPUT_TYPE_DATETIME", "INPUT_TYPE_DATE", "INPUT_TYPE_MONTH", "INPUT_TYPE_WEEK", "INPUT_TYPE_TIME", "INPUT_TYPE_DATETIME_LOCAL", "INPUT_TYPE_NUMBER", "INPUT_TYPE_RANGE", "INPUT_TYPE_COLOR", "LOCAL_STORAGE", "POST_MESSAGE", "SESSION_STORAGE", "WEB_SOCKETS", "WEB_SQL_DATABASE", "WEB_WORKERS", "GEO_LOCATION", "INLINE_SVG", "SMIL", "SVG_HREF", "SVG_CLIP_PATHS", "TOUCH", "WEBGL", "SVG_FILTERS", "SVG_FE_IMAGE"])).optional(), displayType: z.enum(["ASSET_DISPLAY_TYPE_INPAGE", "ASSET_DISPLAY_TYPE_FLOATING", "ASSET_DISPLAY_TYPE_OVERLAY", "ASSET_DISPLAY_TYPE_EXPANDING", "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH", "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH_EXPANDING", "ASSET_DISPLAY_TYPE_PEEL_DOWN", "ASSET_DISPLAY_TYPE_VPAID_LINEAR", "ASSET_DISPLAY_TYPE_VPAID_NON_LINEAR", "ASSET_DISPLAY_TYPE_BACKDROP"]).optional(), duration: z.number().int().optional(), durationType: z.enum(["ASSET_DURATION_TYPE_AUTO", "ASSET_DURATION_TYPE_NONE", "ASSET_DURATION_TYPE_CUSTOM"]).optional(), expandedDimension: size.optional(), fileSize: z.string().optional(), flashVersion: z.number().int().optional(), frameRate: z.number().optional(), hideFlashObjects: z.boolean().optional(), hideSelectionBoxes: z.boolean().optional(), horizontallyLocked: z.boolean().optional(), id: z.string().optional(), idDimensionValue: dimensionValue.optional(), mediaDuration: z.number().optional(), mimeType: z.string().optional(), offset: offsetPosition.optional(), orientation: z.enum(["LANDSCAPE", "PORTRAIT", "SQUARE"]).optional(), originalBackup: z.boolean().optional(), politeLoad: z.boolean().optional(), position: offsetPosition.optional(), positionLeftUnit: z.enum(["OFFSET_UNIT_PIXEL", "OFFSET_UNIT_PERCENT", "OFFSET_UNIT_PIXEL_FROM_CENTER"]).optional(), positionTopUnit: z.enum(["OFFSET_UNIT_PIXEL", "OFFSET_UNIT_PERCENT", "OFFSET_UNIT_PIXEL_FROM_CENTER"]).optional(), progressiveServingUrl: z.string().optional(), pushdown: z.boolean().optional(), pushdownDuration: z.number().optional(), role: z.enum(["PRIMARY", "BACKUP_IMAGE", "ADDITIONAL_IMAGE", "ADDITIONAL_FLASH", "PARENT_VIDEO", "TRANSCODED_VIDEO", "OTHER", "ALTERNATE_VIDEO", "PARENT_AUDIO", "TRANSCODED_AUDIO", "COVER_IMAGE", "HEADLINE", "LONG_HEADLINE", "DESCRIPTION", "LONG_DESCRIPTION", "CALL_TO_ACTION"]).optional(), size: size.optional(), sslCompliant: z.boolean().optional(), startTimeType: z.enum(["ASSET_START_TIME_TYPE_NONE", "ASSET_START_TIME_TYPE_CUSTOM"]).optional(), streamingServingUrl: z.string().optional(), transparency: z.boolean().optional(), verticallyLocked: z.boolean().optional(), windowMode: z.enum(["OPAQUE", "WINDOW", "TRANSPARENT"]).optional(), zIndex: z.number().int().optional(), zipFilename: z.string().optional(), zipFilesize: z.string().optional()}); export const additionalAsset = z.object({callToActions: z.array(z.string()).optional(), coverImages: z.array(creativeAsset).optional(), descriptions: z.array(z.string()).optional(), displayUrl: z.string().optional(), headlines: z.array(z.string()).optional(), longDescriptions: z.array(z.string()).optional(), longHeadlines: z.array(z.string()).optional()}); export const targetWindow = z.object({customHtml: z.string().optional(), targetWindowOption: z.enum(["NEW_WINDOW", "CURRENT_WINDOW", "CUSTOM"]).optional()}); export const clickTag = z.object({clickThroughUrl: creativeClickThroughUrl.optional(), eventName: z.string().optional(), name: z.string().optional()}); export const creativeFieldAssignment = z.object({creativeFieldId: z.string().optional(), creativeFieldValueId: z.string().optional()}); export const fsCommand = z.object({left: z.number().int().optional(), positionOption: z.enum(["CENTERED", "DISTANCE_FROM_TOP_LEFT_CORNER"]).optional(), top: z.number().int().optional(), windowHeight: z.number().int().optional(), windowWidth: z.number().int().optional()}); export const lastModifiedInfo = z.object({time: z.string().optional()}); export const obaIcon = z.object({iconClickThroughUrl: z.string().optional(), iconClickTrackingUrl: z.string().optional(), iconViewTrackingUrl: z.string().optional(), program: z.string().optional(), resourceUrl: z.string().optional(), size: size.optional(), xPosition: z.string().optional(), yPosition: z.string().optional()}); export const videoOffset = z.object({offsetPercentage: z.number().int().optional(), offsetSeconds: z.number().int().optional()}); export const thirdPartyTrackingUrl = z.object({thirdPartyUrlType: z.enum(["IMPRESSION", "CLICK_TRACKING", "VIDEO_START", "VIDEO_FIRST_QUARTILE", "VIDEO_MIDPOINT", "VIDEO_THIRD_QUARTILE", "VIDEO_COMPLETE", "VIDEO_MUTE", "VIDEO_PAUSE", "VIDEO_REWIND", "VIDEO_FULLSCREEN", "VIDEO_STOP", "VIDEO_CUSTOM", "SURVEY", "RICH_MEDIA_IMPRESSION", "RICH_MEDIA_RM_IMPRESSION", "RICH_MEDIA_BACKUP_IMPRESSION", "VIDEO_SKIP", "VIDEO_PROGRESS"]).optional(), url: z.string().optional()}); export const universalAdId = z.object({registry: z.enum(["OTHER", "AD_ID_OFFICIAL", "CLEARCAST", "DCM", "ARPP", "CUSV"]).optional(), value: z.string().optional()}); export const creative = z.object({accountId: z.string().optional(), active: z.boolean().optional(), adParameters: z.string().optional(), adTagKeys: z.array(z.string()).optional(), additionalAsset: additionalAsset.optional(), additionalSizes: z.array(size).optional(), advertiserId: z.string().optional(), allowScriptAccess: z.boolean().optional(), archived: z.boolean().optional(), artworkType: z.enum(["ARTWORK_TYPE_FLASH", "ARTWORK_TYPE_HTML5", "ARTWORK_TYPE_MIXED", "ARTWORK_TYPE_IMAGE"]).optional(), authoringSource: z.enum(["CREATIVE_AUTHORING_SOURCE_DCM", "CREATIVE_AUTHORING_SOURCE_DBM", "CREATIVE_AUTHORING_SOURCE_STUDIO", "CREATIVE_AUTHORING_SOURCE_GWD", "CREATIVE_AUTHORING_SOURCE_ACS", "CREATIVE_AUTHORING_SOURCE_ADOBE", "CREATIVE_AUTHORING_SOURCE_TYPEFACE_AI", "CREATIVE_AUTHORING_SOURCE_REMBRAND", "CREATIVE_AUTHORING_SOURCE_TRACKTO_STUDIO", "CREATIVE_AUTHORING_SOURCE_BORNLOGIC", "CREATIVE_AUTHORING_SOURCE_BEGEN_AI"]).optional(), authoringTool: z.enum(["NINJA", "SWIFFY"]).optional(), autoAdvanceImages: z.boolean().optional(), backgroundColor: z.string().optional(), backupImageClickThroughUrl: creativeClickThroughUrl.optional(), backupImageFeatures: z.array(z.enum(["CSS_FONT_FACE", "CSS_BACKGROUND_SIZE", "CSS_BORDER_IMAGE", "CSS_BORDER_RADIUS", "CSS_BOX_SHADOW", "CSS_FLEX_BOX", "CSS_HSLA", "CSS_MULTIPLE_BGS", "CSS_OPACITY", "CSS_RGBA", "CSS_TEXT_SHADOW", "CSS_ANIMATIONS", "CSS_COLUMNS", "CSS_GENERATED_CONTENT", "CSS_GRADIENTS", "CSS_REFLECTIONS", "CSS_TRANSFORMS", "CSS_TRANSFORMS3D", "CSS_TRANSITIONS", "APPLICATION_CACHE", "CANVAS", "CANVAS_TEXT", "DRAG_AND_DROP", "HASH_CHANGE", "HISTORY", "AUDIO", "VIDEO", "INDEXED_DB", "INPUT_ATTR_AUTOCOMPLETE", "INPUT_ATTR_AUTOFOCUS", "INPUT_ATTR_LIST", "INPUT_ATTR_PLACEHOLDER", "INPUT_ATTR_MAX", "INPUT_ATTR_MIN", "INPUT_ATTR_MULTIPLE", "INPUT_ATTR_PATTERN", "INPUT_ATTR_REQUIRED", "INPUT_ATTR_STEP", "INPUT_TYPE_SEARCH", "INPUT_TYPE_TEL", "INPUT_TYPE_URL", "INPUT_TYPE_EMAIL", "INPUT_TYPE_DATETIME", "INPUT_TYPE_DATE", "INPUT_TYPE_MONTH", "INPUT_TYPE_WEEK", "INPUT_TYPE_TIME", "INPUT_TYPE_DATETIME_LOCAL", "INPUT_TYPE_NUMBER", "INPUT_TYPE_RANGE", "INPUT_TYPE_COLOR", "LOCAL_STORAGE", "POST_MESSAGE", "SESSION_STORAGE", "WEB_SOCKETS", "WEB_SQL_DATABASE", "WEB_WORKERS", "GEO_LOCATION", "INLINE_SVG", "SMIL", "SVG_HREF", "SVG_CLIP_PATHS", "TOUCH", "WEBGL", "SVG_FILTERS", "SVG_FE_IMAGE"])).optional(), backupImageReportingLabel: z.string().optional(), backupImageTargetWindow: targetWindow.optional(), clickTags: z.array(clickTag).optional(), commercialId: z.string().optional(), companionCreatives: z.array(z.string()).optional(), compatibility: z.array(z.enum(["DISPLAY", "DISPLAY_INTERSTITIAL", "APP", "APP_INTERSTITIAL", "IN_STREAM_VIDEO", "IN_STREAM_AUDIO"])).optional(), convertFlashToHtml5: z.boolean().optional(), counterCustomEvents: z.array(creativeCustomEvent).optional(), creativeAssets: z.array(creativeAsset).optional(), creativeFieldAssignments: z.array(creativeFieldAssignment).optional(), customKeyValues: z.array(z.string()).optional(), exitCustomEvents: z.array(creativeCustomEvent).optional(), fsCommand: fsCommand.optional(), htmlCode: z.string().optional(), htmlCodeLocked: z.boolean().optional(), id: z.string().optional(), idDimensionValue: dimensionValue.optional(), kind: z.string().optional(), lastModifiedInfo: lastModifiedInfo.optional(), latestTraffickedCreativeId: z.string().optional(), mediaDescription: z.string().optional(), mediaDuration: z.number().optional(), name: z.string().optional(), obaIcon: obaIcon.optional(), overrideCss: z.string().optional(), progressOffset: videoOffset.optional(), redirectUrl: z.string().optional(), renderingId: z.string().optional(), renderingIdDimensionValue: dimensionValue.optional(), requiredFlashPluginVersion: z.string().optional(), requiredFlashVersion: z.number().int().optional(), size: size.optional(), skipOffset: videoOffset.optional(), skippable: z.boolean().optional(), sslCompliant: z.boolean().optional(), sslOverride: z.boolean().optional(), studioAdvertiserId: z.string().optional(), studioCreativeId: z.string().optional(), studioTraffickedCreativeId: z.string().optional(), subaccountId: z.string().optional(), syntheticContentAttestationStatus: z.enum(["SYNTHETIC_CONTENT_ATTESTATION_STATUS_UNSPECIFIED", "IS_SYNTHETIC", "NOT_SYNTHETIC"]).optional(), thirdPartyBackupImageImpressionsUrl: z.string().optional(), thirdPartyRichMediaImpressionsUrl: z.string().optional(), thirdPartyUrls: z.array(thirdPartyTrackingUrl).optional(), timerCustomEvents: z.array(creativeCustomEvent).optional(), totalFileSize: z.string().optional(), type: z.enum(["IMAGE", "DISPLAY_REDIRECT", "CUSTOM_DISPLAY", "INTERNAL_REDIRECT", "CUSTOM_DISPLAY_INTERSTITIAL", "INTERSTITIAL_INTERNAL_REDIRECT", "TRACKING_TEXT", "RICH_MEDIA_DISPLAY_BANNER", "RICH_MEDIA_INPAGE_FLOATING", "RICH_MEDIA_IM_EXPAND", "RICH_MEDIA_DISPLAY_EXPANDING", "RICH_MEDIA_DISPLAY_INTERSTITIAL", "RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL", "RICH_MEDIA_MOBILE_IN_APP", "FLASH_INPAGE", "INSTREAM_VIDEO", "VPAID_LINEAR_VIDEO", "VPAID_NON_LINEAR_VIDEO", "INSTREAM_VIDEO_REDIRECT", "RICH_MEDIA_PEEL_DOWN", "HTML5_BANNER", "DISPLAY", "DISPLAY_IMAGE_GALLERY", "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO", "INSTREAM_AUDIO"]).optional(), universalAdId: universalAdId.optional(), version: z.number().int().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 }; /** * Gets one creative by ID. * * GET /userprofiles/{userprofilesId}/creatives/{creativesId} */ export const getApiUserprofilesUserprofilesIdCreativesCreativesId = async (args: GetApiUserprofilesUserprofilesIdCreativesCreativesIdArgs, options?: GetApiUserprofilesUserprofilesIdCreativesCreativesIdOptions) => { const {baseUrl = "https://dfareporting.googleapis.com/dfareporting/v5", fetch: fetchFn = fetch, Oauth2, Oauth2c} = options ?? {} const query = new URLSearchParams() const headers = new Headers() 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(/\/+$/, '')}/userprofiles/${encodeURIComponent(String(args.userprofilesId))}/creatives/${encodeURIComponent(String(args.creativesId))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(creative, await res.json()) };