Flow Configurations are the how tasks are executed within the Chain.io network. These configurations are essential to running a Flow Execution in the Chain.io portal. Flow Executions have the following basic steps:

Each Flow Configuration is called multiple times. The individual calls result in Flow Executions
Adapters are the programs you write to receive data from Chain.io and return results. Each adapter begins by receiving data to a webhook endpoint that you host, and ends when you call a callback URL that is embedded in the result.
You can write your adapters in any language and host them in any location. The only technical requirements are that they communicate via HTTPs and are able to receive webhooks and post responses.
Need help building your adapters. The Chain.io Professional Services offers a wide range of services including design consulting, coding, and hosting. Contact us at info@chain.io for more details.
There are two types of adapters that you can write depending on where your application fits into the Flow Setup. An Input Adapter and an Output Adapter

Input Adapters take data in your application's proprietary format and convert it into the Chain.io Canonical JSON format that's appropriate for the type of Flow Setup that you're participating in. The main use case for an Input Adapter is when you want to be able to feed data into the Chain.io network without modifying the core functionality of your system. For example, you might already have a function that sends a webhook with the relevant information that your customer could use as the Data Source on the Chain.io network. Then you could write a separate microservice to represent the Input Adapter, which would turn your webhook data into the Chain.io format.

Output Adapters are the end of the processing line. This is where you take Chain.io Caninonical JSON and write or deliver data to your system. For example, if you have a service that needs a data stream of a customer's newly created shipments, you'd write an output adapter that receives the shipment data and writes it to your database.
To support a wide range of systems, Chain.io utilizes a standard set of JSON formats that encourage interoperability between systems. Each individual Flow Type has a unique data structure that you'll code your adapter to interface with.
Visit the API Callbacks section of this documentation to learn about the specific format for your use case.
Each time data is processed through the Chain.io network, it's represented by a Flow Execution. A single Flow Execution starts with data being sent to a Data Source, processed by a series of Adapters, and resulting in a final status.
Each Flow Execution represents a single data transformation and is immutable once it has completed. When a user resubmits a Flow Execution, it creates an entirely new Flow Execution using the same source data.
Flow Executions are visible and searchable via the Chain.io Portal. Each Flow Execution has the following component parts:
Status: An indicator of the state of the execution. Valid values include In-Progress,** Skipped**, Error, Bug, or Success. While the Execution is running, it will be in the In Progress status. Once it's completed, it'll be in the status of the last adapter that executed. When you implement your response callback from your adapter, you'll always provide a status. The status you return tells the Chain.io processing engine whether to stop or call the next step in the transformation pipeline.
User Logs: A text log including any information you return from your adapter. Include any diagnostic messages that may be helpful for the user if they need to research. Each log message contains a text message and a status of INFO, WARNING, or ERROR. These messages are color coded to the users in the screen. The status from the User Logs are not directly tied to the final status of your adapter. If appropriate, you may return an ERROR user log message while returning Success as your final status message. This may happen if you experience an error and also have logic in your adapter to work around the problem.
Data Tags: A list of searchable values that you may return to assist the user in finding flow executions. Data Tags are searchable in the Chain.io Portal. Each data tag contains a string label describing the type of tag it is (like "Bill of Lading") and a value (like "MOBL12345667"). Only the values are searchable.
Files: A list of downloadable file payloads that the user can retrieve if they need to diagnose issues with the execution. This will always include the input to the Input Adapter, the returned value from the Input Adapter, the returned value from an Mutations. Any adapter can also return zero or more file objects with their callback payloads which the user will be able to download from the Flow Execution screen.
Integrations are logical groupings of Flow Setups that users use to manage a business process. One integration may include one or more Flow Setups. In our example of a Carbon Emissions data provider, the user setup one Integration with the "co2" type. Under that integration, they would configure two Flow Setups (one to register the shipments, and one to receive the CO2 updates).

See the Integration Types section of this documentation for a full list of all integrations and the flow setups that each support.