Endpoint
Request
The request usesmultipart/form-data encoding with the following parts:
| Part | Required | Description |
|---|---|---|
file | Yes | The data file to upload |
pipeline | Yes | Name of the target pipeline configuration |
publishertoken | No | Opaque token identifying the data publisher; used for lineage tracking |
Example
Response
A successful upload returns HTTP 200 with a bare string body — the pipeline token itself (a unique UUID generated for the job), not a JSON object:Compressed Files
When the uploaded file has a compressed extension, the archive is extracted in memory and processed synchronously — nothing is staged to MinIO:| Extension | Handling |
|---|---|
.zip | Extracted in memory |
.gz | Decompressed in memory |
.tar | Extracted in memory |
.jar | Extracted in memory |
- CSV pipelines — when an archive contains multiple inner files, they are concatenated into a single job. The header is kept from the first file and stripped from the 2nd and later files. The response is the single pipeline token.
- Non-CSV pipelines, or single-file archives — each inner file is submitted as its own job. With more than one file, the response is the
"N file(s) submitted"string.
Uncompressed Files
Files without a recognized compressed extension (e.g.,.csv, .json, .xml, .xls, .pdf, .docx, .txt, etc) are read into memory and submitted directly. They are not staged to MinIO.
Processing Flow
- The client sends the multipart request.
- The endpoint validates that the named
pipelineis registered. - The file bytes are read into memory and the extension is inspected.
- Compressed path: the archive is decompressed in memory. For CSV pipelines with multiple inner files, the files are concatenated (headers stripped after the first) and submitted as one job; otherwise each inner file is submitted individually.
- Uncompressed path: the file contents are passed directly to the ingestion pipeline.
- The endpoint returns the pipeline token (or the
"N file(s) submitted"string).
Error Responses
| HTTP Status | Cause |
|---|---|
| 400 | Missing pipeline request parameter (Spring binding error) |
| 500 | Pipeline not registered, empty file, internal error, or processing failure |
413 handler; exceeding the configured multipart size limit produces Spring’s default multipart-size error.
Size Limits
The maximum upload size is controlled byspring.servlet.multipart.max-file-size in application.yaml. The default is 1 GB. Adjust this value if your files exceed the limit:
