> For the complete documentation index, see [llms.txt](https://sevenval.gitbook.io/flat/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sevenval.gitbook.io/flat/develop/reference/actions.md).

# Flow Actions

* [`auth`](/flat/develop/reference/actions/auth.md)
* [`copy`](/flat/develop/reference/actions/copy.md)
* [`debug`](/flat/develop/reference/actions/debug.md)
* [`dump`](/flat/develop/reference/actions/dump.md)
* [`echo`](/flat/develop/reference/actions/echo.md)
* [`error`](/flat/develop/reference/actions/error.md)
* [`eval`](/flat/develop/reference/actions/eval.md)
* [`log`](/flat/develop/reference/actions/log.md)
* [`nameshave`](/flat/develop/reference/actions/nameshave.md)
* [`pass-body`](/flat/develop/reference/actions/pass-body.md)
* [`proxy-request`](/flat/develop/reference/actions/proxy-request.md)
* [`regex`](/flat/develop/reference/actions/regex.md)
* [`request`](/flat/develop/reference/actions/request.md)
* [`requests`](/flat/develop/reference/actions/requests.md)
* [`serve`](/flat/develop/reference/actions/serve.md)
* [`set-config`](/flat/develop/reference/actions/set-config.md)
* [`set-response-headers`](/flat/develop/reference/actions/set-response-headers.md)
* [`set-status`](/flat/develop/reference/actions/set-status.md)
* [`sub-flow`](/flat/develop/reference/actions/sub-flow.md)
* [`template`](/flat/develop/reference/actions/template.md)
* [`xslt`](/flat/develop/reference/actions/xslt.md)

## Test Actions

There are some special purpose actions for [testing](/flat/develop/reference/testing.md):

* [`assert`](/flat/develop/reference/actions/assert.md)
* [`backend-flow`](/flat/develop/reference/actions/backend-flow.md)
* [`set-env`](/flat/develop/reference/actions/set-env.md)
* [`test-request`](/flat/develop/reference/actions/test-request.md)

## `debug` Attribute

In FLAT, every flow action can have a `debug` attribute. Its value is a comma-separated list of log topics:

```
debug="topic1, topic2"
```

Usually actions can be debugged by type, for example to debug all `request` or `template` actions. *Debug topics* allow you to selectively filter debug output of one or more specific actions.

See [Selective Action Debugging](/flat/develop/reference/debugging.md#selective-action-debugging) for more information.

```markup
<flow>
  <template>{"v": 0}</template>
  <template debug="overrides">{"v": 1}</template>
  <template debug="overrides, special-topic">{"v": 2}</template>
</flow>
```

* The debug topic `template` yields output of all three `template` actions.
* The debug topic `overrides` yields output of the two latter actions.
* The debug topic `special-topic` yields output of only the last action.

Specifying `debug` on a `sub-flow` action, automatically applies the debug topic to all actions in that sub-flow.

```markup
<flow>
  <template>{"v": 1}</template>
  <sub-flow src="sub.xml" debug="foo"/>
</flow>
```

`sub.xml`:

```markup
<flow>
  <template>{"v": 2}</template>
  <template debug="bar">{"v": 3}</template>
</flow>
```

* The debug topic `foo` yields output of all actions in `sub.xml`.
* The debug topic `bar` yields output only of the last template in `sub.xml`.

> 📎 Note that there is also a [`debug` *action*](/flat/develop/reference/actions/debug.md). It can be used to create your own debug messages. Of course, it can also be filtered with debug topics.

```markup
<debug level="info" debug="foo" xpath="$foo"/>
```

This will log the content of the variable `$foo` if the topic `foo` has been selected.
