PipelineService API
Package: dodil.k3.pipeline.v1
PipelineService owns pipeline definitions and template discovery.
What It Is For
- Create reusable processing pipelines in a bucket.
- Bind a pipeline to a destination store entity (vector collection or table).
- Discover Scriptum templates used to spawn or reference pipeline scripts.
Endpoint Map
Pipelines
| gRPC method | HTTP route |
|---|---|
CreatePipeline | POST /:bucket/pipelines |
ListPipelines | GET /:bucket/pipelines |
GetPipeline | GET /:bucket/pipelines/:pipeline_id |
UpdatePipeline | PATCH /:bucket/pipelines/:pipeline_id |
DeletePipeline | DELETE /:bucket/pipelines/:pipeline_id |
Templates
| gRPC method | HTTP route |
|---|---|
ListTemplates | GET /admin/templates |
GetTemplate | GET /admin/templates/:template_id |
Key Arguments
Create pipeline
| Field | Type | Required | Purpose |
|---|---|---|---|
bucket | string | yes | Owning bucket |
name | string | yes | Pipeline display name |
script_source | oneof | yes | Exactly one source of script |
options | map<string,string> | no | Runtime option overlay |
store_entity_id | string | no | Destination binding (vector or warehouse) |
script_source options:
scriptum_template: reference existing Scriptum script name.spawn_from_template: template ID to spawn a new script.
List pipelines
| Field | Type | Required | Purpose |
|---|---|---|---|
bucket | string | yes | Bucket scope |
store_entity_kind | string | no | Filter (vector, warehouse, free) |
store_entity_id | string | no | Filter by destination |
pagination | object | no | Cursor pagination |
Update pipeline
| Field | Type | Required | Purpose |
|---|---|---|---|
name | optional string | no | Rename pipeline |
scriptum_template | optional string | no | Replace script template reference |
options | StringMap wrapper | no | Update/clear option map |
store_entity_id | optional string | no | Rebind or clear destination |
Examples
Create from existing scriptum template name
curl -sS -X POST "https://k3.dev.dodil.io/kb-prod/pipelines" \
-H "Authorization: Bearer $K3_TOKEN" \
-H "x-organization-id: $K3_ORG" \
-H "Content-Type: application/json" \
-d '{
"bucket": "kb-prod",
"name": "embed-contracts",
"scriptum_template": "object_embedding_index",
"options": {
"chunk_size": "1000",
"chunk_overlap": "150"
}
}'Create by spawning from template ID
curl -sS -X POST "https://k3.dev.dodil.io/kb-prod/pipelines" \
-H "Authorization: Bearer $K3_TOKEN" \
-H "x-organization-id: $K3_ORG" \
-H "Content-Type: application/json" \
-d '{
"bucket": "kb-prod",
"name": "lease-extraction",
"spawn_from_template": "lease_extraction_template"
}'Rebind destination and update options
curl -sS -X PATCH "https://k3.dev.dodil.io/kb-prod/pipelines/pipeline_123" \
-H "Authorization: Bearer $K3_TOKEN" \
-H "x-organization-id: $K3_ORG" \
-H "Content-Type: application/json" \
-d '{
"bucket": "kb-prod",
"pipeline_id": "pipeline_123",
"store_entity_id": "collection_abc",
"options": {"entries": {"rerank": "true"}}
}'Common Use Cases
- Separate extraction and embedding logic into distinct pipelines.
- Move an existing pipeline to a new destination without recreating rules.
- Roll out template updates while keeping existing pipeline IDs stable.
Next: IngestService