export type ScheduleType = 'cron' | 'daily' | 'hourly' | 'minutes_interval' | 'monthly' | 'none' | 'weekly'; export type AudienceMaster = {parentDatabaseName: string, parentTableName: string}; export type ColumnType = 'string' | 'number' | 'timestamp' | 'date' | 'string_array' | 'number_array' | 'boolean'; export type AudienceAttribute = {audienceId: string, name: string, type: ColumnType, parentDatabaseName: string, parentTableName: string, parentColumn: string, parentKey: string, foreignKey: string, groupingName: string | null}; export type AudienceBehaviorSchema = {name: string, type: ColumnType, parentColumn: string}; export type AudienceBehavior = {id: string, name: string, parentDatabaseName: string, parentTableName: string, parentKey: string, foreignKey: string, schema: Array, scheduleType?: ScheduleType | undefined, scheduleOption?: (string | null) | undefined, defaultTimeFilterEnabled?: boolean | undefined, isRealtime?: boolean | undefined}; export type CustomerGroupAttribute = {name: string, type: ColumnType, parentDatabaseName: string, parentTableName: string, parentColumn: string, parentKey: string, foreignKey: string}; export type CustomerGroupBehaviorSchema = {name: string, type: ColumnType, parentColumn: string}; export type CustomerGroupBehavior = {name: string, parentDatabaseName: string, parentTableName: string, parentKey: string, foreignKey: string, schema: Array}; export type CustomerGroup = {id?: string | undefined, audienceId?: number | undefined, name: string, parentDatabaseName: string, parentTableName: string, parentKey: string, foreignKey: string, customerGroupAttributes?: Array | undefined, customerGroupBehaviors?: Array | undefined}; export type AudienceFilter = {columnName: string, rightValues: Array}; export type User = {id?: string | undefined, td_user_id?: string | undefined, name?: string | undefined}; export type Audience = {id?: unknown | undefined, name: string, description?: string | undefined, scheduleType?: ScheduleType | undefined, scheduleOption?: (string | null) | undefined, timezone?: string | undefined, matrixUpdatedAt?: (unknown | null) | undefined, workflowHiveOnly?: boolean | undefined, hiveEngineVersion?: ('0.13' | 'cdpaudience') | undefined, hivePoolName?: (string | null) | undefined, prestoPoolName?: (string | null) | undefined, allowActivationBehavior?: (boolean | null) | undefined, maxActivationBehaviorRow?: (number | null) | undefined, llmEnabled?: (boolean | null) | undefined, llmState?: ('enabling' | 'enabled' | 'disabling' | 'disabled') | undefined, population?: (number | null) | undefined, enrichmentWordTaggingEnabled?: boolean | undefined, enrichmentIpEnabled?: boolean | undefined, enrichmentTdJsSdkEnabled?: boolean | undefined, master?: AudienceMaster | undefined, attributes?: Array | undefined, behaviors?: Array | undefined, customerGroup?: CustomerGroup | undefined, audienceFilters?: Array | undefined, createdAt?: string | undefined, updatedAt?: string | undefined, createdBy?: User | undefined, updatedBy?: User | undefined}; export type CreateApiAudiencesArgs = {body: Audience}; export type CreateApiAudiencesOptions = {baseUrl?: string | undefined, TdApikeyAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Create new parent segment configuration * * POST /audiences */ export const createApiAudiences = async (args: CreateApiAudiencesArgs, options?: CreateApiAudiencesOptions) => { const {baseUrl = "https://api-cdp.treasuredata.com", fetch: fetchFn = fetch, TdApikeyAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (TdApikeyAuth !== undefined) headers.set("Authorization", TdApikeyAuth) const url = `${baseUrl.replace(/\/+$/, '')}/audiences${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 undefined };