dodil data object destination
Manage object-pipeline destinations. Five subcommands — create, list, get, update, delete (dest is an accepted alias). An object pipeline is the facet whose destination writes derived files back into a bucket: a summarizer that drops .md files under summaries/, a transcriber that writes .txt next to each media file. Like the vector facet, the destination is a pipeline, so get, update and delete take a pipeline id.
Persistent flag on the whole group: --bucket / -b (required).
| Subcommand | RPC |
|---|---|
dodil data object destination create | CreateObjectPipeline — POST /:bucket/pipelines/object |
dodil data object destination list | ListPipelines — GET /:bucket/pipelines?facet=object |
dodil data object destination get | GetPipeline — GET /:bucket/pipelines/:pipeline_id |
dodil data object destination update | UpdatePipeline — PATCH /:bucket/pipelines/:pipeline_id |
dodil data object destination delete | DeletePipeline — DELETE /:bucket/pipelines/:pipeline_id |
The old
objects/destinationsroute tree is gone. The pillar split folded object destinations into pipeline facets — creating one isPOST /:bucket/pipelines/object, listing is?facet=object. The predecessordodil.data.object.v1.ObjectService.CreateObjectDestination(which made a bare destination and left binding a pipeline to a second call) no longer exists;template_idis now required and both rows are written together.
dodil data object destination create
dodil data object destination create [name] -b BUCKET \
-t TEMPLATE_ID --target-prefix PREFIX \
[--target-bucket BUCKET] [--excluded-prefix PREFIX] [-d DESC]Creates an object pipeline + its destination in one call (template-driven). K3 writes the store_entities destination row and the pipelines row bound to it together — if the pipeline row fails, the destination is rolled back. The pipeline runs the template against each matching object and writes the derived blob to a deterministic key derived from the source key plus target_prefix.
| Flag | Short | Type | Description |
|---|---|---|---|
--template | -t | string | Required. Object pipeline template id (a template producing a blob-shaped output) |
--target-prefix | — | string | Required. Folder/prefix outputs are written under. A blank one is rejected — a blob writer with no prefix has nowhere to put the blob. Trailing slash optional (normalized off). |
--target-bucket | — | string | Sibling bucket to write to. Defaults to the same bucket; must belong to the same org. |
--excluded-prefix | — | string | Prefix ingest rules skip on the source side. Empty falls back to _pipeline-out/. Set it to target_prefix to self-exclude a destination that writes into the folder it reads from. |
--description | -d | string | Human-readable description |
# Summarize every uploaded doc, write the summary back under summaries/
# (this is what `recipe install summarize-to-markdown` does under the hood)
dodil data object destination create doc-summaries -b kb-prod \
--template summarization \
--target-prefix summaries/ \
--description "Markdown summaries of uploaded documents"
--excluded-prefixexists to stop an ingest cycle. Without it, a destination that writes back into the same bucket re-ingests its own output forever. Ingest rules skip any source object under a destination’sexcluded_prefix; when unset the server uses_pipeline-out/. If yourtarget_prefixis a folder your rules also read from, set--excluded-prefixto the same value.
The response is a Pipeline with its destination attached. Capture pipelineId — get, update, delete and every ingest command key off it.
It does not create an ingest rule
Like every facet creator, CreateObjectPipeline derives no ingest rule — callers own rule scope. Nothing is ever processed until you bind one:
dodil data ingest add doc-rule -b kb-prod \
--source "$SOURCE_ID" \
--collection "$PIPELINE_ID" \
--include '**/*.pdf' --include '**/*.docx'--collection on ingest add sets CreateRuleRequest.pipeline_id — pass the pipeline id regardless of facet. See dodil data ingest. The one shortcut that binds the rule for you is dodil data recipe install — e.g. the summarize-to-markdown recipe wires an object pipeline and its rule in one command.
dodil data object destination list
dodil data object destination list -b BUCKETListPipelines with facet = PIPELINE_FACET_OBJECT (?facet=object over HTTP). The response key is pipelines.
dodil data object destination list -b kb-prod -o json \
| jq '.pipelines[] | {pipelineId, name: .destination.name,
targetPrefix: .destination.object.targetPrefix,
targetBucket: .destination.object.targetBucket}'dodil data object destination get
dodil data object destination get [pipeline-id] -b BUCKETTakes a pipeline id. Read .destination.object for the targetPrefix / targetBucket / excludedPrefix the pipeline writes with.
dodil data object destination update
dodil data object destination update [pipeline-id] -b BUCKET \
[--target-prefix PREFIX] [--target-bucket BUCKET] \
[--excluded-prefix PREFIX] [-d DESC]Edits the bound destination in place — only the flags you pass change; the rest are left alone. Per-facet validation applies exactly as on create, so a blank --target-prefix is rejected here too — update cannot walk a destination into a state create would have refused. The destination’s facet is immutable: an object destination stays an object destination.
| Flag | Short | Description |
|---|---|---|
--target-prefix | — | New target prefix |
--target-bucket | — | New target bucket |
--excluded-prefix | — | New excluded prefix |
--description | -d | New description |
dodil data object destination delete
dodil data object destination delete [pipeline-id] -b BUCKETDeletes the pipeline row (and its destination). This is wiring only — it does not delete the derived files already written under target_prefix; those are ordinary objects you remove yourself. Delete the ingest rule first, or use POST /:bucket/pipelines/_batch-delete (BatchDeleteArtifacts) to unwind rules → pipelines → destinations in dependency order.
RULE_ID=$(dodil data ingest list -b kb-prod -p "$PIPELINE_ID" -o json | jq -r '.rules[0].ruleId')
dodil data ingest delete "$RULE_ID" -b kb-prod
dodil data object destination delete "$PIPELINE_ID" -b kb-prodSee also
- Pipelines — API Reference → Pipelines —
CreateObjectPipeline,ObjectConfig, and the shared pipeline CRUD dodil data vector collection— the vector facet creator, same shapedodil data ingest— bind the rule that makes the pipeline firedodil data recipe— one-command provisioning incl. object pipelines- Pipelines — Overview → Pipeline kinds — where the
objectkind sits