Skip to main content
The pipeline can automatically generate a ready-to-use pipeline configuration from an uploaded file using an AI model. The generated config can be pasted directly into POST /api/v1/pipeline to register the pipeline without writing any JSON by hand.

How It Works

The response is not registered automatically — it is returned to the caller so you can review it, fill in the placeholder values, and then POST it to /api/v1/pipeline.

Endpoint

Parameters:

Schema Rules by File Type

JSON and XML files use a fixed schema because the pipeline stores them as raw documents — no column inference is needed. Valid AI-inferred types: boolean, int, bigint, float, double, string, date, timestamp

When the model declines

An AI provider’s safety classifier can decline to look at a file, most often one that looks like personal data. For a CSV or other delimited file the endpoint then still returns 200 with every field typed string. With header=true and a first line that reads as column names, the fields keep the header’s names exactly as allStrings=true writes them, except that an empty header cell (empty, plain spaces or a byte-order mark only; an empty or newline-only file included), a cell that only renders blank (such as a Hangul filler), or a name repeated ignoring case and surrounding spaces, is named column_N for its position, so no field name is blank or duplicated. A cell holding only other characters that are not letters (a non-breaking or zero-width space, for example) makes line 1 read as data: every column is then numbered and csvAttributes.header is false. When header is false (the default when the parameter is omitted) or line 1 looks like data, the columns are named column_1, column_2, … and the config sets csvAttributes.header to false. The response carries a top-level "aiDeclined": true, and the pipeline wizard shows a one-line note; set the types by hand. aiDeclined is a response-only flag: it is never saved with a pipeline. The provider’s own text is not included. Only response-side declines are recognised. Azure OpenAI’s prompt-side content filter answers with HTTP 400 (code: content_filter) and is still returned as an error. Nothing else counts as a decline: a missing or wrong provider key, a timeout, a rate limit or any other provider error is still returned as an error, so a misconfiguration is not hidden. Other AI features (search answers, CodeGen, tap generation, fix suggestions and the rest) have no local fallback: a decline there, including a content_filter finish that used to return the cut-off text, is reported as an error. JSON Schema and XSD generation (POST /api/v1/config/generate-schema) have no local fallback: a decline there is still returned as an error, with the message “The model declined this request (…)”.

Example: CSV File

Response:
Replace DATABASE_NAME, SCHEMA_NAME, and TABLE_NAME with real values, then register the pipeline:

Example: JSON File

Response:

Configuration

AI schema generation is disabled by default. To enable it: Schema generation uses the codegen AI slot. As of v1.5.6, AI configuration is split into three independent self-describing Vault secrets — see AI Configuration for the full picture. application.yaml (or docker/config/application.yaml for Docker deployments):
Vault secret (each secret is self-describing — provider, endpoint, model, apiKey, and optionally version, all inline):
For OpenAI:
The Vault secret keys: The pipeline reads the secret at startup. If ai.enabled: true and the codegen secret is missing or malformed, startup will fail with a descriptive error. docker/vault-init.sh seeds this automatically from ANTHROPIC_API_KEY or OPENAI_API_KEY in .env.

Supported Providers

Any other value for provider will cause startup to fail with an unsupported provider error.