Create a Workflow
Create a new workflow to orchestrate function execution.
Workflows define how functions are connected together to process data through multiple steps.
A workflow has a mainFunction as its entry point, and optional relationships that define
how data flows between functions.
Workflow Structure
- mainFunction: The entry point function that receives initial input
- relationships: Define connections between functions (required for multi-function workflows)
Single Function Workflows
For simple use cases, create a workflow with just a mainFunction and no relationships.
The workflow will execute only that function.
Multi-Function Workflows
For complex pipelines, define relationships to connect functions:
sourceFunction: The function that produces outputdestinationName: The named output/route from the source functiondestinationFunction: The function that receives the output
Authorization
API Key Authenticate using API Key in request header
In: header
Request Body
application/json
Name of workflow. Can be updated to rename the workflow. Must be unique within the environment and match the pattern ^[a-zA-Z0-9_-]{1,128}$.
^[a-zA-Z0-9_-]{1,128}$1 <= length <= 128Display name of workflow.
Array of tags to categorize and organize workflows.
Main function for the workflow. The mainFunction and relationships fields act as a unit and must be provided together, or neither provided.
- If
mainFunctionis provided withoutrelationships, relationships will default to an empty array. - If
relationshipsis provided,mainFunctionmust also be provided (validation error if missing). - If neither is provided, both mainFunction and relationships remain unchanged from the current workflow version.
Relationships between functions in the workflow. The mainFunction and relationships fields act as a unit and must be provided together, or neither provided.
- If
relationshipsis provided,mainFunctionmust also be provided (validation error if missing). - If
mainFunctionis provided withoutrelationships, relationships will default to an empty array. - If neither is provided, both mainFunction and relationships remain unchanged from the current workflow version.
Response Body
application/json
curl -X POST "https://api.bem.ai/v2/workflows" \ -H "Content-Type: application/json" \ -d '{ "name": "invoice-enrichment-pipeline", "displayName": "Invoice Enrichment Pipeline", "mainFunction": { "name": "invoice-extractor", "versionNum": 2 }, "relationships": [ { "sourceFunction": { "name": "invoice-extractor", "versionNum": 2 }, "destinationFunction": { "name": "vendor-enricher", "versionNum": 1 } } ] }'{
"workflow": {
"id": "string",
"name": "string",
"versionNum": 0,
"displayName": "string",
"emailAddress": "string",
"tags": [
"string"
],
"mainFunction": {
"id": "string",
"name": "string",
"versionNum": 0
},
"relationships": [
{
"sourceFunction": {
"id": "string",
"name": "string",
"versionNum": 0
},
"destinationName": "string",
"destinationFunction": {
"id": "string",
"name": "string",
"versionNum": 0
}
}
],
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"audit": {
"workflowCreatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
},
"workflowLastUpdatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
},
"versionCreatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
}
}
},
"error": "string"
}