export type AllocationItem = {allocationPart?: number | undefined, checked?: boolean | undefined, locked?: boolean | undefined, sectionId?: number | undefined, variationId?: string | undefined}; export type MVTAllocation = {combinationsAllocations?: Array | undefined, exposedPart?: number | undefined, sectionsAllocations?: Array | 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 ExperimentUpdateIO = {autoOptimized?: boolean | undefined, baseURL?: string | undefined, commonCssCode?: string | undefined, commonJavaScriptCode?: string | undefined, description?: string | undefined, deviations?: {[key: string]: number} | undefined, globalScript?: string | undefined, goals?: Array | undefined, identificationKey?: string | undefined, isMultipleTestingCorrection?: boolean | undefined, mainGoalId?: number | undefined, mvtAllocationSettings?: MVTAllocation | undefined, name?: string | undefined, respoolTime?: {[key: string]: number} | undefined, tags?: Array | undefined, targetingConfiguration?: ('ALL_VISITORS' | 'AUTOPROMO_AUTODEFINED' | 'GRAPHICAL_PAGES' | 'HEAT_SLICE' | 'PAGE' | 'SAVED_TEMPLATE' | 'SITE' | 'URL') | undefined, targetingRule?: TargetingRule | undefined, targetingSegmentId?: number | undefined, trackingTools?: Array | undefined, trafficAllocationMethod?: ('CONTEXTUAL_BANDIT' | 'MANUAL' | 'MULTI_ARMED_BANDIT') | undefined}; export type PatchApiExperimentsExperimentIdArgs = {experimentId: number, action?: ('ACTIVATE' | 'PAUSE' | 'RESUME' | 'STOP' | 'SCHEDULE' | 'DEACTIVATE' | 'REVERT_TO_DRAFT') | undefined, body: ExperimentUpdateIO}; export type PatchApiExperimentsExperimentIdOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Partially update experiment * * PATCH /experiments/{experimentId} */ export const patchApiExperimentsExperimentId = async (args: PatchApiExperimentsExperimentIdArgs, options?: PatchApiExperimentsExperimentIdOptions) => { 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 (args.action != null) query.append("action", String(args.action)) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/experiments/${encodeURIComponent(String(args.experimentId))}${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 res.blob() };