export type AccessToPageGoalParams = {matchString?: string | undefined, matchType?: ('CONTAINS' | 'CORRESPONDS_EXACTLY' | 'REGULAR_EXPRESSION') | undefined}; export type TrackingSelector = {id?: number | undefined, mode?: ('ID' | 'CLASS' | 'TAG' | 'TAG_CLASS' | 'CUSTOM' | 'AUTOGENERATED' | 'CONTENT' | 'CUSTOM_ATTRIBUTE') | undefined, selector?: string | undefined}; export type ClickTrackingGoalParams = {customSelectors?: Array | undefined, url?: string | undefined}; export type PageViewsGoalParams = {numberMatchType?: ('MORE_THAN' | 'EQUALS' | 'LESS_THAN') | undefined, numberOfVisitedPages?: number | undefined}; export type ScrollTrackingGoalParams = {type?: ('ELEMENT' | 'PERCENTAGE' | 'PIXELS_HEIGHT') | undefined, url?: string | undefined, value?: number | undefined}; export type TimeSpentGoalParams = {matchType?: ('MORE_THAN' | 'EQUALS' | 'LESS_THAN') | undefined, timeSeconds?: number | undefined}; export type GoalUpdateIO = {description?: string | undefined, hasMultipleConversions?: boolean | undefined, isMainGoal?: boolean | undefined, name?: string | undefined, params?: (AccessToPageGoalParams | ClickTrackingGoalParams | PageViewsGoalParams | ScrollTrackingGoalParams | TimeSpentGoalParams) | undefined, tags?: Array | undefined, trackingTools?: (Array<'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, type?: ('CLICK' | 'CUSTOM' | 'SCROLL' | 'PAGE_VIEWS' | 'URL' | 'TIME_SPENT' | 'RETENTION_RATE' | 'WAREHOUSE' | 'RATIO_METRICS') | undefined}; export type PatchApiGoalsGoalIdArgs = {goalId: number, body: GoalUpdateIO}; export type PatchApiGoalsGoalIdOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Partially update goal * * PATCH /goals/{goalId} */ export const patchApiGoalsGoalId = async (args: PatchApiGoalsGoalIdArgs, options?: PatchApiGoalsGoalIdOptions) => { 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(/\/+$/, '')}/goals/${encodeURIComponent(String(args.goalId))}${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() };