Merge branch 'main' of https://github.com/christianlouis/DocuElevate into copilot/fix-pricing-page-issues

This commit is contained in:
copilot-swe-agent[bot]
2026-03-07 14:47:29 +00:00
24 changed files with 3277 additions and 13 deletions
+170
View File
@@ -1441,6 +1441,176 @@ Execute a full data migration from source to target database.
```
## Pipelines
The pipeline API lets you build and manage custom document processing workflows. Each pipeline is owned by a single user (or by the system when `owner_id` is `null`).
### Step-types catalogue
```bash
GET /api/pipelines/step-types
```
Returns the catalogue of built-in step types.
**Response (200):**
```json
{
"convert_to_pdf": {
"label": "Convert to PDF",
"description": "Convert non-PDF documents to PDF format using Gotenberg.",
"config_schema": {}
},
"ocr": {
"label": "OCR Processing",
"description": "Extract text using Azure Document Intelligence or local Tesseract.",
"config_schema": {
"force_cloud_ocr": { "type": "boolean", "default": false }
}
}
}
```
### List pipelines
```bash
GET /api/pipelines
```
Returns pipelines visible to the current user (own + system pipelines). Admins see all pipelines.
### Create pipeline
```bash
POST /api/pipelines
Content-Type: application/json
{
"name": "My Workflow",
"description": "Converts, OCRs, and stores documents.",
"is_default": false,
"is_active": true
}
```
**Response (201):**
```json
{
"id": 1,
"owner_id": "alice",
"name": "My Workflow",
"description": "Converts, OCRs, and stores documents.",
"is_default": false,
"is_active": true,
"created_at": "2026-03-07T10:00:00+00:00",
"updated_at": "2026-03-07T10:00:00+00:00"
}
```
### Create system pipeline (admin only)
```bash
POST /api/pipelines/admin/system
Content-Type: application/json
{
"name": "Global Default",
"is_default": true
}
```
### Get pipeline with steps
```bash
GET /api/pipelines/{pipeline_id}
```
**Response (200):**
```json
{
"id": 1,
"owner_id": "alice",
"name": "My Workflow",
"steps": [
{ "id": 1, "position": 0, "step_type": "convert_to_pdf", "enabled": true, "config": {} },
{ "id": 2, "position": 1, "step_type": "ocr", "enabled": true, "config": { "force_cloud_ocr": false } }
]
}
```
### Update pipeline
```bash
PUT /api/pipelines/{pipeline_id}
Content-Type: application/json
{ "name": "Renamed Workflow", "is_default": true }
```
### Delete pipeline
```bash
DELETE /api/pipelines/{pipeline_id}
```
Returns **204 No Content**.
### Add step
```bash
POST /api/pipelines/{pipeline_id}/steps
Content-Type: application/json
{
"step_type": "ocr",
"label": "Cloud OCR",
"config": { "force_cloud_ocr": true },
"enabled": true
}
```
### Update step
```bash
PUT /api/pipelines/{pipeline_id}/steps/{step_id}
Content-Type: application/json
{ "enabled": false }
```
### Delete step
```bash
DELETE /api/pipelines/{pipeline_id}/steps/{step_id}
```
Returns **204 No Content**.
### Reorder steps
```bash
PUT /api/pipelines/{pipeline_id}/steps/reorder
Content-Type: application/json
[3, 1, 2]
```
Provide a complete ordered list of **all** step IDs. Their positions are reassigned 0, 1, 2, … in the given order.
### Assign pipeline to a file
```bash
POST /api/files/{file_id}/assign-pipeline?pipeline_id=2
```
Pass no `pipeline_id` query parameter (or omit it) to clear the assignment.
**Response (200):**
```json
{ "file_id": 42, "pipeline_id": 2 }
```
## Further Assistance
For additional help with the API, please contact our support team or refer to the [Development Guide](../CONTRIBUTING.md).
+49
View File
@@ -334,6 +334,55 @@ PAPERLESS_CUSTOM_FIELDS_MAPPING='{"absender": "Sender", "empfaenger": "Recipient
3. After successful upload, custom fields are automatically populated
4. You can view the populated fields in your Paperless-ngx document details
## Processing Pipelines
Processing pipelines let you define exactly what happens to your documents when they are uploaded. Each pipeline is an ordered sequence of **steps** — for example: convert to PDF → OCR → extract metadata → send to storage.
### Key concepts
| Term | Meaning |
|------|---------|
| **Pipeline** | A named, ordered list of processing steps |
| **Step** | A single processing action (e.g., OCR, metadata extraction) |
| **System pipeline** | Created by an admin; visible to all users as a shared default |
| **User pipeline** | Created by a regular user; private to that user |
| **Default pipeline** | Marked `is_default=true`; used automatically for new uploads |
### Managing your pipelines
1. Navigate to **Pipelines** in the top navigation bar.
2. Click **New Pipeline** to create a pipeline, give it a name and optional description.
3. Expand the pipeline card and click **Add Step** to build the workflow.
4. Use the ↑ / ↓ arrows to reorder steps, or click the edit icon to change step settings.
5. Mark a pipeline as **Default** so new documents are automatically processed by it.
### Available step types
| Step Type | Description |
|-----------|-------------|
| `convert_to_pdf` | Convert non-PDF files to PDF using Gotenberg |
| `check_duplicates` | Detect duplicate files by content hash |
| `ocr` | Extract text with Azure Document Intelligence or local Tesseract |
| `extract_metadata` | Extract structured metadata (type, sender, tags) with AI |
| `embed_metadata` | Write extracted metadata into the PDF document properties |
| `compute_embedding` | Compute semantic embeddings for similarity search |
| `send_to_destinations` | Upload the processed document to all configured storage destinations |
| `classify` | Classify the document type with AI |
### Assigning a pipeline to a file
You can assign (or change) the pipeline for an individual document via the file detail page or the API:
```bash
POST /api/files/{file_id}/assign-pipeline?pipeline_id=3
```
Pass no `pipeline_id` to clear the assignment and fall back to the system default.
### Admin: system-wide pipelines
Admins can create **system pipelines** that appear in every user's pipeline list. These can be set as the global default so all users benefit from a consistent processing baseline. Navigate to **Pipelines** and check the **System pipeline** box when creating a new one (admin only).
## API Access
For programmatic access, DocuElevate provides a comprehensive REST API: