# FlowValue
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**modules** | [**Vec<models::FlowModule>**](FlowModule.md) | Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch |
**failure_module** | Option<[**models::FlowModule**](FlowModule.md)> | | [optional]
**preprocessor_module** | Option<[**models::FlowModule**](FlowModule.md)> | | [optional]
**same_worker** | Option<**bool**> | If true, all steps run on the same worker for better performance | [optional]
**preserve_step_tags** | Option<**bool**> | If true and the flow runs on a custom worker tag, steps that declare their own non-empty tag run on it instead of inheriting the flow tag. Steps without their own tag still inherit the flow tag. | [optional]
**concurrent_limit** | Option<**f64**> | Maximum number of concurrent executions of this flow | [optional]
**concurrency_key** | Option<**String**> | Expression to group concurrent executions (e.g., by user ID) | [optional]
**concurrency_time_window_s** | Option<**f64**> | Time window in seconds for concurrent_limit | [optional]
**on_concurrency_limit** | Option<**String**> | What a run of this flow does when its concurrency limit is reached. `queue` (default) re-queues it to a later slot, `fail` ends it immediately as failed, like any failed step. | [optional]
**debounce_delay_s** | Option<**i32**> | Delay in seconds to debounce flow executions | [optional]
**debounce_key** | Option<**String**> | Expression to group debounced executions | [optional]
**debounce_args_to_accumulate** | Option<**Vec<String>**> | Arguments to accumulate across debounced executions | [optional]
**max_total_debouncing_time** | Option<**i32**> | Maximum total time in seconds that a job can be debounced | [optional]
**max_total_debounces_amount** | Option<**i32**> | Maximum number of times a job can be debounced | [optional]
**skip_expr** | Option<**String**> | JavaScript expression to conditionally skip the entire flow | [optional]
**cache_ttl** | Option<**f64**> | Cache duration in seconds for flow results | [optional]
**cache_ignore_s3_path** | Option<**bool**> | | [optional]
**delete_after_secs** | Option<**i32**> | If set, delete the flow job's args, result and logs after this many seconds following job completion | [optional]
**timeout** | Option<**i32**> | Wall-clock limit in seconds for the whole flow run, counted from its start and including time spent sleeping or suspended at an approval. It also applies when the flow is called as a subflow step, unless that step sets its own timeout, which replaces it. It is checked periodically, so a run can go a few seconds past it. When it expires, the running steps are cancelled, the failure module runs if there is one, and the flow ends cancelled with a timeout error. A calling flow sees the subflow step fail with that error. | [optional]
**flow_env** | Option<[**std::collections::HashMap<String, serde_json::Value>**](serde_json::Value.md)> | Environment variables available to all steps. Values can be strings, JSON values, or special references: '$var:path' (workspace variable) or '$res:path' (resource). | [optional]
**priority** | Option<**f64**> | Execution priority (higher numbers run first) | [optional]
**early_return** | Option<**String**> | Id of the step whose result a sync webhook returns as soon as that step completes, while the rest of the flow keeps running. When the step does not run, or fails while the flow has a failure module, the flow's final result is returned instead. | [optional]
**chat_input_enabled** | Option<**bool**> | Whether this flow accepts chat-style input | [optional]
**notes** | Option<[**Vec<models::FlowNote>**](FlowNote.md)> | Sticky notes attached to the flow | [optional]
**groups** | Option<[**Vec<models::FlowGroup>**](FlowGroup.md)> | Semantic groups of modules for organizational purposes | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)