> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# flowExecute

> Processes a message through a full flow from a Trigger connector to a Terminal connector, equivalent to calling the Flow API, and must be invoked via an admin API user and authtoken.

Processes flows in the same way as the [Flow API](../../flows/flow-api). This means a single message is processed through multiple connectors as a single consecutive process. Allows you to invoke a full flow that begins with a Trigger connector and ends with a Terminal connector.

The operation must be called using an admin API user and authtoken with the `connector.rsc/flowexecute` endpoint.

## Required Parameters

* **connectorId**: The Id of the first connector in the flow.

## Optional Parameters

* **WorkspaceId**: Id of the workspace where the flow is located. If not specified, the operation uses the Default workspace.
* **MessageData**: The incoming message data as UTF-8 text.
* **MessageName**: The file name of the incoming message.
* **HeaderName#**: A comma-separated list of message header names to include on the message.
* **HeaderValue#**: A comma-separated list of message header values to include on the message.
* **InputEncoding**: The format of the Input message data. Available values are **UTF-8**, **BASE64**, and **HEX**. The default is UTF-8.
* **OutputEncoding**: The format of the Output message data. Available values are **UTF-8**, **BASE64**, and **HEX**. The default is UTF-8.

## Output Parameters

* **Result**: The result. Available values are: **Success**, **Error**, **Warning**, **Pending**, and **Skipped**.
* **MessageData**: The output message data as UTF-8, if the **Result** is not Error, Pending, or Skipped.
* **MessageName**: The file name of the output message.
* **ErrorMessage**: The detailed error message if the **Result** is Error or Warning.
* **LastConnectorId**: The Id of the last connector in the flow.
* **LastWorkspaceId**: The Id of the last workspace in the flow.
* **MessageId**: The message Id.

## Example

This example shows the inputs and the outputs available to this operation in a [Script connector](../../connectors/script) (the trigger connector). It defines the first connector in the flow by specifying the connector Id and the workspace where it can be found. It also defines a filename for the file being processed through the flow, as well as its contents. Finally, the `flowExecute` operation is called using an admin API user and authtoken with the `connector.rsc/flowexecute` endpoint.

```xml theme={null}
<!--Required:Define first connector in the flow--> 
<arc:set attr="flow.connectorid" value="Script_ChangeName"/> 
<!--Define workspace where flow is located, if not set this uses the Default workspace--> 
<arc:set attr="flow.workspaceid" value="Default"/> 
<!--Set filename of file to pass through flow as messagename attribute--> 
<arc:set attr="flow.messagename" value="[Filename]"/> 
<!--Get contents of message to pass to flow and set as messagedata attribute--> 
<!--Note this loads the contents of the file as a string--> 
<arc:set attr="in.file" value="[Filepath]" /> 
<arc:call op="fileRead" in="in" out="out" > 
  <arc:set attr="flow.messagedata" value="[out.file:data]" /> 
</arc:call> 

<!--Set a header and its value preserving the original filename, to reference later--> 
<arc:set attr="flow.headername#1" value="origfilename"/> 
<arc:set attr="flow.headervalue#1" value="[Filename]"/> 

<!--You must call this operation through connector.rsc and pass in a valid authtoken -->
<arc:call op="connector.rsc/flowExecute" authtoken="test:0d1V7j2r2Z7a9z1Y6z8y" in="flow" out="status"> 
  <!-- This if statement checks if the message encountered an error during processing. If yes, the message is finalized as Error in this script.--> 
  <arc:if exp="[status.result | equals('Error')]" >
    <arc:throw code="FlowFailed" desc="The message failed to be processed by the flowExecute call due to the following error: [status.ErrorMessage | def]" /> 
  </arc:if>
</arc:call>  
```
