Flows
Blueprints describe how integration logic works across multiple Integrated Apps and Users. They let you integrate with all apps at once, without creating dozens of point-to-point integrations.
For example, if you want to import contacts from any app into yours, a blueprint like this would do the job:
You define which fields imported data must have in the blueprint, then let you users select a Connection, configure the query, and transform source data to the schema you need via Integration UI.
Blueprints defines which parts of the logic apply to all integrated apps, which can be customized by user, and which you provide when creating a specific Flow.

Building a Flow Blueprint

To build a flow blueprint, go to the Flow Blueprints page in the Integration Console.
To create a new blueprint, you an select one of the pre-defined templates or start from scratch. Then add or edit Flow Blueprint Nodes to set up the integration logic you need.

Managing Nodes

Flow Blueprints consist of Nodes. When building Flow Blueprint, you can add, remove, arrange, and configure nodes.

Adding a Node

To add a node, click the “plus” icon in between existing nodes, then select a node you want to add from the list.

Removing a Node

To remove a node, click “Delete” icon on the node. Its previous and next nodes will be automatically linked to fill the gap.

Configuring a Node

Each node has configuration you can change by clicking on the node. Node configuration panel may have the following sections:
  • Config - data required for node to run. This is what will be sent to the node’s run method when the flow is launched.
  • Integration UI - how the node will look to your users. You can configure User Config parameters you want users to provide and preview how a user will see the UI.
When providing values in Config or setting up default values for User Config, you can use Configuration Variables that come from:
  • Flow Parameters defined during the flow creation.
  • User Config provided by user via UI of this or previous nodes.
  • Previous node’s output.
You can learn more about this in the Node Configuration Variables section.

Node Configuration Variables

When configuring a node, you can use variables - placeholders for values that will be defined later. There are a few places variables can come from.

User Input

If you need your users to provide part of the values for a Flow Node, define User Input Schema. When you display Integration UI to your users via openFlow SDK method, they will be asked to fill the User Input. You can specify how User Input translates into node’s config using User Input variables.

Previous Nodes Output

Some nodes know how their output will look like during Flow Blueprint configuration time. For such nodes, you’ll see their Output Schema when configuring downstream nodes.
For example, if a Compose Object node has name field it its config, you will be able to use this name field in subsequent nodes.
Not all nodes know their output schema during Flow Blueprint configuration. For example, nodes that fetch data from an Integrated App won’t know the schema of what they fetch ahead of time. In this case, you will be able to use their output as a whole with “unknown” schema, but not specific fields.
Node’s outputSchema is calculated by calling the node’s simulate method with providedInputSchema. Node then calculates and returns outputSchema based on its unique logic.
This happens every time node’s config or Configuration Variables Schema change.
This process happens recursively: if one node’s outputSchema changes, the following node’s outputSchema will be recalculated. If it changes, the next node will be recalculated, and so on.
When you are satisfied with the blueprint, you can use it to create flows.

Using Flow Blueprints

You can create a flow from a blueprint by providing blueprintKey parameter to the createFlow SDK method or POST /flows API method.
const flow = await integrationApp.createFlow({
blueprintKey: '<my-blueprint-key>',
})
Then you can show the flow to your user to configure:
integrationApp.openFlow(flow.id)
When the flow is fully configured, you can run it and get the output:
const flowRun = await integrationApp.runFlow(flow.id, {input: ...})
const output = await integrationApp.getFlowRunOutput(flowRun)
console.log(output)
Copy link
Outline
Building a Flow Blueprint
Managing Nodes
Node Configuration Variables
Using Flow Blueprints