Flow terminals
Flow terminals represent the inputs and outputs to a flow. Every node has input and/or ouptut terminals.
If a node is the first in a flow then any of its input terminals can be set as Flow Input Terminals. If a node does not have any other nodes connected to its output terminals, then they can be set as Flow Output Terminals.
The reason to set a node input terminal as a Flow Input Terminal is if its input will be changed in some way. For example, if a flow is intended to operate on user-provided files, then it should have a Flow Input Terminal defined but if it will always be reading from the same source, then it does not need one.
The same goes for Flow Output Terminals, if a flow is always writing to the same target then it does not need one defined. One thing to note about Flow Output Terminals is that by default, they will be overridden to return their data in the HTTP response from invoking that flow’s REST endpoint. This behavior can be controlled by the output and return query parameters. See the “Overriding Flow Terminals” documentation for a description of these parameters.