UpdateFlowAttributes

typed block

Sets a collection of attributes on the current flow. These attributes are not carried over to the subsequent flows. With this type of operation, either all attributes are set or none are set.

Factories

UpdateFlowAttributes

UpdateFlowAttributes() -> UpdateFlowAttributesHandle

Construct a fresh UpdateFlowAttributes block with an auto-generated id.

Use this when authoring from scratch, the runtime picks a UUID automatically.

UpdateFlowAttributes

UpdateFlowAttributes(id: String) -> UpdateFlowAttributesHandle

Construct a UpdateFlowAttributes block with an operator-supplied id.

ParameterTypeRequiredDescription
idStringyesWire identifier, typically a Connect UUID restored by decompile so round-trips stay byte-stable.

Methods

flow_attributes

flow_attributes(value: Map<String, String>) -> UpdateFlowAttributesHandle

Set the FlowAttributes parameter. Flow attributes written for the duration of THIS flow execution (scope $.FlowAttributes.<key>). On the wire each value is wrapped in an object: Parameters.FlowAttributes = { "<key>": { "Value": "<string>" } } — distinct from UpdateContactAttributes.Attributes, which is a flat Map<String,String>. The typed setter stores the Rhai map verbatim via Dynamic, so author the wrapped form directly: .flow_attributes(#{ MyKey: #{ Value: "literal-or-$.JSONPath" } }). Empirically required — Connect rejects a flat { "MyKey": "v" } with a (misleading) Invalid Action type (probe, the Connect test instance 2026-05-29; see [[connect-attribute-scoping-across-edges]]). Flow attributes are strictly flow-execution-scoped: they do NOT survive a TransferToFlow and do NOT cross an InvokeFlowModule boundary in either direction.

ParameterTypeRequiredDescription
valueMap<String, String>yesFlow attributes written for the duration of THIS flow execution (scope $.FlowAttributes.<key>). On the wire each value is wrapped in an object: Parameters.FlowAttributes = { "<key>": { "Value": "<string>" } } — distinct from UpdateContactAttributes.Attributes, which is a flat Map<String,String>. The typed setter stores the Rhai map verbatim via Dynamic, so author the wrapped form directly: .flow_attributes(#{ MyKey: #{ Value: "literal-or-$.JSONPath" } }). Empirically required — Connect rejects a flat { "MyKey": "v" } with a (misleading) Invalid Action type (probe, the Connect test instance 2026-05-29; see [[connect-attribute-scoping-across-edges]]). Flow attributes are strictly flow-execution-scoped: they do NOT survive a TransferToFlow and do NOT cross an InvokeFlowModule boundary in either direction.

next

next(target: Handle) -> UpdateFlowAttributesHandle

Wire the success-path transition. Substitutes the target's auto-generated UUID into the wire Transitions.NextAction slot.

ParameterTypeRequiredDescription
targetHandleyesThe block to route to once this block completes successfully.

on_no_matching

on_no_matching(target: Handle) -> UpdateFlowAttributesHandle

Wire an error transition for NoMatchingError: Route to take when Connect rejects the UpdateFlowAttributes action at runtime. The doc-inferred block-def declared errors: [], but real production flows carry Errors[NoMatchingError] entries that Connect accepts on deploy — decompiling such a flow against the pre-overlay catalogue produced .on_error_raw(...) calls that the compiler refused because the typed surface had no error branch registered.

ParameterTypeRequiredDescription
targetHandleyesBlock to route to on NoMatchingError. Route to take when Connect rejects the UpdateFlowAttributes action at runtime. The doc-inferred block-def declared errors: [], but real production flows carry Errors[NoMatchingError] entries that Connect accepts on deploy — decompiling such a flow against the pre-overlay catalogue produced .on_error_raw(...) calls that the compiler refused because the typed surface had no error branch registered.

set_id

set_id(id: String) -> UpdateFlowAttributesHandle

Override the auto-generated identifier with a specific wire id.

ParameterTypeRequiredDescription
idStringyesWire identifier override. Decompile threads this through to round-trip Connect-side UUIDs.

meta_position

meta_position(x: i64, y: i64) -> UpdateFlowAttributesHandle

Set the block's canvas position. Mostly auto-emitted by decompile; authored scripts call Flow.auto_layout() instead and let the layout pass fill positions in.

ParameterTypeRequiredDescription
xi64yesCanvas X coordinate.
yi64yesCanvas Y coordinate.

set_meta

set_meta(key: String, value: Dynamic) -> UpdateFlowAttributesHandle

Single-key escape hatch, set one ActionMetadata key by name when the typed meta_* setters don't cover it.

ParameterTypeRequiredDescription
keyStringyesWire key name (under Metadata.ActionMetadata[<id>]).
valueDynamicyesAny JSON-serializable Rhai value.

overwrite_meta

overwrite_meta(value: Map) -> UpdateFlowAttributesHandle

Full-replace escape hatch, overwrite the entire ActionMetadata blob.

ParameterTypeRequiredDescription
valueMapyesReplacement map for the entire ActionMetadata sub-object.

set_meta_param

set_meta_param(param: String, flag: String, value: Dynamic) -> UpdateFlowAttributesHandle

Set a single per-parameter ActionMetadata flag.

ParameterTypeRequiredDescription
paramStringyesParameter name (e.g. "Text").
flagStringyesFlag name ("useDynamic", "MFLAG_*", etc.).
valueDynamicyesFlag value.

overwrite_meta_param

overwrite_meta_param(param: String, value: Map) -> UpdateFlowAttributesHandle

Replace the entire flag map for one parameter.

ParameterTypeRequiredDescription
paramStringyesParameter name.
valueMapyesReplacement flag map for the parameter.

overwrite_parameters

overwrite_parameters(value: Map) -> UpdateFlowAttributesHandle

Wire-shape escape hatch, overwrite the entire Parameters blob.

ParameterTypeRequiredDescription
valueMapyesReplacement parameter map for the block.

raw_transitions

raw_transitions(value: Map) -> UpdateFlowAttributesHandle

Wire-shape escape hatch for non-canonical transition objects.

ParameterTypeRequiredDescription
valueMapyesReplacement transitions map (raw JSON shape).