export type Image = {altText?: string | undefined, baseColor?: number | undefined, colorDepth?: number | undefined, createdById?: number | undefined, date?: string | undefined, description?: string | undefined, fileName?: string | undefined, fileWeight?: number | undefined, format?: ('PNG' | 'JPEG' | 'GIF' | 'SVG' | 'MVG' | 'WEB') | undefined, height?: number | undefined, id?: number | undefined, keywords?: Array | undefined, name?: string | undefined, path?: string | undefined, shared?: boolean | undefined, siteId?: number | undefined, size?: number | undefined, source?: string | undefined, sourceUrl?: string | undefined, tags?: Array | undefined, width?: number | undefined}; export type ImageInPage = {domElementSelector?: string | undefined, height?: string | undefined, htmlContent?: string | undefined, image?: Image | undefined, mainPageUrl?: string | undefined, positionDefinition?: ('EDITOR' | 'SELECTOR') | undefined, positionSelectorRelative?: ('REPLACE' | 'BEFORE' | 'AFTER' | 'NULL') | undefined, redirectURL?: string | undefined, width?: string | undefined}; export type PopIn = {animationDirection?: ('TOP' | 'BOTTOM' | 'LEFT' | 'RIGHT' | 'CENTER' | 'TOP_LEFT' | 'TOP_RIGHT' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'CUSTOM') | undefined, animationTrigger?: ('ON_OPEN' | 'ON_CLOSE' | 'ON_OPEN_AND_CLOSE' | 'CONTINUOUSLY') | undefined, animationType?: ('NONE' | 'FADE' | 'SLIDER' | 'ZOOM_IN' | 'ZOOM_OUT' | 'BOUNCE') | undefined, backgroundColor?: string | undefined, closeWithClickOnOverlay?: boolean | undefined, customPositionAxisX?: string | undefined, customPositionAxisY?: string | undefined, displayImageConfiguration?: ('DISPLAY_ALL_DEVICES' | 'DISPLAY_ONLY_DESKTOP' | 'DISPLAY_ONLY_TABLET' | 'DISPLAY_ONLY_MOBILE' | 'DISPLAY_DESKTOP_TABLET' | 'DISPLAY_DESKTOP_MOBILE' | 'DISPLAY_TABLET_MOBILE') | undefined, fontSize?: string | undefined, height?: string | undefined, heightImageDesktop?: string | undefined, heightImageMobile?: string | undefined, heightImageTablet?: string | undefined, htmlContent?: string | undefined, idTarget2Sell?: string | undefined, image?: Image | undefined, imageDesktop?: Image | undefined, imageMobile?: Image | undefined, imageTablet?: Image | undefined, name?: string | undefined, position?: ('TOP' | 'BOTTOM' | 'LEFT' | 'RIGHT' | 'CENTER' | 'TOP_LEFT' | 'TOP_RIGHT' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'CUSTOM') | undefined, redirectURL?: string | undefined, targetBlank?: boolean | undefined, template?: boolean | undefined, textColor?: string | undefined, textContent?: string | undefined, type?: ('SINGLE_IMAGE' | 'FULL_IMAGE_TEXT' | 'FULL_TEXT_IMAGE' | 'HTML' | 'TARGET2SELL') | undefined, width?: string | undefined, widthImageDesktop?: string | undefined, widthImageMobile?: string | undefined, widthImageTablet?: string | undefined, withOverlay?: boolean | undefined}; export type StickyBlock = {animationDirection?: ('TOP' | 'BOTTOM' | 'LEFT' | 'RIGHT' | 'CENTER' | 'TOP_LEFT' | 'TOP_RIGHT' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'CUSTOM') | undefined, animationTrigger?: ('ON_OPEN' | 'ON_CLOSE' | 'ON_OPEN_AND_CLOSE' | 'CONTINUOUSLY') | undefined, animationType?: ('NONE' | 'FADE' | 'SLIDER' | 'ZOOM_IN' | 'ZOOM_OUT' | 'BOUNCE') | undefined, backgroundColor?: string | undefined, customPositionAxisX?: string | undefined, customPositionAxisY?: string | undefined, displayImageConfiguration?: ('DISPLAY_ALL_DEVICES' | 'DISPLAY_ONLY_DESKTOP' | 'DISPLAY_ONLY_TABLET' | 'DISPLAY_ONLY_MOBILE' | 'DISPLAY_DESKTOP_TABLET' | 'DISPLAY_DESKTOP_MOBILE' | 'DISPLAY_TABLET_MOBILE') | undefined, fontSize?: string | undefined, height?: string | undefined, heightImageDesktop?: string | undefined, heightImageMobile?: string | undefined, heightImageTablet?: string | undefined, htmlContent?: string | undefined, idTarget2Sell?: string | undefined, image?: Image | undefined, imageDesktop?: Image | undefined, imageMobile?: Image | undefined, imageTablet?: Image | undefined, name?: string | undefined, position?: ('TOP' | 'BOTTOM' | 'LEFT' | 'RIGHT' | 'CENTER' | 'TOP_LEFT' | 'TOP_RIGHT' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'CUSTOM') | undefined, redirectURL?: string | undefined, shiftContent?: boolean | undefined, shouldScrollTo?: boolean | undefined, targetBlank?: boolean | undefined, template?: boolean | undefined, textColor?: string | undefined, textContent?: string | undefined, type?: ('SINGLE_IMAGE' | 'FULL_IMAGE_TEXT' | 'FULL_TEXT_IMAGE' | 'HTML' | 'TARGET2SELL') | undefined, width?: string | undefined, widthImageDesktop?: string | undefined, widthImageMobile?: string | undefined, widthImageTablet?: string | undefined}; export type TargetingRule = {id?: number | undefined, segmentConfiguration?: ('ALL_VISITORS' | 'AUTOPROMO_AUTODEFINED' | 'GRAPHICAL_PAGES' | 'HEAT_SLICE' | 'PAGE' | 'SAVED_TEMPLATE' | 'SITE' | 'URL') | undefined, segmentId?: number | undefined, siteId: number, targetingConfigurationParam?: string | undefined, triggerConfiguration?: ('ALL_VISITORS' | 'AUTOPROMO_AUTODEFINED' | 'GRAPHICAL_PAGES' | 'HEAT_SLICE' | 'PAGE' | 'SAVED_TEMPLATE' | 'SITE' | 'URL') | undefined, triggerId?: number | undefined}; export type TrackingTool = {adobeOmnitureObject?: string | undefined, comScoreCustomerId?: string | undefined, comScoreDomain?: string | undefined, contentSquareUrl?: string | undefined, customIntegrations?: Array | undefined, customVariable?: number | undefined, eulerianUserCentricParameter?: string | undefined, name?: ('GOOGLE_ANALYTICS4' | 'GOOGLE_ANALYTICS4_AUDIENCES' | 'GOOGLE_UNIVERSAL_ANALYTICS' | 'ECONDA' | 'SMART_TAG' | 'PIANO' | 'ADOBE_OMNITURE' | 'EULERIAN' | 'WEBTRENDS' | 'KISSMETRICS' | 'PIWIK' | 'CRAZY_EGG' | 'COM_SCORE' | 'TEALIUM' | 'YSANCE' | 'M_PATHY' | 'SMARTFOCUS' | 'EMARSYS' | 'EXPERTSENDER' | 'TAG_COMMANDER' | 'CONTENT_SQUARE' | 'WEBTREKK' | 'CUSTOM_INTEGRATIONS' | 'HEAP' | 'HEAP_COHORTS' | 'KLAVIYO_COHORTS' | 'SEGMENT' | 'MIXPANEL' | 'CLARITY' | 'IABTCF' | 'DATABRICKS' | 'REDSHIFT' | 'SMARTLOOK' | 'MOUSEFLOW' | 'KLAVIYO' | 'FULLSTORY' | 'AMPLITUDE' | 'SNOWPLOW' | 'JUNE' | 'MPARTICLE' | 'BIGQUERY' | 'RUDDERSTACK' | 'SNOWFLAKE' | 'GLASSBOX' | 'HUBSPOT' | 'AIR360' | 'DATADOG' | 'QUANTUM_METRIC' | 'GLASSBOX_V2' | 'BRAZE' | 'KAMELEOON_TRACKING' | 'CUSTOM_TRACKING' | 'VERCEL' | 'AKAMAI') | undefined, reportingScript?: string | undefined, universalAnalyticsDimension?: number | undefined}; export type Template = {config?: string | undefined, cssCode?: string | undefined, dateActivated?: string | undefined, dateCreated?: string | undefined, dateModified?: string | undefined, description?: string | undefined, htmlCode?: string | undefined, id?: number | undefined, isCustomTemplate?: boolean | undefined, name?: string | undefined, siteId: number, status?: ('DRAFT' | 'ACTIVE' | 'PAUSED') | undefined, tags?: Array | undefined, templateCssCode?: string | undefined, templateHtmlCode?: string | undefined, templateJavaScriptCode?: string | undefined, themeId?: number | undefined, type?: ('TEMPLATE' | 'EDITOR' | 'PBX') | undefined, url?: string | undefined, useCustomData?: boolean | undefined, widgetEditorTemplate?: string | undefined}; export type Personalization = {attributionWindow?: number | undefined, baseURL: string, cappingPerVisitorConvertGoal?: boolean | undefined, cappingPerVisitorExposedVisits?: boolean | undefined, cappingPerVisitorExpositions?: boolean | undefined, cappingPerVisitorGoalId?: number | undefined, category?: string | undefined, checkConditionsRule?: ('ALL_CONDITIONS' | 'CUMULATIVE_WEIGHT') | undefined, collectingDataEnabled?: boolean | undefined, createdBy?: number | undefined, cssCode?: string | undefined, customExpositionRate?: number | undefined, dateCollectingDataStopped?: string | undefined, dateCreated?: string | undefined, dateEnded?: string | undefined, dateModified?: string | undefined, dateStarted?: string | undefined, dateStatusModified?: string | undefined, description?: string | undefined, exposedVisitsSameVisitorMax?: number | undefined, expositionFrequencyDelay?: number | undefined, format?: string | undefined, globalCappingGoalId?: number | undefined, globalCappingNumberVisitors?: boolean | undefined, globalCappingVisitorsConfig?: ('NUMBER_VISITORS' | 'NUMBER_VISITORS_CONVERT_GOAL' | 'NUMBER_VISITORS_NOT_CONVERT_GOAL') | undefined, globalScript?: string | undefined, goals?: Array | undefined, id?: number | undefined, imageInPage?: ImageInPage | undefined, isArchived?: boolean | undefined, javaScriptCode?: string | undefined, location?: string | undefined, mainGoalId?: number | undefined, market?: string | undefined, maxNumberVisitorsExposed?: number | undefined, metaReadOnly?: string | undefined, multiExpositionFrequencyDelay?: number | undefined, name: string, personalizationConfiguration?: ('CUSTOM' | 'HTML_IN_PAGE' | 'IMAGE_IN_PAGE' | 'INFOBULLE_ABOVE' | 'NEWS_LETTER' | 'NONE' | 'POPIN' | 'STICKY_BLOCK' | 'TEMPLATE' | 'VARIATION') | undefined, popIn?: PopIn | undefined, priority?: number | undefined, siteId: number, status?: string | undefined, stickyBlock?: StickyBlock | undefined, tags?: Array | undefined, targetingRule?: TargetingRule | undefined, targetingRuleId?: number | undefined, targetingSegmentId?: number | undefined, trackingTools?: Array | undefined, type?: ('AUTOPROMO' | 'BUILDER' | 'CLASSIC' | 'IA' | 'PERSO_RULE') | undefined, variationId?: number | undefined, variationIds?: Array | undefined, visitExpositionFrequency?: number | undefined, visitorExpositionFrequency?: number | undefined, visitorExpositionFrequencyMax?: number | undefined, widget?: Template | undefined}; export type CreateApiPersonalizationsArgs = {body: Personalization}; export type CreateApiPersonalizationsOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Create new personalization * * POST /personalizations */ export const createApiPersonalizations = async (args: CreateApiPersonalizationsArgs, options?: CreateApiPersonalizationsOptions) => { const {baseUrl = "https://api.kameleoon.com", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "*/*") if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/personalizations${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 res.blob() };