# Branch

> Tests several groups of conditions in order.

The lead takes the exit of the first group that holds, or Else when none does.

| | |
|---|---|
| Type | `branch` |
| Group | Logic |

## Exits

An If / else or a Branch has no settings. Its tests are in the node's "branches": an array of objects, each {"id": the exit's id, "name": a label, "match": "all" or "any", "conds": an array of {"f": a field, "op": an operator, "v": a value}}. An If / else has exactly one branch, with the id "yes"; its exits are "yes" and "no". A Branch has one or more, each with an id of its own (not "else" or "no"); its exits are those ids, then "else". A value for "is any of" is a list separated by commas. "is blank" and "is not blank" take no value. A yes or no field is tested against "yes" or "no".

## In a flow document

```json
{
  "id": "branch1",
  "type": "branch",
  "branches": [
    {
      "id": "small",
      "name": "Small company",
      "match": "all",
      "conds": [
        {
          "f": "sopro.headcount",
          "op": "is less than",
          "v": "11"
        }
      ]
    }
  ]
}
```
