build-cloud-flow
dci build-cloud-flow [body]
Creates a new CloudFlow and generates its nodes and connections based on the provided natural language intent. The operation streams incremental build events, including the ID of the newly created flow, as they are produced.
Pass the request body as name: value arguments or pipe JSON on stdin — see Command structure.
The API answers with a text/event-stream of build events. The CLI parses that stream into
one result: flowId (the created flow), conversationId (pass it to dci refine-cloud-flow
to continue the same builder conversation), the builder's answer, and the build steps
that ran. If the stream is not recognized, the raw text is printed unchanged.
- Specify every slot up front — trigger, source, destination names, field mapping. A fully
specified prompt builds in one shot; an underspecified one costs a clarification round
(answer it with
refine-cloud-flowand the sameconversationId) and tends to drift. - Pass free text on stdin. Restish shorthand treats commas structurally, so a
questioncontaining commas must be sent as JSON:dci build-cloud-flow < build.json. - Inspect before trusting. The flow lands as a draft in your own tenant. Run
dci export-cloudflow-flow <flow-id>to review the nodes, thendci test-run-cloudflow-flow <flow-id> --dry-runto validate — builder-generated code nodes in particular often need repair via export → edit → import. dci build-cloudflowis accepted as an alias.
Examples
# Build a new draft flow from a fully specified prompt read from a file (free text with commas must go through stdin).
dci build-cloud-flow < build.json
# build.json
{"question": "Every Monday at 09:00 UTC, run the report named Monthly AWS Spend, map each row to a DataHub event, and push the events to the finance-reports dataset. Use a schedule trigger."}
# Result: {"flowId": "...", "conversationId": "...", "answer": "...", "steps": [...]} — the flow is an unpublished draft.
# A short prompt in shorthand (no commas in the text).
dci build-cloud-flow question: "Every Monday morning run the Monthly AWS Spend report and post a summary to Slack"
# Capture the new flow's ID for the next steps (export, test-run, refine).
dci build-cloud-flow --output json < build.json | jq -r .flowId
Request
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
question | string | yes | Natural language description of the CloudFlow to build from scratch. |
conversationId | string | ID of an existing conversation to continue. When omitted, a new conversation is started. |
Raw JSON schema
{
"type": "object",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "Natural language description of the CloudFlow to build from scratch."
},
"conversationId": {
"type": "string",
"description": "ID of an existing conversation to continue. When omitted, a new conversation is started."
}
}
}
Output
OK - Build event stream.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
Returns: string
Raw JSON schema
{
"type": "string"
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
HTTP status to exit code mapping
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 401 | 10 | AUTHENTICATION_FAILED | Not signed in, or the API token is invalid. Run dci login or check DCI_API_KEY. |
| 403 | 11 | PERMISSION_DENIED | The DoiT user or the active customer context does not have access. |
| 406 | 1 | API_ERROR | The request failed; the printed error message has details. |
| 500, 502 | 40 | API_SERVER_ERROR | The API failed to process the request. Retryable; contact DoiT support if it persists. |
Related
- refine-cloud-flow — Refine a CloudFlow from natural language intent
- export-cloudflow-flow — Export a flow as a portable bundle
- import-cloudflow-flow — Import a flow bundle
- test-run-cloudflow-flow — Test-run a flow
- list-cloudflows — List CloudFlows
- API reference: POST /cloudflow/v1/flows/actions/build
Aliases: buildcloudflow