/** * GET /api/accounting/incoming-invoices/config * Current extraction-engine config for the settings page. The API key is NEVER * returned (only `hasKey`). Merges env (runtimeConfig) with per-org overrides * stored as an AD_Preference. */ import refreshTokenHelper from '../../../utils/refreshTokenHelper' import errorHandlingHelper from '../../../utils/errorHandlingHelper' import { getInboxConfig } from '../../../utils/inbox/inboxDb' import { getInboxScope, buildInboxCtx } from '../../../utils/inbox/scope' const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const scope = getInboxScope(event) if (!scope.orgId) return { status: 401 } const env: any = (useRuntimeConfig() as any)?.ap?.llm || {} let override: any = {} try { override = (await getInboxConfig(buildInboxCtx(event, token), 'llm')) || {} } catch {} return { status: 200, llm: { enabled: (override.enabled ?? env.enabled) === true, provider: override.provider || env.provider || 'compatible', baseUrl: override.baseUrl || env.baseUrl || '', model: override.model || env.model || '', mode: override.mode || env.mode || 'assisted', threshold: Number(override.threshold ?? env.threshold ?? 0.6), hasKey: !!env.apiKey, envEnabled: env.enabled === true } } } export default defineEventHandler(async (event) => { try { return await handleFunc(event) } catch (err: any) { try { return await handleFunc(event, await refreshTokenHelper(event)) } catch (error: any) { return errorHandlingHelper(err?.data ?? err, error?.data ?? error) } } })