# Action nodes

Appfarm Create features a built-in library of logical operations, known as *action nodes*, that can be dropped into an [action](/reference/actions.md). Each action node runs a distinct operation with customizable properties. These include [if statements](/library/action-nodes/if.md) and [foreach loops](/library/action-nodes/foreach.md) as well as [data operations](#data) and advanced functionality such as [generating PDFs](/library/action-nodes/generate-document.md) and [sending SMS](/library/action-nodes/send-sms.md).

You can add Action Nodes to an Action with drag & drop, by clicking the Action Node (will add it after the selected action node inside the selected action), or by using [Appfarm Commander](/reference/appfarm-create/appfarm-commander.md) (`CTRL/CMD + k` <i class="fa-right">:right:</i> Seach by name <i class="fa-right">:right:</i> Add the action node).

## Data

Create and manipulate data in [data sources](/reference/apps/data/data-sources.md).

* [Create Object](/library/action-nodes/create-object.md)
* [Create File Object](/library/action-nodes/create-file-object.md)
* [Create File Archive](/library/action-nodes/create-file-archive.md)
* [Read Objects](/library/action-nodes/read-objects.md)
* [Update Object](/library/action-nodes/update-object.md)
* [Delete Objects](/library/action-nodes/delete-objects.md)
* [Duplicate Objects](/library/action-nodes/duplicate-objects.md)
* [Persist Objects](/library/action-nodes/persist-objects.md)
* [Set Selection](/library/action-nodes/set-selection.md)
* [Set Data Source Attributes](/library/action-nodes/set-data-source-attributes.md)
* [Sort Objects](/library/action-nodes/sort-objects.md)
* [Advanced Search](/library/action-nodes/full-text-search.md)

## Logic

Loop through [data sources](/reference/apps/data/data-sources.md) and use conditionals to control what other action nodes are run.

* [While](/library/action-nodes/while.md)
* [Foreach](/library/action-nodes/foreach.md)
* [Next Iteration](/library/action-nodes/next-iteration.md)
* [Exit Loop](/library/action-nodes/exit-loop.md)
* [If](/library/action-nodes/if.md)
* [Block](/library/action-nodes/block.md)
* [Exit Block](/library/action-nodes/exit-block.md)
* [Catch Exception](/library/action-nodes/catch-exception.md)
* [Throw Exception](/library/action-nodes/throw-exception.md)
* [End Execution](/library/action-nodes/end-execution.md)
* [Sleep](/library/action-nodes/sleep.md)

## Navigation

Navigate through an app and interact with dialogs and popovers.

* [Navigate](/library/action-nodes/navigate.md)
* Open Dialog
* Close Dialog
* [Open Confirm Dialog](/library/action-nodes/open-confirm-dialog.md)
* [Open Snackbar](/library/action-nodes/open-snackbar.md)
* [Open Popover](/library/action-nodes/open-and-close-popover.md)
* [Close Popover](/library/action-nodes/open-and-close-popover.md)
* [Toggle Drawer](/library/action-nodes/toggle-drawer.md)
* [Open URL](/library/action-nodes/open-url.md)
* Open User Dialog
* [Log Out](/library/action-nodes/log-out.md)
* [Log In](/library/action-nodes/log-in.md)
* [Auth Operations](/library/action-nodes/auth-operations.md)

## Other

Run complex operations to enhance your app.

* [Run action](/library/action-nodes/run-action.md)
* [Run flow](/library/action-nodes/run-flow.md)
* [Run Service](/library/action-nodes/run-service.md)
* [Run Code](/library/action-nodes/run-code.md)
* [Import Data](/library/action-nodes/import-data.md)
* [Export Data](/library/action-nodes/export-data.md)
* [Generate Document](/library/action-nodes/generate-document.md)
* [Web Request](/library/action-nodes/web-request.md)
* [Send Email](/library/action-nodes/send-email.md)
* [Send SMS](/library/action-nodes/send-sms.md)
* [Scan Barcode/QR Code](/library/action-nodes/scan-barcode-qr-code.md)
* [Push Notification](/library/action-nodes/push-notifications.md)
* [Copy to Clipboard](/library/action-nodes/copy-to-clipboard.md)
* Create Calendar Event
* Create Shortlink
* [Set Client Language](/library/action-nodes/set-client-language.md)
* [Set Theme](/library/action-nodes/set-theme.md)
* [Request Permissions](/library/action-nodes/request-permissions.md)
* Keep Device Awake
* [Show Install App Prompt](broken://spaces/rV8WgnI3zq5vOSio6QeB)
* [Open Unsplash dialog](/library/action-nodes/open-unsplash-dialog.md)
* [Open Print Dialog](/library/action-nodes/open-print-dialog.md)
* [Update Secret](/library/action-nodes/update-secret.md) (Services only)
* [Invalidate Cache](/library/action-nodes/invalidate-cache.md) (Services only)

## User accounts

Manage [user accounts](/reference/security/users.md) via apps.

* [Create User Account](/library/action-nodes/create-user-account.md)
* [Update User Account](/library/action-nodes/update-user-account.md)
* [Set User Account Image](/library/action-nodes/set-user-account-image.md)
* [Delete User Account](/library/action-nodes/delete-user-account.md)

## Debug

Find and resolve issues in your action nodes.

* [Log to Console](/library/action-nodes/log-to-console.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appfarm.io/library/action-nodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
