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 JSON body containing apipelineToken:
pipelineToken to query processing status downstream.
Compressed Files
When the uploaded file has a compressed extension, the pipeline stages it to the MinIO raw bucket before processing:| Extension | Handling |
|---|---|
.zip | Staged to MinIO raw bucket, then extracted |
.gz | Staged to MinIO raw bucket, then decompressed |
.tar | Staged to MinIO raw bucket, then extracted |
.jar | Staged to MinIO raw bucket, then extracted |
Uncompressed Files
Files without a recognized compressed extension (e.g., plain.csv, .json, .xml) are processed in-memory directly. They are not staged to MinIO.
Processing Flow
- The client sends the multipart request.
- The pipeline inspects the file extension.
- Compressed path: the file is written to the MinIO raw bucket under
raw/{pipeline}/{filename}. A background job picks it up, decompresses it, and feeds each inner file into the ingestion pipeline. - Uncompressed path: the file contents are read into memory and passed directly to the ingestion pipeline.
- The pipeline returns the
pipelineTokenimmediately. Processing continues asynchronously.
Error Responses
| HTTP Status | Cause |
|---|---|
| 400 | Missing pipeline parameter or empty file |
| 404 | Pipeline configuration not found |
| 413 | File exceeds the configured upload size limit |
| 500 | Internal error during staging or processing |
Size Limits
The maximum upload size is controlled by thepipeline.upload.maxFileSize property in application.yaml. The default is 500 MB. Adjust this value if your files regularly exceed the limit: