Pipelines — API Reference
The Pipelines domain spans three gRPC services across three proto packages:
| Service | Package | Owns |
|---|---|---|
| SourceService | dodil.k3.source.v1 | Sources (external data sources + the auto-created internal S3 source) and Credentials (OAuth / API keys / PATs / access keys) |
| PipelineService | dodil.k3.pipeline.v1 | Pipelines (Scriptum template + destination bindings) and Template catalog browsing |
| IngestService | dodil.k3.ingest.v1 | Ingest rules (triggers), source sync (Discovery / Ingestion / SyncStatus), and ingest jobs (per-object runs) |
For the typed domain model (Source, Credential, Pipeline, Template, IngestRule, IngestJob) see Core Concepts. For headers and error envelope see Conventions.
Sections
- Sources —
CreateSource·GetSource·ListSources·UpdateSource·DeleteSource - Credentials —
StoreCredential·GetCredential·ListCredentials·DeleteCredential·ValidateCredential· OAuth flow (GetOAuthUrl·ExchangeOAuthCode·RefreshOAuthToken) - Pipelines —
CreatePipeline·GetPipeline·ListPipelines·UpdatePipeline·DeletePipeline - Templates —
ListTemplates·GetTemplate - Rules —
CreateRule·GetRule·ListRules·UpdateRule·DeleteRule - Sync —
TriggerDiscovery·TriggerIngestion·GetSyncStatus - Jobs —
TriggerIngest·GetIngestStatus·ListIngestJobs
Wire conventions
| HTTP request body | HTTP query / path | gRPC | |
|---|---|---|---|
| Field names | camelCase (pbjson) | snake_case (e.g. page_size, full_sync) | as in .proto |
| Enums | wire-name strings ("SOURCE_STATUS_ACTIVE") | — | enum |
int64 | JSON strings | strings | int64 |
| All fields | always emitted (no defaults dropped) | — | — |
Endpoint roots
| Endpoint | When to use |
|---|---|
https://k3.dev.dodil.io (staging) · https://k3.dodil.io (prod) | HTTP |
k3-grpc.dev.dodil.io:443 (staging) · k3-grpc.dodil.io:443 (prod) | gRPC |
Auth: bearer JWT in Authorization. See Conventions.
A note on routing authority
Rules carry both pipeline_id (the authoritative pointer) and binding (server-derived display info — pipeline name, kind, destination). Always route on pipeline_id. The binding is for rendering only and is empty when a rule outlives its pipeline.
See also
- Core Concepts — every type signature, end-to-end
- Quickstart — wire all six entities in 5 minutes
- CLI Guide — every
dodil k3command in this domain - Conventions — auth headers + error envelope