# RUAL Documentation: block catalog

> All 1900 non-deprecated blocks of RUAL Core v15.0.0, from the catalog snapshot embedded in this site, so this file answers even when the live catalog API is down. Each entry lists the in/out pins (id, type, required), the machine-oriented semantics contract where the core carries one, and the blocks it is most often wired to in production blueprints (out = this block feeds into it, in = it feeds into this block, both = wired in both directions). The linked page carries the full detail.

## Apple API

### verify transaction (`function_apple_app_store_server_verify_app_transaction`)

- Group: Apple API / transactions
- Verifies the given app transaction based on the apple app store server json web token
- Semantics: Decodes the Apple JWS payload (the base64url middle segment) and returns it on payload with success and verified set true : NO cryptographic signature verification is performed, so verified=true means only that the token decoded. An empty bundleid or token fails with error MISSING_BUNDLE_ID / MISSING_TOKEN; the environment output is "Production" only when the environment input equals PRODUCTION (case-insensitive), otherwise "Sandbox". The app_apple_id input is accepted but never read.
- In pins: `flow` (flow), `bundleid` (value, required), `token` (value, required), `environment` (value), `app_apple_id` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `environment` (value), `verified` (condition), `payload` (object)
- Page: https://docs.rual.nl/block-types/Apple%20API/function_apple_app_store_server_verify_app_transaction.md

### verify notification (`function_apple_app_store_server_verify_notification`)

- Group: Apple API / transactions
- Verifies the given app notification based on the apple app store server json web token
- Semantics: Decodes the Apple server-notification JWS payload and returns it on payload with success and verified set true : NO cryptographic signature verification is performed. When the payload's data object carries signedTransactionInfo or signedRenewalInfo JWS strings, those are decoded too and added as transactionInfo / renewalInfo. An empty bundleid or token fails with error MISSING_BUNDLE_ID / MISSING_TOKEN; the environment output is "Production" only for an environment input of PRODUCTION (case-insensitive), otherwise "Sandbox".
- In pins: `flow` (flow), `bundleid` (value, required), `token` (value, required), `environment` (value), `app_apple_id` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `environment` (value), `verified` (condition), `payload` (object)
- Page: https://docs.rual.nl/block-types/Apple%20API/function_apple_app_store_server_verify_notification.md

### verify purchase (`function_apple_app_store_server_verify_transaction`)

- Group: Apple API / transactions
- Verifies the given transaction based on the apple app store server json web token
- Semantics: Decodes the Apple signed-transaction JWS payload and returns it on payload with success and verified set true : NO cryptographic signature verification is performed, so verified=true means only that the token decoded. An empty bundleid or token fails with error MISSING_BUNDLE_ID / MISSING_TOKEN; the environment output is "Production" only when the environment input equals PRODUCTION (case-insensitive), otherwise "Sandbox". The app_apple_id input is accepted but never read.
- In pins: `flow` (flow), `bundleid` (value, required), `token` (value, required), `environment` (value), `app_apple_id` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `environment` (value), `verified` (condition), `payload` (object)
- Page: https://docs.rual.nl/block-types/Apple%20API/function_apple_app_store_server_verify_transaction.md

## Component UI

### basic alert (`component_alert`)

- Group: Component UI / alerts
- Basic bootstrap alert
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_alert.md

### alert with translation (`component_alert_translation`)

- Group: Component UI / alerts
- Basic bootstrap alert with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_alert_translation.md

### bar chart (`component_apexcharts_bar`)

- Group: Component UI / apexcharts
- Basic bar chart
- In pins: `co-name` (value, required), `co-data` (array), `co-xaxis` (fielddefinitions, required), `co-yaxis` (fielddefinitions, required), `rowColors` (array), `datacolors` (array), `titleAlign` (value), `theme` (value), `palette` (value), `height` (number), `horizontal` (condition), `stacked` (condition), `columnWidth` (value), `spacing` (number), `label` (condition), `labelPosition` (value), `offsetY` (number), `offsetX` (number), `labelFontsize` (value), `labelColor` (value), `zoom` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_bar.md

### combo chart (`component_apexcharts_combo`)

- Group: Component UI / apexcharts
- Combination line and bar chart
- In pins: `co-name` (value, required), `co-data` (array), `co-xaxis` (fielddefinitions, required), `co-yaxis` (fielddefinitions, required), `co-yaxis-bar` (fielddefinitions, required), `rowColors` (array), `height` (number), `datacolors` (array), `theme` (value), `palette` (value), `columnWidth` (number), `curve` (value), `marker` (number), `label` (condition), `labelPosition` (value), `labelFontsize` (value), `labelColor` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_combo.md

### custom chart (`component_apexcharts_custom`)

- Group: Component UI / apexcharts
- Chart that can be completely customized
- In pins: `options` (object, required)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_custom.md

### line chart (`component_apexcharts_line`)

- Group: Component UI / apexcharts
- Basic line chart
- In pins: `co-name` (value, required), `co-data` (array), `co-xaxis` (fielddefinitions, required), `co-yaxis` (fielddefinitions, required), `rowColors` (array), `datacolors` (array), `titleAlign` (value), `height` (number), `curve` (value), `theme` (value), `palette` (value), `spacing` (number), `marker` (number), `label` (condition), `labelFontsize` (value), `labelColor` (value), `zoom` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_line.md

### pie chart (`component_apexcharts_pie`)

- Group: Component UI / apexcharts
- Basic pie chart
- In pins: `series` (array, required), `labels` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_pie.md

### range chart (`component_apexcharts_range`)

- Group: Component UI / apexcharts
- Basic range chart
- In pins: `series` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_apexcharts_range.md

### basic badge (`component_badge`)

- Group: Component UI / badges
- Basic bootstrap badge
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_badge.md

### barcode (`component_barcode`)

- Group: Component UI / barcode
- A barcode based on the bwip-js module
- In pins: `type` (value), `text` (value), `scale` (number), `height` (number), `includetext` (condition), `textalign` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_barcode.md

### bold / b (`component_bold`)

- Group: Component UI / typography
- Bold text
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bold.md

### container (`component_bootstrap_content_container`)

- Group: Component UI / grid
- The bootstrap container sets the width based on the width of the clients browser. It should be used as a bootstrap row wrapper. The normal container has a limited width so may be centered on some browsers. For a full width alternative use the fluid container.
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bootstrap_content_container.md

### fluid container (`component_bootstrap_content_container_fluid`)

- Group: Component UI / grid
- The bootstrap container sets the width based on the width of the clients browser. It should be used as a bootstrap row wrapper. The fluid container is a full width container.
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bootstrap_content_container_fluid.md

### column (`component_bootstrap_grid_column`)

- Group: Component UI / grid
- Bootstrap columns divide a row by 12. The given class defines how wide the column spans
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bootstrap_grid_column.md

### row (`component_bootstrap_grid_row`)

- Group: Component UI / grid
- A bootstrap row contains multiple bootstrap columns
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bootstrap_grid_row.md

### row with columns (`component_bootstrap_grid_row_with_columns`)

- Group: Component UI / grid
- A custom row where every in pin is a new column. This eliminates the need for column components connected to each in pin. The default class for every column is col and can be overwritten by filling the value in pin under each column
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_bootstrap_grid_row_with_columns.md

### button with icon (`component_button_icon`)

- Group: Component UI / buttons
- HTML button element
- In pins: `co-clickevent` (clickevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_button_icon.md

### container (`component_card`)

- Group: Component UI / cards
- basic card container
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card.md

### basic card (`component_card_basic`)

- Group: Component UI / cards
- Premade card with a header, body and a footer
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card_basic.md

### field card (`component_card_basic_fields`)

- Group: Component UI / cards
- Premade card with a header, body, and a footer. The fields selected will be shown in the body and can be overwritten by specifying fields in the row render. Adding an edit function will render an edit button on the card to execute a given function.
- In pins: `co-fields` (fielddefinitions, required), `co-object` (object, required), `co-fieldfunctions` (fieldfunctions), `co-edit` (inpinfunction), `uiclasslabelcolumn` (uiclass), `uiclassvaluecolumn` (uiclass)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card_basic_fields.md

### body (`component_card_body`)

- Group: Component UI / cards
- Card container body
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card_body.md

### footer (`component_card_footer`)

- Group: Component UI / cards
- Card container footer
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card_footer.md

### header (`component_card_header`)

- Group: Component UI / cards
- Card container header
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_card_header.md

### checkbox (`component_checkbox`)

- Group: Component UI / form
- Basic HTML checkbox element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `condition` (condition), `value` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_checkbox.md

### custom checkbox (`component_checkbox_custom`)

- Group: Component UI / form
- Custom stylable checkbox element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_checkbox_custom.md

### code element (`component_code`)

- Group: Component UI / typography
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_code.md

### newline (`component_content_break`)

- Group: Component UI / utilities
- Break line will cause the element behind to go into the next line
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_content_break.md

### button (`component_content_button`)

- Group: Component UI / buttons
- HTML button element
- In pins: `co-clickevent` (clickevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_content_button.md

### div (`component_content_div`)

- Group: Component UI / utilities
- Generic container for content
- In pins: `co-generalevent` (generalevent)
- Out pins: `uicomponent` (uicomponent)
- Commonly used with: [custom text](https://docs.rual.nl/block-types/Component%20UI/component_text.md) (in), [build PDF](https://docs.rual.nl/block-types/files/file_generate_pdf.md) (out), [custom](https://docs.rual.nl/block-types/styling/uistyle_custom.md) (in)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_content_div.md

### custom file input (`component_custom_input_file`)

- Group: Component UI / form
- Custom HTML file input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `buttontext` (value), `emptyfiletext` (value), `maxfilesize` (number)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_custom_input_file.md

### uptime chart (`component_customchart_uptime`)

- Group: Component UI / customgraph
- Uptime chart
- In pins: `name` (value, required), `data` (array, required), `colorfield` (fielddefinitions, required), `calculatefield` (fielddefinitions, required), `datefield` (fielddefinitions, required), `unavailableinfo` (fielddefinitions, required), `max` (number), `defaultcolor` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_customchart_uptime.md

### datatable (`component_datatable`)

- Group: Component UI / advanced table
- A complete data table including filters, sorting, and searchbar.
- In pins: `co-storage` (storage, required), `co-fields-columns` (fielddefinitions, required), `co-fields-search` (fielddefinitions), `co-datatablefilter` (datatablefilter), `rowrender` (inpinfunction), `co-query` (query), `displayrows` (number), `infinitescroll` (condition), `co-hide_controls` (condition), `co-hide_search` (condition), `show_reload` (condition), `minimizefilter` (condition), `hidecustomfilter` (condition), `filterfieldscope` (scope), `co-inlineedit_fields` (fielddefinitions), `co-inlineedit_scope` (scope), `massupdate` (fielddefinitions), `co-remove_scope` (scope), `co-json_scope` (scope), `co-revision_scope` (scope), `co-hidecheckbox` (condition), `co-hideremove` (condition), `co-detailbutton` (inpinfunction), `co-editbutton` (inpinfunction), `co-input-outlet` (value), `nothing-found` (value), `onchange` (inpinfunction), `export-show` (condition), `export-columns` (fielddefinitions), `export-quotes` (value), `export-delimiter` (value), `export-rowrender` (inpinfunction)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_datatable.md

### date (`component_date`)

- Group: Component UI / format
- In pins: `co-format` (value), `co-timezone` (value), `co-locale` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_date.md

### code editor (`component_editor_ace`)

- Group: Component UI / form
- Creates a code editor based on the ace module
- In pins: `fielddefinitions` (fielddefinitions, required), `value` (value), `number` (number)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_editor_ace.md

### text editor (`component_editor_quill`)

- Group: Component UI / form
- Creates a text editor based on the quill module
- In pins: `fielddefinitions` (fielddefinitions, required)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_editor_quill.md

### emphasized / em (`component_em`)

- Group: Component UI / typography
- Cursive text
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_em.md

### footer (`component_footer`)

- Group: Component UI / utilities
- Represents a footer element for the nearest sectioning content
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_footer.md

### form element (`component_form`)

- Group: Component UI / form
- Basic HTML form element
- In pins: `co-object` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_form.md

### Header (`component_header`)

- Group: Component UI / utilities
- Introductory content
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_header.md

### heading h1 (`component_heading_h1`)

- Group: Component UI / typography
- Basic HTML h1 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h1.md

### heading h1 with translation (`component_heading_h1_translation`)

- Group: Component UI / typography
- Basic HTML h1 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h1_translation.md

### heading h2 (`component_heading_h2`)

- Group: Component UI / typography
- Basic HTML h2 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h2.md

### heading h2 with translation (`component_heading_h2_translation`)

- Group: Component UI / typography
- Basic HTML h2 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h2_translation.md

### heading h3 (`component_heading_h3`)

- Group: Component UI / typography
- Basic HTML h3 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h3.md

### heading h3 with translation (`component_heading_h3_translation`)

- Group: Component UI / typography
- Basic HTML h3 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h3_translation.md

### heading h4 (`component_heading_h4`)

- Group: Component UI / typography
- Basic HTML h4 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h4.md

### heading h4 with translation (`component_heading_h4_translation`)

- Group: Component UI / typography
- Basic HTML h4 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h4_translation.md

### heading h5 (`component_heading_h5`)

- Group: Component UI / typography
- Basic HTML h5 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h5.md

### heading h5 with translation (`component_heading_h5_translation`)

- Group: Component UI / typography
- Basic HTML h5 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h5_translation.md

### heading h6 (`component_heading_h6`)

- Group: Component UI / typography
- Basic HTML h6 element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h6.md

### heading h6 with translation (`component_heading_h6_translation`)

- Group: Component UI / typography
- Basic HTML h6 element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_heading_h6_translation.md

### highlight (`component_highlightjs`)

- Group: Component UI / code
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_highlightjs.md

### horizontal row (`component_hr`)

- Group: Component UI / utilities
- Basic HTML hr element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_hr.md

### hyperlink (`component_hyperlink`)

- Group: Component UI / typography
- Basic HTML a element
- In pins: `clickevent` (clickevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_hyperlink.md

### basic icon (`component_icon`)

- Group: Component UI / icons
- Basic icon component
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_icon.md

### basic image (`component_img`)

- Group: Component UI / image
- Basic HTML image element
- In pins: `lazyloading` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_img.md

### asset image (`component_img_asset`)

- Group: Component UI / image
- Allows the user to choose a public image saved in the assets
- In pins: `alt` (value), `lazyloading` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_img_asset.md

### internal image (`component_img_internal`)

- Group: Component UI / image
- Images and other files are not exposed by default. This action accepts an internal filepath and will display the given file in the frontend.
- In pins: `lazyloading` (condition), `file` (file)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_img_internal.md

### image zoom (`component_img_zoom`)

- Group: Component UI / Image
- Basic HTML image element with zoom
- In pins: `zoom_value` (number)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_img_zoom.md

### array input (`component_input_array`)

- Group: Component UI / form
- Generates rows with inputs based on the selected fields from an array
- In pins: `co-fields` (fielddefinitions, required), `rowrender` (inpinfunction), `disabled` (condition), `hidelabel` (condition), `hideremove` (condition), `hideadd` (condition), `uiclassrow` (uiclass), `uistylerow` (uistyle), `uiclasslabel` (uiclass), `uistylelabel` (uistyle), `uiclassinputcolumn` (uiclass), `uistyleinputcolumn` (uistyle), `uiclassinput` (uiclass), `uistyleinput` (uistyle)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_array.md

### code input (`component_input_code`)

- Group: Component UI / form
- Generates multiple inputs based on the given code length. It can further be specified to only allow numbers and to execute the on enter function after all inputs are filled
- In pins: `fields` (fielddefinitions, required), `number` (number), `numbersonly` (condition), `alphanumeric` (condition), `isrequired` (condition), `inpinfunction` (inpinfunction), `callonenter` (condition), `clearonenter` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_code.md

### color input (`component_input_color`)

- Group: Component UI / form
- Basic HTML color input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_color.md

### date input (`component_input_date`)

- Group: Component UI / form
- Basic HTML date input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `mindate` (date), `maxdate` (date), `disableddates` (array), `enableddates` (array)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_date.md

### datetime local input (`component_input_datetime-local`)

- Group: Component UI / form
- Basic HTML datetime local input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `mindate` (date), `maxdate` (date), `disableddates` (array), `enableddates` (array)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_datetime-local.md

### email input (`component_input_email`)

- Group: Component UI / form
- Basic HTML email input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_email.md

### multiple fields (`component_input_fields`)

- Group: Component UI / form
- Generates rows with inputs based on the selected fields
- In pins: `fieldfunctions` (fieldfunctions), `disabled` (condition), `hidelabel` (condition), `uiclassrow` (uiclass), `uistylerow` (uistyle), `uiclasslabel` (uiclass), `uistylelabel` (uistyle), `uiclassinputcolumn` (uiclass), `uistyleinputcolumn` (uistyle), `uiclassinput` (uiclass), `uistyleinput` (uistyle)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_fields.md

### file input (`component_input_file`)

- Group: Component UI / form
- Basic HTML file input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `maxfilesize` (number)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_file.md

### hidden input (`component_input_hidden`)

- Group: Component UI / form
- Basic HTML hidden input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_hidden.md

### location input (`component_input_location`)

- Group: Component UI / form
- Custom inputs to enter latitude and longitude
- In pins: `fields` (fielddefinitions, required), `isrequired` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_location.md

### month input (`component_input_month`)

- Group: Component UI / form
- Basic HTML month input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `mindate` (date), `maxdate` (date)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_month.md

### number input (`component_input_number`)

- Group: Component UI / form
- Basic HTML number input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_number.md

### password input (`component_input_password`)

- Group: Component UI / form
- Basic HTML password input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_password.md

### price input (`component_input_price`)

- Group: Component UI / form
- Custom input that automatically manages decimals
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `divideby` (number), `decimals` (number)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_price.md

### scan input (`component_input_scan`)

- Group: Component UI / form
- Will be autofocused on keydown if no input is given. Executes the connected function on enter or if the given length is reached
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `onscan` (inpinfunction)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_scan.md

### phone input (`component_input_tel`)

- Group: Component UI / form
- Basic HTML phone input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_tel.md

### text input (`component_input_text`)

- Group: Component UI / form
- Basic HTML text input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_text.md

### time input (`component_input_time`)

- Group: Component UI / form
- Basic HTML time input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_time.md

### url input (`component_input_url`)

- Group: Component UI / form
- Basic HTML url input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_url.md

### week input (`component_input_week`)

- Group: Component UI / form
- Basic HTML week input element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `mindate` (date), `maxdate` (date), `disableddates` (array), `enableddates` (array)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_input_week.md

### italic / i (`component_italic`)

- Group: Component UI / typography
- Cursive text
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_italic.md

### label (`component_label`)

- Group: Component UI / form
- Basic HTML label element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_label.md

### label translation (`component_label_translation`)

- Group: Component UI / form
- Basic HTML label element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_label_translation.md

### item (`component_list_li`)

- Group: Component UI / list
- List item
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_list_li.md

### ordered (`component_list_ol`)

- Group: Component UI / list
- Ordered list
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_list_ol.md

### unordered (`component_list_ul`)

- Group: Component UI / list
- Unordered list
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_list_ul.md

### map (`component_mapbox_map`)

- Group: Component UI / mapbox
- Basic Map
- In pins: `co-token` (value, required), `co-style` (value, required), `co-latitude` (value, required), `co-longitude` (value, required), `co-zoom` (number, required), `co-pitch` (number), `co-bearing` (number), `co-user_location_control` (condition), `co-disable_dragging` (condition), `co-disable_pitch` (condition), `co-min_zoom` (number), `co-max_zoom` (number), `co-fix_zoom_on_point` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_mapbox_map.md

### nav (`component_nav`)

- Group: Component UI / utilities
- Section providing navigation links
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_nav.md

### number (`component_number`)

- Group: Component UI / format
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_number.md

### numpad (`component_numpad`)

- Group: Component UI / form
- A panel with buttons for each number. Easy for mobile users to fill in a pincode
- In pins: `co-fields` (fielddefinitions, required), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_numpad.md

### container (`component_pagination_container`)

- Group: Component UI / pagination
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_pagination_container.md

### item (`component_pagination_item`)

- Group: Component UI / pagination
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_pagination_item.md

### paragraph (`component_paragraph`)

- Group: Component UI / typography
- Paragraph element, will start text on a new line (paragraph)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_paragraph.md

### paragraph with translation (`component_paragraph_translation`)

- Group: Component UI / typography
- Paragraph element with a translation, will start text on a new line (paragraph)
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_paragraph_translation.md

### picture (`component_picture`)

- Group: Component UI / image
- Basic HTML picture element
- In pins: `lazyloading` (condition), `sources` (array)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_picture.md

### media (`component_placeholder_media`)

- Group: Component UI / placeholder
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_placeholder_media.md

### paragraph (`component_placeholder_paragraph`)

- Group: Component UI / placeholder
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_placeholder_paragraph.md

### basic popover (`component_popover`)

- Group: Component UI / popovers
- Basic bootstrap popover
- In pins: `co-position` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_popover.md

### pre element (`component_pre`)

- Group: Component UI / typography
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_pre.md

### price (`component_price`)

- Group: Component UI / format
- In pins: `co-divide` (number), `co-decimals` (number), `co-seperator` (value), `co-thousand-seperator` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_price.md

### qr scanner (`component_qr_scanner`)

- Group: Component UI / barcode
- A basic QR code scanner that uses video input
- In pins: `onscan` (inpinfunction), `condition` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_qr_scanner.md

### QR Auth (`component_qrauth`)

- Group: Component UI / barcode
- QR Code containing URL to login page, used to login via a mobile device
- In pins: `inpinfunction` (inpinfunction)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_qrauth.md

### qr code (`component_qrcode`)

- Group: Component UI / barcode
- A qr code generate with the node-qrcode module
- In pins: `value` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_qrcode.md

### radio (`component_radio`)

- Group: Component UI / form
- Basic HTML radio element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_radio.md

### radio buttons (`component_radio_buttons`)

- Group: Component UI / form
- Generates buttons based on the objects in a given array. Will set a field to a given value on click.
- In pins: `array` (array, required), `value` (value), `uiclass` (uiclass), `uistyle` (uistyle), `activeclass` (uiclass), `fielddefinitions` (fielddefinitions, required), `fieldvalidation` (fieldvalidation), `clickevent` (clickevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_radio_buttons.md

### custom radio (`component_radio_custom`)

- Group: Component UI / form
- Custom stylable radio element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_radio_custom.md

### sanitize user input (`component_sanitize_user_input`)

- Group: Component UI / typography
- Sanitizes the input and returns the text without an element wrapper if no attributes or outlet are set. If either one is set the text will be wrapped with a span
- In pins: `allowed_tags` (array), `allowed_attr` (array)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_sanitize_user_input.md

### scope check (`component_scoped`)

- Group: Component UI / utilities
- Custom HTML element which checks if the user has a given scope. If not it will not render the content
- In pins: `co-condition` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_scoped.md

### searchbar (`component_searchbar`)

- Group: Component UI / form
- Searchbar component able to search through a storage in the backend
- In pins: `co-storage` (storage, required), `listitems` (array, required), `co-fields-visible` (fielddefinitions, required), `co-fields-key` (fielddefinitions, required), `co-fields-selection` (fielddefinitions, required), `searchfields` (fielddefinitions), `co-validate` (fieldvalidation), `co-query` (query), `co-inputevent` (inputevent), `rowrender` (inpinfunction), `disable-dropdown` (condition)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_searchbar.md

### select (`component_select`)

- Group: Component UI / form
- Basic HTML select element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent), `hideempty` (condition), `emptytext` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_select.md

### select option (`component_select_option`)

- Group: Component UI / form
- Basic HTML select option element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_select_option.md

### span (`component_span`)

- Group: Component UI / typography
- Basic HTML span element
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_span.md

### span with translation (`component_span_translation`)

- Group: Component UI / typography
- Basic HTML span element with a translation
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_span_translation.md

### basic spinner (`component_spinners_basic`)

- Group: Component UI / spinners
- Animated loading icon. Bounces or spins
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_spinners_basic.md

### strong (`component_strong`)

- Group: Component UI / typography
- Bold text
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_strong.md

### basic table (`component_table`)

- Group: Component UI / table
- Basic Table
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_table.md

### column (`component_table_column`)

- Group: Component UI / table
- Table column
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_table_column.md

### field table (`component_table_fields`)

- Group: Component UI / table
- Premade table with a header and a body. The fields selected will be shown as the header and every item in the array will be rendered as a row.
- In pins: `fielddefinitions` (fielddefinitions, required), `array` (array, required), `rowrender` (inpinfunction)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_table_fields.md

### row (`component_table_row`)

- Group: Component UI / table
- Table Row
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_table_row.md

### custom text (`component_text`)

- Group: Component UI / typography
- Returns the text without an element wrapper if no attributes or outlet are set. If either one is set the text will be wrapped with a span
- Out pins: `uicomponent` (uicomponent)
- Commonly used with: [div](https://docs.rual.nl/block-types/Component%20UI/component_content_div.md) (out), [custom](https://docs.rual.nl/block-types/styling/uistyle_custom.md) (in), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (in)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_text.md

### textarea (`component_textarea`)

- Group: Component UI / form
- Basic HTML textarea element
- In pins: `co-fields` (fielddefinitions, required), `co-validate` (fieldvalidation), `co-inputevent` (inputevent)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_textarea.md

### dynamic (`component_translate`)

- Group: Component UI / translate
- Translates the given value as key into the UI language.
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_translate.md

### by key (`component_translate_key`)

- Group: Component UI / translate
- Translates the given key into the UI language.
- In pins: `language` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_translate_key.md

### video (`component_video`)

- Group: Component UI / video
- Allows the user to embed a video
- In pins: `controls` (condition), `sources` (array, required)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_video.md

### internal video (`component_video_internal`)

- Group: Component UI / video
- Allows the user to embed an internal video.
- In pins: `controls` (condition), `file` (file, required)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/Component%20UI/component_video_internal.md

### return export row (`uicomponent_export_return`)

- Group: Component UI / ui
- In pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/Component%20UI/uicomponent_export_return.md

### return row render (`uicomponent_rowrender_return`)

- Group: Component UI / ui
- In pins: `flow` (flow), `uniqueid` (value, required)
- Page: https://docs.rual.nl/block-types/Component%20UI/uicomponent_rowrender_return.md

## NS

### get arrivals (`nsconnection_arrivals`)

- Get the live arrival board for a station. Provide the station code or the UIC code.
- In pins: `flow` (flow), `connection` (nsconnection, required), `station` (value, required), `uic_code` (value, required), `date_time` (date), `max_journeys` (number), `language` (value)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `count` (number), `source` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_arrivals.md

### get departures (`nsconnection_departures`)

- Get the live departure board for a station. Provide the station code or the UIC code.
- In pins: `flow` (flow), `connection` (nsconnection, required), `station` (value, required), `uic_code` (value, required), `date_time` (date), `max_journeys` (number), `language` (value)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `count` (number), `source` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_departures.md

### get disruptions (`nsconnection_disruptions`)

- Get current disruptions and engineering works on the NS network.
- In pins: `flow` (flow), `connection` (nsconnection, required), `type` (value), `active_only` (condition), `language` (value)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_disruptions.md

### get nearest stations (`nsconnection_nearest_stations`)

- Find the NS stations closest to a coordinate. Provide a geo point, or a separate latitude and longitude.
- In pins: `flow` (flow), `connection` (nsconnection, required), `geo_point` (geo_point, required), `latitude` (number, required), `longitude` (number, required), `limit` (number)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `nearest` (object), `count` (number), `error` (value)
- Commonly used with: [create](https://docs.rual.nl/block-types/geopoint/geo_point_lat_lng_to_point.md) (in), [open connection](https://docs.rual.nl/block-types/NS/nsconnection_open.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_nearest_stations.md

### open connection (`nsconnection_open`)

- Open a connection with the NS (Nederlandse Spoorwegen) Reisinformatie API. Reuse the resulting connection in the other NS blocks.
- In pins: `flow` (flow), `api_key` (value, required), `base_url` (value)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [get nearest stations](https://docs.rual.nl/block-types/NS/nsconnection_nearest_stations.md) (out), [get stations](https://docs.rual.nl/block-types/NS/nsconnection_stations.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_open.md

### raw request (`nsconnection_request`)

- Perform a raw GET request against any NS Reisinformatie API path. Use this for endpoints without a dedicated block.
- In pins: `flow` (flow), `connection` (nsconnection, required), `path` (value, required), `query` (object)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `status_code` (number), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_request.md

### get stations (`nsconnection_stations`)

- List or search NS stations. Leave the search empty to retrieve all stations.
- In pins: `flow` (flow), `connection` (nsconnection, required), `query` (value), `country_codes` (value), `limit` (number)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `count` (number), `error` (value)
- Commonly used with: [foreach](https://docs.rual.nl/block-types/foreach/function_foreach.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [open connection](https://docs.rual.nl/block-types/NS/nsconnection_open.md) (in)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_stations.md

### plan trip (`nsconnection_trips`)

- Plan a journey between an origin and a destination. Each endpoint accepts a station code, a UIC code, or a geo point.
- In pins: `flow` (flow), `connection` (nsconnection, required), `from_station` (value, required), `from_uic_code` (value), `from_geo_point` (geo_point), `from_name` (value), `to_station` (value, required), `to_uic_code` (value), `to_geo_point` (geo_point), `to_name` (value), `via_station` (value), `via_uic_code` (value), `via_geo_point` (geo_point), `date_time` (date), `search_for_arrival` (condition), `language` (value)
- Out pins: `flow` (flow), `connection` (nsconnection, required), `success` (condition), `results` (array), `count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/NS/nsconnection_trips.md

## Stylesheet

### From Text (`stylesheet_from_text`)

- Creates a custom stylesheet based on the given text
- In pins: `value` (value)
- Out pins: `stylesheet` (stylesheet)
- Page: https://docs.rual.nl/block-types/Stylesheet/stylesheet_from_text.md

## UI

### text to speech (`uicomponent_text_to_speech`)

- Speaks the given text in a browser-controlled voice.
- In pins: `flow` (flow), `text` (value, required), `language` (value), `rate` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/UI/uicomponent_text_to_speech.md

## UI Component

### bind keys (`clickevent_bind_keys`)

- Group: UI Component / click event
- Will execute the selected function when the bound keys are pressed. It will not trigger when an input is focused. As soon as the element is not part of the DOM tree anymore the function will not be triggered.
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_bind_keys.md

### if (`clickevent_branch`)

- Group: UI Component / click event
- Conditional use of events.
- In pins: `then` (clickevent), `else` (clickevent), `condition` (condition)
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_branch.md

### double click (`clickevent_doubleclick`)

- Group: UI Component / click event
- Will execute event when element receives double-click.
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_doubleclick.md

### left click (`clickevent_leftclick`)

- Group: UI Component / click event
- Will execute event when element receives left-mouse-click.
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_leftclick.md

### middle click (`clickevent_middleclick`)

- Group: UI Component / click event
- Will execute event when element receives middle-mouse-click.
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_middleclick.md

### multiple (`clickevent_multiple`)

- Group: UI Component / click event
- Chain multiple click events to a single element.
- In pins: `clickevent_1` (clickevent), `clickevent_2` (clickevent)
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_multiple.md

### right click (`clickevent_rightclick`)

- Group: UI Component / click event
- Will execute event when element receives right-mouse-click.
- Out pins: `clickevent` (clickevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/clickevent_rightclick.md

### bind keys (`generalevent_bind_keys`)

- Group: UI Component / General event
- Will execute the selected function when the bound keys are pressed. It will not trigger when an input is focused. As soon as the element is not part of the DOM tree anymore the function will not be triggered.
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_bind_keys.md

### if (`generalevent_branch`)

- Group: UI Component / click event
- Condition use of events.
- In pins: `then` (generalevent), `else` (generalevent), `condition` (condition)
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_branch.md

### multiple (`generalevent_multiple`)

- Group: UI Component / General event
- Chain multiple elements to be used on this element.
- In pins: `generalevent_1` (generalevent), `generalevent_2` (generalevent)
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_multiple.md

### on mouseenter (`generalevent_onmouseenter`)

- Group: UI Component / General event
- Will execute when mouse enters element or window.
- In pins: `onetime` (condition)
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_onmouseenter.md

### on mouseleave (`generalevent_onmouseleave`)

- Group: UI Component / General event
- Will execute when mouse leaves element or window.
- In pins: `onetime` (condition)
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_onmouseleave.md

### on visible (`generalevent_onvisible`)

- Group: UI Component / General event
- Will execute the selected function when the attached element is visible.
- In pins: `onetime` (condition), `overwrite` (condition)
- Out pins: `generalevent` (generalevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/generalevent_onvisible.md

### if (`inputevent_branch`)

- Group: UI Component / click event
- Conditional use of events on this input.
- In pins: `then` (inputevent), `else` (inputevent), `condition` (condition)
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_branch.md

### multiple (`inputevent_multiple`)

- Group: UI Component / Input event
- Chain multiple elements to be used on this input.
- In pins: `inputevent_1` (inputevent), `inputevent_2` (inputevent)
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_multiple.md

### on blur (`inputevent_onblur`)

- Group: UI Component / Input event
- Will execute when the input loses focus.
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_onblur.md

### on change (`inputevent_onchange`)

- Group: UI Component / Input event
- Will execute when the input has changed, after blur.
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_onchange.md

### on enter (`inputevent_onenter`)

- Group: UI Component / Input event
- Will execute when the input received enter keydown.
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_onenter.md

### on keyup (`inputevent_onkeyup`)

- Group: UI Component / Input event
- Will execute when the input received any keyup.
- In pins: `timeout` (number)
- Out pins: `inputevent` (inputevent)
- Page: https://docs.rual.nl/block-types/UI%20Component/inputevent_onkeyup.md

## a* path finding

### a* farthest point in route (`function_calculate_farthest_multi_point_astar`)

- Group: a* path finding / pathfinding
- In pins: `flow` (flow), `start` (array, required), `stops` (array, required), `stops_key` (value), `width` (number, required), `height` (number, required), `tiles` (array, required), `allow_diagonal` (condition), `cross_corners` (condition)
- Out pins: `flow` (flow), `tile` (array)
- Page: https://docs.rual.nl/block-types/a%2A%20path%20finding/function_calculate_farthest_multi_point_astar.md

### a* (`function_calculate_path_astar`)

- Group: a* path finding / pathfinding
- Finds a path within a given grid.
- In pins: `flow` (flow), `start` (array, required), `end` (array, required), `width` (number, required), `height` (number, required), `tiles` (array, required), `allow_diagonal` (condition), `cross_corners` (condition)
- Out pins: `flow` (flow), `path` (array), `path_readable` (array), `cost` (number)
- Page: https://docs.rual.nl/block-types/a%2A%20path%20finding/function_calculate_path_astar.md

### dijkstra (`function_calculate_path_dijkstra`)

- Group: a* path finding / pathfinding
- In pins: `flow` (flow), `start` (array, required), `end` (array, required), `width` (number, required), `height` (number, required), `tiles` (array, required), `allow_diagonal` (condition), `cross_corners` (condition)
- Out pins: `flow` (flow), `path` (array), `path_readable` (array)
- Page: https://docs.rual.nl/block-types/a%2A%20path%20finding/function_calculate_path_dijkstra.md

### a* fastest route w/heavy lifting (`function_calculate_path_multi_point_astar`)

- Group: a* path finding / pathfinding
- Calculates the fastest route over multiple stops using heavy lifting parameters.
- In pins: `flow` (flow), `stops` (array, required), `end` (array, required), `stops_key` (value), `percentage_key` (value), `min_percentage` (number), `max_percentage` (number), `width` (number, required), `height` (number, required), `tiles` (array, required), `allow_diagonal` (condition), `cross_corners` (condition)
- Out pins: `flow` (flow), `path` (array), `path_readable` (array), `cost` (number), `return_cost` (number), `return_index` (number)
- Page: https://docs.rual.nl/block-types/a%2A%20path%20finding/function_calculate_path_multi_point_astar.md

## aggregation

### if (`aggregation_branch`)

- Group: aggregation / aggregation conditions
- Decides your aggregration based on the boolean you give.
- In pins: `then` (aggregation), `else` (aggregation), `condition` (condition)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_branch.md

### multiple aggs (`aggregation_multiple_aggs`)

- This block allows you to use multiple aggregations in your query.
- In pins: `aggregation` (aggregation)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_multiple_aggs.md

### 99 percentiles on field (`aggregation_type_99_percentiles_bp_field`)

- Calculates the 99th percentile for the specified numeric or date field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_99_percentiles_bp_field.md

### avg on field (`aggregation_type_avg_bp_field`)

- Calculates the average of numeric or date values for the specified field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_avg_bp_field.md

### cardinality (`aggregation_type_cardinality_bp_field`)

- Counts the approximate number of distinct values for the specified field.
- In pins: `precision` (number)
- Out pins: `aggregation` (aggregation)
- Commonly used with: [aggregation](https://docs.rual.nl/block-types/query/query_aggregation.md) (out)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_cardinality_bp_field.md

### date histogram (`aggregation_type_date_histogram_bp_field`)

- Groups data based on a date histogram, allowing analysis over specified intervals.
- In pins: `interval` (value, required), `format` (value), `missing` (value), `min_doc_count` (number), `order_key` (value), `order_asc` (condition), `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_date_histogram_bp_field.md

### histogram (`aggregation_type_histogram_bp_field`)

- Divides numeric or date-based data into intervals, creating a histogram for analysis.
- In pins: `interval` (number), `missing` (value), `min_doc_count` (number), `order_key` (value), `order_asc` (condition), `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_histogram_bp_field.md

### max on field (`aggregation_type_max_bp_field`)

- Finds the maximum value for the specified numeric or date field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_max_bp_field.md

### min on field (`aggregation_type_min_bp_field`)

- Finds the minimum value for the specified numeric or date field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_min_bp_field.md

### percentiles on field (`aggregation_type_percentiles_bp_field`)

- Calculates percentiles for the specified numeric or date field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_percentiles_bp_field.md

### significant terms on field (`aggregation_type_significant_terms_bp_field`)

- Identifies significant terms in the specified field based on statistical analysis.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_significant_terms_bp_field.md

### stats on field (`aggregation_type_stats_bp_field`)

- Computes statistical metrics (min, max, sum, count, and avg) for the specified numeric or date field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_stats_bp_field.md

### sum on field (`aggregation_type_sum_bp_field`)

- Calculates the sum of numeric or date values for the specified field.
- In pins: `options` (object)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_sum_bp_field.md

### sum on field in array (`aggregation_type_sum_in_array`)

- Calculates the sum of values in the specified field within each array element.
- In pins: `key` (value), `sumfield` (value)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_sum_in_array.md

### terms (`aggregation_type_terms_bp_field`)

- Performs term-based grouping, allowing aggregation on specified criteria.
- In pins: `missing` (value), `size` (number), `min_doc_count` (number), `order_key` (value), `order_asc` (condition), `options` (object)
- Out pins: `aggregation` (aggregation)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [aggregation](https://docs.rual.nl/block-types/query/query_aggregation.md) (out)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_terms_bp_field.md

### top hits (`aggregation_type_top_hits`)

- Retrieves the top hits based on specified criteria.
- In pins: `size` (number), `from` (number), `sort_field` (value), `asc` (condition), `desc` (condition)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_top_hits.md

### count on field (`aggregation_type_value_count_bp_field`)

- Counts the occurrences of values in the specified numeric, date, or value field.
- Out pins: `aggregation` (aggregation)
- Commonly used with: [aggregation](https://docs.rual.nl/block-types/query/query_aggregation.md) (out)
- Page: https://docs.rual.nl/block-types/aggregation/aggregation_type_value_count_bp_field.md

## alias

### return array (`function_return_alias_array`)

- Group: alias / Function
- returns the given array
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_array.md

### return boolean (`function_return_alias_condition`)

- Group: alias / Function
- returns the given condition
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_condition.md

### return date (`function_return_alias_date`)

- Group: alias / Function
- returns the given date
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_date.md

### return mutations (`function_return_alias_mutations`)

- Group: alias / Function
- returns the given mutation
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_mutations.md

### return number (`function_return_alias_number`)

- Group: alias / Function
- returns the given number
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_number.md

### return object (`function_return_alias_object`)

- Group: alias / Function
- returns the given object
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_object.md

### return state (`function_return_alias_state`)

- Group: alias / Function
- returns the given state
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_state.md

### return user (`function_return_alias_user`)

- Group: alias / Function
- returns the given user
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_user.md

### return value (`function_return_alias_value`)

- Group: alias / Function
- returns the given value
- Semantics: Sets the enclosing custom function's return value: every wired non-flow inpin is recorded as a named return value of the running function, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run; the optional flow out pin then simply continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (in)
- Page: https://docs.rual.nl/block-types/alias/function_return_alias_value.md

## amazon aws

### s3 delete (`awsconnection_s3_delete`)

- Deletes an S3 object from a bucket.
- In pins: `connection` (awsconnection), `bucket` (value, required), `key` (value, required)
- Out pins: `connection` (awsconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/amazon%20aws/awsconnection_s3_delete.md

### s3 list (`awsconnection_s3_list`)

- Lists S3 objects in a bucket.
- In pins: `connection` (awsconnection), `bucket` (value, required), `maxkeys` (number), `prefix` (value)
- Out pins: `connection` (awsconnection), `output` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/amazon%20aws/awsconnection_s3_list.md

### s3 upload (`awsconnection_s3_upload`)

- Uploads an object to Amazon S3.
- In pins: `connection` (awsconnection), `bucket` (value), `key` (value), `acl` (value), `file` (file), `metadata` (object), `cachecontrol` (value)
- Out pins: `connection` (awsconnection), `success` (condition), `error` (value), `uploaded_files` (array), `failed_files` (array)
- Page: https://docs.rual.nl/block-types/amazon%20aws/awsconnection_s3_upload.md

### open connection (`function_aws_open_connection`)

- Opens an AWS connection for use with further AWS functions.
- In pins: `flow` (flow), `access_key_id` (value), `secret_access_key` (value)
- Out pins: `flow` (flow), `connection` (awsconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/amazon%20aws/function_aws_open_connection.md

## android

### acknowledge purchase (`androidconnection_acknowledge_purchase`)

- Tells Play you have granted what the user bought. Not optional: Google revokes and refunds any purchase left unacknowledged for three days, so a flow that verifies a purchase and stops here gives the money back : days later, quietly.
- In pins: `flow` (flow), `connection` (androidconnection), `package_name` (value, required), `product_id` (value, required), `token` (value, required), `subscription` (condition), `developer_payload` (value)
- Out pins: `flow` (flow), `success` (condition), `already_acknowledged` (condition), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/android/androidconnection_acknowledge_purchase.md

### open connection (`androidconnection_open`)

- Opens Android Push Notifications connection
- In pins: `flow` (flow), `email` (value, required), `private_key` (value, required), `scope` (array, required)
- Out pins: `flow` (flow), `connection` (androidconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/android/androidconnection_open.md

### send simple notification (`androidconnection_send_simple_notification`)

- Sends simple notification with basic options
- In pins: `flow` (flow), `connection` (androidconnection), `title` (value, required), `message` (value, required), `action` (value), `project_id` (value, required), `device` (value, required), `collapse_id` (value), `payload` (object)
- Out pins: `flow` (flow), `message` (object), `success` (condition, required), `error` (value)
- Page: https://docs.rual.nl/block-types/android/androidconnection_send_simple_notification.md

### verify purchase (`androidconnection_verify_purchase`)

- Verifies an in app purchase
- In pins: `flow` (flow), `connection` (androidconnection), `package_name` (value, required), `product_id` (value, required), `token` (value)
- Out pins: `flow` (flow), `response` (object), `success` (condition, required), `error` (value)
- Page: https://docs.rual.nl/block-types/android/androidconnection_verify_purchase.md

### verify subscription (`androidconnection_verify_subscription`)

- Reads a Play subscription's real state (subscriptionsv2). Use this rather than verify purchase for anything recurring : that one only answers for one-time products and 404s on a subscription token.
- In pins: `flow` (flow), `connection` (androidconnection), `package_name` (value, required), `token` (value, required)
- Out pins: `flow` (flow), `response` (object), `is_active` (condition), `subscription_state` (value), `acknowledgement_state` (value), `expiry_time` (value), `linked_purchase_token` (value), `success` (condition, required), `error` (value)
- Page: https://docs.rual.nl/block-types/android/androidconnection_verify_subscription.md

## anthropic

### create batch (`anthropicconnection_batch_create`)

- Submit many prompts as one asynchronous batch at 50% of the standard price (results within 24h). Wire on_finished/on_item to be called automatically when the batch completes (the system polls in the background), or poll the batch_id yourself with the get batch block.
- In pins: `flow` (flow), `connection` (anthropicconnection), `requests` (array<object>, required), `poll_interval` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `batch_id` (value), `status` (value), `counts` (object), `count` (number), `errors` (array<value>), `error_detail` (value), `on_finished` (execute_function), `on_item` (execute_function)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_batch_create.md

### get batch (`anthropicconnection_batch_get`)

- Poll a batch by id. Fires `ended` and returns all results (text/usage/cost per custom_id) once processing finishes.
- In pins: `flow` (flow), `connection` (anthropicconnection), `batch_id` (value, required)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `ended` (condition), `status` (value), `counts` (object), `results` (array<object>), `total_cost` (number), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_batch_get.md

### build output template (`anthropicconnection_build_schema`)

- Pick the fields Claude should return and describe each one; produces an output template for a Claude block's output template. Each field's type comes from the field itself; per field you set a description and (optionally) the allowed options. No JSON Schema knowledge needed.
- Out pins: `schema` (anthropicschema)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_build_schema.md

### build tool (`anthropicconnection_build_tool`)

- Define a tool Claude can call and pick the function that runs it. The function receives the model's arguments as in-pins and returns the result back to Claude. Feed the output into a message block's tools pin.
- In pins: `name` (value, required), `description` (value), `parameters` (anthropicschema)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_build_tool.md

### classify (`anthropicconnection_classify`)

- Classify input into exactly one of your labels using Claude; route the resulting label with a switch block.
- In pins: `flow` (flow), `connection` (anthropicconnection), `input` (value), `labels` (array<value>, required), `attachments` (file), `instructions` (value), `model` (value)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `matched` (condition), `label` (value), `usage` (object), `stop_reason` (value), `partial` (value), `errors` (array<value>), `warnings` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_classify.md

### count tokens (`anthropicconnection_count_tokens`)

- Count the input tokens a prompt (with system + attachments) would use, and estimate the cost; before you send it. Free; no spend.
- In pins: `flow` (flow), `connection` (anthropicconnection), `prompt` (value), `system` (value), `attachments` (file), `model` (value), `max_tokens` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `model` (value), `input_tokens` (number), `max_tokens` (number), `input_cost_usd` (number), `max_output_cost_usd` (number), `estimated_total_cost_usd` (number), `errors` (array<value>), `warnings` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_count_tokens.md

### create memory (`anthropicconnection_create_memory`)

- Open (or create) a persistent memory by id. The same id returns the same memory across runs, so Claude can pick a conversation back up weeks later. Feed the memory into a send message block.
- In pins: `flow` (flow), `id` (value, required), `expiry_days` (number)
- Out pins: `flow` (flow), `success` (condition), `memory` (anthropicmemory), `created` (condition), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_create_memory.md

### delete memory (`anthropicconnection_delete_memory`)

- Delete a memory by id (forget the conversation and its files).
- In pins: `flow` (flow), `id` (value, required)
- Out pins: `flow` (flow), `success` (condition), `deleted` (condition), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_delete_memory.md

### get memory (`anthropicconnection_get_memory`)

- Read a memory's contents by id (conversation history, memory files, summary) without creating one.
- In pins: `flow` (flow), `id` (value, required)
- Out pins: `flow` (flow), `success` (condition), `found` (condition), `memory` (anthropicmemory), `history` (array<object>), `files` (object), `summary` (value), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_get_memory.md

### get usage (`anthropicconnection_get_usage`)

- Report total tokens and cost used on this connection (USD and the connection's currency), with a per-category breakdown.
- In pins: `flow` (flow), `connection` (anthropicconnection)
- Out pins: `flow` (flow), `success` (condition), `connection` (anthropicconnection), `total_cost` (number), `total_cost_usd` (number), `currency` (value), `tokens` (object), `by_category` (array<object>), `calls` (number)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_get_usage.md

### list memories (`anthropicconnection_list_memories`)

- List all memories (id, timestamps, expiry, turn count) for browsing or housekeeping.
- In pins: `flow` (flow), `limit` (number)
- Out pins: `flow` (flow), `success` (condition), `memories` (array<object>), `count` (number), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_list_memories.md

### memory from JSON (`anthropicconnection_memory_from_json`)

- Cast a raw {id, guid} object into a memory handle for a send message block; for passing a memory handle you already have.
- In pins: `json` (object, required)
- Out pins: `memory` (anthropicmemory)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_memory_from_json.md

### send message (`anthropicconnection_message`)

- Send a message to Claude and get the reply, with built-in cost guard, model allowlist and typed error reporting.
- In pins: `flow` (flow), `connection` (anthropicconnection), `memory` (anthropicmemory), `prompt` (value, required), `system` (value), `attachments` (file), `model` (value), `max_tokens` (number), `thinking` (condition), `citations` (condition), `cache` (condition), `effort` (value), `output_schema` (anthropicschema), `tools` (anthropictool), `max_iterations` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `memory` (anthropicmemory), `success` (condition), `text` (value), `response` (object), `citations` (array<object>), `usage` (object), `stop_reason` (value), `partial` (value), `errors` (array<value>), `warnings` (array<value>), `error_detail` (value), `tool_calls` (array<object>)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_message.md

### stream message (`anthropicconnection_message_stream`)

- Send a prompt to Claude and stream the reply token-by-token to a WebSocket channel as it generates, then return the full text.
- In pins: `flow` (flow), `connection` (anthropicconnection), `memory` (anthropicmemory), `prompt` (value, required), `system` (value), `attachments` (file), `model` (value), `max_tokens` (number), `thinking` (condition), `cache` (condition), `effort` (value), `channel` (value), `event` (value)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `memory` (anthropicmemory), `success` (condition), `text` (value), `usage` (object), `stop_reason` (value), `partial` (value), `errors` (array<value>), `warnings` (array<value>), `error_detail` (value), `on_delta` (execute_function)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_message_stream.md

### parse JSON (repair) (`anthropicconnection_parse_json`)

- Recover and parse JSON from messy text (code fences, prose, trailing commas, truncation). No API call.
- In pins: `flow` (flow), `input` (value, required)
- Out pins: `flow` (flow), `success` (condition), `json` (object), `repaired` (condition), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_parse_json.md

### preflight document (`anthropicconnection_preflight`)

- Convert a document (PDF, image, HTML, spreadsheet, text) to clean Markdown with a cheap model, stripping boilerplate; run before sending it to an expensive model to cut tokens.
- In pins: `flow` (flow), `connection` (anthropicconnection), `file` (file, required), `model` (value), `max_tokens` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `markdown` (value), `file` (file), `format` (value), `cost` (number), `usage` (object), `partial` (value), `warnings` (array<value>), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_preflight.md

### preflight documents (`anthropicconnection_preflight_batch`)

- Convert several documents to clean Markdown with a cheap model, in parallel. Returns one .md file per input plus the concatenated Markdown; run before sending an upload set to an expensive model.
- In pins: `flow` (flow), `connection` (anthropicconnection), `files` (file, required), `model` (value), `max_tokens` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `files` (file), `markdown` (value), `cost` (number), `usage` (object), `count` (number), `partial` (value), `warnings` (array<value>), `errors` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_preflight_batch.md

### output template from JSON (`anthropicconnection_schema_from_json`)

- Cast a raw JSON Schema object into an output template for a message block (or a tool's parameters); for full control beyond the build output template block.
- In pins: `json` (object, required)
- Out pins: `schema` (anthropicschema)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_schema_from_json.md

### summarize memory (`anthropicconnection_summarize_memory`)

- Compact a memory: fold the older turns into a running summary and trim the history, so a long conversation stays cheap and in-context while keeping its gist. Run it periodically.
- In pins: `flow` (flow), `connection` (anthropicconnection), `memory` (anthropicmemory, required), `model` (value), `keep_last` (number)
- Out pins: `flow` (flow), `connection` (anthropicconnection), `success` (condition), `memory` (anthropicmemory), `summary` (value), `usage` (object), `stop_reason` (value), `partial` (value), `errors` (array<value>), `warnings` (array<value>), `error_detail` (value)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_summarize_memory.md

### tool if (`anthropicconnection_tool_branch`)

- Pick a tool based on a condition: outputs the true tool when the condition holds, otherwise the false tool. Add elseif branches for more cases.
- In pins: `then` (anthropictool), `else` (anthropictool), `condition` (condition)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_branch.md

### code execution tool (`anthropicconnection_tool_code_execution`)

- Let Claude run Python in a sandbox (data analysis, math, charts); Anthropic-hosted. Wire the tool output into a message block's tools pin.
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_code_execution.md

### tool from JSON (`anthropicconnection_tool_from_json`)

- Cast a raw JSON object into a tool for a message block's tools pin; for full control beyond the build tool block.
- In pins: `json` (object, required)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_from_json.md

### memory tool (`anthropicconnection_tool_memory`)

- Let Claude manage its own long-term memory notes (read, write, search) for the wired memory. Drop into a message block's tools pin; use the toggles to limit what it may do.
- In pins: `read` (condition), `write` (condition), `delete` (condition)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_memory.md

### multiple (`anthropicconnection_tool_multiple`)

- Combine several tools into one connection for a message block's tools pin.
- In pins: `tool` (anthropictool)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_multiple.md

### tool switch (`anthropicconnection_tool_switch`)

- Pick a tool by matching an expression against case values (with an optional default). Wire the result into a message block's tools pin.
- In pins: `value` (value), `default` (anthropictool)
- Out pins: `tool` (anthropictool), `matched` (condition)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_switch.md

### web search tool (`anthropicconnection_tool_web_search`)

- Let Claude search the web (Anthropic-hosted). Wire the tool output into a message block's tools pin. Optionally cap uses or restrict domains.
- In pins: `max_uses` (number), `allowed_domains` (array<value>), `blocked_domains` (array<value>)
- Out pins: `tool` (anthropictool)
- Page: https://docs.rual.nl/block-types/anthropic/anthropicconnection_tool_web_search.md

### open connection (`function_create_anthropicconnection`)

- Create a connection to the Anthropic (Claude) API for use by Claude blocks.
- In pins: `flow` (flow), `api_key` (value, required), `default_model` (value), `base_url` (value), `currency` (value), `daily_cap_usd` (number), `concurrency_cap` (number)
- Out pins: `flow` (flow), `success` (condition), `connection` (anthropicconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/anthropic/function_create_anthropicconnection.md

## apn

### send simple notification (`apnconnection_send_simple_notification`)

- Sends simple notification with basis options
- In pins: `flow` (flow), `connection` (apnconnection, required), `title` (value, required), `message` (value, required), `action` (value, required), `topic` (value, required), `device` (value, required), `badge` (number), `collapse_id` (value), `mutable_content` (condition), `payload` (object)
- Out pins: `flow` (flow), `connection` (apconnection), `success` (condition, required), `error` (value)
- Page: https://docs.rual.nl/block-types/apn/apnconnection_send_simple_notification.md

### open connection (`function_apn_open_connection`)

- Opens Apple Push Notifications connection
- In pins: `flow` (flow), `key` (value, required), `keyid` (value, required), `teamid` (value, required), `production` (condition, required)
- Out pins: `flow` (flow), `connection` (apnconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/apn/function_apn_open_connection.md

## array

### add prefix to values (`array_add_prefix`)

- Prepends a prefix to each value in the array.
- Semantics: Returns a new array where each element is the prefix string followed by the element coerced to text with JS String() rules (null becomes "null", objects become "[object Object]", arrays comma-join). Every output element is a string. A missing or non-array input yields an empty array.
- In pins: `array` (array, required), `prefix` (value, required)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_add_prefix.md

### add suffix to values (`array_add_suffix`)

- Appends a suffix to each value in the array.
- Semantics: Returns a new array where each element is the element coerced to text with JS String() rules (null becomes "null", objects become "[object Object]", arrays comma-join) followed by the suffix string. Every output element is a string. A missing or non-array input yields an empty array.
- In pins: `array` (array, required), `suffix` (value, required)
- Out pins: `array` (array)
- Commonly used with: [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [get meta guids](https://docs.rual.nl/block-types/array/array_guid_map.md) (in), [map values to guid seeds](https://docs.rual.nl/block-types/array/array_map_guid_seed.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_add_suffix.md

### avg (`array_avg`)

- Returns the avarage number in the given array of numbers.
- Semantics: Outputs the numeric sum of the array divided by the TOTAL item count. Emits 0 when the array is empty, missing, or its FIRST item is not numeric; later non-numeric items count as 0 yet still enlarge the divisor. Numeric strings and booleans coerce (true=1).
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_avg.md

### avg on field (`array_avg_on_bp_field`)

- returns the avarage number for the given field in the given array of objects.
- Semantics: Sums the selected field over the object items (missing or non-numeric field values count as 0) and divides by the TOTAL array length, including non-object items and items lacking the field. Outputs 0 when the array is empty or the selected field is not of type number or date.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_avg_on_bp_field.md

### if (`array_branch`)

- Conditional branching for arrays (if.. then.. else..).
- Semantics: Selects between the two array inputs: outputs the then input when the condition pin resolves to strict boolean true, otherwise the else input. Any non-true value (including truthy non-booleans) falls to else. If the selected input is not an array, outputs an empty array.
- In pins: `then` (array), `else` (array), `condition` (condition)
- Out pins: `array` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (in), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_branch.md

### concat (`array_concat`)

- Returns a joined array of two or more arrays.
- Semantics: Concatenates every connected input pin in pin order into one array: array inputs contribute their elements, and a non-array input is appended as a SINGLE element rather than skipped. Nil inputs are skipped; with no usable inputs the output is an empty array, never null.
- In pins: `array_1` (array), `array_2` (array)
- Out pins: `array` (array)
- Commonly used with: [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (both), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (both), [add to top of array](https://docs.rual.nl/block-types/array/array_unshift.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_concat.md

### count unique values (`array_count_distinct`)

- Returns the number of unique items for the given array of values.
- Semantics: Counts distinct items by their TEXT representation, so values that print identically collapse into one (the number 1 and the string "1" count as a single distinct value). An empty, missing, or non-array input outputs 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_count_distinct.md

### count unique values on field (`array_count_distinct_on_bp_field`)

- Returns the number of unique items for the given field and its values.
- Semantics: Counts distinct values of the selected field across the object items, comparing by TEXT representation (values that print identically collapse into one). Items that are not objects or lack the field contribute nothing. Outputs 0 for a missing array or when no field is selected.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_count_distinct_on_bp_field.md

### define array (`array_define_reference`)

- Group: array / references
- Store this array as reference, which can later be used by "use reference"
- In pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_define_reference.md

### divide by field (`array_divide_by_field`)

- Returns an array with each item divided for the provided key
- Semantics: For each object item, divides the divide_key field by the item's own divide_other_key field when that pin is set, otherwise by the divide_by number, writing the result to new_field_key when given, otherwise overwriting divide_key. Items that are not objects or whose divide_key is not numeric pass through UNCHANGED; division yielding infinity or NaN writes null. On missing configuration the block emits MISSING_DIVIDE_KEY or MISSING_DIVIDE_BY on error and no output array.
- In pins: `divide_array` (array, required), `divide_key` (value, required), `divide_other_key` (value, required), `new_field_key` (value), `divide_by` (number, required)
- Out pins: `output_array` (array)
- Page: https://docs.rual.nl/block-types/array/array_divide_by_field.md

### <= (`array_documents_match_max_on_bp_field`)

- Returns all objects that have a number equal to or smaller than the given number
- Semantics: KEEPS items whose selected field is less than the number pin, or less than or equal when the condition (include equal) pin is true, which is the DEFAULT. Items that are not objects, lack the field, or whose field value is not an actual number (numeric STRINGS do not qualify) are dropped. Outputs null when the array is missing or the comparison number is not numeric.
- In pins: `array` (array, required), `number` (number, required), `condition` (condition)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_documents_match_max_on_bp_field.md

### >= (`array_documents_match_min_on_bp_field`)

- Returns all objects that have a number equal to or bigger than the given number
- Semantics: KEEPS items whose selected field is greater than the number pin, or greater than or equal when the condition (include equal) pin is true, which is the DEFAULT. Items that are not objects, lack the field, or whose field value is not an actual number (numeric STRINGS do not qualify) are dropped. Outputs null when the array is missing or the comparison number is not numeric.
- In pins: `array` (array, required), `number` (number, required), `condition` (condition)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_documents_match_min_on_bp_field.md

### duplicate item (`array_duplicate_item`)

- Duplicates a given item of the array.
- Semantics: Outputs an array containing the connected item repeated times times. All entries reference the SAME value, not independent copies; a times of 0 or less yields an empty array. When several item pins are connected, the last non-null one in pin order wins.
- In pins: `times` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_duplicate_item.md

### elseif (`array_elseif`)

- Conditional branching for arrays (if.. then.. else if.. then.. else if.. default..).
- Semantics: Evaluates the condition pins in order and outputs the array wired to the FIRST condition that is strict boolean true; when none are true it outputs the default input. Truthy non-boolean values do NOT count as true. If the selected input is not an array, outputs an empty array.
- In pins: `default` (array), `elseif` (condition), `then` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_elseif.md

### empty (`array_empty`)

- Returns an empty array.
- Semantics: Outputs a new empty array. It has no inputs and never produces anything else.
- Out pins: `array` (array)
- Commonly used with: [add to top of array](https://docs.rual.nl/block-types/array/array_unshift.md) (out), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_empty.md

### every (`array_every`)

- Tests whether all elements in the array pass the test
- Semantics: Runs the iterator callback per item (index, value) and outputs the callback's return on condition, stopping early only when a return is strict boolean false. The final output is the LAST callback return and may be a non-boolean value, not a forced true. Outputs true for an empty array; outputs false for a missing or non-array input, when no callback function is wired, or when a callback errors.
- In pins: `array` (array)
- Out pins: `condition` (condition), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/array/array_every.md

### every (value) (`array_every_value`)

- tests whether all elements in the array pass the test
- Semantics: Outputs true only when EVERY element equals the comparison pin named after the selected type (value, number, or condition). Numbers compare across integer/float representations, but numeric strings do NOT equal numbers. An empty array outputs true; a missing or non-array input, or an unsupported selected type, outputs false.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/array/array_every_value.md

### fill (`array_fill`)

- Fills the given array with null or the given value.
- Semantics: Replaces EVERY element of the input array with the single connected fill value, preserving the array's length; with no fill pin wired every element becomes null. The original array is not mutated. A missing or non-array input yields an empty array.
- In pins: `input` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_fill.md

### filter (`array_filter`)

- Returns an array for each item that returns true on the executed function.
- Semantics: Runs the iterator callback per item (index, value, value_current_array holds the kept-so-far items) and KEEPS items whose callback return is truthy by JS rules: any non-false, non-zero, non-empty value passes, not only boolean true. Items whose callback errors are dropped. With no callback wired the input array passes through UNCHANGED; a missing input yields an empty array.
- In pins: `array` (array)
- Out pins: `array` (array), `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_filter.md

### filter empty (`array_filter_empty`)

- Returns an array of all non-empty items. Empty is defined as: null or undefined.
- Semantics: Removes ONLY null items from the array; when filter_empty_string is true it also removes empty strings. Zero, false, empty objects, and empty arrays are NOT removed. Order of the remaining items is preserved.
- In pins: `array` (array, required), `filter_empty_string` (condition)
- Out pins: `array` (array, required)
- Commonly used with: [map](https://docs.rual.nl/block-types/array/array_map.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [filter types](https://docs.rual.nl/block-types/array/array_filter_types.md) (in), [with objects](https://docs.rual.nl/block-types/array/array_of_objects.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_filter_empty.md

### filter by geo distance (`array_filter_geo_distance`)

- Filters an array of objects, keeping only items where the from location is within the distance specified by each item's distance field. The distance unit (km or m) is configurable.
- Semantics: Splits items by great-circle distance from from_location: an item goes to array (within range) when its location_key point, or failing that its location_fallback_key point, lies within the item's OWN distance_key value expressed in distance_unit (default km). Non-object items, items with a non-numeric distance, and items with no valid location go to out_of_range. On invalid from_location or missing key configuration the block FAILS CLOSED: every item goes to out_of_range.
- In pins: `array` (array, required), `from_location` (geo_point, required), `distance_key` (value, required), `location_key` (value, required), `location_fallback_key` (value), `distance_unit` (value)
- Out pins: `array` (array), `out_of_range` (array)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [select fields](https://docs.rual.nl/block-types/array/array_get_by_fields.md) (out), [remove fields](https://docs.rual.nl/block-types/array/array_remove_fields.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_filter_geo_distance.md

### exclude by field value (`array_filter_key_value`)

- Removes the items whose given field equals the given value. Returns all items that do NOT match; items without the field always pass.
- Semantics: EXCLUDES items whose selected field equals the value on the type-named comparison pin; the output is every item that does NOT match, in order. Non-object items are always kept; items lacking the field are kept unless the comparison value is null (a missing field compares equal to null). Numbers match across int/float, but numeric strings do NOT equal numbers. Example: [{a:1},{a:2}] field=a value=1 - [{a:2}]. With no field selected the array passes through unchanged.
- In pins: `given_array` (array, required)
- Out pins: `array` (array, required)
- Commonly used with: [false](https://docs.rual.nl/block-types/condition/condition_is_false.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in), [foreach](https://docs.rual.nl/block-types/foreach/function_foreach.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_filter_key_value.md

### filter removed (`array_filter_removed`)

- Filters out all removed documents.
- Semantics: Splits documents into two outputs: items whose _meta.removed holds a positive timestamp (or a non-empty string) go to removed; everything else, including non-object items, goes to available. Nothing is dropped; the two outputs together contain every input item.
- In pins: `array` (array, required)
- Out pins: `available` (array, required), `removed` (array, required)
- Page: https://docs.rual.nl/block-types/array/array_filter_removed.md

### filter types (`array_filter_types`)

- Returns an array of all items matching the selected type
- Semantics: KEEPS only items whose runtime type equals the selected type and drops the rest: strings are value, booleans condition, integral numbers number, non-integral numbers float, and an object containing a path key counts as file, not object. When whitelisted_fields is set and the selected type is object, each kept object is rebuilt with only the whitelisted fields whose value type also matches its declared type.
- In pins: `given_array` (array, required), `whitelisted_fields` (fielddefinitions)
- Out pins: `array` (array, required)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [filter empty](https://docs.rual.nl/block-types/array/array_filter_empty.md) (out), [slice](https://docs.rual.nl/block-types/array/array_slice.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_filter_types.md

### exclude by value (`array_filter_value`)

- Removes the items equal to the given value. Returns all items that do NOT match.
- Semantics: EXCLUDES every item equal to the value on the type-named comparison pin and returns the rest; it does NOT keep matches. Numbers compare across int/float representations, but numeric strings do NOT equal numbers. Example: [1,2,1] value=1 - [2]. With the comparison pin unwired the input passes through unchanged; a missing or non-array input emits an empty array and NOT_AN_ARRAY on error.
- In pins: `given_array` (array, required)
- Out pins: `array` (array, required), `error` (value)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_filter_value.md

### find (`array_find`)

- The first element in the array that satisfies the provided testing function.
- Semantics: Runs the iterator callback per item (index, value) and outputs the FIRST item whose callback returns strict boolean true; truthy non-boolean returns do NOT match. The item itself is emitted on object, not the callback's return. Outputs null when nothing matches, the array is empty or missing, or no callback function is wired; a callback error skips that item.
- In pins: `array` (array)
- Out pins: `object` (object), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/array/array_find.md

### get first item (`array_first_item`)

- Get the first item from the array.
- Semantics: Outputs the FIRST element of the array on the type-selected output pin (pin id value when no type is chosen). An empty or missing array, or a first element that is null, outputs null. The array itself is not modified.
- In pins: `array` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (both), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (both), [find by key - value](https://docs.rual.nl/block-types/array/array_get_objects_by_field_value.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_first_item.md

### flat map (`array_flat_map`)

- Executes the provided function on every element in the array and returns as a flat array.
- Semantics: Runs the iterator callback per item (index, value) and appends the value of EVERY return pin of the callback, in pin order, so one call can contribute several elements to the output. Null return values and failed calls contribute nothing. With no callback wired the input array passes through UNCHANGED; a missing or non-array input yields an empty array.
- In pins: `array` (array)
- Out pins: `array` (array), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/array/array_flat_map.md

### fuzz geo locations (`array_fuzz_geo_locations`)

- For each item in the array, replaces the location with a uniformly-random point within a disc of the item's fuzzing distance (km) when the item's fuzzing-enabled field is true. Items where fuzzing is disabled, the location is invalid, or the distance is non-positive pass through unchanged.
- Semantics: For each object item whose fuzzing-enabled field is strict boolean true, replaces the point at location_key with a random point within a disc of the item's fuzzing-distance field (km). With fuzzing_radius true the point sits exactly ON the circle at a deterministic angle, so the same input always fuzzes the same way. Items with fuzzing disabled, a non-positive distance, or no valid lat/lon pass through UNCHANGED, as does the whole array when any key pin is empty.
- In pins: `array` (array, required), `location_key` (value, required), `fuzzing_enabled_key` (value, required), `fuzzing_distance_key` (value, required), `fuzzing_radius` (condition)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_fuzz_geo_locations.md

### get at index (`array_get_at_index`)

- Returns the element stored at the given zero-based index. An index outside the array, or an element that is null, outputs null.
- Semantics: Outputs the ELEMENT stored at the given zero-based index on the type-selected output pin (pin id object when no type is chosen); it does NOT search for a value or return an index. An out-of-range index, a missing array, or a null element outputs null.
- In pins: `array` (array), `number` (number)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [cast to number](https://docs.rual.nl/block-types/type%20casting/value_convert_to_number.md) (out), [split](https://docs.rual.nl/block-types/value/value_split.md) (in), [array with values](https://docs.rual.nl/block-types/array/array_values_default.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_get_at_index.md

### get aggregation buckets (`array_get_buckets`)

- Returns aggregation buckets from the given array.
- Semantics: Reads ONLY the first element of the input, expects it to be an aggregation result object, and outputs the buckets array found under its alphabetically first key; every other input element is ignored. Outputs an empty array when the input is empty, the first element is not an object, or no buckets array is found there.
- In pins: `array` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_get_buckets.md

### aggregation buckets to flat array (`array_get_buckets_flat`)

- Converts aggregation buckets to a flat array of objects.
- Semantics: Recursively walks nested aggregation buckets starting from ONLY the first input element and emits one flat object per leaf bucket, carrying each level's key and doc_count under aggregation-name-prefixed fields plus a joined unique_key. The transpose output aggregates leaf metrics per first-level key (summing count and sum, tracking min and max, rounded avg), sorted by group. Both outputs are empty when the input is empty or its first element is not an object.
- In pins: `array` (array)
- Out pins: `array` (array), `transpose` (array)
- Page: https://docs.rual.nl/block-types/array/array_get_buckets_flat.md

### select fields (`array_get_by_fields`)

- Filters all other fields from the objects in this array.
- Semantics: Projects each item to a NEW object containing only the selected fields (dot paths supported); fields absent on an item are omitted rather than set to null. Item count and order are preserved: a non-object item becomes an EMPTY object, it is not dropped.
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [concat](https://docs.rual.nl/block-types/array/array_concat.md) (out), [filter by geo distance](https://docs.rual.nl/block-types/array/array_filter_geo_distance.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_get_by_fields.md

### find by field exists (`array_get_objects_by_field_exists`)

- Returns the matching objects of they include the given field.
- Semantics: KEEPS the object items on which the selected field path is present (a field explicitly set to null still counts as present), outputting them on array and their original positions on array_indexes. Items that are not objects are always dropped. With no field selected both outputs are empty.
- In pins: `array` (array)
- Out pins: `array` (array), `array_indexes` (array)
- Commonly used with: [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_get_objects_by_field_exists.md

### find by field not exists (`array_get_objects_by_field_not_exists`)

- Returns the matching objects of they not include the given field.
- Semantics: KEEPS only the OBJECT items on which the selected field path is absent, outputting them on array and their original positions on array_indexes. A field explicitly set to null counts as present, so such items are dropped; items that are not objects are also dropped even though they lack the field. With no field selected both outputs are empty.
- In pins: `array` (array)
- Out pins: `array` (array), `array_indexes` (array)
- Page: https://docs.rual.nl/block-types/array/array_get_objects_by_field_not_exists.md

### find by key - value (`array_get_objects_by_field_value`)

- Returns the matching objects for the given key value pair.
- Semantics: KEEPS items whose key field equals the comparison value, outputting matches on array and their original positions on array_indexes; it does NOT exclude them. With key empty the item ITSELF is compared, so flat value arrays work. On the legacy value pin comparison is by TEXT (the number 1 matches the string "1"); on a type-selected pin numbers match across int/float but numeric strings do NOT match numbers. Non-object items are dropped when a key is set.
- In pins: `array` (array), `key` (value)
- Out pins: `array` (array), `array_indexes` (array)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [length](https://docs.rual.nl/block-types/array/array_length.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_get_objects_by_field_value.md

### find by key - multiple values (`array_get_objects_by_multiple_field_value`)

- Returns the matching objects for the given key value pairs.
- Semantics: KEEPS items whose key field equals ANY value in the comparison array (a single non-array value acts as one candidate), outputting matches on array and their original positions on array_indexes. With key empty the item ITSELF is compared, so flat value arrays work. Numbers match across int/float representations, but numeric strings do NOT match numbers; non-object items are dropped when a key is set.
- In pins: `base_array` (array), `key` (value)
- Out pins: `array` (array), `array_indexes` (array)
- Page: https://docs.rual.nl/block-types/array/array_get_objects_by_multiple_field_value.md

### get random item (`array_get_random_item`)

- Returns a random item from a array using crypto.randomInt.
- Semantics: Outputs one uniformly random element of the array on the type-selected output pin (pin id value when no type is chosen), using a cryptographic random source, so each execution may pick a different element. An empty or missing array emits OUT_OF_RANGE on error and no item.
- In pins: `array` (array)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_get_random_item.md

### get weighted random (`array_get_random_weighted_item`)

- Returns a random weighted item from the given array
- Semantics: Picks one object from the array with probability proportional to its weight field and outputs it on object with its weight on weight. Only object items whose weight is an actual finite number participate; numeric STRINGS are ignored. When no item qualifies the block emits NOTHING on either pin.
- In pins: `array` (array<object>)
- Out pins: `object` (object), `weight` (number)
- Page: https://docs.rual.nl/block-types/array/array_get_random_weighted_item.md

### select field values (`array_get_values_from_bp_field`)

- returns an array with values of the given field in this array of objects.
- Semantics: Collects the selected field's value from each object item into a flat array, preserving order and keeping duplicates. Items that are not objects, lack the field, or hold null are SKIPPED, so the output can be shorter than the input.
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [flatten](https://docs.rual.nl/block-types/array/array_nested_join.md) (out), [match with any](https://docs.rual.nl/block-types/query/query_terms_field.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md

### encode (`array_google_polyline_encode`)

- Group: array / esque polyline
- Takes an array of lat, lon arrays and returns an encoded string.
- Semantics: Encodes coordinates into a Google encoded polyline string on encoded. Each entry may be a [lat, lon] pair-array or an object with latitude/longitude keys (falling back to lat/lng); entries in any other shape are silently skipped. precision defaults to 5 decimal places; an empty or missing input produces an empty string.
- In pins: `array` (array, required), `precision` (number)
- Out pins: `encoded` (value)
- Page: https://docs.rual.nl/block-types/array/array_google_polyline_encode.md

### group by (`array_group_by`)

- Groups the elements of the given array by a specified field.
- Semantics: Groups items by the TEXT of the given field's value into objects of shape {group, items, count}, ordered by first appearance of each group value. Non-object items and items lacking the field fall into a group named "none". field defaults to "group" when unwired.
- In pins: `array` (array), `field` (value)
- Out pins: `array` (array)
- Commonly used with: [map](https://docs.rual.nl/block-types/array/array_map.md) (in), [sort array by field](https://docs.rual.nl/block-types/array/array_sort_condition.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_group_by.md

### group by to map (`array_group_by_to_map`)

- Groups the elements of the given array by a specified field and returns them as a map.
- Semantics: Outputs an object mapping the TEXT of each item's field value to the array of items carrying that value, preserving item order within each group. Non-object items and items lacking the field collect under the key "none". field defaults to "group" when unwired.
- In pins: `array` (array), `field` (value)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/array/array_group_by_to_map.md

### grouped step matching by field (`array_grouped_matching_by_field`)

- Returns all matching objects for the given key-value pair in groups in steps ([A, A, A, B, B, A, C, C, C] becomes = [(A, A, A), (B, B), (A), (C, C, C)]).
- Semantics: Splits the array into CONSECUTIVE runs: a new group starts each time the key field's value differs from the previous item's, so equal values separated by a different value land in SEPARATE groups. Example: key values [A,A,B,A] - [[A,A],[B],[A]]. Numbers compare across int/float; an empty input or unwired key outputs an empty grouped array.
- In pins: `array` (array, required), `key` (value, required)
- Out pins: `grouped` (array)
- Page: https://docs.rual.nl/block-types/array/array_grouped_matching_by_field.md

### get meta guids (`array_guid_map`)

- Returns an array of values with _meta.guid's of each object in the given array.
- Semantics: Extracts _meta.guid from each object item into a flat array of guid strings, preserving order. Items that are not objects, lack _meta, or have an empty guid are SKIPPED, so the output can be shorter than the input.
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [add suffix to values](https://docs.rual.nl/block-types/array/array_add_suffix.md) (out), [filter](https://docs.rual.nl/block-types/array/array_filter.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_guid_map.md

### index of (`array_index_of`)

- Get the index of the given value, -1 if not found.
- Semantics: Outputs the zero-based index of the FIRST element equal to the comparison pin (named after the selected type, legacy pin id value), or -1 when no element matches. Numbers match across int/float representations, but numeric strings do NOT equal numbers.
- In pins: `array` (array)
- Out pins: `index` (number)
- Page: https://docs.rual.nl/block-types/array/array_index_of.md

### join (`array_join`)

- Creates and returns a new string by concatenating all of the elements in this array, separated by void if none provided
- Semantics: Joins the text form of every element with the separator from the value in-pin (empty string when unwired) and outputs the result on value with success true. A missing or non-array input outputs null, success false, and INVALID_TYPE on error. Elements of any type are stringified, so objects and arrays join too.
- In pins: `array` (array, required), `value` (value)
- Out pins: `value` (value), `success` (condition), `error` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in), [map](https://docs.rual.nl/block-types/array/array_map.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_join.md

### get last item (`array_last_item`)

- Get the last item from the array.
- Semantics: Outputs the LAST element of the array on the type-selected output pin (pin id value when no type is chosen). An empty or missing array, or a last element that is null, outputs null. The array itself is not modified.
- In pins: `array` (array)
- Commonly used with: [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (both), [cast to array](https://docs.rual.nl/block-types/type%20casting/file_convert_to_array.md) (in), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_last_item.md

### length (`array_length`)

- Returns the total length of the given array.
- Semantics: Outputs the number of elements in the array on length. A missing or non-array input counts as 0. Nested arrays count as one element each; null elements are counted.
- In pins: `array` (array)
- Out pins: `length` (number)
- Commonly used with: [===](https://docs.rual.nl/block-types/condition/condition_deep_equal.md) (out), [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (in), [find by key - value](https://docs.rual.nl/block-types/array/array_get_objects_by_field_value.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_length.md

### get first filled (`array_logical_or`)

- Group: array / expressions
- will return the second array if the first is empty.
- Semantics: Returns the FIRST non-empty array among the first pin, then second, then any extended array pins in pin-name order; empty arrays are skipped, NOT returned. If every input is empty or not an array, outputs null rather than an empty array.
- In pins: `first` (array, required), `second` (array, required)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_logical_or.md

### map (`array_map`)

- Creates a new array with the results of the provided function on every element in the array.
- Semantics: Runs the wired callback once per item (callback pins index and value) and collects each return value into a new array in input order; an item whose callback fails or returns nothing yields null at that position. Iterations can run in parallel (concurrency pin, default 10) but output order always matches input order. Non-array input outputs [] plus error NOT_AN_ARRAY; with NO callback wired the input array passes through unchanged.
- In pins: `array` (array), `concurrency` (number)
- Out pins: `array` (array), `function` (execute_function), `error` (value)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [filter empty](https://docs.rual.nl/block-types/array/array_filter_empty.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_map.md

### map values to guid seeds (`array_map_guid_seed`)

- Maps each value in the array through the deterministic GUID seed hash. Produces an array of GUIDs where each GUID is derived from the corresponding value. Much faster than using array map with a custom function.
- Semantics: Replaces each item with the lowercase hex SHA-256 hash of the item coerced to a string using JavaScript String() rules (null becomes "null", arrays join elements with commas, plain objects become "[object Object]"). Deterministic: equal values always produce the same hash. Non-array input outputs [].
- In pins: `array` (array, required)
- Out pins: `array` (array)
- Commonly used with: [add suffix to values](https://docs.rual.nl/block-types/array/array_add_suffix.md) (in), [storage left join exists](https://docs.rual.nl/block-types/storage/function_storage_left_join_exists.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_map_guid_seed.md

### map and parse (`array_map_parse`)

- Takes an array with strings and parses every item.
- Semantics: Parses each string item as JSON and outputs the parsed values. Non-string and empty-string items are DROPPED before parsing, so the output can be shorter than the input. On the first parse failure: error carries the message, success stays false and array stays null (NO partial results). A missing or non-array input emits error MISSING_ARRAY.
- In pins: `array` (array, required), `concurrency` (number)
- Out pins: `array` (array), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/array/array_map_parse.md

### match lines for document (`array_match_lines_for_document`)

- Returns all matching lines by guid for the given document. The input should contain a _meta.guid which will be returned and an array matches containing { key, value }.
- Semantics: Outputs the _meta.guid strings of matching lines, NOT the line objects. A line matches when every entry in its matches list holds against the document: the value is split on whitespace and ANY token may equal the document field (string compare; array fields match on any element), value "*" always passes, and with prefixcheck set entries whose key lacks the prefix are skipped. If overwrites contains the line guid, a matching overwrite line contributes its OWN guid instead.
- In pins: `lines` (array, required), `overwrites` (object, required), `document` (object, required), `prefixcheck` (value)
- Out pins: `matches` (array)
- Page: https://docs.rual.nl/block-types/array/array_match_lines_for_document.md

### step matching by field (`array_matching_by_field`)

- Returns the matching objects for the given key-value pair in steps.
- Semantics: Selects items whose value at the key path equals the compare pin named after the selected type. Outputs the matches, their original indexes, and condition=true when at least one matched. With stopaftermismatch=true only the FIRST contiguous run of matches is returned: scanning stops at the first mismatch AFTER a match, while mismatches before any match do not stop it. Equality is strict; numbers compare by value across integer/float.
- In pins: `stopaftermismatch` (condition, required), `array` (array, required), `key` (value, required)
- Out pins: `array` (array), `array_indexes` (array), `condition` (condition)
- Page: https://docs.rual.nl/block-types/array/array_matching_by_field.md

### max (`array_max`)

- Returns the highest number in the given array of numbers.
- Semantics: Returns the highest item after coercing to numbers; numeric strings and booleans coerce, and non-coercible items after the first are ignored. Outputs 0 when the array is empty, not an array, or its FIRST item is not numeric-coercible - indistinguishable from a real maximum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Commonly used with: [with numbers](https://docs.rual.nl/block-types/array/array_of_numbers.md) (in), [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_max.md

### max on field (`array_max_on_bp_field`)

- Returns the highest number for the given field in the given array of objects.
- Semantics: Returns the highest numeric value of the selected field (dot path) across the object items. Non-object items, items missing the field, and non-numeric values are skipped; numeric strings coerce. Outputs 0 when no field is selected, the selected field type is not number or date, or no item yields a usable value - indistinguishable from a real maximum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_max_on_bp_field.md

### merge by field (`array_merge_by_field`)

- will return the base array with the matches merged in, pairing base_array_key against merge_array_key. The base array items are modified in place.
- Semantics: For each base_array item, collects the merge_from items whose merge_array_key value equals its base_array_key value (compared as strings) and writes them into the field named by merge_matches_key, MUTATING base items in place. With merge_all_matches true (default) that field is always an array, [] when none match; when false it holds only the FIRST match, null when none. Base items without the base key are left untouched; if any key pin is empty NO output is emitted.
- In pins: `base_array` (array, required), `merge_from` (array, required), `base_array_key` (value, required), `merge_array_key` (value, required), `merge_matches_key` (value, required), `merge_all_matches` (condition), `remove_meta_from_merge` (condition)
- Out pins: `array` (array)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [reverse](https://docs.rual.nl/block-types/array/array_reverse.md) (out), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_merge_by_field.md

### by compare key (`array_merge_increment_deep_key`)

- Group: array / merge
- Merge array increment by deep key
- Semantics: Merges base_array then merge_from into one array deduplicated on the string value of compare_key: the first occurrence is kept and later occurrences shallow-merge over it, their fields overwriting, EXCEPT the increment_keys fields which are summed numerically. With deep_key set, items are drawn from the array at that path inside each element. Non-array base outputs [] plus error BASE_ARRAY_IS_INVALID; empty compare_key outputs [] plus MISSING_COMPARE_KEY.
- In pins: `base_array` (array, required), `merge_from` (array, required), `deep_key` (value), `compare_key` (value, required), `increment_keys` (array)
- Out pins: `merged_array` (array)
- Page: https://docs.rual.nl/block-types/array/array_merge_increment_deep_key.md

### min (`array_min`)

- Returns the lowest number in the given array of numbers.
- Semantics: Returns the lowest item after coercing to numbers; numeric strings and booleans coerce, and non-coercible items after the first are ignored. Outputs 0 when the array is empty, not an array, or its FIRST item is not numeric-coercible - indistinguishable from a real minimum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Commonly used with: [with numbers](https://docs.rual.nl/block-types/array/array_of_numbers.md) (both)
- Page: https://docs.rual.nl/block-types/array/array_min.md

### min on field (`array_min_on_bp_field`)

- Returns the lowest number for the given field in the given array of objects.
- Semantics: Returns the lowest numeric value of the selected field (dot path) across the object items. Non-object items, items missing the field, and non-numeric values are skipped; numeric strings coerce. Outputs 0 when no field is selected, the selected field type is not number or date, or no item yields a usable value - indistinguishable from a real minimum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_min_on_bp_field.md

### multiply by field (`array_multiply_by_field`)

- Returns an array with each item multiplied for the provided key
- Semantics: For each object item, multiplies the number at multiply_key (missing or non-numeric reads as 0) by the value at multiply_other_key when set, otherwise by multiply_by, writing the product to new_field_key or, when that is empty, OVERWRITING multiply_key - items are mutated in place; non-object items pass through. multiply_by equal to 0 counts as unset: with no multiply_other_key the block emits error MISSING_MULTIPLY_BY and no output array.
- In pins: `multiply_array` (array, required), `multiply_key` (value, required), `multiply_other_key` (value, required), `new_field_key` (value), `multiply_by` (number, required)
- Out pins: `output_array` (array)
- Page: https://docs.rual.nl/block-types/array/array_multiply_by_field.md

### flatten (`array_nested_join`)

- Accepts a nested array and returns a flattened array.
- Semantics: Recursively flattens nested arrays into one flat array. A maxdepth greater than 0 flattens only that many levels, keeping deeper arrays intact as elements; 0 or unset flattens completely. Non-array input outputs null. Example: [[1,[2]],3] - [1,2,3] fully, or [1,[2],3] with maxdepth 1.
- In pins: `array` (array), `maxdepth` (number)
- Out pins: `array` (array)
- Commonly used with: [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in), [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (out), [array includes](https://docs.rual.nl/block-types/condition/condition_array_contains_string.md) (out), [exclude by value](https://docs.rual.nl/block-types/array/array_filter_value.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_nested_join.md

### new (`array_new`)

- returns a new array.
- Semantics: Creates an array of exactly length elements, each set to the value of the type-selected fill pin - every element is the SAME value, not a clone. length is clamped to the range 0..1000. With no fill pin wired the elements are null.
- In pins: `length` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_new.md

### objects with fields (`array_object_with_fields`)

- Create multiple objects inside an array
- Semantics: Builds objects from the studio-selected field paths and outputs them in an array: one object by default, plus one per extended pin group (whose input pins repeat each field with an _0, _1, ... suffix). Field values are set at their dot paths; an unwired field is omitted from the object although its parent objects along the path are still created.
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_object_with_fields.md

### with dates (`array_of_dates`)

- Semantics: Collects the wired date pins into an array of ISO-8601 UTC strings with millisecond precision, e.g. 2021-04-27T00:00:00.000Z. Numeric inputs are read as unix SECONDS (fractional seconds preserved); null and non-finite values are skipped, so the output can have fewer entries than wired pins.
- In pins: `date_1` (date), `date_2` (date)
- Out pins: `array` (array<date>)
- Page: https://docs.rual.nl/block-types/array/array_of_dates.md

### with numbers (`array_of_numbers`)

- Returns an array of numbers.
- Semantics: Collects the wired number pins into an array, keeping only actual finite numbers - numeric strings and booleans are NOT coerced and are dropped, as are null, NaN and Infinity, so the output can have fewer entries than wired pins.
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `array` (array<number>)
- Commonly used with: [min](https://docs.rual.nl/block-types/array/array_min.md) (both), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [max](https://docs.rual.nl/block-types/array/array_max.md) (out), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_of_numbers.md

### with objects (`array_of_objects`)

- Returns an array of objects.
- Semantics: Collects the wired object pins into an array in pin order. Only plain objects are kept - null and any non-object value are dropped, so the output can have fewer entries than wired pins.
- In pins: `object_1` (object), `object_2` (object)
- Out pins: `array` (array<object>)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [filter empty](https://docs.rual.nl/block-types/array/array_filter_empty.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_of_objects.md

### with values (`array_of_values`)

- Returns an array of values
- Semantics: Collects the wired value pins into an array, keeping only strings - numbers, booleans, objects and null are DROPPED without coercion, so the output can have fewer entries than wired pins.
- In pins: `value_1` (value), `value_2` (value)
- Out pins: `array` (array<value>)
- Commonly used with: [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [match with any](https://docs.rual.nl/block-types/query/query_terms_field.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [send email](https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_of_values.md

### remove from bottom of array (`array_pop`)

- removes the last element from an array and returns that removed element
- Semantics: Removes the LAST element of a copy of the array; the input is not mutated. array_updated (and the deprecated array pin) carry the remaining elements; the type-selected out pin and the deprecated item pin carry the removed element. On an empty or non-array input the removed value is null and the updated array is empty. When the selected type is array, the removed element is emitted on the array-named pin INSTEAD of the legacy remainder output.
- In pins: `array` (array)
- Out pins: `array_updated` (array)
- Page: https://docs.rual.nl/block-types/array/array_pop.md

### add to bottom of array (`array_push`)

- Adds your given value to your given array.
- Semantics: Appends to a COPY of the input array; the input is never mutated. Every filled one of the object, value, number, condition and date pins is appended, in that fixed order, so filling several appends several elements. A date is appended as a unix-seconds number. With no array wired the output is a new array holding just the appended value(s).
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [foreach](https://docs.rual.nl/block-types/foreach/function_foreach.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_push.md

### range (`array_range`)

- Generates a new array based on the given start and end numbers.
- Semantics: Generates numbers starting at start, advancing by step (default 1), stopping BEFORE the value of the length pin - length is the EXCLUSIVE end bound, NOT an element count. A negative step counts down while above the end. If the step direction can never reach the end, outputs []. Example: start 0, length 5, step 2 - [0,2,4].
- In pins: `start` (number), `length` (number), `step` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_range.md

### remove at index (`array_remove_at_index`)

- Removes the item with the given index.
- Semantics: Returns a new array with the element at the given zero-based index removed. A negative or out-of-range index leaves the array UNCHANGED - no error is emitted.
- In pins: `array` (array), `index` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_remove_at_index.md

### remove multiple indexes (`array_remove_at_indexes`)

- Removes the items with the given indexes.
- Semantics: Returns a new array omitting the elements at every zero-based index listed in indexes; index values are coerced to numbers and out-of-range or duplicate entries are ignored. If indexes is not an array, the input passes through UNCHANGED.
- In pins: `array` (array), `indexes` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_remove_at_indexes.md

### remove duplicates (`array_remove_duplicates`)

- Removes duplicate values from an array.
- Semantics: Keeps the FIRST occurrence of each repeated value and drops the rest. Numbers deduplicate by numeric value regardless of integer/float representation; null deduplicates too. Objects and arrays are NEVER deduplicated - every one is kept even when structurally identical.
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [length](https://docs.rual.nl/block-types/array/array_length.md) (out), [concat](https://docs.rual.nl/block-types/array/array_concat.md) (in), [add to top of array](https://docs.rual.nl/block-types/array/array_unshift.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_remove_duplicates.md

### remove fields conditional (`array_remove_field_conditional`)

- For each object in the array, removes the configured fields only when the value at match_key equals match_value. Non-matching items pass through unchanged. Original objects are not mutated.
- Semantics: Removes the studio-selected fields only from items whose value at match_key equals the compare value; matching items are DEEP-COPIED first, so the input array and its objects are never mutated. Non-matching and non-object items pass through as-is. The compare value is the first filled pin in the order match_condition, match_number, match_date, match_object, match_value. With no filled match pin, an empty match_key or no fields selected, the array passes through unchanged.
- In pins: `array` (array, required), `match_key` (value, required), `match_value` (value), `match_number` (number), `match_condition` (condition), `match_date` (date), `match_object` (object)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_remove_field_conditional.md

### remove fields (`array_remove_fields`)

- Removes the specified fields from the objects in this array. Each object is deep-copied first, so the input array and its objects are not mutated.
- Semantics: Returns a new array in which each object item is a deep copy with the studio-selected field paths deleted; the input array and its objects are NOT mutated. Non-object items pass through as-is. An empty or non-array input outputs null; with no fields selected the input passes through unchanged.
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [filter by geo distance](https://docs.rual.nl/block-types/array/array_filter_geo_distance.md) (out), [map](https://docs.rual.nl/block-types/array/array_map.md) (out), [storage left join document](https://docs.rual.nl/block-types/storage/function_storage_left_join_document.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_remove_fields.md

### reverse (`array_reverse`)

- Reverses the order of elements in the given array.
- Semantics: Returns a reversed COPY of the array; the input is not mutated. Example: [1,2,3] - [3,2,1].
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [merge by field](https://docs.rual.nl/block-types/array/array_merge_by_field.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_reverse.md

### reverse geocode (`array_reverse_geocode`)

- Enriches an array of objects in place: for each item it reads the geo point at the location key and writes the resolved city, province, country and country code into the configured output keys. Offline lookup (embedded multi-country dataset).
- Semantics: Enriches each object IN PLACE: reads { lat, lon } at location_key (falling back to location_fallback_key) and writes the resolved street, city, neighborhood, province, country and country code to each non-empty output key. The array pin always returns ALL items; items that are non-objects, lack valid coordinates or fail resolution are additionally listed on unresolved, appearing in BOTH outputs. With no location_key or no dataset loaded, the input passes through untouched.
- In pins: `array` (array, required), `location_key` (value, required), `location_fallback_key` (value), `street_key` (value), `city_key` (value), `neighborhood_key` (value), `province_key` (value), `country_key` (value), `country_code_key` (value)
- Out pins: `array` (array), `unresolved` (array)
- Page: https://docs.rual.nl/block-types/array/array_reverse_geocode.md

### remove from top of array (`array_shift`)

- removes the first element from an array and returns that removed element
- Semantics: Removes the FIRST element of a copy of the array; the input is not mutated. array_updated (and the deprecated array pin) carry the remaining elements; the type-selected out pin and the deprecated item pin carry the removed element. On an empty or non-array input the removed value is null and the updated array is empty. When the selected type is array, the removed element is emitted on the array-named pin INSTEAD of the legacy remainder output.
- In pins: `array` (array)
- Out pins: `array_updated` (array)
- Page: https://docs.rual.nl/block-types/array/array_shift.md

### shuffle (`array_shuffle`)

- Shuffles the array in a random sorting.
- Semantics: Returns a COPY of the array with the elements in uniformly random order; the input is not mutated and the result differs between runs.
- In pins: `array` (array, required)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_shuffle.md

### slice (`array_slice`)

- returns a shallow copy of a portion of an array into a new array object selected from start to end
- Semantics: Returns a copy of the elements from index begin up to but EXCLUDING end; without end it runs to the end of the array. Negative indexes do NOT count from the end as in JS - they clamp to 0 - and bounds beyond the length clamp to the length; begin greater than end yields []. Example: [a,b,c,d] with begin 1, end 3 - [b,c].
- In pins: `array` (array, required), `begin` (number, required), `end` (number)
- Out pins: `array` (array)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [filter types](https://docs.rual.nl/block-types/array/array_filter_types.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_slice.md

### some (`array_some`)

- Tests whether at least one element in the array passes the test
- Semantics: Runs the wired callback per item (callback pins index and value), stopping as soon as a callback returns boolean true. The condition output is the LAST callback return value passed through as-is, so it can be a non-boolean; truthy values other than true do NOT stop the loop. Empty input, non-array input or no callback wired outputs false. Iterations whose callback errors are skipped.
- In pins: `array` (array)
- Out pins: `condition` (condition), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/array/array_some.md

### some (value) (`array_some_value`)

- tests whether at least one element in the array passes the test
- Semantics: Outputs condition=true when at least one element equals the compare pin named after the selected type (value, number or condition). Equality is strict with no string/number coercion; numbers compare by value across integer and float, and objects or arrays compare by deep equality. An empty or non-array input, or any other selected type, outputs false.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/array/array_some_value.md

### sort array by field (`array_sort_condition`)

- Sorts the elements of an array by a given key.
- Semantics: Stable-sorts a COPY of the array; the input is not mutated. With sort_by set it sorts object items by that dot-path field, otherwise by the elements themselves. Direction is decided ONLY by the asc pin: true sorts ascending, unfilled or false sorts DESCENDING (the desc pin is display-only). Numbers compare numerically, strings lexicographically ("10" before "2"), a number and a numeric string compare numerically, and null sorts as smallest.
- In pins: `array` (array), `sort_by` (value), `asc` (condition, required), `desc` (condition, required)
- Out pins: `array` (array)
- Commonly used with: [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [group by](https://docs.rual.nl/block-types/array/array_group_by.md) (in), [join](https://docs.rual.nl/block-types/array/array_join.md) (out), [splice](https://docs.rual.nl/block-types/array/array_splice.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_sort_condition.md

### sort array by length (`array_sort_length`)

- Sorts an array based on the length of the elements.
- Semantics: Stable-sorts a COPY of the array by the character length of each item's string representation (non-strings are stringified first); the input is not mutated. condition=true sorts short to long; unfilled or false sorts LONG TO SHORT - descending is the default.
- In pins: `array` (array, required), `condition` (condition)
- Out pins: `array` (array, required)
- Page: https://docs.rual.nl/block-types/array/array_sort_length.md

### sort array by multiple fields (`array_sort_multiple_fields`)

- Sorts the elements of an array by multiple fields in priority order and returns a new, sorted array. The input array is not changed. `fields` and `sort` are two separate, parallel arrays of plain text values that line up by position: fields = ["category", "price"] with sort = ["asc", "desc"] sorts by category ascending and then by price descending.
- Semantics: Sorts object items by multiple dot-path fields in priority order: fields lists the paths and sort gives asc or desc per position (case-insensitive, missing entries default to asc); items tied on one field fall through to the next. Comparison follows JS rules: numbers numeric, strings lexicographic, null smallest. Outputs a NEW sorted array; the input array's order is NOT changed.
- In pins: `array` (array), `fields` (array), `sort` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_sort_multiple_fields.md

### splice (`array_splice`)

- Removes an item from your given array.
- Semantics: Removes elements from a COPY of the array starting at zero-based index start: with deleteCount wired it removes that many elements (negative counts as 0); WITHOUT deleteCount it removes everything from start through the end. Outputs the remainder on array and the removed elements on removed_items; the input is not mutated. Negative start clamps to 0 - it does not count from the end - and nothing can be inserted.
- In pins: `array` (array), `number_1` (number), `number_2` (number)
- Out pins: `array` (array), `removed_items` (array)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [map](https://docs.rual.nl/block-types/array/array_map.md) (out), [sort array by field](https://docs.rual.nl/block-types/array/array_sort_condition.md) (in)
- Page: https://docs.rual.nl/block-types/array/array_splice.md

### sum (`array_sum`)

- Returns the total sum of the given array of numbers.
- Semantics: Returns the sum of the items coerced to numbers; numeric strings and booleans coerce, and non-coercible items after the first add 0. Outputs 0 when the array is empty, not an array, or its FIRST item is not numeric-coercible - indistinguishable from a real sum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_sum.md

### sum on field (`array_sum_on_bp_field`)

- Returns the total sum of the given field within the array of objects.
- Semantics: Returns the sum of the selected field (dot path) across the object items; a missing or non-numeric field value adds 0, numeric strings coerce, and non-object items are skipped. Outputs 0 when no field is selected or the input is not an array - indistinguishable from a real sum of 0.
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/array/array_sum_on_bp_field.md

### swap (`array_swap`)

- Semantics: Returns a COPY of the array with the elements at the two zero-based indexes exchanged; the input is not mutated. If EITHER index is negative or out of range, the array passes through unchanged.
- In pins: `array` (array, required), `number` (number), `number_1` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_swap.md

### switch (`array_switch`)

- returns an array based of the given expression.
- Semantics: Evaluates the expression against the configured cases and outputs the array wired to the matching case, with matched=true. When no case matches, the default pin's array is output with matched=FALSE - matched reports a non-default hit, not whether an output exists. With no match and no default, array is null and matched is false.
- In pins: `value` (value), `default` (array)
- Out pins: `array` (array), `matched` (condition)
- Page: https://docs.rual.nl/block-types/array/array_switch.md

### array template (`array_template`)

- Group: array / template actions
- Generates an array using template actions.
- Semantics: Collects the resolved value of every template pin into an array in pin order. Values are taken as-is with nothing dropped or coerced, so a pin that yields no value contributes null.
- In pins: `template_0` (template), `template_1` (template)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_template.md

### transpose (`array_transpose_data_from_rows_sum`)

- Transposes the given array of objects to an object with (key: sum).
- Semantics: Builds an object from an array of objects: each item's value at the key path (stringified) becomes a property whose value accumulates the SUM of that item's sum_key values; a missing or non-numeric sum value adds 0. Items that are not objects or lack the key field are skipped. Example: [{k:a,v:1},{k:a,v:2}] with key k, sum-key v - {a:3}.
- In pins: `array` (array), `key` (value), `sum_key` (value)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/array/array_transpose_data_from_rows_sum.md

### add to top of array (`array_unshift`)

- Adds your given value to your given array.
- Semantics: Inserts at the FRONT of a copy of the input array; the input is never mutated. Every filled one of the object, value, number, condition and date pins is inserted, keeping that fixed order at the head. A date is inserted as a unix-seconds number. With no array wired the output is a new array holding just the inserted value(s).
- In pins: `array` (array)
- Out pins: `array` (array)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (both), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [remove duplicates](https://docs.rual.nl/block-types/array/array_remove_duplicates.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_unshift.md

### use array (`array_use_reference`)

- Group: array / references
- Use the array which was previously defined by a define reference
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_use_reference.md

### array with values (`array_values_default`)

- Group: array / custom
- Creates a new array of given values.
- Semantics: Outputs the values configured on the block in the studio as an array of strings in the configured order. There are no input pins; the output is constant for a given configuration.
- Out pins: `array` (array)
- Commonly used with: [validate against whitelist](https://docs.rual.nl/block-types/value/value_validate_values.md) (out), [array includes](https://docs.rual.nl/block-types/condition/condition_array_contains_string.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [match with any](https://docs.rual.nl/block-types/query/query_terms_field.md) (out)
- Page: https://docs.rual.nl/block-types/array/array_values_default.md

### array with numbers (`array_values_numbers`)

- Group: array / custom
- Creates a new array of given numbers.
- Semantics: Outputs the values configured on the block in the studio as an array of numbers, parsing each entry as a decimal number. Entries that do not parse to a finite number are silently DROPPED, so the output can be shorter than the configured list.
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_values_numbers.md

### with arrays (`array_with_arrays`)

- Returns an array with arrays
- Semantics: Collects each wired array pin as a nested element of a new array of arrays - inputs are NESTED, not concatenated. Pins whose value is not an array are dropped. Example: [1,2] and [3] - [[1,2],[3]].
- In pins: `array_1` (array), `array_2` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/array/array_with_arrays.md

## attributes

### autofocus (`uiattributes_autofocus`)

- Add autofocus to the element
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_autofocus.md

### custom autofocus (`uiattributes_autofocus_custom`)

- Every time the element loses focus it will be focused again on keydown.
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_autofocus_custom.md

### if (`uiattributes_branch`)

- Group: attributes / conditions
- Conditional use of events.
- In pins: `then` (uiattributes), `else` (uiattributes), `condition` (condition)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_branch.md

### colspan (`uiattributes_colspan`)

- Set the colspan of the element
- In pins: `number` (number, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_colspan.md

### custom (`uiattributes_custom`)

- Sets a custom attribute of the element
- In pins: `key` (value, required), `value` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_custom.md

### max (`uiattributes_date_max`)

- Set the maximum date within a date input
- In pins: `max` (date, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_date_max.md

### min (`uiattributes_date_min`)

- Set the minimum date within a date input
- In pins: `min` (date, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_date_min.md

### step (`uiattributes_date_step`)

- Set the minimum steps between days
- In pins: `steps` (number, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_date_step.md

### disabled (`uiattributes_disabled`)

- Sets the disabled attribute
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_disabled.md

### elseif (`uiattributes_elseif`)

- Group: attributes / conditions
- Conditional branching for attributes (if.. then.. else if.. then.. else if.. default..).
- In pins: `default` (uiattributes), `elseif` (condition), `then` (uiattributes)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_elseif.md

### set guid (`uiattributes_guid`)

- Sets a GUID to this component, allowing RUAL Developers to use right-click go to JSON to view data for the given document.
- In pins: `guid` (value)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_guid.md

### id (`uiattributes_id`)

- Set the id of the element
- In pins: `value` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_id.md

### max length (`uiattributes_maxlength`)

- Group: attributes / length
- Sets the max length for the user input.
- In pins: `length` (number)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_maxlength.md

### min length (`uiattributes_minlength`)

- Group: attributes / length
- Sets the minimum length for the user input.
- In pins: `length` (number)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_minlength.md

### multiple (`uiattributes_multiple`)

- Combines multiple attributes
- In pins: `uiattributes_1` (uiattributes), `uiattributes_2` (uiattributes)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_multiple.md

### placeholder (`uiattributes_placeholder`)

- Set the placeholder of the element
- In pins: `value` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Commonly used with: [input](https://docs.rual.nl/block-types/state%20ui/state_input.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_placeholder.md

### src (`uiattributes_src`)

- Set the src of the element
- In pins: `value` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_src.md

### switch (`uiattributes_switch`)

- Group: attributes / conditions
- Returns an attribute based on the given expression.
- In pins: `value` (value), `default` (uiattributes)
- Out pins: `uiattributes` (uiattributes), `matched` (condition)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_switch.md

### tabindex (`uiattributes_tabindex`)

- Set the tabindex of the element
- In pins: `number` (number, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_tabindex.md

### title (`uiattributes_title`)

- Set the title of the element
- In pins: `value` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/attributes/uiattributes_title.md

## banking

### create SEPA (`function_sepa_document`)

- Group: banking / SEPA
- Semantics: Builds a SEPA XML file from the transactions of the wired payments object and writes it to the entity temp folder; xml_file outputs a one-element array with the file descriptor {filename, path, type}. type selects the message kind: a value starting with "001" builds a pain.001 credit transfer, anything else (default 008.001.02) builds a pain.008 direct debit. An empty name is written as "BP: missing value" into the XML. Transactions that are not objects are skipped. When the file path is not configured, xml_file is nil and error is FILE_PATH_NOT_CONFIGURED.
- In pins: `flow` (flow), `name` (value), `type` (value), `payments` (payments)
- Out pins: `flow` (flow), `xml_file` (file), `error` (value)
- Page: https://docs.rual.nl/block-types/banking/function_sepa_document.md

### validate VAT (`function_validate_vat`)

- Group: banking / webhooks
- Request VAT code validation using the ec.europa.eu API, allowing you to validate VAT numbers of your customers
- Semantics: Validates a European VAT number against the live VIES SOAP service at ec.europa.eu: spaces, dots and dashes are stripped, the first 2 characters become the country code. valid mirrors the service verdict, with company, address and country filled from the response. valid=false with error VALUE_EMPTY when the pin is unwired, INVALID_FORMAT when the cleaned number is under 3 characters, PARSE_ERROR on an unreadable response, or the network error when the service is unreachable : so valid=false covers both "not a VAT number" and "could not check".
- In pins: `flow` (flow), `vat` (value, required)
- Out pins: `flow` (flow), `valid` (condition, required), `company` (value, required), `address` (value, required), `country` (value, required), `error` (value)
- Page: https://docs.rual.nl/block-types/banking/function_validate_vat.md

### create payment info (`payments_create`)

- Group: banking / SEPA
- Semantics: Builds one SEPA direct debit payment object from the wired fields and outputs it as a one-element payments array, ready for payments_multiple or the SEPA document block. Empty iban/bic/name/id fall back to "", instrumentation to "CORE", sequence to "FRST", transactions to an empty array; an unwired collectdate becomes the current unix timestamp. batch is stored as a boolean.
- In pins: `iban` (value), `bic` (value), `name` (value), `id` (value), `instrumentation` (value), `sequence` (value), `batch` (condition), `collectdate` (date), `transactions` (transaction)
- Out pins: `payments` (payments)
- Page: https://docs.rual.nl/block-types/banking/payments_create.md

### multiple payments (`payments_multiple`)

- Group: banking / SEPA
- Semantics: Collects every wired payments_N pin value, in pin order, into a single payments array; nil or unwired pins are skipped, so with nothing wired the output is an empty array. Values are appended as-is : a pin carrying an array becomes a nested element, it is not flattened.
- In pins: `payments_1` (payments), `payments_2` (payments)
- Out pins: `payments` (payments)
- Page: https://docs.rual.nl/block-types/banking/payments_multiple.md

### create transaction (`transaction_create`)

- Group: banking / SEPA
- Semantics: Outputs an array wrapping the transaction inpin's value : but this block declares no transaction inpin, so the Go executor always outputs an array containing nil, and the iban/name/mandate/sign_date/amount/info/id pins are ignored. To build a real SEPA transaction from fields, use transaction_from_array.
- In pins: `iban` (value), `name` (value), `mandate` (value), `sign_date` (date), `amount` (number), `info` (value), `id` (value)
- Out pins: `transaction` (transaction)
- Page: https://docs.rual.nl/block-types/banking/transaction_create.md

### create transactions from array (`transaction_from_array`)

- Group: banking / SEPA
- Semantics: Maps every truthy item of the array to a SEPA transaction object: name - debtorName, iban - debtorIBAN, mandate - mandateId, sign_date - mandateSignatureDate, amount - amount, info - remittanceInfo, id - end2endId, with currency always "EUR". Falsy items (nil, false, "", 0) are skipped; non-object items produce a transaction of default values. A nil or non-array input outputs an empty array.
- In pins: `array` (array)
- Out pins: `transactions` (transaction)
- Page: https://docs.rual.nl/block-types/banking/transaction_from_array.md

## broadcast

### broadcast (`function_broadcast`)

- Group: broadcast / broadcasting
- Send a message across different sessions over a channel and event. These messages are on send and forget base and are not stored.
- In pins: `flow` (flow), `channel` (value), `event` (value), `message` (object), `fields` (array<value>), `skip_own_websocket` (condition)
- Out pins: `flow` (flow)
- Commonly used with: [false](https://docs.rual.nl/block-types/condition/condition_is_false.md) (in), [broadcast](https://docs.rual.nl/block-types/broadcast/function_broadcast.md) (both), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in)
- Page: https://docs.rual.nl/block-types/broadcast/function_broadcast.md

## browser

### click element (`browserconnection_click_element`)

- Group: browser / page elements
- Clicks on the element and optionally wait for new page
- In pins: `flow` (flow), `page` (browserconnection, required), `element_selector` (value, required), `wait_for_load` (condition, required)
- Out pins: `flow` (flow), `page` (browserconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_click_element.md

### close page (`browserconnection_close`)

- Closes the page
- In pins: `flow` (flow), `page` (browserconnection, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_close.md

### get attribute (`browserconnection_get_elements_attribute`)

- Group: browser / page elements
- Grabs the attribute from the matching elements
- In pins: `flow` (flow), `page` (browserconnection, required), `element_selector` (value, required), `element_attribute` (value, required)
- Out pins: `flow` (flow), `page` (browserconnection), `count` (number, required), `attributes` (array, required), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_get_elements_attribute.md

### get html content (`browserconnection_get_elements_html_content`)

- Group: browser / page elements
- Grabs html content from the matching elements
- In pins: `flow` (flow), `page` (browserconnection, required), `element_selector` (value, required), `element_subselector` (array)
- Out pins: `flow` (flow), `page` (browserconnection), `count` (number, required), `elements` (array, required), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_get_elements_html_content.md

### get text content (`browserconnection_get_elements_text_content`)

- Group: browser / page elements
- Grabs text content from the matching elements
- In pins: `flow` (flow), `page` (browserconnection, required), `element_selector` (value, required), `element_subselector` (array)
- Out pins: `flow` (flow), `page` (browserconnection), `count` (number, required), `elements` (array, required), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_get_elements_text_content.md

### get page title (`browserconnection_get_title`)

- Group: browser / page elements
- Grabs the title of the current page
- In pins: `flow` (flow), `page` (browserconnection, required)
- Out pins: `flow` (flow), `page` (browserconnection), `title` (value, required)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_get_title.md

### load URL (`browserconnection_open`)

- Loads the given URL into a headless browser tab.
- In pins: `flow` (flow), `uri` (value, required)
- Out pins: `flow` (flow), `success` (condition, required), `error` (value), `page` (browserconnection)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_open.md

### scroll to bottom (`browserconnection_scroll_to_bottom`)

- Group: browser / page elements
- Scrolls directly to the bottom of the page or element and waits for new content
- In pins: `flow` (flow), `page` (browserconnection, required), `selector` (value)
- Out pins: `flow` (flow), `page` (browserconnection), `success` (condition, required), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_scroll_to_bottom.md

### wait for selector (`browserconnection_wait_for_selector`)

- Group: browser / page elements
- Waits for the given selector to be available on the page
- In pins: `flow` (flow), `page` (browserconnection, required), `element_selector` (value, required), `timeout` (number, required)
- Out pins: `flow` (flow), `page` (browserconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/browser/browserconnection_wait_for_selector.md

### Parameters (`object_browser_parameters`)

- Group: browser / Browser
- pass values into a blueprint through the page block
- Semantics: Outputs the route/path parameters of the HTTP page or endpoint request that triggered this run, as an object (SHALLOW copy). Outputs nil, not {}, when the run has no browser context (e.g. queue or scheduled triggers). Takes no inputs.
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/browser/object_browser_parameters.md

### Query (`object_browser_query`)

- Group: browser / Browser
- pass values into a blueprint via the URL, e.g: ?search=test behind the URL. "search" will be the field and test is the value
- Semantics: Outputs the URL query-string parameters of the request that triggered this run as an object (SHALLOW copy). Outputs nil, not {}, when the run has no browser context (e.g. queue or scheduled triggers). Takes no inputs.
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/browser/object_browser_query.md

### route info (`object_browser_route_info`)

- Group: browser / Browser
- Returns an object about the API route
- Semantics: Outputs request metadata for the current HTTP run: secure, path, protocol, hostname, url, method, originalUrl, baseUrl (SHALLOW copy). Outputs nil when the run has no route context (e.g. queue or scheduled triggers). Takes no inputs.
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/browser/object_browser_route_info.md

## condition

### AND (`condition_and`)

- operator for a set of boolean operands will be true if and only if all the operands are true
- Semantics: True only when every input pin resolves to exactly boolean true; any input that is unwired, nil, or any non-boolean value (even truthy ones like 1 or "yes") makes the output false. No coercion. Example: condition_1=true condition_2=1 - false (1 is not boolean true).
- In pins: `condition_1` (condition), `condition_2` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_and.md

### array contains one of array (`condition_array_contains`)

- Semantics: True when any element of array_0 strictly equals any element of array_1; false otherwise, including when either input is nil or empty. A scalar (non-array) input is treated as a one-element array. Strict equality: numbers by value, strings case-sensitive, no string/number coercion ("1" does not match 1); object or array elements never match.
- In pins: `array_0` (array), `array_1` (array)
- Out pins: `condition` (condition)
- Commonly used with: [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_array_contains.md

### array includes (`condition_array_contains_string`)

- determines whether an array includes a certain value among its entries
- Semantics: True when any element of array strictly equals the compared value (which arrives on the pin named after the selected type); false otherwise, including when array is nil or empty. A non-array input on array is treated as a one-element list. Strict equality: numbers by value, strings case-sensitive, no string/number coercion ("1" does not match 1); object or array elements never match.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_array_contains_string.md

### array does not include value (`condition_array_does_not_include`)

- Returns true if the given array does not include the given value
- Semantics: Negated membership: true when the value is NOT found in array; false when it is found. A nil, non-array, or empty array yields true. Strict equality: numbers by value, strings case-sensitive, no string/number coercion ("1" does not match 1); object or array elements never match, so they always count as NOT included.
- In pins: `array` (array, required)
- Out pins: `condition` (condition)
- Commonly used with: [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_array_does_not_include.md

### >= AND <= (`condition_between`)

- Group: condition / condition: number
- returns true if the numbers is between the two numbers.
- Semantics: True when number_1 = number_2 and number_1 true (string parsed, bound inclusive).
- In pins: `number_1` (number), `number_2` (number), `number_3` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [if](https://docs.rual.nl/block-types/number/number_branch.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_between.md

### > AND < (`condition_between_exclusive`)

- Group: condition / condition: number
- returns true if the number is between the two numbers (exclusive).
- Semantics: True when number_1 number_2 and number_1 false (bound excluded).
- In pins: `number_1` (number), `number_2` (number), `number_3` (number)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_between_exclusive.md

### >= AND <= (`condition_date_between`)

- Group: condition / condition date
- Semantics: True when date_compare falls in the inclusive range [date_0, date_1], compared as unix-second timestamps. Each pin accepts a unix timestamp (number or numeric string) or a date string parsed as UTC. False when any of the three dates is missing or unparseable.
- In pins: `date_compare` (date), `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_between.md

### === (`condition_date_equals`)

- Group: condition / condition date
- Semantics: True when both dates resolve to exactly the same unix second. Equality is to the second, NOT the calendar day: the same day at different times is unequal. Pins accept unix timestamps (number or numeric string) or date strings parsed as UTC. False when either date is missing or unparseable.
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals.md

### is this month (`condition_date_equals_this_month`)

- Group: condition / date
- Semantics: True when date_today falls within the current calendar month in UTC (first day 00:00:00 through last day 23:59:59, server clock); false otherwise, or when the date is missing or unparseable. Accepts unix timestamps or date strings parsed as UTC.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_this_month.md

### is this week (`condition_date_equals_this_week`)

- Group: condition / date
- Semantics: True when date_today falls within the current week in UTC, where the week runs SUNDAY 00:00:00 through Saturday 23:59:59 (Sunday-based, not Monday-based); false otherwise, or when the date is missing or unparseable. For a Monday-based week use condition_date_equals_thisiso_week.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_this_week.md

### is this workweek (`condition_date_equals_this_workweek`)

- Group: condition / date
- Semantics: Checks only the WEEKDAY: true when date_today falls on a Monday-through-Friday day (UTC) of ANY week, past or future; it does NOT verify the date lies in the current week. False on Saturday or Sunday, or when the date is missing or unparseable. Example: a Tuesday one year ago - true.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_this_workweek.md

### is this year (`condition_date_equals_this_year`)

- Group: condition / date
- Semantics: True when date_today falls within the current calendar year in UTC (Jan 1 00:00:00 through Dec 31 23:59:59, server clock); false otherwise, or when the date is missing or unparseable. Accepts unix timestamps or date strings parsed as UTC.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_this_year.md

### is this iso week (`condition_date_equals_thisiso_week`)

- Group: condition / date
- Semantics: True when date_today falls within the current ISO week in UTC (Monday 00:00:00 through Sunday 23:59:59, server clock); false otherwise, or when the date is missing or unparseable. Accepts unix timestamps or date strings parsed as UTC.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_thisiso_week.md

### is today (`condition_date_equals_today`)

- Group: condition / date
- Semantics: True when date_today falls within the current UTC calendar day (00:00:00 through 23:59:59, server clock); false otherwise, or when the date is missing or unparseable. Accepts unix timestamps or date strings parsed as UTC.
- In pins: `date_today` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_equals_today.md

### >= (`condition_date_higher_equal_than`)

- Group: condition / condition date
- Semantics: True when date_0 is at or after date_1 (date_0 = date_1), compared as unix-second timestamps. Pins accept unix timestamps (number or numeric string) or date strings parsed as UTC. False when either date is missing or unparseable.
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_higher_equal_than.md

### > (`condition_date_higher_than`)

- Group: condition / condition date
- Semantics: True when date_0 is strictly after date_1 (date_0 date_1), compared as unix-second timestamps; equal timestamps yield false. Pins accept unix timestamps (number or numeric string) or date strings parsed as UTC. False when either date is missing or unparseable.
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_higher_than.md

### <= (`condition_date_lower_equal_than`)

- Group: condition / condition date
- Semantics: True when date_0 is at or before date_1 (date_0
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_lower_equal_than.md

### < (`condition_date_lower_than`)

- Group: condition / condition date
- Semantics: True when date_0 is strictly before date_1 (date_0
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_lower_than.md

### !== (`condition_date_not_equals`)

- Group: condition / condition date
- checks whether its two operands are not equal
- Semantics: Negated equality: true when the two dates resolve to different unix seconds; false when they are the same second. When either date is missing or unparseable the output is FALSE, not true: a missing date does not count as unequal. Comparison is to the second, so the same day at different times IS unequal.
- In pins: `date_0` (date), `date_1` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_date_not_equals.md

### === (`condition_deep_equal`)

- Group: condition / condition: number
- returns true if the two values are equal. Compares any type: numbers by value across int/float, strings and booleans strictly, objects and arrays deeply. There is no string/number coercion, so &quot;1&quot; does not equal 1.
- Semantics: True when number_1 and number_2 are equal: numbers by value regardless of integer/float representation, strings and booleans strictly, objects and arrays by deep structural equality. NO string/number coercion ("1" does not equal 1). When BOTH inputs are nil or NaN the output is false, not true. Actions created before 2020-08-12 compare stringified representations instead.
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [length](https://docs.rual.nl/block-types/array/array_length.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_deep_equal.md

### !== false (`condition_deep_is_not_false`)

- checks whether its operands are not equal to false
- Semantics: Negated check: true when the input is anything other than exactly boolean false: nil/missing, 0, "", "false", objects and arrays all yield TRUE. Only exact boolean false yields false. No truthiness coercion. Example: condition=nil - true.
- In pins: `condition` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_deep_is_not_false.md

### !== true (`condition_deep_is_not_true`)

- checks whether its operands are not equal to true
- Semantics: Negated check: true when the input is anything other than exactly boolean true: nil/missing, 1, "true", objects and arrays all yield TRUE. Only exact boolean true yields false. No truthiness coercion. Example: condition="true" - true (string, not boolean true).
- In pins: `condition` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_deep_is_not_true.md

### define condition (`condition_define_reference`)

- Group: condition / references
- Store this condition as reference, which can later be used by "use reference"
- In pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_define_reference.md

### is empty (`condition_empty_array`)

- Group: condition / array
- checks if the array is empty
- Semantics: True when the array pin is nil/missing, not an array, or an array with zero elements; false when it holds at least one element. Element values are irrelevant: an array containing only nulls is NOT empty.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [find by key - value](https://docs.rual.nl/block-types/array/array_get_objects_by_field_value.md) (in), [cast to array](https://docs.rual.nl/block-types/type%20casting/file_convert_to_array.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_empty_array.md

### is empty (`condition_empty_date`)

- Group: condition / date
- checks if the date is empty
- Semantics: True only when the date pin resolves to nil/missing. Any non-nil value counts as filled and yields false, including 0, an empty string, or an unparseable date string. Example: date="" - false (not nil, so not empty).
- In pins: `date` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_empty_date.md

### is empty (`condition_empty_number`)

- Group: condition / number
- checks if the number is empty
- Semantics: True only when the number pin resolves to nil/missing; any actual number yields false, INCLUDING 0. Example: number=0 - false (zero is a value, not empty).
- In pins: `number` (number)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_empty_number.md

### is empty (`condition_empty_object`)

- Group: condition / object
- checks if the object is empty
- Semantics: True when the object pin is nil/missing, not an object, or an object with zero keys; false when it has at least one key. Key values are irrelevant: an object whose only key is set to null is NOT empty.
- In pins: `object` (object)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_empty_object.md

### is empty (`condition_empty_value`)

- Group: condition / value
- checks if the value is empty
- Semantics: True only when the value pin resolves to nil/missing or the exact empty string ""; everything else yields false, including 0, false, whitespace-only strings, and empty arrays or objects.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Commonly used with: [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_empty_value.md

### ends with (`condition_ends_with`)

- Determines whether a string ends with the characters of a specified string
- Semantics: True when the string form of value ends with the string form of endswith, case-sensitively. If EITHER input is JS-falsy (nil, "", 0, false) the output is false without comparing. Non-strings are coerced JS-style: arrays join with commas, objects become "[object Object]". Example: value="Hello" endswith="LO" - false (case-sensitive).
- In pins: `value` (value, required), `endswith` (value, required)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_ends_with.md

### == (`condition_equal`)

- Group: condition / condition: value
- returns true if the two values are equal.
- Semantics: Coerces BOTH inputs to strings before comparing, so 1 equals "1" and true equals "true"; the resulting string comparison is exact and case-sensitive. A wired null becomes "null", a missing pin "" (two unwired pins compare equal). Arrays join with commas; any two plain objects both become "[object Object]" and therefore always compare EQUAL. Legacy actions carrying number_1/number_2 pins compare those two values strictly instead, without string coercion.
- In pins: `value_1` (value), `value_2` (value)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_equal.md

### === false (`condition_equal_false`)

- Group: condition / condition: boolean
- returns true if the boolean is not true. Despite the === false label this is a !== true test: null, 0 and any other non-true value also pass.
- Semantics: Despite the "=== false" label, this tests for absence of exact true: the output is true when the input is NOT exactly boolean true (nil/missing, false, 0, "true", and any object all yield TRUE). Only exact boolean true yields false. Example: condition=nil - true.
- In pins: `condition` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (both), [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_equal_false.md

### === true (`condition_equal_true`)

- Group: condition / condition: boolean
- returns true if the boolean is true.
- Semantics: True only when the input is exactly boolean true; false for everything else, including truthy non-booleans and nil/missing. No coercion. Example: condition="true" - false (string, not boolean).
- In pins: `condition` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_equal_true.md

### point in radius (`condition_geo_is_point_in_circle`)

- Group: condition / geo
- Check to see if an given geo-point is in the circle.
- Semantics: True when the great-circle (haversine) distance in meters between the point and the center point is at most meters, inclusive. Reads geo_point/geo_center_point first, falling back to the deprecated object pins. A missing or malformed point resolves to lat/lon 0,0 instead of failing, so an unwired point silently compares from coordinates 0,0; a missing meters counts as 0.
- In pins: `geo_point` (geo_point), `geo_center_point` (geo_point), `meters` (number)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [x](https://docs.rual.nl/block-types/math/number_times.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_geo_is_point_in_circle.md

### > (`condition_gt`)

- Group: condition / condition: number
- returns true if the number is higher.
- Semantics: True when number_1 number_2 after JS-style Number coercion: numeric strings parse, empty string and a wired null count as 0, booleans as 1/0. False when either pin is absent or coerces to NaN (e.g. a non-numeric string). Example: number_1="10" number_2=9 - true (string parsed as number).
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [get length](https://docs.rual.nl/block-types/value/value_length.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_gt.md

### >= (`condition_gte`)

- Group: condition / condition: number
- returns true if the number is higher or equal.
- Semantics: True when number_1 = number_2 after JS-style numeric coercion: numeric strings parse ("10" = 9 is true), nil and empty string coerce to 0, booleans to 1/0. False when either pin is unconnected or coerces to NaN (non-numeric string), so it is not simply the inverse of
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_gte.md

### validate iban (`condition_iban_valid`)

- Checks whether the IBAN given is a valid IBAN.
- Semantics: Outputs valid=true when the input passes ISO 13616 MOD-97 checksum validation after stripping spaces and uppercasing; false for inputs under 4 characters, any non-alphanumeric character, or a failing checksum. Checksum only: does not verify country-specific lengths or that the account exists.
- In pins: `iban` (value)
- Out pins: `valid` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_iban_valid.md

### includes (`condition_includes_string`)

- Group: condition / value
- Checks if the find string is included in the value string.
- Semantics: True when find occurs as a case-sensitive substring of value. False when find is absent AND ALSO when either value or find is empty or missing - an empty find is not treated as trivially included. Example: value="Abc" find="abc" - false (case-sensitive).
- In pins: `value` (value), `find` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_includes_string.md

### is array (`condition_is_array`)

- Group: condition / condition: array
- Semantics: True when the array pin holds an actual array value, including an empty one; false for nil, missing, and every non-array type - a JSON string like "[1,2]" is NOT parsed and yields false.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_array.md

### is boolean (`condition_is_boolean`)

- Group: condition / value
- Semantics: True when the value pin holds an actual boolean (true or false); false for nil, missing, and everything else - the strings "true"/"false" and the numbers 0/1 are NOT booleans (no coercion).
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_boolean.md

### false (`condition_is_false`)

- Gives the condition false hard-coded
- Semantics: Constant: always outputs false on the condition pin; evaluates nothing and takes no inputs. Wired as a literal false value for other blocks, not a comparator.
- Out pins: `condition` (condition)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [fields to select](https://docs.rual.nl/block-types/query/query_source_by_field.md) (out), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_is_false.md

### is number (`condition_is_number`)

- Group: condition / value
- Semantics: True when the value pin holds an actual numeric value; false for nil, missing, booleans, and strings - numeric text is never parsed. Example: value="5" - false (string, not number).
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_number.md

### is object (`condition_is_object`)

- Group: condition / value
- Semantics: True when the value pin holds an object OR an array (JS typeof semantics: arrays count as objects); false for nil, missing, numbers, booleans, and strings - JSON text is not parsed. To exclude arrays, combine with an is-array check.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_object.md

### is string (`condition_is_string`)

- Group: condition / value
- Semantics: True when the value pin holds a string, including the empty string; false for nil, missing, and every non-string type. Content is irrelevant: "123" is a string (true), the number 123 is not; no coercion either way.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_string.md

### true (`condition_is_true`)

- Gives the condition true hard-coded.
- Semantics: Constant: always outputs true on the condition pin; evaluates nothing and takes no inputs. Wired as a literal true value for other blocks, not a comparator.
- Out pins: `condition` (condition)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [sorting](https://docs.rual.nl/block-types/query/query_sort_field.md) (out), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_is_true.md

### is browser (`condition_is_ui`)

- checks if client is on a browser
- Semantics: True when this run is rendering a UI page or component; false in server-side contexts such as scheduled triggers, queue jobs, and plain API calls. Takes no inputs - the result reflects the execution context of the blueprint run itself.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_is_ui.md

### search (`condition_like`)

- Group: condition / value
- Executes a search for a match between a regular expression and the first value pin.
- Semantics: Regex search, not substring: value_2 is compiled as a JS-flavor regular expression and the output is true when it matches anywhere in value_1 (case-sensitive, unanchored). An invalid pattern outputs false; an empty or missing pattern matches everything (true); nil inputs stringify to "null" before use.
- In pins: `value_1` (value), `value_2` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_like.md

### < (`condition_lt`)

- Group: condition / condition: number
- returns true if the number is lower.
- Semantics: True when number_1 =.
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [length](https://docs.rual.nl/block-types/array/array_length.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_lt.md

### <= (`condition_lte`)

- Group: condition / condition: number
- returns true if the number is lower or equal.
- Semantics: True when number_1 .
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [increment](https://docs.rual.nl/block-types/redis/function_redis_cache_incr_key.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_lte.md

### is alphanumeric (`condition_no_special_characters`)

- Validates that a value contains only alphanumeric characters, underscores, spaces, and asterisks
- Semantics: Outputs valid=true when every character of value is an ASCII letter, digit, underscore, or asterisk - plus space unless disallow_space is true. Underscore IS allowed despite the label; accented letters and all other punctuation yield false. An empty or missing value has no offending characters and is true.
- In pins: `value` (value, required), `disallow_space` (condition)
- Out pins: `valid` (condition)
- Commonly used with: [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_no_special_characters.md

### !== (`condition_not_deep_equal`)

- Group: condition / condition: number
- returns true if the two values are not equal. Compares any type, not just numbers, and does not coerce, so 1 and &quot;1&quot; count as not equal. When both inputs are empty the output is false.
- Semantics: True when the inputs are NOT equal under strict type-aware comparison: numbers compare across numeric representations (int 200 equals float 200) but never against strings, so 1 vs "1" outputs true; arrays and objects compare by deep structural equality. Exception: when BOTH inputs are nil/NaN the output is false, not true.
- In pins: `number_1` (number), `number_2` (number)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_not_deep_equal.md

### is not empty (`condition_not_empty_array`)

- Group: condition / array
- checks if the array is filled (not empty)
- Semantics: True only when the array pin holds an actual array with at least one element; false for an empty array, nil, missing, or any non-array value - a non-empty string or object still outputs false.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [cast to array](https://docs.rual.nl/block-types/type%20casting/file_convert_to_array.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_not_empty_array.md

### is not empty (`condition_not_empty_date`)

- Group: condition / date
- checks if the date is filled (not empty)
- Semantics: True when the date pin is connected and non-nil; false ONLY for nil/missing. No date parsing or validity check happens: 0, an empty string, or any other non-nil value all count as not empty (true).
- In pins: `date` (date)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_not_empty_date.md

### is not empty (`condition_not_empty_number`)

- Group: condition / number
- checks if the number is filled (not empty)
- Semantics: True when the number pin is connected and non-nil; false ONLY for nil/missing. The number 0 counts as not empty (true), and no numeric validation occurs - any non-nil value of any type is true.
- In pins: `number` (number)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [if](https://docs.rual.nl/block-types/date/date_branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [if](https://docs.rual.nl/block-types/number/number_branch.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_not_empty_number.md

### is not empty (`condition_not_empty_object`)

- Group: condition / object
- checks if the object is filled (not empty)
- Semantics: True only when the object pin holds an actual object with at least one key; false for an empty object, nil, missing, or any non-object value - arrays and strings always output false.
- In pins: `object` (object)
- Out pins: `condition` (condition)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_not_empty_object.md

### is not empty (`condition_not_empty_value`)

- Group: condition / value
- checks if the value is filled (not empty)
- Semantics: True when the value pin is neither nil/missing nor the empty string. Everything else counts as NOT empty: 0, false, whitespace, empty arrays, and empty objects all output true.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_not_empty_value.md

### != (`condition_not_equal`)

- Group: condition / condition: value
- returns true if the two values are not equal.
- Semantics: True when the two inputs are NOT equal after both are coerced to strings: 1 vs "1" compare equal (false), true vs "true" equal (false), nil becomes "null", a missing pin becomes "", objects become "[object Object]". Case-sensitive. Example: value_1="A" value_2="a" - true (NOT equal).
- In pins: `value_1` (value), `value_2` (value)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_not_equal.md

### not includes (`condition_not_includes_string`)

- Group: condition / value
- Checks if the find string is not included in the value string.
- Semantics: True only when both value and find are non-empty AND find does NOT occur in value (case-sensitive substring check). False when find IS found, but ALSO false when either input is empty or missing. Example: value="" find="x" - false, even though "x" is absent.
- In pins: `value` (value), `find` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_not_includes_string.md

### OR (`condition_or`)

- operator for a set of operands is true if and only if one or more of its operands is true
- Semantics: True when at least one connected input pin is exactly boolean true; false otherwise. No truthiness coercion: 1, "true", or non-empty values do NOT count, and unconnected or nil pins count as not-true. Accepts any number of condition pins.
- In pins: `condition_1` (condition), `condition_2` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (both), [array includes](https://docs.rual.nl/block-types/condition/condition_array_contains_string.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_or.md

### test (`condition_regexp_test`)

- Group: condition / regexp
- Returns true if the regular expression matches the text. Mirrors JS RegExp.prototype.test().
- Semantics: True when expression, compiled as a JS-flavor regex, matches anywhere in text (unanchored). Case-sensitive unless insensitive=true; multline makes ^ and $ match at line boundaries. An invalid expression outputs false; an empty expression matches everything (true).
- In pins: `text` (value, required), `expression` (value, required), `insensitive` (condition), `multline` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [if](https://docs.rual.nl/block-types/value/value_branch.md) (out), [convert to lowercase](https://docs.rual.nl/block-types/value/value_to_lowercase.md) (in), [=== false](https://docs.rual.nl/block-types/condition/condition_equal_false.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_regexp_test.md

### starts with (`condition_starts_with`)

- Determines whether a string begins with the characters of a specified string
- Semantics: True when the string form of value begins with the string form of startswith, case-sensitive. False whenever EITHER input is falsy before comparison - nil, missing, empty string, 0, or false - so an empty prefix never matches. Example: value="Abc" startswith="abc" - false.
- In pins: `value` (value, required), `startswith` (value, required)
- Out pins: `condition` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/condition/condition_starts_with.md

### switch (`condition_switch`)

- Returns a condition based on the given expression.
- Semantics: Matches the string on the value pin against the case states by exact, case-sensitive comparison. On a match: condition outputs whether that case's pin is exactly boolean true, and matched outputs true. On no match: matched is false and condition is the default pin's value when that value is truthy, otherwise nil. A falsy or non-string value never matches any case.
- In pins: `value` (value), `default` (condition)
- Out pins: `condition` (condition), `matched` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_switch.md

### use condition (`condition_use_reference`)

- Group: condition / references
- Use the condition which was previously defined by a define reference
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_use_reference.md

### is valid email (`condition_validate_email`)

- Checks if email is valid and can receive mails
- Semantics: valid=true only when the address passes an RFC 5322-style format check AND the domain has at least one MX record via a live DNS lookup (3s timeout). error outputs INVALID_FORMAT, INVALID_MX_RECORD_CHECK, or MX_RECORD_NOT_FOUND; DNS failure or timeout yields valid=false. It does not verify the mailbox actually exists.
- In pins: `email` (value, required)
- Out pins: `valid` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [get fields](https://docs.rual.nl/block-types/users/user_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_validate_email.md

### validate HEX color (`condition_validate_hex`)

- Validates the given HEX color
- Semantics: Outputs true when the value is exactly 3 or 6 hex digits (0-9 a-f, case-insensitive). include_hash=true requires a leading # before the digits; include_hash=false requires NO leading # - the hash is mandatory in one mode and forbidden in the other, never optional. 4, 5, and 8-digit (alpha) forms are false.
- In pins: `hexcolor` (value, required), `include_hash` (condition, required)
- Out pins: `condition` (condition)
- Commonly used with: [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_validate_hex.md

### validate URL (`condition_validate_url`)

- Validates URL format - checks if the given string is a valid URL
- Semantics: valid=true when the input parses as an absolute http/https URL with a non-empty host. With require_protocol=true (default) the scheme must be present and be http or https - other schemes are false. With require_protocol=false a scheme-less value is retried as https://value. Empty input is false. Syntax only; no reachability check.
- In pins: `url` (value, required), `require_protocol` (condition)
- Out pins: `valid` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_validate_url.md

### validate username (`condition_validate_username`)

- Validates username format - allows letters, numbers, underscores, and dots only (no hyphens), 3 to 20 characters, not starting or ending with a dot or underscore
- Semantics: valid=true only when the username is 3-20 characters of ASCII letters, digits, dots, or underscores, does not start or end with a dot or underscore, contains no consecutive dots/underscores, and is within max_length. Hyphens are NOT allowed despite the label. Example: username="my-name" - false (hyphen).
- In pins: `username` (value, required), `max_length` (number)
- Out pins: `valid` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (in)
- Page: https://docs.rual.nl/block-types/condition/condition_validate_username.md

### validate value length (`condition_value_check_length`)

- Validates a value against length checks, maximum length check is optional
- Semantics: Coerces value to a string and counts unicode characters (nil counts as 0). True when the count is = min_length and, if max_length is connected, strictly LESS THAN max_length - the maximum is exclusive despite its pin label. Example: value="abcde" max_length=5 - false.
- In pins: `value` (value, required), `min_length` (number, required), `max_length` (number)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_value_check_length.md

### is array (`condition_value_is_array`)

- Group: condition / value
- checks if given inpin is an array
- Semantics: True when the value pin holds an actual array, including an empty one; false for nil, missing, objects, numbers, and strings - JSON text like "[1,2]" is NOT parsed and yields false.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/condition/condition_value_is_array.md

## crypto

### cipheriv decrypt (`value_cipher_decrypt`)

- decrypting data
- Semantics: Decrypts the versioned HEX envelope produced by value_cipher_encrypt and authenticates it before returning plaintext. Legacy fixed-IV CBC/GCM ciphertext remains readable during migration; auth_tag is used only for legacy GCM. key and data must be hex. On failure success is false and output is not written.
- In pins: `algorithm` (value), `key` (value, required), `data` (value, required), `auth_tag` (value, required)
- Out pins: `success` (condition), `output` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/crypto/value_cipher_decrypt.md

### cipheriv encrypt (`value_cipher_encrypt`)

- encrypting data
- Semantics: Encrypts data into a versioned, randomized, authenticated AES envelope. CBC uses a fresh IV plus encrypt-then-MAC; GCM uses a fresh nonce. The HEX output carries the IV/nonce and authentication data, so it can be passed directly to value_cipher_decrypt. key must be hex. auth_tag remains available for GCM compatibility and is nil for CBC. An unsupported algorithm or bad key sets success false with an error code and writes no output.
- In pins: `algorithm` (value, required), `key` (value, required), `data` (value, required)
- Out pins: `success` (condition), `output` (value), `auth_tag` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/crypto/value_cipher_encrypt.md

### scrypt (`value_crypto_scrypt`)

- scrypt is a password-based key derivation function that is designed to be expensive computationally and memory-wise in order to make brute-force attacks unrewarding.
- Semantics: Derives a key from password and salt via scrypt with FIXED cost N=16384, r=8, p=1. length is the raw key size in BYTES (default 24); output is its hex encoding, so twice as many characters. Deterministic: identical password, salt and length always produce the same output. On failure success is false and error holds the message.
- In pins: `password` (value, required), `salt` (value, required), `length` (number)
- Out pins: `success` (condition), `output` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/crypto/value_crypto_scrypt.md

## date

### plus days (`date_add_days`)

- Plus an selected amount of days to your given date.
- In pins: `date` (date), `days` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (out), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_add_days.md

### plus hours (`date_add_hours`)

- Plus an selected amount of hours to your given date.
- In pins: `date` (date), `hours` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [if](https://docs.rual.nl/block-types/date/date_branch.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_add_hours.md

### plus minutes (`date_add_minutes`)

- Plus an selected amount of minutes to your given date.
- In pins: `date` (date), `minutes` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [if](https://docs.rual.nl/block-types/date/date_branch.md) (out), [execute in queue](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_queue.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_add_minutes.md

### plus months (`date_add_months`)

- Plus an selected amount of years to your given date.
- In pins: `date` (date), `months` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_add_months.md

### plus seconds (`date_add_seconds`)

- Plus an selected amount of seconds to your given date.
- In pins: `date` (date), `seconds` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [if](https://docs.rual.nl/block-types/date/date_branch.md) (out), [execute in queue](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_queue.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/date/date_add_seconds.md

### plus weeks (`date_add_weeks`)

- Plus an selected amount of weeks to your given date.
- In pins: `date` (date), `weeks` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/date/date_add_weeks.md

### plus years (`date_add_years`)

- Plus an selected amount of years to your given date.
- In pins: `date` (date), `years` (number)
- Out pins: `date` (date)
- Commonly used with: [if](https://docs.rual.nl/block-types/date/date_branch.md) (out), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/date/date_add_years.md

### if (`date_branch`)

- Group: date / date: conditions
- Allows you to use different dates based on your given condition (true/false).
- In pins: `then` (date), `else` (date), `condition` (condition)
- Out pins: `date` (date)
- Commonly used with: [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [>](https://docs.rual.nl/block-types/condition/condition_gt.md) (in), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_number.md) (in)
- Page: https://docs.rual.nl/block-types/date/date_branch.md

### date now (`date_currentdate`)

- Gives you the current date based on your timezone.
- Out pins: `date` (date)
- Commonly used with: [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (out), [remove multiple documents](https://docs.rual.nl/block-types/storage/function_remove_documents.md) (out), [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (out), [plus days](https://docs.rual.nl/block-types/date/date_add_days.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_currentdate.md

### day of week (locale) (`date_day_of_locale_week`)

- Group: date / get
- Get day of the locale week of the given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_day_of_locale_week.md

### day of week (`date_day_of_week`)

- Group: date / get
- Get day of week of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_day_of_week.md

### day of year (`date_day_of_year`)

- Group: date / get
- Get day of year of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_day_of_year.md

### date (`date_default`)

- Group: date / custom
- Allowes you to give an custom date. E.G. 28/12/2020 16:15:33
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_default.md

### define date (`date_define_reference`)

- Group: date / references
- Store this date as reference, which can later be used by "use reference"
- In pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_define_reference.md

### difference in days (`date_differencedays`)

- The difference between 2 given dates in days.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differencedays.md

### difference in hours (`date_differencehours`)

- Difference between 2 given dates in hours.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differencehours.md

### difference in minutes (`date_differenceminutes`)

- Difference between 2 given dates in minutes.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differenceminutes.md

### difference in months (`date_differencemonths`)

- The difference between 2 given dates in months.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differencemonths.md

### difference in seconds (`date_differenceseconds`)

- Difference between 2 given dates in seconds.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differenceseconds.md

### difference in weeks (`date_differenceweeks`)

- Difference between 2 given dates in weeks.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differenceweeks.md

### difference in years (`date_differenceyears`)

- The difference between 2 given dates in years.
- In pins: `date_0` (date), `date_1` (date, required)
- Out pins: `number` (number), `exact` (number)
- Page: https://docs.rual.nl/block-types/date/date_differenceyears.md

### elseif (`date_elseif`)

- Group: date / date: conditions
- Allowes you to use different dates based on your given conditions.
- In pins: `default` (date), `elseif` (condition), `then` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_elseif.md

### set to: end of day (`date_endofday`)

- Returns the end of the day for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Commonly used with: [minus days](https://docs.rual.nl/block-types/date/date_subtract_days.md) (in), [field between](https://docs.rual.nl/block-types/query/query_bool_range_date_between.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_endofday.md

### set to: end of hour (`date_endofhour`)

- Returns the end of the hour for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_endofhour.md

### set to: end of month (`date_endofmonth`)

- Returns the end of the month for the given date
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_endofmonth.md

### set to: end of week (`date_endofweek`)

- Returns the end of the week for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_endofweek.md

### set to: end of year (`date_endofyear`)

- Returns the end of the year for the given date
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_endofyear.md

### format (`date_format`)

- Format the given date, e.g., DD/MM/YYYY HH:mm
- In pins: `date` (date), `format` (value)
- Out pins: `value` (value)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_format.md

### from now (`date_from_now`)

- Calculate the duration from the given date to the current time and represent it in a human-readable format.
- In pins: `date` (date)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/date/date_from_now.md

### day of month (`date_get_date_of_month`)

- Group: date / get
- Get date of month of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_get_date_of_month.md

### day of week (ISO) (`date_get_day_of_week_iso`)

- Group: date / get
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_get_day_of_week_iso.md

### millisecond (`date_get_millisecond`)

- Group: date / get
- Get millisecond of the date you have given. E.G current date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_get_millisecond.md

### second (`date_get_second`)

- Group: date / get
- Get the second of your given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_get_second.md

### year (`date_get_year`)

- Group: date / get
- Get year of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_get_year.md

### hour (`date_hour`)

- Group: date / get
- Get hour of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_hour.md

### week of year (ISO) (`date_iso_week_of_year`)

- Group: date / get
- Get week of year of given date (ISO).
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_iso_week_of_year.md

### make locale (`date_locale`)

- Set the locale for the given date to the specified locale.
- In pins: `date` (date), `locale` (value)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_locale.md

### logical or (`date_logical_or`)

- Group: date / expressions
- will return the second date if the first is empty.
- In pins: `first` (date, required), `second` (date, required)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_logical_or.md

### minute (`date_minute`)

- Group: date / get
- Get minute of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_minute.md

### month (`date_month_of_year`)

- Group: date / get
- Get the month of the year of the given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_month_of_year.md

### never (`date_never`)

- Will return the -1 unix timestamp. It can be used as expiry for the document update or remove actions
- Out pins: `date` (date)
- Commonly used with: [if](https://docs.rual.nl/block-types/date/date_branch.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_never.md

### convert to date (`date_parse_from_string`)

- Group: date / value
- Parse string to date.
- In pins: `date` (value), `format` (value), `stringified_timezone` (value), `output_timezone` (value)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_parse_from_string.md

### quarter (`date_quarter_of_year`)

- Group: date / get
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_quarter_of_year.md

### day of month (`date_set_date_of_month`)

- Group: date / set
- Set day of month of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_date_of_month.md

### day of week (`date_set_day_of_week`)

- Group: date / set
- Set day of week of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_day_of_week.md

### day of week (ISO) (`date_set_day_of_week_iso`)

- Group: date / set
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_day_of_week_iso.md

### day of week (locale) (`date_set_day_of_week_locale`)

- Group: date / set
- Set day of week of given date
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_day_of_week_locale.md

### day of year (`date_set_day_of_year`)

- Group: date / set
- Set day of year of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_day_of_year.md

### hour (`date_set_hour`)

- Group: date / set
- Set hour of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_hour.md

### millisecond (`date_set_millisecond`)

- Group: date / set
- Set millisecond of the date you have given.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_millisecond.md

### minute (`date_set_minute`)

- Group: date / set
- Set minute of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_minute.md

### month (`date_set_month`)

- Group: date / set
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_month.md

### quarter (`date_set_quarter`)

- Group: date / set
- Set quarter of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_quarter.md

### second (`date_set_second`)

- Group: date / set
- Update the second of current date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_second.md

### week of year (`date_set_week_of_year`)

- Group: date / set
- Set week of year of given date.
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_week_of_year.md

### week of year (ISO) (`date_set_week_of_year_iso`)

- Group: date / set
- Set week of year of given date (ISO).
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_week_of_year_iso.md

### week of year (locale) (`date_set_week_year_locale`)

- Group: date / set
- Set week of year of given date (locale).
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_week_year_locale.md

### year (`date_set_year`)

- Group: date / set
- In pins: `date` (date), `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_set_year.md

### set to: start of day (`date_startofday`)

- Returns the start of the day for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Commonly used with: [minus days](https://docs.rual.nl/block-types/date/date_subtract_days.md) (both), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [field between](https://docs.rual.nl/block-types/query/query_bool_range_date_between.md) (out), [field <= {value}](https://docs.rual.nl/block-types/query/query_bool_range_date_lte.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_startofday.md

### set to: start of hour (`date_startofhour`)

- Returns the start of the hour for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_startofhour.md

### set to: start of month (`date_startofmonth`)

- Returns the start of the month for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_startofmonth.md

### set to: start of week (`date_startofweek`)

- Returns the start of the week for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_startofweek.md

### set to: start of year (`date_startofyear`)

- Returns the start of the year for the given date.
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_startofyear.md

### minus days (`date_subtract_days`)

- Minus an selected amount of days of your given date.
- In pins: `date` (date), `days` (number)
- Out pins: `date` (date)
- Commonly used with: [set to: start of day](https://docs.rual.nl/block-types/date/date_startofday.md) (both), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [set to: end of day](https://docs.rual.nl/block-types/date/date_endofday.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_subtract_days.md

### minus hours (`date_subtract_hours`)

- Minus an selected amount of hours of your given date
- In pins: `date` (date), `hours` (number)
- Out pins: `date` (date)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [field <= {value}](https://docs.rual.nl/block-types/query/query_bool_range_date_lte.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_subtract_hours.md

### minus minutes (`date_subtract_minutes`)

- Minus an selected amount of minutes of your given date.
- In pins: `date` (date), `minutes` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_subtract_minutes.md

### minus months (`date_subtract_months`)

- Minus an selected amount of months of your given date
- In pins: `date` (date), `months` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_subtract_months.md

### minus seconds (`date_subtract_seconds`)

- Minus an selected amount of seconds of your given date.
- In pins: `date` (date), `seconds` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_subtract_seconds.md

### minus weeks (`date_subtract_weeks`)

- Minus an selected amount of weeks of your given date.
- In pins: `date` (date), `weeks` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_subtract_weeks.md

### minus years (`date_subtract_years`)

- Minus a selected amount of years of your given date.
- In pins: `date` (date), `years` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_subtract_years.md

### switch (`date_switch`)

- Returns a date based of the given expression.
- In pins: `value` (value), `default` (date)
- Out pins: `date` (date), `matched` (condition)
- Page: https://docs.rual.nl/block-types/date/date_switch.md

### TTL 12 hours (`date_ttl_12_hours`)

- Gives you the current date plus 12 hours. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_12_hours.md

### TTL 1 day (`date_ttl_1_day`)

- Gives you the current date plus 1 day. Useful as a TTL value.
- Out pins: `date` (date)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_day.md

### TTL 1 hour (`date_ttl_1_hour`)

- Gives you the current date plus 1 hour. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_hour.md

### TTL 1 minute (`date_ttl_1_minute`)

- Gives you the current date plus 1 minute. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_minute.md

### TTL 1 month (`date_ttl_1_month`)

- Gives you the current date plus 1 month. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_month.md

### TTL 1 week (`date_ttl_1_week`)

- Gives you the current date plus 1 week. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_week.md

### TTL 1 year (`date_ttl_1_year`)

- Gives you the current date plus 1 year. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_1_year.md

### TTL 2 weeks (`date_ttl_2_weeks`)

- Gives you the current date plus 2 weeks. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_2_weeks.md

### TTL 30 minutes (`date_ttl_30_minutes`)

- Gives you the current date plus 30 minutes. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_30_minutes.md

### TTL 3 months (`date_ttl_3_months`)

- Gives you the current date plus 3 months. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_3_months.md

### TTL 5 minutes (`date_ttl_5_minutes`)

- Gives you the current date plus 5 minutes. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_5_minutes.md

### TTL 6 hours (`date_ttl_6_hours`)

- Gives you the current date plus 6 hours. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_6_hours.md

### TTL 6 months (`date_ttl_6_months`)

- Gives you the current date plus 6 months. Useful as a TTL value.
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_ttl_6_months.md

### set timezone (`date_tz`)

- Set the timezone for the given date to the specified timezone.
- In pins: `date` (date), `tz` (value)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_tz.md

### get timezone (`date_tz_get`)

- Returns the timezone of the given date
- In pins: `date` (date, required)
- Out pins: `timezone` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/date/date_tz_get.md

### use date (`date_use_reference`)

- Group: date / references
- Use the date which was previously defined by a define reference
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_use_reference.md

### make UTC (`date_utc`)

- Convert the given date to Coordinated Universal Time (UTC).
- In pins: `date` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/date/date_utc.md

### week of year (`date_week_of_year`)

- Group: date / get
- Get week of year of given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/date/date_week_of_year.md

### get unixtimestamp (`number_from_date`)

- Get the Unix timestamp of the given date.
- In pins: `date` (date)
- Out pins: `number` (number)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [cast to value](https://docs.rual.nl/block-types/type%20casting/number_convert_to_value.md) (out)
- Page: https://docs.rual.nl/block-types/date/number_from_date.md

## discord

### send webhook (`discordconnection_send_webhook`)

- Group: discord / discord webhook
- Send a message using the Discord Webhook URL.
- In pins: `flow` (flow), `webhook` (value, required), `message` (value), `embed` (discordembedconnection)
- Out pins: `flow` (flow), `message` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/discord/discordconnection_send_webhook.md

### embed (`discordembedconnection_add_embed`)

- Group: discord / discord embed
- Add a full embed
- In pins: `embed` (discordembedconnection), `color` (number, required), `title` (value), `title_url` (value), `author_name` (value), `author_icon_url` (value), `author_url` (value), `description` (value), `thumbnail` (value), `fields` (array<object>), `image_url` (value), `footer_text` (value), `footer_icon_url` (value)
- Out pins: `embed` (discordembedconnection)
- Page: https://docs.rual.nl/block-types/discord/discordembedconnection_add_embed.md

### add file (`discordembedconnection_add_file`)

- Group: discord / discord embed
- Adds a file to the embed
- In pins: `embed` (discordembedconnection), `file` (value, required)
- Out pins: `embed` (discordembedconnection)
- Page: https://docs.rual.nl/block-types/discord/discordembedconnection_add_file.md

### multiple (`discordembedconnection_multiple`)

- Group: discord / discord embed
- Combine multiple
- In pins: `embed` (discordembedconnection)
- Out pins: `embed` (discordembedconnection)
- Page: https://docs.rual.nl/block-types/discord/discordembedconnection_multiple.md

## dns

### validate zone on the nameservers (`dnszone_check`)

- Group: dns / DNS zones
- Run named-checkzone on every nameserver. Writes nothing anywhere, on any node.
- Semantics: Runs named-checkzone for this zone file on EVERY nameserver in the nodes list and reports per node. It never writes: the file is handed to the parser on stdin and discarded. This is a separate fan-out ahead of any write, not a per-node try-and-see, because a DNS server serving a syntactically valid but truncated zone is worse than one serving yesterday's : so 'does this parse everywhere' is answered in full before 'shall we replace anything' is asked. passed comes back true only when every node passed. results carries {name, host, ok, output, exit_code, checksum, zone} per node, and checksum is a sha256 of the exact bytes checked: dnszone_push demands a passing result with a MATCHING checksum for every node it is about to write to, so a flow cannot render, check, edit and then push a different file. Each node is {name, host, port, user, key_path, known_hosts_path}. Key MATERIAL must never appear on the pin : only paths : and the block refuses a node object carrying private_key, key, password, passphrase or secret. Refuses a file still carrying the @SERIAL@ placeholder, since those would not be the bytes pushed.
- In pins: `flow` (flow), `zone` (value, required), `zone_file` (value, required), `nodes` (array, required)
- Out pins: `flow` (flow), `success` (condition), `zone` (value), `passed` (condition), `results` (array), `checksum` (value), `passed_count` (number), `node_count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_check.md

### import zone export (`dnszone_import`)

- Group: dns / DNS zones
- Read a Route53 export and hand back the records, the SOA timers and the delegation, ready to store.
- Semantics: Parses a Route53 list-resource-record-sets export into the DNS zone store's own record shape. Accepts the AWS document ({"ResourceRecordSets": [...]}), a bare array, or either as JSON text. Owners come back RELATIVE to the origin ('@' for the apex, 'www', '*'), with Route53's octal escapes expanded, which is what lets one record set render under several apexes. The apex SOA and NS are NOT records: they come back on the soa and nameservers pins, because every rendered zone carries its own delegation and a serial stamped at render time. The SOA serial is discarded deliberately. ALIAS records are kept with their target on alias_target and no values; BIND has no ALIAS, so they are resolved at render time. Records carrying a Route53 routing policy (SetIdentifier: weighted, latency, geolocation, failover) make the block REFUSE with success=false, because a zone file would have to flatten them into one arbitrary answer; allow_routing_policies imports them flat and reports each one on the warnings pin. Record order is preserved as the export gave it, which is the order the store keeps and the renderer emits. SEEDING A GROUP: a record set may also carry lowercase policy, slot and note keys, which are passed through to the record. A real AWS export never has them (its keys are TitleCase), but a caller seeding a zone group can, which makes seeding one call instead of an import followed by a PATCH per record. policy is verbatim, rewrite, per-apex or note; anything else is REFUSED rather than ignored, because ignoring it would leave the record rendering verbatim : copied to every apex, the opposite of what was asked. per-apex without a slot is refused too: a slot nobody can fill is a gap, not a decision.
- In pins: `flow` (flow), `zone` (value, required), `export` (object, required), `allow_routing_policies` (condition)
- Out pins: `flow` (flow), `success` (condition), `zone` (value), `records` (array), `count` (number), `soa` (object), `nameservers` (array), `warnings` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_import.md

### push zone to the nameservers (`dnszone_push`)

- Group: dns / DNS zones
- Replace the live zone file and reload, per nameserver. Only reachable once the check passed on every node.
- Semantics: Writes the rendered zone file to every nameserver and reloads it, reporting per node. IT WILL NOT RUN UNGATED. It requires the results from dnszone_check on the checks pin and refuses unless EVERY node in its own list has a passing check for this zone whose checksum matches a fresh sha256 of the bytes about to be sent. So a parse failure anywhere leaves every node's live file untouched : including the nodes that would have accepted it : and a flow cannot check one file and push another. It also refuses when complete is false (a per-apex slot nobody answered for renders a zone that parses perfectly and is missing a record, which named-checkzone cannot see) and when the file still carries the @SERIAL@ placeholder. Past that gate it is deliberately NOT atomic across nodes: the three servers are independent primaries serving identical files, each validates and swaps on its own, and a node that rejects the file keeps serving what it had. BEFORE WRITING ANYTHING it reads each nameserver's live zone with `dns-push get` and compares record sets: if any record currently being served would disappear, the push is REFUSED and named. named-checkzone cannot catch this : a zone stripped to its SOA and NS parses perfectly and is a total outage : and the store cannot be trusted to say what is live, because a record PATCH that deletes the record and an import that reports success before it lands both produced exactly that. allow_removals lifts the refusal for deliberate deletions and reports them on removed; nothing lifts the refusal on a zone rendered down to SOA+NS. If the live zone cannot be read the push refuses rather than proceeding blind. success is true only when every node applied; otherwise results names which refused and the error says how many of how many landed. Follow with dnszone_verify : agreement between the nodes is the only failure that matters and it is invisible from the store's own copy. Each node is {name, host, port, user, key_path, known_hosts_path}: paths only, never key material.
- In pins: `flow` (flow), `zone` (value, required), `zone_file` (value, required), `nodes` (array, required), `checks` (array, required), `complete` (condition), `allow_removals` (condition)
- Out pins: `flow` (flow), `success` (condition), `zone` (value), `results` (array), `applied_count` (number), `node_count` (number), `checksum` (value), `removed` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_push.md

### render zone file (`dnszone_render`)

- Group: dns / DNS zones
- Render a complete BIND zone file from stored records, with the decision report that belongs in front of a push.
- Semantics: Renders stored records into a complete BIND zone file on zone_file. PURE: no network, no server, no writes : same store state, same bytes apart from the serial. That separation is what makes a resync a re-render instead of a diff-repair, and what lets the UI show exactly what will land before anything does. ONE BLOCK, TWO SHAPES. Given records alone, it renders that zone. Given base_zone as well, the records are a zone GROUP's and this apex is a member: group semantics run first and the composed set comes back on the records pin. In a group, each value takes the first matching entry in rules ({action, owner, type, value_contains, slot, why}; a missing field is a wildcard), falling back to the record's own policy : 'verbatim' (default), 'rewrite' (re-aim a target naming the base apex at this member's, REFUSING if it changed nothing), 'per-apex' (drop the base value; the record becomes a slot this member fills from its own records) or 'note' (copy but flag). overrides are this member's own slot fills, extra are records existing only on this apex, slots_na is {slot: reason}. A slot neither filled nor in slots_na is EMPTY: complete comes back false and, with strict on, the render is refused. ALIAS has no BIND equivalent and the two cases differ completely. An IN-ZONE target (deverence.com - www.deverence.com) is answered from the zone's OWN RECORDS: deterministic, no resolver, never stale, and it REFUSES if the target names nothing in the zone rather than emitting a record that is silently missing. An OUT-OF-ZONE target (an ELB, a CloudFront name) needs a live lookup, so it requires flatten_alias and comes back with a resolved_at timestamp, because it goes stale when the target moves. The apex NS set becomes the zone's existing nameservers PLUS our_nameservers (default the canonical trio). The serial is the epoch at render time unless a serial is passed.
- In pins: `flow` (flow), `zone` (value, required), `records` (array, required), `soa` (object, required), `nameservers` (array), `base_zone` (value), `rules` (array), `overrides` (array), `extra` (array), `slots_na` (object), `strict` (condition), `flatten_alias` (condition), `allow_routing_policies` (condition), `serial` (number), `our_nameservers` (value), `header` (value), `negative_ttl` (number)
- Out pins: `flow` (flow), `success` (condition), `zone` (value), `zone_file` (value), `serial` (number), `records` (array), `count` (number), `report` (object), `aliases` (array), `slots` (array), `unfilled` (array), `complete` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_render.md

### check per-apex slots (`dnszone_slot_status`)

- Group: dns / DNS zones
- Report which per-apex slots a group member has filled, which it will never need, and which nobody has answered for.
- Semantics: Reports the per-apex slot state for ONE group member without rendering anything, for a zone overview that has to show gaps before anyone renders. A slot is a record bound to one domain by something outside DNS : an ACM validation CNAME, a DKIM key, a verification token : which each apex must supply from its own records. Every slot comes back in one of exactly three states: 'filled' (an override carries it), 'not-applicable' (slots_na records the reason this domain will never have one, for example it sends no mail) or 'empty' (nobody has looked). Empty and not-applicable are deliberately NOT the same state: a zone with an empty slot is unfinished and must not be pushed, which is what complete=false and the unfilled list are for. Reads the same base_records, rules and overrides as dnszone_render_member and agrees with it by construction.
- In pins: `flow` (flow), `base_records` (array, required), `member_zone` (value), `rules` (array), `overrides` (array), `slots_na` (object)
- Out pins: `flow` (flow), `success` (condition), `member_zone` (value), `slots` (array), `unfilled` (array), `count` (number), `complete` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_slot_status.md

### verify serials across the nameservers (`dnszone_verify`)

- Group: dns / DNS zones
- Ask every nameserver which serial it is actually serving, and whether they agree.
- Semantics: Runs dig SOA for this zone on every nameserver and reports the serial each one is actually serving. Health here is dig, not a status endpoint: serial disagreement is the only failure that matters and it is invisible from the store's own copy, because a push that succeeded on two nodes and silently did nothing on the third looks identical from there. The query runs ON the node against 127.0.0.1, which is a fact about the network rather than a preference: a host cannot reach its own VM's public address (macvlan hairpin), and asking a resolver would answer from a cache. agree is true only when every node answered AND they all gave the same serial. Agreement is checked between the nodes, not against a number computed here : a locally derived serial could be wrong the same way twice. Pass expect_serial (the render's serial) to also assert the push actually took; matches_expected then reports whether the agreed serial is the one just rendered. Each node is {name, host, port, user, key_path, known_hosts_path}: paths only, never key material.
- In pins: `flow` (flow), `zone` (value, required), `nodes` (array, required), `expect_serial` (number)
- Out pins: `flow` (flow), `success` (condition), `zone` (value), `agree` (condition), `serial` (value), `matches_expected` (condition), `results` (array), `answered_count` (number), `node_count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/dns/dnszone_verify.md

## dobot

### clear alarms (`dobotconnection_clear_alarms`)

- Clears all the active alarms on the machine
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_clear_alarms.md

### close connection (`dobotconnection_close`)

- closes the active connection with the machine, freeing up the occupied connection.
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_close.md

### disable (`dobotconnection_disable`)

- Disables the machine
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `disabled` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_disable.md

### enable (`dobotconnection_enable`)

- Enables the machine
- In pins: `flow` (flow), `connection` (dobotconnection, required), `load` (float), `center_x` (number), `center_y` (number), `center_Z` (number), `check_load` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `enabled` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_enable.md

### get coordinate systems (`dobotconnection_get_coordinate_system`)

- grabs the current coordinate systems from the machine
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `tool_coordinate` (number), `user_coordinate` (number)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_get_coordinate_system.md

### get coordinates (`dobotconnection_get_joints`)

- grabs the current joints cartesian coordinates of the machine. When you're using a 4 joint machine, the last 2 joints will be ignored.
- In pins: `flow` (flow), `connection` (dobotconnection, required), `user_coordinate` (number), `tool_coordinate` (number)
- Out pins: `flow` (flow), `connection` (dobotconnection), `j1` (float), `j2` (float), `j3` (float), `j4` (float), `j5` (float), `j6` (float), `joints` (number), `joints_array` (array<float>)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_get_joints.md

### get serial (`dobotconnection_get_serial`)

- grabs the current serial of the machine.
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `serial` (value), `serial_controller` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_get_serial.md

### get speed (`dobotconnection_get_speed`)

- grabs the current speed of the machine.
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `speed` (number)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_get_speed.md

### get status (`dobotconnection_get_status`)

- grabs the current status of the machine.
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `status` (value), `enabled` (condition), `has_alarm` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_get_status.md

### move to safe point (`dobotconnection_goto_safe_point`)

- Moves the machine to the preconfigured safe home position at the current speed
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_goto_safe_point.md

### local devices (`dobotconnection_local_devices`)

- Retrieves the local devices and their connection information
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `devices` (array)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_local_devices.md

### set coordinates (`dobotconnection_move_joint`)

- Moves the machine into the given coords using joint motion. When you're using a 4 joint machine, the last 2 joints will be ignored.
- In pins: `flow` (flow), `connection` (dobotconnection, required), `j1_position` (float), `j2_position` (float), `j3_position` (float), `j4_position` (float), `j5_position` (float), `j6_position` (float), `user_coordinate` (number), `tool_coordinate` (number), `acceleration_rate` (number), `velocity_rate` (number), `continuous_path` (number), `linear_mode` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `finished` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_move_joint.md

### set toolhead (`dobotconnection_move_toolhead`)

- Moves the machines toolhead into the given coords using joint motion, only works on 6 axis machines
- In pins: `flow` (flow), `connection` (dobotconnection, required), `x` (float), `y` (float), `z` (float), `user_coordinate` (number), `tool_coordinate` (number), `acceleration_rate` (number), `velocity_rate` (number), `continuous_path` (number), `linear_mode` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `finished` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_move_toolhead.md

### open connection (`dobotconnection_open`)

- Opens a new dobot connection, make sure to close it. A machine only allows a single active automation.
- In pins: `flow` (flow), `device` (object, required)
- Out pins: `flow` (flow), `success` (condition), `status` (value), `error` (value), `connection` (dobotconnection)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_open.md

### set relative movement (`dobotconnection_rel_move_joint_user`)

- Moves the machines joint motion relative to the current coords. When you're using a 4 joint machine, the last 2 joints will be ignored.
- In pins: `flow` (flow), `connection` (dobotconnection, required), `j1_position` (number), `j2_position` (number), `j3_position` (number), `j4_position` (number), `j5_position` (number), `j6_position` (number), `relative_to` (value), `user_coordinate` (number), `tool_coordinate` (number), `acceleration_rate` (number), `velocity_rate` (number), `continuous_path` (number), `linear_mode` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `finished` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_rel_move_joint_user.md

### set digital output (`dobotconnection_set_digital_output`)

- Group: dobot / dobot output
- Updates the machines digital output so the given status, can be queued by time range in milliseconds
- In pins: `flow` (flow), `connection` (dobotconnection, required), `index` (number, required), `status` (condition, required), `time` (number)
- Out pins: `flow` (flow), `connection` (dobotconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_set_digital_output.md

### set speed (`dobotconnection_set_speed`)

- Updates the speed in percentage of your machine, some machines allow values in excess of 100%
- In pins: `flow` (flow), `connection` (dobotconnection, required), `speed` (number, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `enabled` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_set_speed.md

### start drag (`dobotconnection_start_drag_mode`)

- Group: dobot / dragmode
- enables drag mode on the robot arm, allowing you to move it by hand and recording or savings positions
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_start_drag_mode.md

### stop drag (`dobotconnection_stop_drag_mode`)

- Group: dobot / dragmode
- disables drag mode on the robot arm
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_stop_drag_mode.md

### enable DH Gripper (`dobotconnection_tool_set_dh_gripper`)

- Group: dobot / dobot tools
- Enables the end tool to be compatible with the DH Robotics Grippers
- In pins: `flow` (flow), `connection` (dobotconnection, required)
- Out pins: `flow` (flow), `connection` (dobotconnection), `width` (number), `force` (number), `speed` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_tool_set_dh_gripper.md

### set width (`dobotconnection_tool_set_dh_gripper_width`)

- Group: dobot / DH Robotics Gripper
- Updates the width of the DH Robotics gripper
- In pins: `flow` (flow), `connection` (dobotconnection, required), `width` (number, required), `speed` (number), `force` (number), `blocking` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_tool_set_dh_gripper_width.md

### update jog (`dobotconnection_update_jog`)

- Moves the machine in the given direction relative to the current position. When you're using a 4 joint machine, the last 2 joints will be ignored. JOG is updated in teaching mode, at slower speeds thus.
- In pins: `flow` (flow), `connection` (dobotconnection, required), `j_1_plus` (condition), `j_1_min` (condition), `j_2_plus` (condition), `j_2_min` (condition), `j_3_plus` (condition), `j_3_min` (condition), `j_4_plus` (condition), `j_4_min` (condition), `j_5_plus` (condition), `j_5_min` (condition), `j_6_plus` (condition), `j_6_min` (condition)
- Out pins: `flow` (flow), `connection` (dobotconnection), `moving` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/dobot/dobotconnection_update_jog.md

## edifact

### ekt formatter (`function_edi_formatter`)

- Converts object to edifact ekt file
- Semantics: Serializes the EKT input object into a Floricode CLOCKT v3.8 EDIFACT message, writes it to temp/{guid}.tmp, and outputs a one-item file array ({filename}.edi, path, base64 data, type text/plain). A nil or non-object input fails with EDIFORMATTER_EMPTY_EDI_INPUT. Field values have apostrophes and plus signs stripped, each line's price is divided by 1000 when numeric, and use_windows_newline switches line endings from \n to \r\n; the UNT segment count deliberately keeps the reference implementation's off-by-one.
- In pins: `flow` (flow), `filename` (value, required), `input` (object), `use_windows_newline` (condition)
- Out pins: `flow` (flow), `file` (file, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/edifact/function_edi_formatter.md

### ekt parser (`function_edi_parser`)

- Parses an edifact ekt file and returns it as an object with headers and lines
- Semantics: Reads the first non-media file from the file pin (audio/image/video extensions are skipped; inline content on the file object is used without disk access), parses it as EDIFACT, and outputs the {headers, lines} structure with success=true. No usable file : empty pin, only media files, or an unreadable path : fails with success=false and error "No file selected".
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `output` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/edifact/function_edi_parser.md

### parse pricat (`function_edi_parser_pricat`)

- Parses an invoice file (specifically a PRICAT - Price/Catalog message).
- Semantics: Parses the first usable file from the file pin with the generic EDIFACT segment parser and outputs the parsed structure : despite the name, the Go executor applies NO PRICAT-specific shaping, so output is the same {headers, lines} result as the ekt parser (the output pin is typed array but carries that object). An empty file pin fails with MISSING_FILE; files that are all media-typed or unreadable fail with INVALID_FILE_TYPE.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `output` (array), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/edifact/function_edi_parser_pricat.md

## events

### repeating event (`schedule_repeating_event`)

- function will rerun by the giving date
- Semantics: Entry point fired by the scheduler: the flow first runs at start_at (or immediately when start_at is empty but next_run is set), and after each run the next run is enqueued from the next_run pin : so the blueprint must keep moving next_run into the future to keep repeating; a next_run at or before the current run time stops the schedule. A background checker re-enqueues missing runs every 30 minutes. The block itself does nothing at execute time; both pins may be fed by connected date blocks.
- In pins: `start_at` (date), `next_run` (date)
- Out pins: `flow` (flow)
- Commonly used with: [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (in), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/events/schedule_repeating_event.md

### on startup (`system_event_startup`)

- create a thread on startup
- Semantics: Entry point that fires when the application starts: every active blueprint beginning with this block is run at boot. It fires once per NODE, not once per cluster : a two-node entity runs it twice : so work that must happen once belongs behind function_create_thread, whose `running` pin is true on exactly one node. The block itself does nothing at execute time; flow simply continues on the flow pin.
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/events/system_event_startup.md

## field validation

### if (`fieldvalidation_branch`)

- Group: field validation / validation
- Returns a given validation based on the connected condition
- In pins: `then` (fieldvalidation, required), `else` (fieldvalidation, required), `condition` (condition, required)
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_branch.md

### equal to field (`fieldvalidation_equal_to`)

- Group: field validation / validation
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_equal_to.md

### file type (`fieldvalidation_filetype`)

- Group: field validation / validation
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_filetype.md

### multiple (`fieldvalidation_get_multiple`)

- Group: field validation / validation
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_get_multiple.md

### single (`fieldvalidation_get_single`)

- Group: field validation / validation
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_get_single.md

### multiple (`fieldvalidation_multiple`)

- Group: field validation / validation
- Use multiple custom validations.
- In pins: `fieldvalidation_1` (fieldvalidation), `fieldvalidation_2` (fieldvalidation)
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_multiple.md

### required (`fieldvalidation_required`)

- Group: field validation / validation
- Will set the required attribute on the connected input
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_required.md

### required if other fields empty (`fieldvalidation_required_if_empty`)

- Group: field validation / validation
- Out pins: `fieldvalidation` (fieldvalidation)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_required_if_empty.md

### switch (`fieldvalidation_switch`)

- Group: field validation / validation
- Returns a given validation based on the connected expression
- In pins: `value` (value, required), `default` (fieldvalidation)
- Out pins: `fieldvalidation` (fieldvalidation), `matched` (condition)
- Page: https://docs.rual.nl/block-types/field%20validation/fieldvalidation_switch.md

## fields

### elseif (`fielddefinitions_elseif`)

- use different fields using multiple conditions.
- In pins: `default` (fielddefinitions), `elseif` (condition), `then` (fielddefinitions)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_elseif.md

### from array (`fielddefinitions_get_from_array`)

- get one or multiple fields from an array.
- In pins: `fielddefinitions` (fielddefinitions), `number` (number)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_get_from_array.md

### get multiple (`fielddefinitions_get_multiple`)

- get multiple existing fields.
- Out pins: `fielddefinitions` (fielddefinitions)
- Commonly used with: [storage left join document](https://docs.rual.nl/block-types/storage/function_storage_left_join_document.md) (out), [simple query string](https://docs.rual.nl/block-types/query/query_bool_simple_query_string_field.md) (out)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_get_multiple.md

### get single (`fielddefinitions_get_single`)

- use an existing field.
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_get_single.md

### get single dynamic (`fielddefinitions_get_single_dynamic`)

- gets field using a value.
- In pins: `value` (value)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_get_single_dynamic.md

### if (`fielddefinitions_if`)

- use different fields using a condition.
- In pins: `then` (fielddefinitions), `else` (fielddefinitions), `condition` (condition)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_if.md

### combine (`fielddefinitions_multiple`)

- Choose multiple fields to show data in e.g an datatable.
- In pins: `fielddefinitions_1` (fielddefinitions), `fielddefinitions_2` (fielddefinitions)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_multiple.md

### switch (`fielddefinitions_switch`)

- use different fields based of an expression.
- In pins: `value` (value), `default` (fielddefinitions)
- Out pins: `fielddefinitions` (fielddefinitions), `matched` (condition)
- Page: https://docs.rual.nl/block-types/fields/fielddefinitions_switch.md

## files

### append (`file_append`)

- Group: files / file modification
- Appends content to the given file
- In pins: `flow` (flow), `file` (value, required), `content` (value, required), `encoding` (value)
- Out pins: `flow` (flow), `success` (condition), `file` (file), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_append.md

### if (`file_branch`)

- Group: files / file conditions
- If.. then.. else..
- In pins: `then` (file), `else` (file), `condition` (condition)
- Out pins: `file` (file)
- Commonly used with: [find by extension](https://docs.rual.nl/block-types/files/file_find_by_extension.md) (in), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (in), [get extension](https://docs.rual.nl/block-types/files/file_get_extension.md) (out), [move to public](https://docs.rual.nl/block-types/files/file_move_public.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_branch.md

### cipheriv decrypt (`file_cipher_decrypt`)

- Group: files / file encryption
- Decrypts the given file using a specific algorithm and key for secure storage
- In pins: `flow` (flow), `algorithm` (value), `key` (value, required), `file` (file, required), `auth_tag` (value, required)
- Out pins: `flow` (flow), `success` (condition), `output` (file), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_cipher_decrypt.md

### cipheriv encrypt (`file_cipher_encrypt`)

- Group: files / file encryption
- Encrypts the given file using a specific algorithm and key for secure storage
- In pins: `flow` (flow), `algorithm` (value, required), `key` (value, required), `file` (file, required)
- Out pins: `flow` (flow), `success` (condition), `output` (file), `auth_tag` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_cipher_encrypt.md

### merge (`file_composite_images`)

- Group: files / images
- Merge two images using sharp.
- In pins: `flow` (flow), `file` (file), `defaultoptions` (object), `options` (array)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `file` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_composite_images.md

### multiple (`file_concat`)

- Group: files / file actions
- Merge an array of files together.
- In pins: `file_1` (file), `file_2` (file)
- Out pins: `file` (file)
- Commonly used with: [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_concat.md

### copy (`file_copy`)

- Group: files / file modification
- Copies the given files into a destination directory, keeping each file's original name. The destination directory is a folder path (created if missing), not a full path including the filename : e.g. /public/uploads copies hero.png to /public/uploads/hero.png. Place the directory under /public/… to make the copies publicly servable via /static/…. To rename the copy, set the optional filename pin (single source file only). To fan one file out to several full paths and/or names at once, use the file spread block instead.
- In pins: `flow` (flow), `file` (file, required), `value` (value, required), `filename` (value), `overwrite` (condition, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_copy.md

### write (`file_create`)

- Group: files / file modification
- Generates or overwrites a file with the new content
- In pins: `flow` (flow), `file` (value, required), `content` (value, required), `encoding` (value)
- Out pins: `flow` (flow), `success` (condition), `file` (file), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_create.md

### custom upload (`file_custom`)

- Group: files / file assets
- Use a custom provided file.
- Out pins: `file` (file)
- Page: https://docs.rual.nl/block-types/files/file_custom.md

### get data (`file_data`)

- Group: files / file data
- Retrieve the contents of the given file
- In pins: `file` (file, required), `encoding` (value)
- Out pins: `data` (value)
- Page: https://docs.rual.nl/block-types/files/file_data.md

### delete (`file_delete`)

- Group: files / file modification
- Deletes the given files.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [delete](https://docs.rual.nl/block-types/files/file_delete.md) (both), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_delete.md

### elseif (`file_elseif`)

- Group: files / file conditions
- If.. then.. else if.. default..
- In pins: `default` (file), `elseif` (condition), `then` (file)
- Out pins: `file` (file)
- Page: https://docs.rual.nl/block-types/files/file_elseif.md

### file exif (`file_exif`)

- Group: files / file modification
- Gets the file EXIF information.
- In pins: `flow` (flow), `file` (file)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `exif` (object)
- Page: https://docs.rual.nl/block-types/files/file_exif.md

### exists (`file_exists`)

- Group: files / file conditions
- Checks if the given files exist.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `existing` (file, required), `missing` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_exists.md

### find by extension (`file_find_by_extension`)

- Group: files / file actions
- Filters a list of files by extension (e.g. mp4, jpg, png). Separate alternatives with | (e.g. png|jpg|gif). Returns matching files.
- In pins: `file` (file), `extension` (value, required)
- Out pins: `matching` (file), `first` (file), `count` (number), `found` (condition)
- Commonly used with: [if](https://docs.rual.nl/block-types/files/file_branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_find_by_extension.md

### get file from assets (`file_from_assets`)

- Group: files / file assets
- makes files from assets accessible in blueprints
- In pins: `asset_path` (value)
- Out pins: `success` (condition), `file` (file), `name` (value), `type` (value), `size` (number)
- Page: https://docs.rual.nl/block-types/files/file_from_assets.md

### from path (`file_from_path`)

- Group: files / file
- Turns a path (or list of paths) into a file, so a stored path can be handed to the file blocks. A leading slash means the entity root. Missing paths are left out and reported on success rather than failing : deleting something already gone is not an error.
- In pins: `flow` (flow), `path` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_from_path.md

### generate from value (`file_from_value`)

- Group: files / file parsing
- Generates a file from the given value.
- In pins: `flow` (flow), `filename` (value, required), `extension` (value, required), `content` (value, required), `encoding` (value), `windowsnewline` (condition)
- Out pins: `flow` (flow), `success` (condition), `file` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_from_value.md

### build PDF (`file_generate_pdf`)

- Group: files / file parsing
- In pins: `flow` (flow), `filename` (value), `language` (value), `header` (uicomponent), `height_header` (number), `content` (uicomponent), `footer` (uicomponent), `height_footer` (number), `format` (value), `height` (value), `width` (value), `landscape` (condition)
- Out pins: `flow` (flow), `file` (file), `condition` (condition), `value` (value)
- Commonly used with: [pdf to image](https://docs.rual.nl/block-types/files/file_pdf_to_img.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [div](https://docs.rual.nl/block-types/Component%20UI/component_content_div.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_generate_pdf.md

### build PDF from page (`file_generate_pdf_from_page`)

- Group: files / file parsing
- Generates a PDF based on a given page. It is possible to fill the header or footer of the PDF by using the #pdf-header or #pdf-footer IDs.
- In pins: `flow` (flow), `parameters` (object, required), `query` (object, required), `filename` (value), `format` (value), `height` (value), `width` (value), `landscape` (condition), `send_access_token` (condition)
- Out pins: `flow` (flow), `file` (file), `condition` (condition), `value` (value)
- Page: https://docs.rual.nl/block-types/files/file_generate_pdf_from_page.md

### get base64 (`file_get_base64`)

- Group: files / file encoding
- Returns the base64 of the given file
- In pins: `file` (file, required)
- Out pins: `base64_normal` (value), `base64` (value)
- Commonly used with: [set custom field](https://docs.rual.nl/block-types/mutations/mutations_set_custom_field.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [if](https://docs.rual.nl/block-types/value/value_branch.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_get_base64.md

### get extension (`file_get_extension`)

- Group: files / file modification
- Grabs the file extension and mime-type
- In pins: `file` (file)
- Out pins: `filename` (value), `extension` (value), `mimetype` (value)
- Commonly used with: [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out), [if](https://docs.rual.nl/block-types/files/file_branch.md) (in), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_get_extension.md

### get image size (`file_get_image_size`)

- Group: files / images
- Returns the dimensions of the image given.
- In pins: `file` (file)
- Out pins: `height` (number), `width` (number)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [===](https://docs.rual.nl/block-types/condition/condition_deep_equal.md) (out), [>](https://docs.rual.nl/block-types/condition/condition_gt.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_get_image_size.md

### get link (`file_get_link`)

- Group: files / file data
- Returns the link of a given file which can be used as a img src. Will only work with public files.
- In pins: `file` (file)
- Out pins: `value` (value)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_get_link.md

### get video size (`file_get_video_size`)

- Group: files / images
- Returns the dimensions of the video given (MP4-family containers).
- In pins: `file` (file)
- Out pins: `height` (number), `width` (number)
- Page: https://docs.rual.nl/block-types/files/file_get_video_size.md

### hash (`file_hash`)

- Group: files / file encoding
- Computes a content hash (sha256 by default; md5/sha1 supported) for each given file : e.g. to detect duplicate uploads before storing them.
- In pins: `flow` (flow), `file` (file, required), `algorithm` (value)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required), `hash` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_hash.md

### change color to transparent (`file_image_remove_color`)

- Group: files / images
- Updates a HEX color within the image to transparent
- In pins: `color` (value), `file` (file)
- Out pins: `success` (condition), `file` (file), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_image_remove_color.md

### file info (`file_info`)

- Group: files / file modification
- Gets basic file information.
- In pins: `file` (file)
- Out pins: `name` (value), `type` (value), `size` (number)
- Commonly used with: [set custom field](https://docs.rual.nl/block-types/mutations/mutations_set_custom_field.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [<=](https://docs.rual.nl/block-types/condition/condition_lte.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_info.md

### is file type (`file_is_type`)

- Group: files / file conditions
- Checks whether the given files match a specific extension (e.g. mp4, jpg, png). Separate alternatives with | (e.g. png|jpg|gif).
- In pins: `file` (file), `extension` (value, required)
- Out pins: `condition` (condition), `count` (number)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_is_type.md

### move (`file_move`)

- Group: files / file modification
- Moves the given files to a new destination.
- In pins: `flow` (flow), `file` (file, required), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_move.md

### move to public (`file_move_public`)

- Group: files / file modification
- Moves the given files to a new public destination.
- In pins: `flow` (flow), `file` (file, required), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (both), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_move_public.md

### parse CSV (`file_parse_csv`)

- Group: files / file parsing
- Parse a CSV file into an array of objects.
- In pins: `flow` (flow), `file` (file, required), `seperator` (value), `detectseparator` (condition), `has_headers` (condition), `headers` (array<value>)
- Out pins: `flow` (flow), `array` (array), `headers` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_parse_csv.md

### parse XLS/X (`file_parse_xlsx`)

- Group: files / file parsing
- Parses a xls / xlsx file.
- In pins: `flow` (flow), `file` (file, required), `options` (object)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `object` (object, required)
- Page: https://docs.rual.nl/block-types/files/file_parse_xlsx.md

### parse XLS/X to array (`file_parse_xlsx_to_array`)

- Group: files / file parsing
- Parses a xls / xlsx file and returns the first worksheet as an array.
- In pins: `flow` (flow), `file` (file, required), `options_parse` (object), `options_array` (object)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `array` (array, required)
- Page: https://docs.rual.nl/block-types/files/file_parse_xlsx_to_array.md

### parse xml (`file_parse_xml_v2`)

- Group: files / file parsing
- Parse an XML file into an object with XML attributed data
- In pins: `flow` (flow), `file` (file, required), `normalize` (condition), `stripprefix` (condition), `parsenumbers` (condition), `parsebooleans` (condition)
- Out pins: `flow` (flow), `object` (object), `condition` (condition), `value` (value)
- Page: https://docs.rual.nl/block-types/files/file_parse_xml_v2.md

### analyze pdf (`file_pdf_analyze`)

- Group: files / file modification
- Analyzes the PDF with the given profile.
- In pins: `flow` (flow), `file` (file, required), `profile` (file, required), `border_mm` (number), `capture_image` (condition), `dpi` (number), `img_format` (value), `simulation_profile` (file), `simulation_profile_name` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `report` (object), `image` (file), `image_error` (value)
- Page: https://docs.rual.nl/block-types/files/file_pdf_analyze.md

### pdf color (`file_pdf_color`)

- Group: files / file modification
- Retrieves the color from the PDF.
- In pins: `flow` (flow), `file` (file), `border_mm` (number), `quick_mode` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `info` (object)
- Page: https://docs.rual.nl/block-types/files/file_pdf_color.md

### pdf fonts (`file_pdf_fonts`)

- Group: files / file modification
- Retrieves the used fonts inside a PDF.
- In pins: `flow` (flow), `file` (file)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `info` (array)
- Page: https://docs.rual.nl/block-types/files/file_pdf_fonts.md

### pdf images (`file_pdf_images`)

- Group: files / file modification
- Lists all images included in the PDF.
- In pins: `flow` (flow), `file` (file)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `images` (array)
- Page: https://docs.rual.nl/block-types/files/file_pdf_images.md

### pdf info (`file_pdf_info`)

- Group: files / file modification
- Retrieves basic PDF info.
- In pins: `flow` (flow), `file` (file)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `info` (object)
- Page: https://docs.rual.nl/block-types/files/file_pdf_info.md

### pdf to image (`file_pdf_to_img`)

- Group: files / file modification
- Converts the given PDF to image files.
- In pins: `flow` (flow), `file` (file, required), `dpi` (number, required), `format` (value, required), `force_rgb` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `file` (file)
- Commonly used with: [build PDF](https://docs.rual.nl/block-types/files/file_generate_pdf.md) (in), [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/files/file_pdf_to_img.md

### pdf to text (`file_pdf_to_text`)

- Group: files / file modification
- Converts the given PDF to text.
- In pins: `flow` (flow), `file` (file)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `value` (value)
- Page: https://docs.rual.nl/block-types/files/file_pdf_to_text.md

### rename (`file_rename`)

- Group: files / file modification
- Renames the given files.
- In pins: `flow` (flow), `file` (file, required), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [move to public](https://docs.rual.nl/block-types/files/file_move_public.md) (both), [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (in), [get link](https://docs.rual.nl/block-types/files/file_get_link.md) (out)
- Page: https://docs.rual.nl/block-types/files/file_rename.md

### split CSV (`file_split_csv`)

- Group: files / file parsing
- Splits a CSV file into multiple smaller files.
- In pins: `flow` (flow), `file` (file, required), `has_headers` (condition), `rows_per_file` (number)
- Out pins: `flow` (flow), `file` (file), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/files/file_split_csv.md

### spread (`file_spread`)

- Group: files / file modification
- Copies a single source file to multiple destination paths, creating a real copy for each. Each entry in paths is a full destination path including the filename (e.g. /public/uploads/hero.png), so one upload can be fanned out to several locations and/or names at once.
- In pins: `flow` (flow), `file` (file, required), `paths` (array, required), `overwrite` (condition, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_spread.md

### build XLS/X (`file_to_xlsx`)

- Group: files / file parsing
- Generates a xls / xlsx file.
- In pins: `flow` (flow), `filename` (value, required), `extension` (value, required), `headers` (array, required), `values` (array, required), `aoa` (array, required), `options` (object)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `file` (file, required)
- Page: https://docs.rual.nl/block-types/files/file_to_xlsx.md

### update name (`file_update_name`)

- Group: files / file modification
- Sets a custom name for all files. If multiple files are given the index will be appended
- In pins: `value` (value), `file` (file)
- Out pins: `file` (file)
- Page: https://docs.rual.nl/block-types/files/file_update_name.md

### base64 to file (`function_base64_to_file`)

- Group: files / encoding
- Accepts a base64 string and returns a file. The file is written to its own directory under /temp/ (/temp/{id}/{filename}) so concurrent conversions never share a name.
- Semantics: Decodes the base64 input and writes it to its own directory under temp/ (/temp/{guid}/{filename}), outputting a one-item file array and success on the condition pin. A data:-URI prefix (data:image/png;base64,...) is stripped and becomes the file type; a bare base64 string gets type UNKNOWN. Standard base64 is tried first, URL-safe second; undecodable input gives condition=false with error INVALID_BASE64, and an empty input errors with "No base64 found". The optional filename is clamped to a single path segment and defaults to {guid}.{extension-of-detected-mime}.
- In pins: `flow` (flow), `value` (value, required), `filename` (value)
- Out pins: `flow` (flow), `condition` (condition), `error` (value), `file` (file)
- Commonly used with: [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/files/function_base64_to_file.md

### build CSV (`function_build_csv`)

- Group: files / file parsing
- In pins: `flow` (flow), `filename` (value), `header` (array), `values` (array), `options` (object)
- Out pins: `flow` (flow), `file` (file), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/files/function_build_csv.md

### download (`function_download_file`)

- Group: files / file
- download a custom file from a given endpoint
- In pins: `flow` (flow), `host` (value, required), `options` (object)
- Out pins: `flow` (flow), `success` (condition), `file` (file), `headers` (object), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/files/function_download_file.md

### get (`function_get_file_from_form`)

- Group: files / file form
- Semantics: Reads the files uploaded under the given form validation id and model from the run's shared state, outputting a files array with base64 data and a content type guessed from the filename. The read CONSUMES the form's file fields : the shared-state entries are removed afterwards, so a second get for the same form finds nothing. When no file was uploaded for the model the block outputs nothing at all (the files pin is never set).
- In pins: `flow` (flow), `model` (value, required)
- Out pins: `flow` (flow), `files` (file)
- Page: https://docs.rual.nl/block-types/files/function_get_file_from_form.md

### blurhash (`function_image_blurhash`)

- Group: files / images
- Compute a blurhash placeholder for the given images : a ~30 character string a client paints as a blur while the real image loads
- Semantics: Computes blurhash placeholder strings for every image wired into the files pin. hash holds the FIRST image's hash for the common single-image case; hashes holds one hash per image in input order. components_x (default 4) and components_y (default 3) set detail, range 1-9; more components means a longer hash, not a sharper preview. success is true only when EVERY image hashed; failed images land on failed_file with their messages on errors.
- In pins: `flow` (flow), `file` (file, required), `components_x` (number), `components_y` (number)
- Out pins: `flow` (flow), `hash` (value), `hashes` (array), `success` (condition), `errors` (array), `failed_file` (file, required)
- Page: https://docs.rual.nl/block-types/files/function_image_blurhash.md

### convert to webp (`function_image_to_webp`)

- Group: files / images
- Convert any image to webp format, this may can take multiple seconds
- Semantics: Decodes each input file (PNG, JPEG, or GIF) and re-encodes it as WebP on disk next to the source, outputting the converted file descriptors with type image/webp. Per-file failures do not stop the batch: failed inputs land on failed_file, their messages on errors, and success is true only when EVERY file converted. An empty file pin fails with the single error "No images or height/width missing.". The quality and options pins are NOT read by the Go executor : encoding always uses the library defaults.
- In pins: `flow` (flow), `file` (file, required), `quality` (number), `options` (object)
- Out pins: `flow` (flow), `file` (file, required), `success` (condition), `errors` (array), `failed_file` (file, required)
- Page: https://docs.rual.nl/block-types/files/function_image_to_webp.md

### parse MT940 (`function_parse_mt940`)

- Group: files / file parsing
- Parse a MT940 defined XML file into an array of statements.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `statements` (array)
- Page: https://docs.rual.nl/block-types/files/function_parse_mt940.md

### resize (`function_resize_image`)

- Group: files / image
- resize given images with new dimensions
- Semantics: Resizes every image from the file pin (or the deprecated input path array) and writes a NEW file next to each source named {name}_{width}x{height}.{ext}; originals are never overwritten. Giving only width or only height auto-scales the other axis to preserve aspect ratio; no images, or both dimensions empty, yields success=false with the error "No images or height/width missing.". success is true only when every image resized; per-file failures are skipped and listed in errors and failed_file. fit accepts cover (default, crops overflow), contain (pads with transparency), fill (stretches), inside and outside; position only steers cover/contain.
- In pins: `flow` (flow), `file` (file, required), `width` (number), `height` (number), `quality` (number), `fit` (value), `position` (value), `options` (object)
- Out pins: `flow` (flow), `file` (file, required), `success` (condition), `errors` (array), `failed_file` (file, required)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (both), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/files/function_resize_image.md

### save (`function_save_file_from_form`)

- Group: files / file form
- Semantics: Moves the uploaded temp files of the given form field (model) into the entity's files directory under the optional path, and outputs the saved paths as an array of strings. Outputs an empty paths array when the form or model has no uploaded file. The original temp upload is consumed by the move.
- In pins: `flow` (flow), `form` (value, required), `model` (value, required), `path` (value)
- Out pins: `flow` (flow), `paths` (array)
- Page: https://docs.rual.nl/block-types/files/function_save_file_from_form.md

### stream array from file (`function_stream_array_from_file`)

- Group: files / file
- takes a json file with an array as root element and runs the attached function in batches
- Semantics: Reads a JSON file whose root is an array and runs the attached function once per batch of batch (default 100) elements, passing pins batch (1-based) and items; the done flow continues only after ALL batches ran. success=false with an error message on value when the file pin is empty, has no path, the file is missing, the JSON is invalid, or no function is wired. The file is deleted afterwards only when remove is true AND the file lives under /temp/.
- In pins: `flow` (flow), `file` (file, required), `batch` (number), `remove` (condition)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `function` (execute_function, required)
- Page: https://docs.rual.nl/block-types/files/function_stream_array_from_file.md

### stream xml from file (`function_stream_xml_from_file`)

- Group: files / file
- Semantics: Parses an XML file and runs the attached function once per batch of elements named like the element pin, passing pins batch (1-based) and items; each element becomes an object of its attributes and child elements (repeated children become arrays, mixed text lands in _). batch defaults to 100 and is clamped to 1-1000. success=false with error ELEMENT_EMPTY (empty element), FILE_EMPTY (no file), FUNCTION_EMPTY (no function wired) or FILE_DOES_NOT_EXIST. The remove and children pins are declared but not read by the Go executor: the file is never deleted.
- In pins: `flow` (flow), `file` (file, required), `batch` (number), `remove` (condition), `element` (value), `children` (array)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `function` (execute_function, required)
- Page: https://docs.rual.nl/block-types/files/function_stream_xml_from_file.md

### reply with file (`httpconnection_set_file`)

- Group: files / response
- reply to http connection with a file
- Semantics: Replies with a file streamed from disk: the first entry of the file pin supplies path, content type and download filename, overriding the deprecated filepath pin; the root pin restricts lookup to a subdirectory of the entity root. Content-Type defaults to application/octet-stream and the status code is only applied when the code pin is above 0. Flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number, required), `headers` (array<object>), `file` (file, required)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/files/httpconnection_set_file.md

### delete file (`lxdconnection_files_delete`)

- Group: files / LXD
- Deletes a file.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `path` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/files/lxdconnection_files_delete.md

### file info (`lxdconnection_files_head`)

- Group: files / LXD
- Get metadata for a file.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `path` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `type` (value), `mode` (value), `modified` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/files/lxdconnection_files_head.md

### post file (`lxdconnection_files_post`)

- Group: files / LXD
- Create or replace a file.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `path` (value, required), `file` (file, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/files/lxdconnection_files_post.md

### post text file (`lxdconnection_files_post_text`)

- Group: files / LXD
- Creates or replaces a file with a given text content.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `path` (value, required), `file` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/files/lxdconnection_files_post_text.md

## finance

### convert currency (`currency_convert`)

- Group: finance / currency
- Convert an amount between currencies using ECB daily reference rates.
- In pins: `flow` (flow), `amount` (number, required), `from` (value, required), `to` (value, required)
- Out pins: `flow` (flow), `success` (condition), `result` (number), `rate` (number), `last_update` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/finance/currency_convert.md

### format currency (`currency_format`)

- Group: finance / currency
- Format an amount as a currency string with symbol and grouped thousands (e.g. $1,234.50).
- In pins: `flow` (flow), `amount` (number, required), `currency` (value, required)
- Out pins: `flow` (flow), `success` (condition), `result` (value), `last_update` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/finance/currency_format.md

### list currencies (`currency_list`)

- Group: finance / currency
- List the supported currency codes (the ECB set plus EUR).
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `success` (condition), `currencies` (array<value>), `last_update` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/finance/currency_list.md

### exchange rate (`currency_rate`)

- Group: finance / currency
- Get the exchange rate between two currencies (ECB daily reference rates).
- In pins: `flow` (flow), `from` (value, required), `to` (value, required)
- Out pins: `flow` (flow), `success` (condition), `rate` (number), `last_update` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/finance/currency_rate.md

## float

### float (`float_default`)

- Group: float / custom
- Generates a valid float from the filled custom value in the blueprint.
- Out pins: `float` (float)
- Page: https://docs.rual.nl/block-types/float/float_default.md

### define number (`float_define_reference`)

- Group: float / references
- Store this float as reference, which can later be used by "use reference"
- In pins: `float` (float)
- Page: https://docs.rual.nl/block-types/float/float_define_reference.md

### parseFloat (`float_parsefloat`)

- Group: float / parse
- In pins: `value` (value)
- Out pins: `float` (float), `success` (condition)
- Page: https://docs.rual.nl/block-types/float/float_parsefloat.md

### + (`float_plus`)

- Group: float / float: operators
- Produces the sum of float operands.
- In pins: `float_0` (float), `float_1` (float)
- Out pins: `float` (float)
- Page: https://docs.rual.nl/block-types/float/float_plus.md

### use number (`float_use_reference`)

- Group: float / references
- Use the float which was previously defined by a define reference
- Out pins: `float` (float)
- Page: https://docs.rual.nl/block-types/float/float_use_reference.md

## floriday

### custom delete (`floridayconnection_custom_delete`)

- Executes a custom DELETE request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `query` (object), `body` (object)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_delete.md

### custom get (`floridayconnection_custom_get`)

- Executes a custom GET request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `query` (object), `options` (object)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_get.md

### custom patch (`floridayconnection_custom_patch`)

- Executes a custom PATCH request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `query` (object), `body` (object)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_patch.md

### custom post (`floridayconnection_custom_post`)

- Executes a custom POST request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `query` (object), `body` (object)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_post.md

### custom post file (`floridayconnection_custom_post_file`)

- Executes a custom POST file request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `file` (file)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_post_file.md

### custom put (`floridayconnection_custom_put`)

- Executes a custom PUT request.
- In pins: `flow` (flow), `connection` (floridayconnection, required), `url` (value, required), `query` (object), `body` (object)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `response` (object), `error_code` (number), `error` (object)
- Page: https://docs.rual.nl/block-types/floriday/floridayconnection_custom_put.md

### connect as customer (`function_floriday_open_connection`)

- Creates an initial connection with the Floriday customer API using your API key.
- In pins: `flow` (flow), `provider` (value), `api_key` (value), `production` (condition, required), `scope` (array), `clientid` (value), `clientsecret` (value)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/floriday/function_floriday_open_connection.md

### connect as supplier (`function_floriday_open_supplier_connection`)

- Creates an initial connection with the Floriday supplier API using your API key.
- In pins: `flow` (flow), `provider` (value), `api_key` (value), `production` (condition, required), `scope` (array), `clientid` (value), `clientsecret` (value)
- Out pins: `flow` (flow), `connection` (floridayconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/floriday/function_floriday_open_supplier_connection.md

## flow

### branch (`branch`)

- Semantics: Routes to the true out pin only when the condition input is exactly boolean true; any non-boolean value (even truthy ones like 1 or "yes"), nil, or an unwired pin follows the false pin. No coercion. Example: condition=1 - the false pin runs (1 is not boolean true).
- In pins: `flow` (flow), `condition` (condition)
- Out pins: `true` (flow), `false` (flow)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (both), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both)
- Page: https://docs.rual.nl/block-types/flow/branch.md

### else if (`elseif`)

- Semantics: Multi-way branch: evaluates condition_1, condition_2, ... in order with JS truthiness (true, non-zero numbers, and non-empty strings pass; nil, false, 0, and "" do not) and follows the first matching flow_N pin; when none match, the default pin runs. Unlike branch, truthy non-booleans DO match. Example: condition_1="" condition_2="x" - flow_2 runs.
- In pins: `flow` (flow), `condition_1` (condition)
- Out pins: `default` (flow), `flow_1` (flow)
- Page: https://docs.rual.nl/block-types/flow/elseif.md

### parallel (`parallel_functions`)

- Semantics: Runs the functions wired to run_1..run_3 concurrently, waits for ALL of them, then continues on done. Each finished function's shared state is merged back even when a sibling fails; the FIRST function error then aborts the block as an execution error instead of reaching done. Unwired run pins are skipped.
- In pins: `flow` (flow)
- Out pins: `run_1` (execute_function), `run_2` (execute_function), `run_3` (execute_function), `done` (flow)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [parallel](https://docs.rual.nl/block-types/flow/parallel_functions.md) (both), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [funnel](https://docs.rual.nl/block-types/funnels/funnel.md) (in)
- Page: https://docs.rual.nl/block-types/flow/parallel_functions.md

### sequence (`sequence_functions`)

- Semantics: Runs the functions wired to then_1..then_4 one after another in pin order, then continues on done. Each function's shared state is merged back before the next starts, so a later function sees variables set by an earlier one. A failing function aborts the block as an execution error : later functions and the done pin are not reached. Unwired pins are skipped.
- In pins: `flow` (flow)
- Out pins: `then_1` (execute_function), `then_2` (execute_function), `then_3` (execute_function), `then_4` (execute_function), `done` (flow)
- Page: https://docs.rual.nl/block-types/flow/sequence_functions.md

### switch (`switch`)

- Semantics: Routes the flow by comparing the expression pin, lowercased, against this block's configured case values (case-insensitive string compare): only the flow pin of the FIRST matching case runs, and default runs when no case matches. The matched condition pin outputs whether any case matched. The block itself executes as a no-op : all routing happens during flow traversal.
- In pins: `flow` (flow), `expression` (value)
- Out pins: `default` (flow), `matched` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/flow/switch.md

## foreach

### foreach (`function_foreach`)

- Group: foreach / flow: loops
- Semantics: Runs the iterator function once per array item with index and value pins and waits for every iteration before the flow continues on done. Iterations run with bounded concurrency (default 5, max 1000; set 1 when side-effect order matters). exposed_data_output collects each iteration's TRUTHY exposed return in input order : falsy returns are dropped. A nil or otherwise falsy array runs zero iterations; a truthy non-array value is iterated as a single item.
- In pins: `flow` (flow), `array` (array, required), `concurrency` (number)
- Out pins: `flow` (flow), `function` (execute_function), `exposed_data_output` (array)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/foreach/function_foreach.md

### batch (`function_foreach_batch`)

- Group: foreach / flow: loops
- Executes the given array in batches, this is the non queue version.
- Semantics: Splits the array into chunks of the batch pin size (default 100; values below 1 fall back to 100) and runs the iterator function once per chunk with pins batch (1-based), index (0-based), items, and total_batches, waiting for ALL batches before the flow continues : nothing is queued. Batches run with bounded concurrency (default 5, max 1000; 0 or 1 runs serially in order). A nil, non-array, or empty array runs zero iterations.
- In pins: `flow` (flow), `array` (array, required), `batch` (number), `concurrency` (number)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/foreach/function_foreach_batch.md

### foreach by group on field (`function_foreach_by_group_on_field`)

- Group: foreach / flow: loops
- Semantics: Groups the array's object items by the selected field's value (a dot-path; non-object items are dropped, and a missing field groups under the empty string) and runs the iterator once per group with the group's items on array/value, the group name on group, and a 0-based index, waiting for all groups. With no field selected every item is its own iteration. Concurrency defaults to 5 (max 1000); exposed_data_output collects truthy exposed returns in group order.
- In pins: `flow` (flow), `array` (array), `concurrency` (number)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/foreach/function_foreach_by_group_on_field.md

### loop iterations (`function_foreach_iterator`)

- Group: foreach / flow: loops
- Semantics: Runs the iterator function exactly iterations times, passing the 0-based index on the index pin (value and array receive the index number too), and waits for all iterations before done. A nil, non-numeric, zero, or negative iterations input runs zero iterations. Concurrency defaults to 5 (max 1000, serial at 1); exposed_data_output collects truthy exposed returns in iteration order.
- In pins: `flow` (flow), `iterations` (number), `concurrency` (number)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/foreach/function_foreach_iterator.md

### foreach on object (`function_foreach_object`)

- Group: foreach / flow: loops
- Semantics: Runs the iterator once per key of the object with key and value pins, waiting for all iterations before done. A nil, non-object, or empty object runs zero iterations. Iteration order follows Go map order : stable within one run but NOT sorted or guaranteed across runs. Concurrency defaults to 5 (max 1000); exposed_data_output collects truthy exposed returns.
- In pins: `flow` (flow), `object` (object), `concurrency` (number)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/foreach/function_foreach_object.md

### reduce (`function_reduce`)

- Group: foreach / flow: loops
- Semantics: Folds the array into a single value: the accumulator starts from the block's dynamically-typed input pin, and after each iteration it is REPLACED by the iterator's return value (the last returned pin, or the exposed output when nothing is returned); the final accumulator is emitted on the same typed output. Iterations ALWAYS run serially : there is no concurrency pin. A failed iteration is skipped and keeps the previous accumulator. An empty or falsy array runs zero iterations and leaves the typed output unset (only exposed_data_output=[] is written).
- In pins: `flow` (flow), `array` (array)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/foreach/function_reduce.md

## ftp

### go to (`ftpconnection_cd`)

- Group: ftp / directory
- In pins: `flow` (flow), `connection` (ftpconnection), `directory` (value)
- Out pins: `flow` (flow), `connection` (ftpconnection), `succeeded` (condition), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_cd.md

### download (`ftpconnection_download`)

- Group: ftp / file
- In pins: `flow` (flow), `connection` (ftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (ftpconnection), `succeeded` (condition), `file` (file), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_download.md

### list (`ftpconnection_list`)

- Group: ftp / directory
- In pins: `flow` (flow), `connection` (ftpconnection)
- Out pins: `flow` (flow), `connection` (ftpconnection), `list` (array), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_list.md

### mkdir & go to (`ftpconnection_mkdir`)

- Group: ftp / directory
- In pins: `flow` (flow), `connection` (ftpconnection), `directory` (value)
- Out pins: `flow` (flow), `connection` (ftpconnection), `succeeded` (condition), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_mkdir.md

### where am I (`ftpconnection_pwd`)

- Group: ftp / directory
- In pins: `flow` (flow), `connection` (ftpconnection)
- Out pins: `flow` (flow), `connection` (ftpconnection), `directory` (value), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_pwd.md

### remove (`ftpconnection_remove`)

- Group: ftp / file
- In pins: `flow` (flow), `connection` (ftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (ftpconnection), `succeeded` (condition), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_remove.md

### size (`ftpconnection_size`)

- Group: ftp / file
- In pins: `flow` (flow), `connection` (ftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (ftpconnection), `size` (number), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_size.md

### upload (`ftpconnection_upload`)

- Group: ftp / file
- In pins: `flow` (flow), `connection` (ftpconnection), `file` (file)
- Out pins: `flow` (flow), `connection` (ftpconnection), `files` (number), `code` (number)
- Page: https://docs.rual.nl/block-types/ftp/ftpconnection_upload.md

### close connection (`function_ftp_close_connection`)

- In pins: `flow` (flow), `connection` (ftpconnection)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/ftp/function_ftp_close_connection.md

### open connection (`function_ftp_open_connection`)

- In pins: `flow` (flow), `host` (value), `user` (value), `password` (value), `secure_connection` (condition), `reject_unauthorized` (condition)
- Out pins: `flow` (flow), `connection` (ftpconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/ftp/function_ftp_open_connection.md

## function execution

### execute (`function_custom_execute`)

- Group: function execution / function
- Executes the given funcion and waits for it to be executed.
- Semantics: Calls the selected function synchronously and waits for it: every input pin value is passed into the function's trigger, its return values are mapped back onto this block's output pins, and exposed return data lands on exposed_data_output. A failed call sets success=false with the error message; with no function selected the block does nothing and the flow just continues.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md

### execute in queue (`function_custom_execute_from_queue`)

- Group: function execution / function
- Executes the given function on a given time using the queue and doesn't wait for it to be executed.
- Semantics: Fire-and-forget in production: enqueues the selected function to run in the background at the timestamp pin (defaults to now) and continues immediately : the Go executor never populates the queue_doc output. In simulation, debug, or staging it runs the function INLINE and waits, mapping return values back like custom execute. A unique_id deduplicates pending queue items (stored as "bp:{unique_id}"); debounce=true replaces the pending item with the same unique id instead of skipping.
- In pins: `flow` (flow), `unique_id` (value), `timestamp` (date), `debounce` (condition)
- Out pins: `flow` (flow), `queue_doc` (object)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in)
- Page: https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_queue.md

### execute (`function_custom_execute_from_trigger`)

- Group: function execution / function
- Executes the given funcion and waits for it to be executed.
- Semantics: System block that executes the action's referenced function synchronously from a trigger context: input pin values (including values read from connected upstream pins) are passed in, returned pins map onto this block's outputs, and any output the function did NOT return receives the FIRST returned value. Fails with success=false and error MISSING_EXECUTOR or MISSING_FUNCTION when misconfigured.
- In pins: `function` (execute_function)
- Commonly used with: [On API GET](https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_get.md) (in), [on api post](https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_post.md) (in), [on api delete](https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_delete.md) (in), [on api put](https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_put.md) (in)
- Page: https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md

### execute inpin function (`function_custom_execute_inpinfunction`)

- Group: function execution / function
- This can be used to dynamically call functions (for example from the frontend)
- Semantics: Executes the function whose reference arrives on the inpinfunction pin (an object carrying action_guid), enabling dynamic dispatch e.g. from the frontend. Pin values pass into the function and its return values map back onto this block's outputs; data embedded in the function reference wins over same-named pin values. A missing or non-object reference, an empty action_guid, and a failed call are all SILENT : no error output, the flow just continues.
- In pins: `flow` (flow), `inpinfunction` (inpinfunction)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/function%20execution/function_custom_execute_inpinfunction.md

### return (`function_return`)

- Group: function execution / Function
- Returns the added custom pins as data-pins on the function execute.
- Semantics: Sets the enclosing custom function's return values: every wired custom inpin is recorded under its pin id and surfaces as a same-named data pin on the function's execute block, and the last non-nil inpin also becomes the function's exposed result. Unwired or nil pins are recorded as nil. Does nothing when executed outside a function run.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/function%20execution/function_return.md

### return Exposed Data (`function_return_exposed`)

- Group: function execution / Function
- Adds a custom array for each iteration in ForEach, allows you to expose values back to the original flow
- Semantics: Exposes the object inpin as the enclosing function's exposed result, overwriting whatever a previous return block exposed; this is the value the caller reads back from the function execution. A nil or unwired object pin exposes nil. Does nothing when executed outside a function run.
- In pins: `flow` (flow), `object` (object)
- Out pins: `flow` (flow)
- Commonly used with: [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [upsert document](https://docs.rual.nl/block-types/storage/function_upsert_document_from_mutations.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [update existing object](https://docs.rual.nl/block-types/object/object_update_fields.md) (in)
- Page: https://docs.rual.nl/block-types/function%20execution/function_return_exposed.md

### run parallel (`function_run_parallel`)

- Group: function execution / function
- Runs up to 5 selected functions in parallel to speed up execution, then continues the flow once all have finished. Each function's return values are exposed on its own result_N object pin. Sets success=false and a global error if any function fails.
- Semantics: Runs the 1-5 selected functions concurrently and blocks until ALL have finished, then continues the flow. Function N's return pins are emitted as an object on result_N (selection order); a function that returned nothing yields an empty object, never nil. success is true only when every function completed without error; on any failure success=false and error holds the FIRST failure. No function selected gives success=false with error NO_FUNCTIONS_SELECTED. Custom in-pins for function N are wired as block in-pins named f{N}_{pinId}.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `result_1` (object), `result_2` (object), `result_3` (object), `result_4` (object), `result_5` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/function%20execution/function_run_parallel.md

### execute (`state_inline_function_execute`)

- Group: function execution / function
- Executes the given funcion and waits for it to be executed.
- Page: https://docs.rual.nl/block-types/function%20execution/state_inline_function_execute.md

## function selectors

### close modal (`inpinfunction_close_modal`)

- Group: function selectors / modal functions
- Enables you to close a modal.
- Out pins: `inpinfunction` (inpinfunction)
- Page: https://docs.rual.nl/block-types/function%20selectors/inpinfunction_close_modal.md

## funnels

### aggregation prod/sim funnel (`aggregation_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (aggregation), `simulation` (aggregation)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/funnels/aggregation_funnel.md

### array prod/sim funnel (`array_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (array), `simulation` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/funnels/array_funnel.md

### condition prod/sim funnel (`condition_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (condition), `simulation` (condition)
- Out pins: `condition` (condition)
- Commonly used with: [=== false](https://docs.rual.nl/block-types/condition/condition_equal_false.md) (out), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/funnels/condition_funnel.md

### date prod/sim funnel (`date_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (date), `simulation` (date)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/funnels/date_funnel.md

### flow prod/sim funnel (`env_branch`)

- Group: funnels / flow
- In pins: `flow` (flow)
- Out pins: `prod` (flow), `sim` (flow)
- Page: https://docs.rual.nl/block-types/funnels/env_branch.md

### file prod/sim funnel (`file_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (file), `simulation` (file)
- Out pins: `file` (file)
- Page: https://docs.rual.nl/block-types/funnels/file_funnel.md

### funnel (`funnel`)

- Group: funnels / flow
- In pins: `flow` (flow), `flow_0` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (both), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (in)
- Page: https://docs.rual.nl/block-types/funnels/funnel.md

### mutations prod/sim funnel (`mutations_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (mutations), `simulation` (mutations)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/funnels/mutations_funnel.md

### number prod/sim funnel (`number_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (number), `simulation` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/funnels/number_funnel.md

### object prod/sim funnel (`object_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (object), `simulation` (object)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/funnels/object_funnel.md

### payments prod/sim funnel (`payments_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (payments), `simulation` (payments)
- Out pins: `payments` (payments)
- Page: https://docs.rual.nl/block-types/funnels/payments_funnel.md

### query prod/sim funnel (`query_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (query), `simulation` (query)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/funnels/query_funnel.md

### template prod/sim funnel (`template_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (template), `simulation` (template)
- Out pins: `template` (template)
- Page: https://docs.rual.nl/block-types/funnels/template_funnel.md

### transaction prod/sim funnel (`transaction_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (transaction), `simulation` (transaction)
- Out pins: `transaction` (transaction)
- Page: https://docs.rual.nl/block-types/funnels/transaction_funnel.md

### user prod/sim funnel (`user_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (user), `simulation` (user)
- Out pins: `user` (user)
- Page: https://docs.rual.nl/block-types/funnels/user_funnel.md

### value prod/sim funnel (`value_funnel`)

- Group: funnels / env. funnel
- In pins: `production` (value), `simulation` (value)
- Out pins: `value` (value)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/funnels/value_funnel.md

## geopoint

### if (`geo_point_branch`)

- Group: geopoint / geopoint: conditions
- In pins: `then` (geo_point), `else` (geo_point), `condition` (condition)
- Out pins: `geo_point` (geo_point)
- Commonly used with: [if](https://docs.rual.nl/block-types/geopoint/geo_point_branch.md) (both), [from city](https://docs.rual.nl/block-types/geopoint/geo_point_from_city.md) (in), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (in), [create](https://docs.rual.nl/block-types/geopoint/geo_point_lat_lng_to_point.md) (in)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_branch.md

### cast to object (`geo_point_convert_to_object`)

- Converts a geopoint object type to an object type
- In pins: `geo_point` (geo_point)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_convert_to_object.md

### compute destination point (`geo_point_destination_point`)

- Group: geopoint / Geopoint
- Generates a new geo point from origin based on meters and bearing
- In pins: `geo_point` (geo_point, required), `distance` (number, required), `current_bearing` (number, required)
- Out pins: `geo_point` (geo_point)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_destination_point.md

### from city (`geo_point_from_city`)

- Group: geopoint / Geopoint
- Resolves a city/town name (optionally constrained to a country code, e.g. NL, and a province/state, e.g. Vermont) to a geo point at the city centre, plus the city's radius in metres and its province/country. Offline lookup against the embedded dataset. A city name is not unique within a country : eight US states have a Morristown : so wire province whenever you know it, for example straight from geo point reverse geocode.
- In pins: `city` (value, required), `country_code` (value), `province` (value)
- Out pins: `geo_point` (geo_point), `radius` (number), `province` (value), `country` (value), `country_code` (value), `success` (condition), `error` (value)
- Commonly used with: [if](https://docs.rual.nl/block-types/geopoint/geo_point_branch.md) (out), [reverse geocode](https://docs.rual.nl/block-types/geopoint/geo_point_reverse_geocode.md) (in), [if](https://docs.rual.nl/block-types/number/number_branch.md) (out)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_from_city.md

### land cover (`geo_point_land_cover`)

- Group: geopoint / Geopoint
- Resolves a geo point to a terrain / land-cover type (urban, agricultural, forest, grassland, wetland, water, bare, coastal). Offline raster lookup (Benelux, simplified CORINE).
- In pins: `geo_point` (geo_point, required)
- Out pins: `type` (value), `code` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_land_cover.md

### create (`geo_point_lat_lng_to_point`)

- Generates a geo point based on the given latitude and longitude
- In pins: `lat` (number, required), `lng` (number, required)
- Out pins: `geo_point` (geo_point)
- Commonly used with: [get lat / lon](https://docs.rual.nl/block-types/geopoint/geo_point_to_lat_lng.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_lat_lng_to_point.md

### is nearby (`geo_point_nearby`)

- Group: geopoint / Geopoint
- Checks whether a road or railway is within a given distance of a geo point, and returns the nearest point on it. Offline lookup against the road/rail network (Benelux, OpenStreetMap).
- In pins: `geo_point` (geo_point, required), `type` (value), `max_distance` (number)
- Out pins: `is_nearby` (condition), `distance` (number), `nearest_point` (geo_point), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_nearby.md

### generate random in radius (`geo_point_random_in_radius`)

- Group: geopoint / Geopoint
- Generates a random geo point based on the given radius
- In pins: `geo_point` (geo_point, required), `radius` (number, required)
- Out pins: `geo_point` (geo_point), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_random_in_radius.md

### reverse geocode (`geo_point_reverse_geocode`)

- Group: geopoint / Geopoint
- Resolves a geo point to the nearest street, city, province and country. City/province/country are nearest-populated-place, and always stay in the country of the nearest known place : a point near a border is never relabelled with a larger city on the other side. Street is the nearest named road (needs the road network loaded).
- In pins: `geo_point` (geo_point, required)
- Out pins: `street` (value), `city` (value), `neighborhood` (value), `province` (value), `country` (value), `country_code` (value), `success` (condition), `error` (value)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [sha1](https://docs.rual.nl/block-types/value/value_sha1.md) (out)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_reverse_geocode.md

### snap to network (`geo_point_snap`)

- Group: geopoint / Geopoint
- Snaps a geo point onto the nearest road or railway (road/track pinning). Outputs the snapped point and how far it moved. Offline lookup against the road/rail network (Benelux, OpenStreetMap).
- In pins: `geo_point` (geo_point, required), `type` (value)
- Out pins: `geo_point` (geo_point), `distance` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_snap.md

### get lat / lon (`geo_point_to_lat_lng`)

- Returns the latitude and longitude of a given geo point
- In pins: `geo_point` (geo_point, required)
- Out pins: `latitude` (number), `longitude` (number)
- Commonly used with: [create](https://docs.rual.nl/block-types/geopoint/geo_point_lat_lng_to_point.md) (out), [cast to value](https://docs.rual.nl/block-types/type%20casting/number_convert_to_value.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_to_lat_lng.md

### travel mode from points (`geo_point_travel_mode`)

- Group: geopoint / Geopoint
- Classifies which network a series of GPS points is travelling on (road pinning): when at least min ratio of the points lie within max distance of a road or railway, the traveller is pinned to that network : e.g. the last 5 fixes near a road means driving, near a railway means riding a train. When both networks qualify the one with the smaller mean distance wins. Outputs the mode (road, rail or none), per-network conditions, the match confidence and the points snapped onto the matched network. A single geo point object is accepted as well; entries without numeric lat/lon are ignored. Offline lookup against the road/rail network (Benelux, OpenStreetMap).
- In pins: `geo_points` (array, required), `type` (value), `max_distance` (number), `min_ratio` (number)
- Out pins: `mode` (value), `on_road` (condition), `on_rail` (condition), `confidence` (number), `mean_distance` (number), `snapped_points` (array), `success` (condition), `error` (value)
- Commonly used with: [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_travel_mode.md

### is valid (`geo_point_validate`)

- Checks whether the given geo point has a valid latitude and longitude.
- In pins: `geo_point` (geo_point, required)
- Out pins: `valid` (condition)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out), [create](https://docs.rual.nl/block-types/geopoint/geo_point_lat_lng_to_point.md) (in)
- Page: https://docs.rual.nl/block-types/geopoint/geo_point_validate.md

## github

### open connection (`function_github_open_connection`)

- In pins: `flow` (flow), `token` (value)
- Out pins: `flow` (flow), `connection` (githubconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/github/function_github_open_connection.md

### delete reference (`githubconnection_git_delete_reference`)

- Group: github / git
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `ref` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_git_delete_reference.md

### get reference (`githubconnection_git_get_reference`)

- Group: github / git
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `ref` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_git_get_reference.md

### list references (`githubconnection_git_list_references`)

- Group: github / git
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `ref` (value, required), `namespace` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `list` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_git_list_references.md

### add assignees (`githubconnection_issues_add_assignees`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `assignees` (array<value>, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_add_assignees.md

### add labels (`githubconnection_issues_add_labels`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `labels` (array<value>, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_add_labels.md

### create (`githubconnection_issues_create`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `title` (value, required), `body` (value, required), `assignees` (array<value>), `labels` (array<value>)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_create.md

### create comment (`githubconnection_issues_create_comment`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `body` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_create_comment.md

### get (`githubconnection_issues_get`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_get.md

### search (`githubconnection_issues_get_list_for_repo`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `state` (value, required), `labels` (array), `assignee` (value)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `list` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_get_list_for_repo.md

### get labels (`githubconnection_issues_labels_get_list_for_repo`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `list` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_labels_get_list_for_repo.md

### remove assignees (`githubconnection_issues_remove_assignees`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `assignees` (array<value>, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_remove_assignees.md

### remove label (`githubconnection_issues_remove_label`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `label` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_remove_label.md

### update (`githubconnection_issues_update`)

- Group: github / issues
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `number` (number, required), `title` (value, required), `body` (value, required), `state` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_issues_update.md

### create review (`githubconnection_pullrequests_create_review`)

- Group: github / pullrequests
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `pullrequest_number` (number, required), `event` (value, required), `body` (value)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_pullrequests_create_review.md

### get list (`githubconnection_pullrequests_list`)

- Group: github / pullrequests
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `state` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `list` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_pullrequests_list.md

### get reviews (`githubconnection_pullrequests_list_reviews`)

- Group: github / pullrequests
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `pullrequest_number` (number, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `list` (array), `approved_by_users` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_pullrequests_list_reviews.md

### merge (`githubconnection_pullrequests_merge`)

- Group: github / pullrequests
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required), `pullrequest_number` (number, required), `commit_title` (value, required), `commit_message` (value), `merge_method` (value)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_pullrequests_merge.md

### get latest (`githubconnection_repos_get_latest_release`)

- Group: github / release
- In pins: `flow` (flow), `connection` (githubconnection, required), `owner` (value, required), `repo` (value, required)
- Out pins: `flow` (flow), `connection` (githubconnection), `success` (condition), `data` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/github/githubconnection_repos_get_latest_release.md

## globals

### climate set (`homeassist_climate_set`)

- Group: globals / home
- Sets an air conditioner or thermostat: on/off, mode, target temperature, fan speed.
- Semantics: Commands a climate device : a Daikin air conditioner over its local LAN API, a Zigbee/Z-Wave/Matter thermostat over the radio. Mode is one of off, auto, cool, heat, dry, fan. Setting a mode other than off implies switching the unit ON. Target temperature is degrees Celsius. Fan is auto, silent, low, medium, high or turbo; devices without that many speeds get the nearest they have.
- In pins: `flow` (flow), `device` (value), `mode` (value), `temperature` (number), `fan` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_climate_set.md

### device adopt (`homeassist_device_adopt`)

- Group: globals / home
- Takes a discovered device into service, so triggers fire for it and blocks can command it.
- Semantics: Adoption is the gate between 'the radio can hear this' and 'this is part of my system'. An unadopted device is tracked and visible but fires no triggers and refuses every command. Idempotent: adopting an already-adopted device succeeds and reports adopted=false for `newly`. Typically wired to a device discovered trigger, or called from an onboarding screen.
- In pins: `flow` (flow), `device` (value), `name` (value), `room` (value)
- Out pins: `flow` (flow), `ok` (condition), `newly` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_adopt.md

### device forget (`homeassist_device_forget`)

- Group: globals / home
- Removes a device from RUAL. It stays paired to the radio and will reappear, unadopted, on its next report.
- Semantics: Drops the device from the registry, discarding its name, room and adoption. It does NOT unpair the device from the Zigbee/Z-Wave/Matter network : that is a separate, physically destructive operation deliberately not exposed as a block, because 'stop automating this' and 'evict this from my mesh' are different intentions and conflating them makes the safe one irreversible.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_forget.md

### get device (`homeassist_device_get`)

- Group: globals / home
- Returns one device: its name, room, capabilities and current state.
- Semantics: Looks a device up by id, native address or exact name. `found` is false rather than erroring when there is no match, so a flow can handle a missing device without an error branch.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `found` (condition), `device` (object), `state` (object), `available` (condition)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_get.md

### get device history (`homeassist_device_history`)

- Group: globals / home
- Returns recorded readings for one capability of one device, optionally bucketed for charting.
- Semantics: Reads the device analytics store, which records CHANGES rather than every report: alarms and states on transitions, measurements past a per-capability deadband plus a heartbeat, meters at a fixed interval. So the readings are a faithful record of what changed, not a sample of what was said. `buckets` 0 additionally returns aggregated windows whose shape follows the capability kind : a meter reports `delta` (consumption per window) because its raw lifetime total is a meaningless ramp, an alarm's `avg` is the fraction of the window it was true, everything else gets min/max/avg/last. Empty windows are omitted rather than zero-filled: a gap means the device did not report, and drawing it as zero invents a reading. Returns empty with recording=false on a node with analytics switched off.
- In pins: `flow` (flow), `device` (value), `capability` (value), `from` (date), `to` (date), `buckets` (number)
- Out pins: `flow` (flow), `readings` (array), `buckets` (array), `count` (number), `recording` (condition), `unit` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_history.md

### device rename (`homeassist_device_rename`)

- Group: globals / home
- Sets a device's friendly name and/or room.
- Semantics: Renames a device in the RUAL registry. It does NOT rename it at the radio : the Zigbee2MQTT friendly name and the Hue bridge name are unchanged, so those apps keep showing the old name. Empty pins leave that field alone, so this can set a room without touching the name.
- In pins: `flow` (flow), `device` (value), `name` (value), `room` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_rename.md

### device set (`homeassist_device_set`)

- Group: globals / home
- Sets any capability on any device. The escape hatch for things the specific blocks do not cover.
- Semantics: Writes one capability by name : position for blinds, lock_state for locks, or anything else a device exposes. The capability must be one the device announced, or the block returns HOMEASSIST_CAPABILITY_UNSUPPORTED without sending anything. Use the specific blocks where they exist; this is for the long tail.
- In pins: `flow` (flow), `device` (value), `capability` (value), `value` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_set.md

### get device state (`homeassist_device_state`)

- Group: globals / home
- Reads one capability from one device : is the motion sensor triggered, what is the temperature.
- Semantics: Returns the last reported value of one capability. `state_known` is false when the node has not heard that capability from that device since it started; in that case `value` is empty and MUST NOT be read as false or zero. This distinction is why the pin exists.
- In pins: `flow` (flow), `device` (value), `capability` (value)
- Out pins: `flow` (flow), `state_known` (condition), `value` (value), `boolean` (condition), `number` (number), `device` (object)
- Page: https://docs.rual.nl/block-types/globals/homeassist_device_state.md

### get all devices (`homeassist_devices_all`)

- Group: globals / home
- Returns every adopted device, optionally filtered by type, room or adapter.
- Semantics: Reads the in-memory device registry : no radio traffic, no network call. Returns an array of device objects sorted by name. Only ADOPTED devices are returned unless include_unadopted is set. Filters combine with AND.
- In pins: `flow` (flow), `type` (value), `room` (value), `adapter` (value), `include_unadopted` (condition)
- Out pins: `flow` (flow), `devices` (array), `count` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_devices_all.md

### door lock (`homeassist_door_lock`)

- Group: globals / home
- Locks a door, and holds it locked unless you ask it not to.
- Semantics: Locks an access-controlled door. By DEFAULT this HOLDS the door locked, overriding its unlock schedule until something releases it (UniFi keep_lock) : the right behaviour when a flow locks a door because something is wrong. For "lock up for the night", set `until_schedule`: that ends the current unlock and leaves the schedule running, so the door unlocks again at its next scheduled time. The difference matters : a held lock survives tomorrow morning's scheduled unlock and strands everyone outside.
- In pins: `flow` (flow), `device` (value), `until_schedule` (condition)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_door_lock.md

### door unlock (`homeassist_door_unlock`)

- Group: globals / home
- Unlocks a door. By default this is a momentary unlock : the door releases long enough for one person, then re-locks : matching the 'let them in' button.
- Semantics: Unlocks an access-controlled door (UniFi Access). The default is a MOMENTARY unlock: the relay releases for the controller's configured hold time and then re-locks, which is the safe 'buzz someone in' behaviour. Set `hold` true to leave it unlocked until a lock command. Reports ok when the command reached the controller.
- In pins: `flow` (flow), `device` (value), `hold` (condition)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_door_unlock.md

### gate close (`homeassist_gate_close`)

- Group: globals / home
- Closes a gate or garage door.
- Semantics: Closes a gate. On a single-relay gate that toggles, this and gate open are the same pulse : the controller decides direction from the gate's current position.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_gate_close.md

### gate open (`homeassist_gate_open`)

- Group: globals / home
- Opens a gate or garage door.
- Semantics: Opens a gate. Same underlying command as door unlock, named separately because a gate and a door read differently in a flow and a picker. On a controller where a gate is a momentary relay, this pulses it.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_gate_open.md

### light dim (`homeassist_light_dim`)

- Group: globals / home
- Sets a light's brightness without changing anything else.
- Semantics: Sets brightness 0-100 percent. Setting 0 turns most lamps off; to be explicit, use light off. Turning the lamp on is implied : setting a brightness on a lamp that is off turns it on at that brightness rather than storing it for later.
- In pins: `flow` (flow), `device` (value), `brightness` (number)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_light_dim.md

### light off (`homeassist_light_off`)

- Group: globals / home
- Turns a light off.
- Semantics: Turns off a light over the local radio or a Hue bridge. No side effects beyond the power state : brightness and colour are remembered by the lamp and restored when it is next turned on.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_light_off.md

### light on (`homeassist_light_on`)

- Group: globals / home
- Turns a light on. Optionally set brightness, colour temperature or colour in the same command.
- Semantics: Turns on a light over the local radio (Zigbee, Thread/Matter, Z-Wave) or a Hue bridge. Brightness is 0-100 percent, colour temperature is in KELVIN (2700 warm, 6500 cold) not mireds, colour is #rrggbb. Every value set here is sent in ONE command, so the lamp transitions once instead of visibly stepping through full brightness first. Unset pins leave the lamp's current value alone.
- In pins: `flow` (flow), `device` (value), `brightness` (number), `color_temp` (number), `color` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_light_on.md

### light toggle (`homeassist_light_toggle`)

- Group: globals / home
- Flips a light: on if it is off, off if it is on.
- Semantics: Reads the light's current power state from the registry and sends the opposite. If the state is unknown : the node restarted and the lamp has not reported since : the block turns the light ON and sets ok, because the overwhelmingly likely intent of a toggle a human just triggered is to get light.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_light_toggle.md

### get lights that are on (`homeassist_lights_on`)

- Group: globals / home
- Returns every light currently switched on.
- Semantics: Reads the registry for adopted devices of type light whose power state is known AND true. Lights whose state is unknown are excluded : see get active sensors for the same reasoning. Pair with array_map + light off for a 'everything off' flow.
- In pins: `flow` (flow), `room` (value)
- Out pins: `flow` (flow), `devices` (array), `count` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_lights_on.md

### pairing open (`homeassist_pairing_open`)

- Group: globals / home
- Opens the radio for new devices to join, for a bounded number of seconds.
- Semantics: Puts a radio into inclusion mode: Zigbee permit-join, Z-Wave inclusion, or a Matter commissioning window. The duration is clamped to the node's configured pairing window : a radio left permanently joinable is how a mesh acquires devices nobody added. Pass 0 to close pairing immediately. Hue does not have an inclusion mode; on that adapter this creates an application key against the bridge's link button instead.
- In pins: `flow` (flow), `adapter` (value), `seconds` (number)
- Out pins: `flow` (flow), `ok` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_pairing_open.md

### get rooms (`homeassist_rooms`)

- Group: globals / home
- Returns the list of rooms that have devices assigned to them.
- Semantics: Returns the distinct non-empty room names across all adopted devices, sorted. Rooms are free text set per device; there is no separate room registry.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `rooms` (array), `count` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_rooms.md

### get active sensors (`homeassist_sensors_active`)

- Group: globals / home
- Returns every sensor that is currently triggered: motion present, doors open, leaks found.
- Semantics: Reads the registry for adopted devices of type sensor whose current state has any sensor capability reading true. A sensor the node has never heard from is EXCLUDED rather than assumed inactive : after a restart this list is empty until devices report, which is honest rather than falsely reassuring.
- In pins: `flow` (flow), `sensor_type` (value), `room` (value)
- Out pins: `flow` (flow), `devices` (array), `count` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_sensors_active.md

### get status (`homeassist_status`)

- Group: globals / home
- Returns which radios are connected and how many devices are known.
- Semantics: Health check for the home-automation service: per-adapter connection state plus device counts. Use it to notice a Zigbee bridge that has gone away, which otherwise looks identical to a quiet house.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `adapters` (array), `devices_total` (number), `devices_adopted` (number), `healthy` (condition)
- Page: https://docs.rual.nl/block-types/globals/homeassist_status.md

### switch off (`homeassist_switch_off`)

- Group: globals / home
- Turns a plug, relay or switch off.
- Semantics: Sets the power capability false on a device classified as a switch.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_switch_off.md

### switch on (`homeassist_switch_on`)

- Group: globals / home
- Turns a plug, relay or switch on.
- Semantics: Sets the power capability true on a device classified as a switch. Same wire command as light on, separated because pickers and flows read better when plugs are not offered as lights.
- In pins: `flow` (flow), `device` (value)
- Out pins: `flow` (flow), `ok` (condition), `device` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/globals/homeassist_switch_on.md

### access denied (`homeassist_trigger_access_denied`)

- Group: globals / home
- Starts the flow when someone is refused: an unknown card, a wrong PIN, a credential outside its schedule.
- Semantics: Start-of-flow trigger for a FAILED entry. Fires when an access_entry event is denied. Same out-pins as access granted, with granted=false. Use for security alerting: an unknown card at 3am is worth a notification.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number), `actor` (value), `method` (value), `granted` (condition)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_access_denied.md

### access granted (`homeassist_trigger_access_granted`)

- Group: globals / home
- Starts the flow when someone is let in: a valid card, PIN, wave or mobile credential. The actor and method are on the out-pins.
- Semantics: Start-of-flow trigger for a SUCCESSFUL entry. Fires when an access_entry event is granted. The `actor` out-pin is who, `method` is how (nfc, pin, wave, mobile, touchpass, manual). Use this for 'unlock logging', 'welcome home' scenes, or 'notify when the cleaner's card is used'. It does NOT fire on a denied attempt : use access denied for that.
- In pins: `device` (value), `room` (value), `method` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number), `actor` (value), `method` (value), `granted` (condition)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_access_granted.md

### security alarm activated (`homeassist_trigger_alarm`)

- Group: globals / home
- Starts the flow when the security system's own alarm goes active.
- Semantics: Start-of-flow trigger on the alarm capability, which is the CONTROLLER's alarm state (UniFi), distinct from the smoke/gas/leak sensor triggers. Fires when it transitions to active.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_alarm.md

### battery low (`homeassist_trigger_battery_low`)

- Group: globals / home
- Starts the flow when a device's battery drops below the threshold, or reports its own low-battery flag.
- Semantics: Start-of-flow trigger for device health. Fires when battery percentage crosses below `below` (default 20), OR when a device raises its own battery_low flag. Both dialects are handled because devices implement one or the other, rarely both.
- In pins: `device` (value), `room` (value), `below` (number)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_battery_low.md

### button pressed (`homeassist_trigger_button_pressed`)

- Group: globals / home
- Starts the flow when a button or scene switch is pressed. The `value` pin says which press it was: single, double, hold, release.
- Semantics: Start-of-flow trigger for momentary controls (Aqara buttons, Hue dimmers, scene switches). Fires on EVERY press, including a repeat of the same press type : button events are pulses with no meaningful 'unchanged' state, so the usual transition filter does not apply. Branch on the `value` pin to tell single from double from hold; the exact strings are the device's own.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_button_pressed.md

### camera motion detected (`homeassist_trigger_camera_motion`)

- Group: globals / home
- Starts the flow when a camera detects motion.
- Semantics: Start-of-flow trigger on the motion_event capability from a UniFi Protect camera. Momentary : a camera fires an event per detection, not a sustained occupancy state, so this fires per detection. For a presence-style occupancy sensor use presence detected instead.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_camera_motion.md

### contact closed (`homeassist_trigger_contact_closed`)

- Group: globals / home
- Starts the flow when a door or window is closed.
- Semantics: Start-of-flow trigger. Fires when the contact capability transitions to false, meaning CLOSED.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_contact_closed.md

### contact opened (`homeassist_trigger_contact_opened`)

- Group: globals / home
- Starts the flow when a door or window is opened.
- Semantics: Start-of-flow trigger. Fires when the contact capability transitions to true, which means OPEN. Note the platform normalises this: Zigbee and Matter both report contact TRUE for a CLOSED door on the wire, and that inversion is corrected at the adapter, so `value` here is true when the door is open.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_contact_opened.md

### device adopted (`homeassist_trigger_device_adopted`)

- Group: globals / home
- Starts the flow when a device is taken into service.
- Semantics: Start-of-flow trigger. Fires when a device is adopted, whether by the API, the studio, or a flow calling `device adopt`. Use it to set a room, apply defaults, or announce the new device.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_device_adopted.md

### device discovered (`homeassist_trigger_device_discovered`)

- Group: globals / home
- Starts the flow when a NEW device appears on the radio, before it is adopted.
- Semantics: Start-of-flow trigger for onboarding. Fires once per device, the first time it is ever seen, while it is still unadopted : this is the one trigger that fires for unadopted devices, because noticing them is its whole purpose. Pair it with `device adopt` to auto-onboard, or with a notification to approve by hand.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_device_discovered.md

### device state changed (`homeassist_trigger_device_state_changed`)

- Group: globals / home
- Starts the flow on ANY change from a device. The catch-all : use a specific trigger where one exists.
- Semantics: Start-of-flow trigger firing on every changed capability of every adopted device. High volume by design: a house with a dozen sensors produces hundreds of these an hour. Use it for logging and for capabilities that have no dedicated trigger; branch on the `capability` pin.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_device_state_changed.md

### device unavailable (`homeassist_trigger_device_unavailable`)

- Group: globals / home
- Starts the flow when a device stops responding.
- Semantics: Start-of-flow trigger. Fires when a device transitions to unreachable : a flat battery, a device out of range, a bulb switched off at the wall. It does NOT fire repeatedly while the device stays away; it fires on the transition.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_device_unavailable.md

### door or gate closed (`homeassist_trigger_door_closed`)

- Group: globals / home
- Starts the flow when a controlled door or gate physically closes.
- Semantics: Start-of-flow trigger. Fires when door_position transitions to false (closed). Pair with a timer for 'the gate has been open too long'.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_door_closed.md

### door or gate locked (`homeassist_trigger_door_locked`)

- Group: globals / home
- Starts the flow when the lock engages.
- Semantics: Start-of-flow trigger on lock_state transitioning to "locked". Note that a momentary unlock re-locks on its own after a few seconds, so this fires routinely after every granted entry, not only when somebody deliberately locks up.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_door_locked.md

### door or gate opened (`homeassist_trigger_door_opened`)

- Group: globals / home
- Starts the flow when a controlled door or gate physically opens.
- Semantics: Start-of-flow trigger on the door_position capability, which is true when OPEN. This is the physical position from a door/gate sensor, not the lock state : a door can be unlocked but shut. Fires on the transition to open.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_door_opened.md

### door or gate unlocked (`homeassist_trigger_door_unlocked`)

- Group: globals / home
- Starts the flow when the lock releases, whether or not the door then opens.
- Semantics: Start-of-flow trigger on the lock_state capability transitioning to "unlocked". This is the ELECTRICAL state of the lock, not the physical position of the door : use door_opened for that. A momentary unlock fires this and then fires door_locked again seconds later when the relay re-locks itself, which is normal.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_door_unlocked.md

### doorbell rang (`homeassist_trigger_doorbell`)

- Group: globals / home
- Starts the flow when someone rings a doorbell or door station.
- Semantics: Start-of-flow trigger. Fires on a doorbell ring event from a UniFi door station, a Protect doorbell camera, or any device exposing the doorbell capability. A ring is momentary : every press fires, there is no 'still ringing' state to dedupe against.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_doorbell.md

### gate closed (`homeassist_trigger_gate_closed`)

- Group: globals / home
- Starts the flow when the gate physically closes.
- Semantics: Start-of-flow trigger on door_position becoming false for a gate. The natural pair for 'the gate has been open too long': start a timer on gate_opened and cancel it here.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_gate_closed.md

### gate opened (`homeassist_trigger_gate_opened`)

- Group: globals / home
- Starts the flow when the gate physically opens.
- Semantics: Start-of-flow trigger on door_position becoming true for a gate. Identical in mechanism to door_opened : a gate is a door to the controller : and separate so gate automations read as gate automations. Select the gate in the device pin; with no device selected it fires for any door-type device, which is probably not what a block called 'gate opened' should do.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_gate_opened.md

### humidity changed (`homeassist_trigger_humidity_changed`)

- Group: globals / home
- Starts the flow when a humidity reading changes. Set above or below to fire only when it crosses a threshold.
- Semantics: Start-of-flow trigger on the humidity capability, relative humidity percent. Threshold semantics are identical to temperature changed: crossings, not levels.
- In pins: `device` (value), `room` (value), `above` (number), `below` (number)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_humidity_changed.md

### light turned off (`homeassist_trigger_light_off`)

- Group: globals / home
- Starts the flow when a light is switched off.
- Semantics: Start-of-flow trigger. Fires when a device classified as a light transitions power true-false, from any source.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_light_off.md

### light turned on (`homeassist_trigger_light_on`)

- Group: globals / home
- Starts the flow when a light is switched on : by anyone, including a wall switch or the vendor's own app.
- Semantics: Start-of-flow trigger. Fires when a device classified as a light transitions power false-true. This includes changes RUAL did not make: a physical switch, the Hue app, a scene. It fires for lights only; use switch turned on for plugs and relays.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_light_on.md

### NFC card swiped (`homeassist_trigger_nfc`)

- Group: globals / home
- Starts the flow when any NFC card or fob is presented to a reader, whether or not it was accepted.
- Semantics: Start-of-flow trigger on the nfc capability. Fires when a card is presented, BEFORE and regardless of the access decision : a swipe may be denied. The `value` out-pin carries the card token or actor. Use this to react to a specific card ('when my gym fob is tapped, turn on the porch light') independent of whether it unlocks anything.
- In pins: `device` (value), `room` (value), `token` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_nfc.md

### presence cleared (`homeassist_trigger_presence_cleared`)

- Group: globals / home
- Starts the flow when a room becomes empty.
- Semantics: Start-of-flow trigger. Fires when occupancy transitions true-false. The delay before this fires is the SENSOR's, not the platform's.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_presence_cleared.md

### presence detected (`homeassist_trigger_presence_detected`)

- Group: globals / home
- Starts the flow when someone is detected in a room.
- Semantics: Start-of-flow trigger for occupancy specifically. Equivalent to sensor activated with sensor_type=occupancy, and exists because it is the single most common automation. Fires on the false-true transition.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_presence_detected.md

### sensor activated (`homeassist_trigger_sensor_activated`)

- Group: globals / home
- Starts the flow when a sensor turns ON: motion detected, a door opened, water found, smoke detected.
- Semantics: Start-of-flow trigger. Fires when any sensor capability (occupancy, contact, water_leak, smoke, gas, vibration) transitions from false to true on an adopted device. Fires on the TRANSITION only : a motion sensor that keeps re-reporting occupancy:true fires once, when motion starts. Leave the device pin empty to fire for every sensor in the house; set sensor_type to narrow to one kind.
- In pins: `device` (value), `room` (value), `sensor_type` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_sensor_activated.md

### sensor deactivated (`homeassist_trigger_sensor_deactivated`)

- Group: globals / home
- Starts the flow when a sensor turns OFF: motion cleared, a door closed, a leak stopped.
- Semantics: Start-of-flow trigger. The mirror of sensor activated: fires when a sensor capability transitions from true to false on an adopted device. Note that motion sensors clear after their own configured delay (often 60-120s of stillness), so this fires when the SENSOR says clear, not when the room empties.
- In pins: `device` (value), `room` (value), `sensor_type` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_sensor_deactivated.md

### smoke detected (`homeassist_trigger_smoke_detected`)

- Group: globals / home
- Starts the flow when a smoke alarm triggers.
- Semantics: Start-of-flow trigger. Fires when smoke transitions to true. This is a supplement to a certified alarm, not a replacement for one : it depends on a mesh, a broker and a node all being up.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_smoke_detected.md

### switch turned off (`homeassist_trigger_switch_off`)

- Group: globals / home
- Starts the flow when a plug, relay or switch is turned off.
- Semantics: Start-of-flow trigger. Fires when a device classified as a switch transitions power true-false.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_switch_off.md

### switch turned on (`homeassist_trigger_switch_on`)

- Group: globals / home
- Starts the flow when a plug, relay or switch is turned on.
- Semantics: Start-of-flow trigger. Fires when a device classified as a switch transitions power false-true. Switches are devices with on/off but no brightness or colour : metering plugs land here, not under lights.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_switch_on.md

### temperature changed (`homeassist_trigger_temperature_changed`)

- Group: globals / home
- Starts the flow when a temperature reading changes. Set above or below to fire only when it crosses a threshold.
- Semantics: Start-of-flow trigger on the temperature capability, in degrees Celsius. With neither threshold set it fires on EVERY changed reading, which for a sensor reporting every minute is a busy flow. With `above` or `below` set it fires on the CROSSING only : passing 25 fires once, not once per reading for the rest of the day.
- In pins: `device` (value), `room` (value), `above` (number), `below` (number)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_temperature_changed.md

### water leak detected (`homeassist_trigger_water_leak`)

- Group: globals / home
- Starts the flow when a leak sensor finds water.
- Semantics: Start-of-flow trigger. Fires when water_leak transitions to true. Fires on the transition, so a sensor sitting in a puddle and re-reporting fires once.
- In pins: `device` (value), `room` (value)
- Out pins: `flow` (flow), `device` (object), `device_id` (value), `name` (value), `room` (value), `type` (value), `capability` (value), `value` (value), `previous` (value), `at` (number)
- Page: https://docs.rual.nl/block-types/globals/homeassist_trigger_water_leak.md

### create (`state_trigger_custom_function`)

- Group: globals / function
- Creates a new state function that can be executed using the given name.
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/globals/state_trigger_custom_function.md

### selector (`storage`)

- Group: globals / storage
- Lets you choose a storage to be used on the connected blocks.
- Semantics: Outputs the storage names configured on this block as an array on the storage pin, feeding the storage selector of connected blocks. Outputs an empty array when no storage is configured.
- Out pins: `storage` (storage)
- Page: https://docs.rual.nl/block-types/globals/storage.md

### create (`trigger_custom_function`)

- Group: globals / function
- Creates a new function that can be executed using the given name.
- Semantics: Entry point of a custom function: execution of the function starts here whenever another block executes it, and the custom out pins carry the values the caller passed in. The block itself has no execution logic : it only marks where the function body begins.
- Out pins: `flow` (flow)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/globals/trigger_custom_function.md

### is on electron (`user_is_electron`)

- Group: globals / current user
- Returns true if the user is an electron user.
- Semantics: True when the current client is an Electron app, detected from the parsed user-agent family or a raw user-agent header containing "electron" (case-insensitive). False when no agent information is available.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/globals/user_is_electron.md

### is on iPad (`user_is_ipad`)

- Group: globals / current user
- Returns true if the user is on an iPad.
- Semantics: True when the current device is an iPad or any tablet: the device family contains "ipad", or the agent reports a tablet device. False when no agent information is available.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/globals/user_is_ipad.md

### is loggedin (`user_is_loggedin`)

- Group: globals / current user
- Returns true if currently a user is logged-in.
- Semantics: True when a user is currently authenticated: an auth token with a guid exists, or a client user object is present. False otherwise.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/globals/user_is_loggedin.md

### is on mobile (`user_is_on_mobile`)

- Group: globals / current user
- Returns true if the user is on mobile.
- Semantics: True when the current client is a mobile device: the agent family contains "mobile", or the agent reports a mobile device type. False when no agent information is available.
- Out pins: `condition` (condition)
- Commonly used with: [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/globals/user_is_on_mobile.md

## google

### area chart (`component_googlecharts_areachart`)

- Basic area chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_areachart.md

### bar chart (`component_googlecharts_barchart`)

- Basic bar chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_barchart.md

### bubble chart (`component_googlecharts_bubblechart`)

- Basic bubble chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_bubblechart.md

### candlestick chart (`component_googlecharts_candlestickchart`)

- Basic candlestick chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_candlestickchart.md

### column chart (`component_googlecharts_columnchart`)

- Basic column chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_columnchart.md

### histogram (`component_googlecharts_histogram`)

- Basic histogram
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_histogram.md

### line chart (`component_googlecharts_linechart`)

- Basic line chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_linechart.md

### pie chart (`component_googlecharts_piechart`)

- Basic pie chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_piechart.md

### scatter chart (`component_googlecharts_scatterchart`)

- Basic scatter chart
- In pins: `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google/component_googlecharts_scatterchart.md

### calculate route (`google_directions_calculate_route`)

- Group: google / google directions
- In pins: `flow` (flow), `api_key` (value, required), `origin` (value, required), `destination` (value, required), `mode` (value), `region` (value), `trafficmodel` (value), `arrival_time` (date), `departure_time` (date), `waypoints` (array)
- Out pins: `flow` (flow), `success` (condition), `results` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_directions_calculate_route.md

### geocoding (`google_places_geocoding`)

- Group: google / google places
- Uses the Geocoding API to obtain geocoding data for one or more addresses or places
- In pins: `flow` (flow), `api_key` (value, required), `address` (value, required), `language` (value)
- Out pins: `flow` (flow), `success` (condition), `results` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_places_geocoding.md

### nearby search (`google_places_nearby`)

- Group: google / google places
- search within Google Places for nearby points of interest.
- In pins: `flow` (flow), `api_key` (value, required), `latitude` (number, required), `longitude` (number, required), `radius` (number, required), `open_now` (condition), `type` (value), `pagetoken` (value), `rank` (value), `auto_scroll_pages` (condition)
- Out pins: `flow` (flow), `success` (condition), `results` (array), `has_next_page` (condition), `route_results` (array), `page_token` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_places_nearby.md

### calculate route (`google_routes_calculate_route`)

- Group: google / google routes
- In pins: `flow` (flow), `apikey` (value, required), `origin` (object, required), `destination` (object, required), `intermediates` (array), `mode` (value), `preference` (value), `modifiers` (object), `departure_time` (date), `fields` (array), `alternate_routes` (condition), `language_code` (value), `reference_route` (array), `computations` (array)
- Out pins: `flow` (flow), `success` (condition), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_routes_calculate_route.md

### street view image (`google_streetview`)

- Group: google / google places
- Fetches a static Street View image for a specific location and heading
- In pins: `flow` (flow), `api_key` (value, required), `latitude` (number, required), `longitude` (number, required), `heading` (number), `pitch` (number), `fov` (number), `size` (value), `signature_secret` (value)
- Out pins: `flow` (flow), `success` (condition), `image` (file, required), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_streetview.md

### street view HD image (`google_streetview_hd`)

- Group: google / google places
- Fetches high-resolution Street View imagery using the Tiles API. Requires Map Tiles API enabled.
- In pins: `flow` (flow), `api_key` (value, required), `latitude` (number, required), `longitude` (number, required), `heading` (number), `pitch` (number), `zoom` (number), `fov` (number), `radius` (number)
- Out pins: `flow` (flow), `success` (condition), `image` (file, required), `pano_id` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/google/google_streetview_hd.md

### custom post (`googlejwtconnection_custom_post`)

- Make custom requests to any Google API
- In pins: `flow` (flow), `connection` (googlejwtconnection), `url` (value, required), `body` (object, required)
- Out pins: `flow` (flow), `connection` (googlejwtconnection), `success` (condition), `error` (value), `response` (object)
- Page: https://docs.rual.nl/block-types/google/googlejwtconnection_custom_post.md

### publish (`googlejwtconnection_indexing_publish`)

- Group: google / google indexing
- In pins: `flow` (flow), `connection` (googlejwtconnection), `url` (value, required), `type` (value, required)
- Out pins: `flow` (flow), `connection` (googlejwtconnection), `success` (condition), `error` (value), `response` (object)
- Page: https://docs.rual.nl/block-types/google/googlejwtconnection_indexing_publish.md

### publishing status (`googlejwtconnection_indexing_publish_status`)

- Group: google / google indexing
- In pins: `flow` (flow), `connection` (googlejwtconnection), `url` (value, required)
- Out pins: `flow` (flow), `connection` (googlejwtconnection), `success` (condition), `error` (value), `status` (object)
- Page: https://docs.rual.nl/block-types/google/googlejwtconnection_indexing_publish_status.md

### open connection with jwt (`googlejwtconnection_open`)

- In pins: `flow` (flow), `client_email` (value, required), `private_key` (value, required), `scopes` (array, required)
- Out pins: `flow` (flow), `connection` (googlejwtconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/google/googlejwtconnection_open.md

## google maps

### geo chart (`component_googlecharts_geochart`)

- Group: google maps / google
- Basic geo chart
- In pins: `token` (value, required), `data` (array, required), `options` (object)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google%20maps/component_googlecharts_geochart.md

### map (`component_googlemaps_map`)

- Group: google maps / google
- Basic map
- In pins: `co-token` (value, required), `latitude` (number, required), `longitude` (number, required), `co-zoom` (number, required), `co-map_type` (value), `co-enable-default-ui` (condition), `cluster` (condition), `cluster-max-zoom` (number), `cluster-grid-size` (number), `cluster-icons` (array), `cluster-width` (number), `cluster-height` (number), `cluster-text-color` (value), `cluster-text-size` (number), `co-draggable` (condition), `co-map-type-control` (condition), `co-streetview-control` (condition), `co-zoom-control` (condition), `co-scrollwheel` (condition), `co-background-color` (value)
- Out pins: `uicomponent` (uicomponent)
- Page: https://docs.rual.nl/block-types/google%20maps/component_googlemaps_map.md

## http

### mock connection (`function_connection_mocking`)

- Creates a dummy HTTP connecton with a callback to catch the reply.
- Semantics: Despite the name, the Go executor performs a REAL HTTP request to the url input (method defaults to GET) and outputs a response object {status, reply}, where reply is the parsed JSON body or the raw body text when it is not JSON. The reply inpin function is never called, and the body and query pins are not sent. An empty url returns status 400 with reply MISSING_URL; a request error returns status 500 with the error message.
- In pins: `flow` (flow), `url` (value, required), `method` (value), `body` (object), `query` (object), `reply` (inpinfunction, required)
- Out pins: `flow` (flow), `connection` (httpconnection, required)
- Page: https://docs.rual.nl/block-types/http/function_connection_mocking.md

## http connection

### current request (`httpconnection_current_request`)

- Group: http connection / connection
- Retrieves a reference to the current HTTP Connection
- Semantics: Outputs the connection of the function that is currently running, resolved from engine state : this block has no input pins and ignores any wired value. It returns the same live reference the endpoint handler inspects, so later httpconnection_set_* blocks mutate the real request. Emits an empty connection object when no request is active; does nothing during precompile.
- Out pins: `connection` (httpconnection)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [get body](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body.md) (out), [get query](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_query.md) (out), [get params](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_params.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md

### disable request body log (`httpconnection_disable_request_body_log`)

- Group: http connection / response
- Disables the logging of the request body if it has been previously enabled
- Semantics: Disables request-body logging for this connection by clearing the flag set by httpconnection_enable_request_body_log. Passes the connection through; a missing request object or an unwired connection makes it a pass-through no-op.
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_disable_request_body_log.md

### disable response body log (`httpconnection_disable_response_body_log`)

- Group: http connection / response
- Disables the logging of the response body if it has been previously enabled
- Semantics: Disables response-body logging for this connection by clearing the flag set by httpconnection_enable_response_body_log. Passes the connection through; a missing request object or an unwired connection makes it a pass-through no-op.
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_disable_response_body_log.md

### enable request body log (`httpconnection_enable_request_body_log`)

- Group: http connection / response
- Enables the logging of the request body
- Semantics: Enables logging of the request body for this connection by flagging the request; turn it off again with httpconnection_disable_request_body_log. Passes the connection through; a missing request object or an unwired connection makes it a pass-through no-op.
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_enable_request_body_log.md

### enable response body log (`httpconnection_enable_response_body_log`)

- Group: http connection / response
- Enables the logging of the response body
- Semantics: Enables logging of the response body for this connection by flagging the request; turn it off again with httpconnection_disable_response_body_log. Passes the connection through; a missing request object or an unwired connection makes it a pass-through no-op.
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_enable_response_body_log.md

### fields (`httpconnection_fieldvalidation`)

- Group: http connection / validation
- Runs the given function per field for easier validation. By default it makes a field required. Function return values can be condition, value (error)
- Semantics: Validates request-body fields: for each selected field it reads the value from the body via dot-notation and, when a validator function is wired to that field's pin, runs it with key and value pins : the function's error or description output marks the field invalid, its condition or boolean output decides validity directly. A field WITHOUT a wired function is only checked for presence: nil value - FIELD_MISSING error. Outputs no_errors (true when every field passed), error_fields (the failing field names), and errors (one {description, success, key, type} object per failure).
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection), `no_errors` (condition), `error_fields` (array), `errors` (array)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_fieldvalidation.md

### device info (`httpconnection_get_agent`)

- Group: http connection / http
- Returns the currently connected users device info.
- Semantics: Outputs the parsed user-agent / device info object stored on the connection. Emits nil when the connection is unwired or carries no agent; does nothing during precompile.
- In pins: `connection` (httpconnection)
- Out pins: `agent` (object)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_agent.md

### is authenticated (`httpconnection_get_authenticated`)

- Group: http connection / http
- Returns true if the user is indeed authenticated.
- Semantics: True when the connection carries a user object; false when the connection is unwired or has no user. It does not validate scopes : only the presence of an authenticated user.
- In pins: `connection` (httpconnection)
- Out pins: `authenticated` (condition)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_authenticated.md

### get body (`httpconnection_get_body`)

- Group: http connection / http
- Returns the provided body as object, if the request method is POST or PUT.
- Semantics: Outputs the parsed request body from the connection's request; the HTTP method is NOT checked, so a GET with a body returns it too. When the connection pin is unwired it falls back to the body seeded on the currently running function (simulation). Emits nil when there is no body.
- In pins: `connection` (httpconnection)
- Out pins: `body` (object)
- Commonly used with: [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [selected fields to mutations](https://docs.rual.nl/block-types/object/object_field_to_mutations.md) (out), [log](https://docs.rual.nl/block-types/logging/function_console_log.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body.md

### get raw body (`httpconnection_get_body_raw`)

- Group: http connection / http
- Returns the request body exactly as received on the wire, as a string : the bytes an HMAC signature covers. Use this (never a re-serialized object) when verifying signature headers like X-Mssgs-Signature.
- Semantics: Outputs the request body exactly as received on the wire, as a string : use this for HMAC/signature verification, never a re-serialized object. When no wire bytes exist (simulation or function-level call) it falls back to the JSON serialization of the parsed body; emits nil when there is no body at all.
- In pins: `connection` (httpconnection)
- Out pins: `value` (value)
- Commonly used with: [sha256](https://docs.rual.nl/block-types/value/value_sha256_hmac.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body_raw.md

### cookie (`httpconnection_get_cookie`)

- Group: http connection / http
- Returns the cookie with the given name.
- Semantics: Outputs the value of the cookie named ui-: the name pin is automatically prefixed with "ui-", so name=session reads the cookie ui-session from the request Cookie header. Emits nil when the cookie is absent or the connection is unwired.
- In pins: `connection` (httpconnection), `name` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_cookie.md

### cookies all (`httpconnection_get_cookie_all`)

- Group: http connection / http
- Returns all set cookies.
- Semantics: Outputs an object of only the cookies whose name starts with "ui-", with the prefix stripped from the keys : NOT every cookie on the request. Example: header "ui-a=1; ui-b=2; other=3" - {a: "1", b: "2"}. Emits nil when the connection is unwired.
- In pins: `connection` (httpconnection)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_cookie_all.md

### single header (`httpconnection_get_header`)

- Group: http connection / http
- Gets the given header if present in HTTP request.
- Semantics: Outputs the value of a single request header; the name pin is lowercased before lookup, so casing never matters. Emits nil when the header is absent, the name is empty, or the connection is unwired.
- In pins: `connection` (httpconnection), `name` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_header.md

### headers (`httpconnection_get_headers`)

- Group: http connection / http
- Returns all headers known to us in the HTTP request.
- Semantics: Outputs all request headers as an object keyed by header name. When the connection pin is unwired it falls back to the connection of the currently running function; emits nil when no headers exist.
- In pins: `connection` (httpconnection)
- Out pins: `headers` (object)
- Commonly used with: [log](https://docs.rual.nl/block-types/logging/function_console_log.md) (out), [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_headers.md

### remote ip (`httpconnection_get_ip`)

- Group: http connection / http
- Returns the currently connected user IP.
- Semantics: Outputs the client IP: the connection's ip field first, then the first entry of X-Forwarded-For, then X-Real-IP, then the remote address (ports stripped). In simulation returns 127.0.0.1 or the simulating client's IP; emits nil when nothing yields an address.
- In pins: `connection` (httpconnection)
- Out pins: `ip` (value)
- Commonly used with: [increment](https://docs.rual.nl/block-types/redis/function_redis_cache_incr_key.md) (out), [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_ip.md

### accepted languages (`httpconnection_get_languages`)

- Group: http connection / http
- Returns the current HTTP accepted languages.
- Semantics: Splits the Accept-Language header on commas and outputs the raw parts as an array : quality weights are kept verbatim, e.g. "nl-NL,nl;q=0.9,en;q=0.8" - ["nl-NL", "nl;q=0.9", "en;q=0.8"]. Defaults to ["en"] when the header is missing; outputs nothing when there is no request.
- In pins: `connection` (httpconnection)
- Out pins: `languages` (array)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_languages.md

### method (`httpconnection_get_method`)

- Group: http connection / http
- Returns current HTTP method for this request (e.g. GET, POST, etc).
- Semantics: Outputs the uppercased HTTP method of the request (GET, POST, ...). Defaults to "GET" when the connection is unwired or the request carries no method : it never emits nil.
- In pins: `connection` (httpconnection)
- Out pins: `method` (value)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_method.md

### original url (`httpconnection_get_original_url`)

- Group: http connection / http
- Returns the original URL for this request, before internal routing.
- Semantics: Outputs the request's original URL before internal routing. Emits nothing at all (the url outpin is never written) when the connection is unwired or has no request.
- In pins: `connection` (httpconnection)
- Out pins: `url` (value)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_original_url.md

### get params (`httpconnection_get_params`)

- Group: http connection / http
- Returns all params if present, params are optional or required parameters in API URIs, for example :name.
- Semantics: Outputs the URL path parameters of the matched route as an object, e.g. route customers/:id with /customers/42 - {id: "42"}. When the connection pin is unwired it falls back to the params seeded on the currently running function; emits nil when there are no params.
- In pins: `connection` (httpconnection)
- Out pins: `params` (object)
- Commonly used with: [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_params.md

### get query (`httpconnection_get_query`)

- Group: http connection / http
- Returns all query items if present. Query items may be given in the URI like ?query=yes.
- Semantics: Outputs the query string parameters as an object. When the connection pin is unwired it falls back to the query seeded on the currently running function (simulation); emits nil when there is no query.
- In pins: `connection` (httpconnection)
- Out pins: `query` (object)
- Commonly used with: [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (out), [log](https://docs.rual.nl/block-types/logging/function_console_log.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_query.md

### request id (`httpconnection_get_request_id`)

- Group: http connection / http
- Returns the unique request ID
- Semantics: Outputs the unique request ID stored on the connection's client. Emits nil when the connection is unwired or carries no client requestid.
- In pins: `connection` (httpconnection)
- Out pins: `request_id` (value)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_request_id.md

### get user scopes (`httpconnection_get_scopes`)

- Group: http connection / http
- Returns the authenticated users scope.
- Semantics: Outputs the authenticated user's scopes from the connection's auth as an array. Emits an EMPTY array [] : not nil : when the connection is unwired, unauthenticated, or has no scopes.
- In pins: `connection` (httpconnection)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_get_scopes.md

### is user allowed to all scopes (`httpconnection_is_root`)

- Group: http connection / http
- Returns true if the authenticated user has wildcard (*) scope.
- Semantics: True only when the connection's auth scopes contain the literal wildcard element "*"; any other scope list, a missing auth, or an unwired connection yields false. Example: scopes=["admin"] - false; scopes=["*"] - true.
- In pins: `connection` (httpconnection)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_is_root.md

### redirect (`httpconnection_set_redirect`)

- Group: http connection / response
- Updates the connection to a new endpoint if the client allows following redirects.
- Semantics: Sends an HTTP redirect to the uri pin. The code pin accepts ONLY 301, 302, 307 or 308 : any other value is silently replaced with 302. Flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number), `uri` (value)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [new page](https://docs.rual.nl/block-types/state%20ui/state_page.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_redirect.md

### redirect to page (`httpconnection_set_redirect_to_page`)

- Group: http connection / response
- Updates the connection to a new endpoint if the client allows following redirects.
- Semantics: Sends an HTTP redirect to the uri of the page selected on the block, with status from the code pin (default 302; unlike httpconnection_set_redirect the code is NOT restricted to 301/302/307/308). The parameters and query pins are accepted but currently ignored by the executor. Flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number), `parameters` (object, required), `query` (object, required)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_redirect_to_page.md

### set status code (`httpconnection_set_status_code`)

- Group: http connection / response
- Updates the status code
- Semantics: Sets the HTTP status code on the response without sending anything : pair it with a set_json/set_text reply or the endpoint's default response. An unwired code pin defaults to 200; an unwired or nil connection does nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_status_code.md

### write to stream (`httpconnection_set_stream`)

- Group: http connection / response
- Writes part of a response to the client. After the whole response has been streamed, we need to call end stream.
- Semantics: Appends the value pin as the next chunk of a streamed response : call it repeatedly, then finish with httpconnection_set_stream_end, which is what actually flushes. The code, type and headers pins are only applied when set; a falsy value (0, false, "", nil) appends an empty string chunk. This block alone never completes the response.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number, required), `type` (value), `headers` (array<object>), `value` (value)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_stream.md

### end writestream (`httpconnection_set_stream_end`)

- Group: http connection / response
- Ends the current open stream with the client.
- Semantics: Ends the open stream and flushes the accumulated chunks to the client. When no httpconnection_set_stream chunk was ever written it instead sends a 404 text response with body "NOT_FOUND". An unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_stream_end.md

### reply in text (`httpconnection_set_text`)

- Group: http connection / response
- reply a http connection with text
- Semantics: Sends the data pin as a text response: Content-Type text/plain unless the type pin overrides it, status from the code pin (default 200). A falsy data value (0, false, "", nil) sends an empty string body. The response flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number, required), `type` (value), `headers` (array<object>), `data` (value)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_text.md

### timeout (`httpconnection_set_timeout`)

- Group: http connection / response
- Updates the default connection timeout of 120 seconds
- Semantics: Overrides the cluster default request timeout for this request, in seconds; the deadline is derived from the original request context, so it can EXTEND an already-shortened timeout. Values
- In pins: `flow` (flow), `connection` (httpconnection), `seconds` (number)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/http%20connection/httpconnection_set_timeout.md

### on api delete (`on_startup_register_uri_delete`)

- Group: http connection / api
- Exposes URI on /api/
- Semantics: Startup registration block, not a flow executor: at startup (and on every save) it registers DELETE /api/{version}/{uri} and wires it to the function connected to the On Request outpin, which receives connection, params, query and body pins per request. Version defaults to v1; the lower_keys pin lowercases all root-level JSON body keys (userName - username). A route without any scope is LOCKED with 403 : not public; use *public to expose it.
- In pins: `lower_keys` (condition)
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_delete.md

### on api file upload (`on_startup_register_uri_file`)

- Group: http connection / api
- Exposes URI on /api/. Accepts a multipart/form-data POST request and saves the attached file. Supports its own rate limit and lock (serialisation) through the pins below.
- Semantics: Startup registration block, not a flow executor: registers a POST /api/{version}/{uri} endpoint that accepts multipart/form-data uploads, saves each file under the entity's temp directory and calls the On Request function with connection, params, query, body and file pins (file entries are {filename, path, type} ready for file_* blocks; JSON-looking form fields are parsed into the body). The filesize pin caps upload bytes (default 5 MB); the rate_limit and lock pins add per-endpoint throttling and serialization and must be fixed values on the block, not wired chains. A route without any scope is LOCKED with 403 : not public; use *public to expose it.
- In pins: `filesize` (number), `rate_limit` (number), `rate_limit_timeframe` (number), `rate_limit_type` (value), `lock` (condition), `lock_timeout` (number), `lock_type` (value)
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [x](https://docs.rual.nl/block-types/math/number_times.md) (in)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_file.md

### On API GET (`on_startup_register_uri_get`)

- Group: http connection / api
- Exposes GET URI on /api/
- Semantics: Startup registration block, not a flow executor: at startup (and on every save) it registers GET /api/{version}/{uri} and wires it to the function connected to the On Request outpin, which receives connection, params and query pins per request. Version defaults to v1. A route without any scope is LOCKED with 403 : not public; use *public to expose it. If two blocks register the same method/version/URI, the later one wins.
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_get.md

### on api patch (`on_startup_register_uri_patch`)

- Group: http connection / api
- Exposes URI on /api/
- Semantics: Startup registration block, not a flow executor: at startup (and on every save) it registers PATCH /api/{version}/{uri} and wires it to the function connected to the On Request outpin, which receives connection, params, query and body pins per request. Version defaults to v1; the lower_keys pin lowercases all root-level JSON body keys (userName - username). A route without any scope is LOCKED with 403 : not public; use *public to expose it.
- In pins: `lower_keys` (condition)
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_patch.md

### on api post (`on_startup_register_uri_post`)

- Group: http connection / api
- Exposes POST URI on /api/
- Semantics: Startup registration block, not a flow executor: at startup (and on every save) it registers POST /api/{version}/{uri} and wires it to the function connected to the On Request outpin, which receives connection, params, query and body pins per request. Version defaults to v1; the lower_keys pin lowercases all root-level JSON body keys (userName - username). A route without any scope is LOCKED with 403 : not public; use *public to expose it.
- In pins: `lower_keys` (condition)
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_post.md

### on api put (`on_startup_register_uri_put`)

- Group: http connection / api
- Exposes URI on /api/
- Semantics: Startup registration block, not a flow executor: at startup (and on every save) it registers PUT /api/{version}/{uri} and wires it to the function connected to the On Request outpin, which receives connection, params, query and body pins per request. Version defaults to v1; the lower_keys pin lowercases all root-level JSON body keys (userName - username). A route without any scope is LOCKED with 403 : not public; use *public to expose it.
- In pins: `lower_keys` (condition)
- Out pins: `function` (execute_function)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_put.md

## injectable functions

### execute modal (`inpinfunction_select_modal`)

- Group: injectable functions / modal functions
- Enables you to choose a modal to be executon as function.
- In pins: `data` (object)
- Out pins: `inpinfunction` (inpinfunction)
- Page: https://docs.rual.nl/block-types/injectable%20functions/inpinfunction_select_modal.md

## json

### reply in JSON (`httpconnection_set_json`)

- Group: json / response
- Reply to any httpconnection as JSON body
- Semantics: Sends the body pin as a JSON response: Content-Type application/json, status from the code pin (default 200). The body pin is the one matching the block's selected field type, falling back to data; an unwired body sends an empty object {}, never null. A wired fields pin whitelists dot-paths : only listed paths ship (applied per element on array bodies); empty or unwired sends the body as-is. The response flushes immediately mid-flow and the flow keeps running detached from the request deadline; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number, required), `type` (value), `headers` (array<object>), `fields` (array<value>)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [current request](https://docs.rual.nl/block-types/http%20connection/httpconnection_current_request.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in)
- Page: https://docs.rual.nl/block-types/json/httpconnection_set_json.md

## json web token

### decode (`function_jwt_decode`)

- Decodes the given json web token and returns the payload. Unverified JWTs should be treated with caution and viewed the same as other user input
- Semantics: Decodes the JWT payload WITHOUT verifying the signature; verified is always false (use jwt verify for that). Only an empty token fails, with error MISSING_TOKEN and success=false : a malformed token (fewer than 2 segments, bad base64, or non-JSON payload) still reports success=true with payload=nil. Example: token="abc" - success=true, payload=nil.
- In pins: `flow` (flow), `token` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `verified` (condition), `payload` (object)
- Page: https://docs.rual.nl/block-types/json%20web%20token/function_jwt_decode.md

### sign (`function_jwt_sign`)

- Creates and signs a new json web token.
- Semantics: HS256-signs the payload with the secret and outputs the token. The payload must be an object without its own exp key : string, number, or boolean payloads fail with typed INVALID_EXPIRES_IN_FOR_* errors, an existing exp with INVALID_EXPIRES_IN. The token gets iat (now, unless the payload supplies a numeric one; a non-numeric iat fails with INVALID_IAT) and exp set to iat PLUS the expires value, which defaults to now-plus-4-hours as a unix number; an expires value at or before now fails with INVALID_EXPIRY_IN_PAST.
- In pins: `flow` (flow), `payload` (object, required), `secret` (value, required), `expiresin` (date, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `token` (value)
- Page: https://docs.rual.nl/block-types/json%20web%20token/function_jwt_sign.md

### verify (`function_jwt_verify`)

- Verifies the given json web token and returns the payload if valid.
- Semantics: Verifies the JWT signature and standard claims (including expiry) against the secret, outputting the claims on payload with success=true. Any parse or signature failure gives success=false with the library's error message; an empty token or secret fails with MISSING_TOKEN / MISSING_SECRET.
- In pins: `flow` (flow), `token` (value, required), `secret` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `payload` (object)
- Page: https://docs.rual.nl/block-types/json%20web%20token/function_jwt_verify.md

## jsonp

### reply in JSONP (`httpconnection_set_jsonp`)

- Group: jsonp / response
- Semantics: Sends the body (the value pin, or the pin matching the block's selected field type) as JSONP wrapped in the cbname callback function. An empty or unwired cbname degrades to a plain JSON response : the JSONP wrapping only happens when cbname is set. The status code is only applied when the code pin is above 0; flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number, required), `headers` (array<object>), `cbname` (value)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/jsonp/httpconnection_set_jsonp.md

## lettermint

### open connection (`lettermintconnection_open`)

- Opens a new lettermint connection using the given API token.
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `connection` (lettermintconnection)
- Page: https://docs.rual.nl/block-types/lettermint/lettermintconnection_open.md

### send email (`lettermintconnection_send_email`)

- sends a single email via Lettermint.
- In pins: `flow` (flow), `connection` (lettermintconnection, required), `subject` (value, required), `from` (value, required), `reply_to` (value), `array_to` (array), `array_cc` (array), `array_bcc` (array), `html` (value, required), `text` (value), `tag` (value), `file` (file)
- Out pins: `flow` (flow), `connection` (lettermintconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/lettermint/lettermintconnection_send_email.md

### send email batch (`lettermintconnection_send_email_batch`)

- sends up to 500 emails in a single Lettermint batch request. Each item in the input array supports the same fields as the single send block (from, to, subject, html, text, cc, bcc, reply_to, tag, attachments).
- In pins: `flow` (flow), `connection` (lettermintconnection, required), `emails` (array, required)
- Out pins: `flow` (flow), `connection` (lettermintconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/lettermint/lettermintconnection_send_email_batch.md

## line stop

### line stop (`aggregation_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `aggregation` (aggregation)
- Out pins: `aggregation` (aggregation)
- Page: https://docs.rual.nl/block-types/line%20stop/aggregation_line_stop.md

### line stop (`array_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `array` (array)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/line%20stop/array_line_stop.md

### line stop (`condition_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `condition` (condition)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/line%20stop/condition_line_stop.md

### line stop (`date_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `date` (date)
- Out pins: `date` (date)
- Commonly used with: [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (in), [execute in queue](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_queue.md) (out)
- Page: https://docs.rual.nl/block-types/line%20stop/date_line_stop.md

### line stop (`file_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `file` (file)
- Out pins: `file` (file)
- Commonly used with: [move to public](https://docs.rual.nl/block-types/files/file_move_public.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/line%20stop/file_line_stop.md

### line stop (`float_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `float` (float)
- Out pins: `float` (float)
- Page: https://docs.rual.nl/block-types/line%20stop/float_line_stop.md

### line stop (`flow_line_stop`)

- Gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [funnel](https://docs.rual.nl/block-types/funnels/funnel.md) (out), [line stop](https://docs.rual.nl/block-types/line%20stop/flow_line_stop.md) (both), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (out)
- Page: https://docs.rual.nl/block-types/line%20stop/flow_line_stop.md

### line stop (`httpconnection_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `httpconnection` (httpconnection)
- Out pins: `httpconnection` (httpconnection)
- Page: https://docs.rual.nl/block-types/line%20stop/httpconnection_line_stop.md

### line stop (`mutations_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `mutations` (mutations)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/line%20stop/mutations_line_stop.md

### line stop (`number_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/line%20stop/number_line_stop.md

### line stop (`object_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `object` (object)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/line%20stop/object_line_stop.md

### line stop (`payments_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `payments` (payments)
- Out pins: `payments` (payments)
- Page: https://docs.rual.nl/block-types/line%20stop/payments_line_stop.md

### line stop (`query_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `query` (query)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/line%20stop/query_line_stop.md

### line stop (`soapconnection_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `soapconnection` (soapconnection)
- Out pins: `soapconnection` (soapconnection)
- Page: https://docs.rual.nl/block-types/line%20stop/soapconnection_line_stop.md

### line stop (`storage_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `storage` (storage)
- Out pins: `storage` (storage)
- Page: https://docs.rual.nl/block-types/line%20stop/storage_line_stop.md

### line stop (`transaction_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `transaction` (transaction)
- Out pins: `transaction` (transaction)
- Page: https://docs.rual.nl/block-types/line%20stop/transaction_line_stop.md

### line stop (`user_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `user` (user)
- Out pins: `user` (user)
- Page: https://docs.rual.nl/block-types/line%20stop/user_line_stop.md

### line stop (`value_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `value` (value)
- Out pins: `value` (value)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [line stop](https://docs.rual.nl/block-types/line%20stop/value_line_stop.md) (both), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (both)
- Page: https://docs.rual.nl/block-types/line%20stop/value_line_stop.md

### line stop (`zpl_line_stop`)

- gives you the option to position lines better to have an nicer and a more cleanded up Blueprint.
- In pins: `zpl` (zpl)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/line%20stop/zpl_line_stop.md

## listener

### state enter (`uiattributes_state_enter_listener`)

- Adds a enter listener to a specific state key
- In pins: `statekey` (value, required)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/listener/uiattributes_state_enter_listener.md

### state keyup (`uiattributes_state_keyup_listener`)

- Adds a keyup listener with debounce (250ms)
- Out pins: `uiattributes` (uiattributes)
- Page: https://docs.rual.nl/block-types/listener/uiattributes_state_keyup_listener.md

## locking

### lock exists (`function_claim_lock_exists`)

- Checks if a lock already exists
- Semantics: Outputs condition=true only when the lock key currently exists in Redis (keys are prefixed per entity and per simulation mode). A falsy key input (nil, "", 0, false) or a Redis error both yield condition=false, indistinguishable from a missing lock. Example: key="" - exists=false without Redis ever being checked.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow), `condition` (condition)
- Page: https://docs.rual.nl/block-types/locking/function_claim_lock_exists.md

### lock ttl (`function_claim_lock_ttl`)

- Returns the time to live for a given lock
- Semantics: Outputs the lock's remaining TTL in whole seconds with the Redis sentinels passed through: -1 when the key exists but never expires, -2 when it does not exist. A falsy key input or a Redis error also outputs -2, indistinguishable from a missing lock.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow), `number` (number)
- Page: https://docs.rual.nl/block-types/locking/function_claim_lock_ttl.md

### claim lock (`function_claim_lock_v2`)

- Tries to claim a lock and returns if it was successful or not
- Semantics: Attempts to claim the lock via Redis SET NX: condition=true when this run created the key, condition=false with error value "Could not claim lock" when it is already held, or "Could not find lock to claim" when the key input is falsy. The lock expires after expiry seconds (default 60; zero, negative, or non-numeric values fall back to 60), and when auto_clear is truthy it is also released automatically when the flow ends.
- In pins: `flow` (flow), `key` (value, required), `expiry` (number), `auto_clear` (condition)
- Out pins: `flow` (flow), `condition` (condition), `value` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [one hour](https://docs.rual.nl/block-types/number/number_one_hour.md) (in)
- Page: https://docs.rual.nl/block-types/locking/function_claim_lock_v2.md

### lock or wait (`function_claim_lock_wait`)

- Sets a lock or waits until the lock has been released.
- Semantics: Claims the lock, waiting instead of failing: retries Redis SET NX every 2 seconds until it succeeds, so the flow simply blocks : there is no success or error output at all. A falsy expiry defaults to 60 seconds; a truthy but non-numeric expiry means NO expiry. When auto_clear is truthy the lock is released automatically when the flow ends. An unwired key pin locks the literal key "undefined".
- In pins: `flow` (flow), `key` (value), `expiry` (number), `auto_clear` (condition)
- Out pins: `flow` (flow)
- Commonly used with: [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in)
- Page: https://docs.rual.nl/block-types/locking/function_claim_lock_wait.md

### free lock (`function_claim_unlock`)

- Semantics: Deletes the lock key from Redis and always succeeds silently : nothing indicates whether a lock actually existed or was held by this flow. An unwired key pin deletes the literal key "undefined". Example: running free lock twice in a row succeeds both times.
- In pins: `flow` (flow), `key` (value)
- Out pins: `flow` (flow)
- Commonly used with: [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (both), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in)
- Page: https://docs.rual.nl/block-types/locking/function_claim_unlock.md

## logging

### log (`function_console_log`)

- Group: logging / console
- Semantics: Broadcasts every non-flow input pin as indented JSON to this blueprint's studio console channel : nothing is written to stdout, and the marshal plus broadcast runs asynchronously AFTER the flow has already continued (fire-and-forget). When the run has read a storage marked protect_developer_read, the payload is replaced by a withheld notice instead of the actual data.
- In pins: `flow` (flow), `message` (value)
- Out pins: `flow` (flow)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both)
- Page: https://docs.rual.nl/block-types/logging/function_console_log.md

## mailchimp

### connect (`function_mailchimp_open_connection`)

- Group: mailchimp / mailchimp marketing
- Creates a new connection for mailchimp, allowing all kind of methods within the Mailchimp API.
- In pins: `flow` (flow), `apikey` (value, required), `server` (value, required)
- Out pins: `flow` (flow), `connection` (mailchimpconnection)
- Page: https://docs.rual.nl/block-types/mailchimp/function_mailchimp_open_connection.md

### if (`mailchimp_branch`)

- Group: mailchimp / mailchimp marketing
- condition based splitting, in case of multiple mailchimp connections are required in different situations.
- In pins: `flow` (flow), `then` (mailchimpconnection), `else` (mailchimpconnection), `condition` (condition)
- Out pins: `flow` (flow), `connection` (mailchimpconnection)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimp_branch.md

### add member tag (`mailchimpconnection_add_member_tags`)

- Group: mailchimp / mailchimp marketing
- add tag to a list member.
- In pins: `flow` (flow), `connection` (mailchimpconnection), `list` (value, required), `email` (value, required), `tag` (value, required), `skip_automation` (condition)
- Out pins: `flow` (flow), `connection` (mailchimpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimpconnection_add_member_tags.md

### upsert list member (`mailchimpconnection_add_update_list_member`)

- Group: mailchimp / mailchimp marketing
- add or updates a list member.
- In pins: `flow` (flow), `connection` (mailchimpconnection), `list` (value, required), `email` (value, required), `firstname` (value, required), `lastname` (value, required), `addr1` (value), `city` (value), `zipcode` (value), `country` (value), `status` (value, required), `language` (value, required), `merge_fields` (object), `ip_opt` (value, required), `timestamp_opt` (date, required)
- Out pins: `flow` (flow), `connection` (mailchimpconnection), `success` (condition), `member` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimpconnection_add_update_list_member.md

### get lists (`mailchimpconnection_get_lists`)

- Group: mailchimp / mailchimp marketing
- get information about all lists in the account.
- In pins: `flow` (flow), `connection` (mailchimpconnection)
- Out pins: `flow` (flow), `connection` (mailchimpconnection), `success` (condition), `lists` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimpconnection_get_lists.md

### remove member tag (`mailchimpconnection_remove_member_tags`)

- Group: mailchimp / mailchimp marketing
- remove tag from a list member.
- In pins: `flow` (flow), `connection` (mailchimpconnection), `list` (value, required), `email` (value, required), `tag` (value, required), `skip_automation` (condition)
- Out pins: `flow` (flow), `connection` (mailchimpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimpconnection_remove_member_tags.md

### list templates (`mailchimpconnection_templates_list`)

- Group: mailchimp / mailchimp marketing
- Get a list of an account's available templates.
- In pins: `flow` (flow), `connection` (mailchimpconnection, required), `count` (number), `offset` (number), `query` (object)
- Out pins: `flow` (flow), `connection` (mailchimpconnection), `success` (condition), `error` (value), `templates` (array)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimpconnection_templates_list.md

### connect (`mailchimptransactionalconnection_open`)

- Group: mailchimp / mailchimp transactional
- Creates a new mailchimp transactional connection.
- In pins: `flow` (flow), `apikey` (value, required)
- Out pins: `flow` (flow), `connection` (mailchimptransactionalconnection)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimptransactionalconnection_open.md

### list templates (`mailchimptransactionalconnection_templates_list`)

- Group: mailchimp / mailchimp transactional
- return a list of all the templates available to this user.
- In pins: `flow` (flow), `connection` (mailchimptransactionalconnection, required), `label` (value)
- Out pins: `flow` (flow), `connection` (mailchimptransactionalconnection), `success` (condition), `error` (value), `templates` (array)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimptransactionalconnection_templates_list.md

### render template (`mailchimptransactionalconnection_templates_render`)

- Group: mailchimp / mailchimp transactional
- Inject content and optionally merge fields into a template, returning the HTML that results.
- In pins: `flow` (flow), `connection` (mailchimptransactionalconnection, required), `template_name` (value, required), `template_content` (array, required), `merge_vars` (array)
- Out pins: `flow` (flow), `connection` (mailchimptransactionalconnection), `success` (condition), `error` (value), `html` (value)
- Page: https://docs.rual.nl/block-types/mailchimp/mailchimptransactionalconnection_templates_render.md

## math

### - (`float_min`)

- Group: math / float: operators
- Subtracts the two operands, producing their difference.
- In pins: `float_0` (float), `float_1` (float)
- Out pins: `float` (float)
- Page: https://docs.rual.nl/block-types/math/float_min.md

### abs (`number_abs`)

- Group: math / number
- static method returns the absolute value of a number
- Semantics: Outputs the absolute value of the number pin. Numeric strings and booleans coerce (true=1, false=0); an unwired, nil, or non-numeric input outputs nil instead of a number. Example: number="-3.5" - 3.5.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_abs.md

### ceil (`number_ceil`)

- Group: math / number
- Always rounds a number up to the next largest whole number or integer.
- Semantics: Rounds the number pin up toward +Infinity to the nearest integer. Numeric strings and booleans coerce; an unwired, nil, or non-numeric input outputs nil. Example: number=2.1 - 3, number=-2.1 - -2.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_ceil.md

### ÷ (`number_divide`)

- Group: math / number: operators
- Produces the quotient of its operands where the first operand is the dividend and the second operand is the divisor.
- Semantics: Outputs number_0 divided by number_1. Both pins must resolve to valid finite numbers (numeric strings and booleans coerce); an unwired, nil, or non-numeric pin outputs nil, and division by zero also outputs nil instead of Infinity or NaN. Example: number_0=7 number_1=2 - 3.5.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_divide.md

### ** (`number_exponentiation`)

- Group: math / number: operators
- Returns the result of raising first operand to the power second operand.
- Semantics: Outputs number_0 raised to the power number_1 (number_0 ** number_1). Numeric strings and booleans coerce; unwired, nil, or non-numeric pins count as 0, so a missing exponent yields 1 (x**0). Example: number_0=2 number_1=10 - 1024.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_exponentiation.md

### floor (`number_floor`)

- Group: math / number
- Returns the largest integer less than or equal to a given number.
- Semantics: Rounds the number pin down toward -Infinity to the nearest integer. Numeric strings and booleans coerce; an unwired, nil, or non-numeric input outputs nil. Example: number=2.9 - 2, number=-2.1 - -3.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_floor.md

### Cos (`number_math_cos`)

- Group: math / number: static methods
- Returns the cosine of a number
- Semantics: Outputs the cosine of number_0 (radians). Numeric strings and booleans coerce; a wired non-numeric value counts as 0 (so cos - 1), and an unwired or nil pin writes nothing to the output. Example: number_0=0 - 1.
- In pins: `number_0` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_cos.md

### Exp (`number_math_exp`)

- Group: math / number: static methods
- Returns the value of E raised to the power of a number
- Semantics: Outputs e raised to the power number_0. Numeric strings and booleans coerce; a wired non-numeric value counts as 0 (so exp - 1), and an unwired or nil pin writes nothing to the output. Example: number_0=1 - 2.718281828459045.
- In pins: `number_0` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_exp.md

### Log (`number_math_log`)

- Group: math / number: static methods
- Returns the base logarithm of a number
- Semantics: Outputs the natural logarithm (base e) of number_0. Numeric strings and booleans coerce; unwired, nil, non-numeric, zero, and negative inputs all output nil. Example: number_0="10" - 2.302585092994046.
- In pins: `number_0` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_log.md

### Log2 (`number_math_log2`)

- Group: math / number: static methods
- Returns the base 2 logarithm of a number
- Semantics: Outputs the base-2 logarithm of number_0. Numeric strings and booleans coerce; an unwired or nil pin outputs nil, but a wired non-numeric value counts as 0 and yields -Inf, and a negative input yields NaN. Example: number_0=8 - 3.
- In pins: `number_0` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_log2.md

### max (`number_math_max`)

- Group: math / number: static methods
- Return the largest of the numbers given as input parameters
- Semantics: Outputs the larger of number_0 and number_1. Both pins must be wired : when either is absent the block writes nothing; a wired but nil or non-numeric value counts as 0 (numeric strings and booleans coerce). Example: number_0="3" number_1=7 - 7.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_max.md

### min (`number_math_min`)

- Group: math / number: static methods
- Return the smallest of the numbers given as input parameters
- Semantics: Outputs the smaller of number_0 and number_1. Both pins must be wired : when either is absent the block writes nothing; a wired but nil or non-numeric value counts as 0 (numeric strings and booleans coerce). Example: number_0=3 number_1="7" - 3.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_min.md

### Pow (`number_math_pow`)

- Group: math / number: static methods
- Returns the base to the exponent power
- Semantics: Outputs number_0 raised to the power number_1. Either pin unwired or nil outputs nil; a wired non-numeric value counts as 0 (numeric strings and booleans coerce), so an invalid exponent yields 1. Example: number_0=2 number_1="8" - 256.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_pow.md

### Sin (`number_math_sin`)

- Group: math / number: static methods
- Returns the sine of a number
- Semantics: Outputs the sine of number_0 (radians). Numeric strings and booleans coerce; a wired non-numeric value counts as 0 (so sin - 0), and an unwired or nil pin writes nothing to the output. Example: number_0=1.5707963267948966 - 1.
- In pins: `number_0` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_math_sin.md

### - (`number_min`)

- Group: math / number: operators
- Subtracts the two operands, producing their difference.
- Semantics: Subtracts every other wired input pin from number_0 (number_0 - number_1 - ...). Numeric strings and booleans coerce; an invalid number_0 counts as 0 while invalid later pins are skipped entirely, so they neither subtract nor error. Example: number_0=10 number_1=3 number_2="2" - 5.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_min.md

### % (`number_modulus`)

- Group: math / number: operators
- Returns the remainder left over when one operand is divided by a second operand.
- Semantics: Outputs the JS-style remainder of number_0 divided by number_1; the result takes the dividend's sign. Either pin unwired or nil outputs nil; a wired non-numeric value counts as 0, so an invalid or zero divisor yields NaN. Example: number_0=-7 number_1=3 - -1.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_modulus.md

### percentage (`number_percentage`)

- Group: math / number
- Calculates the percentage between two numbers.
- Semantics: Outputs (number_0 / number_1) * 100 : number_0 expressed as a percentage of number_1. Either pin unwired or nil outputs 0; wired non-numeric values count as 0 (numeric strings and booleans coerce), and a zero total yields Infinity rather than an error. Example: number_0=25 number_1=200 - 12.5.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_percentage.md

### + (`number_plus`)

- Group: math / number: operators
- Produces the sum of numeric operands.
- Semantics: Outputs the sum of all values arriving over connected wires. Only resolved upstream outputs count : an unwired pin or a pin's static default value contributes nothing; numeric strings and booleans coerce, non-numeric values are skipped, and with nothing wired the output is 0. Example: number_0=2 number_1="3.5" - 5.5.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Commonly used with: [length](https://docs.rual.nl/block-types/array/array_length.md) (in), [>=](https://docs.rual.nl/block-types/condition/condition_gte.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/math/number_plus.md

### round (`number_round`)

- Group: math / number
- Returns the rounded value of the given number to specified precision (number of digits after the decimal point).
- Semantics: Rounds the number pin to decimals decimal places using JS Math.round semantics (half rounds toward +Infinity, so -2.5 - -2). An unwired, nil, or non-numeric number pin outputs nil; a missing, zero, or negative decimals rounds to a whole number, while a non-integer decimals outputs NaN. Numeric strings and booleans coerce. Example: number=3.14159 decimals=2 - 3.14.
- In pins: `number` (number, required), `decimals` (number)
- Out pins: `number` (number)
- Commonly used with: [if](https://docs.rual.nl/block-types/number/number_branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/math/number_round.md

### smallest (`number_smallest`)

- Group: math / number
- Returns the smallest number of all numbers provided.
- Semantics: Outputs the smaller of number_0 and number_1. Numeric strings and booleans coerce; when exactly one pin is unwired, nil, or non-numeric the other passes through unchanged, and when both are invalid the output is nil. Example: number_0=3 number_1="7" - 3.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/math/number_smallest.md

### x (`number_times`)

- Group: math / number: operators
- Multiplication operator produces the product of the operands.
- Semantics: Outputs number_0 multiplied by number_1. Numeric strings and booleans coerce (true=1); unwired, nil, or non-numeric pins count as 0, so any missing operand makes the product 0. Example: number_0="4" number_1=2.5 - 10.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [on api file upload](https://docs.rual.nl/block-types/http%20connection/on_startup_register_uri_file.md) (out), [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [point in radius](https://docs.rual.nl/block-types/condition/condition_geo_is_point_in_circle.md) (out)
- Page: https://docs.rual.nl/block-types/math/number_times.md

## messagebird

### create sms (`function_mesagebird_sms`)

- Send SMS messages using messagebird service
- In pins: `bird_flow` (flow), `token` (value), `originator` (value), `recipients` (array), `message` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/messagebird/function_mesagebird_sms.md

## modal functions

### redirect (`inpinfunction_redirect`)

- Group: modal functions / state actions
- When executed moves the user into the new given page.
- In pins: `url` (value, required)
- Out pins: `inpinfunction` (inpinfunction)
- Page: https://docs.rual.nl/block-types/modal%20functions/inpinfunction_redirect.md

### redirect to page (`inpinfunction_redirect_page`)

- Group: modal functions / state actions
- When executed moves the user into the new given page.
- In pins: `parameters` (object, required), `query` (object, required)
- Out pins: `inpinfunction` (inpinfunction)
- Page: https://docs.rual.nl/block-types/modal%20functions/inpinfunction_redirect_page.md

### execute (`inpinfunction_select`)

- Group: modal functions / select function
- Enables you to choose a function that can be passed to other actions.
- Out pins: `inpinfunction` (inpinfunction)
- Commonly used with: [button](https://docs.rual.nl/block-types/state%20ui/state_button_content.md) (out)
- Page: https://docs.rual.nl/block-types/modal%20functions/inpinfunction_select.md

### execute scope based (`inpinfunction_select_scoped`)

- Group: modal functions / select function
- Enables you to choose a function that can be passed to other actions.
- Out pins: `inpinfunction` (inpinfunction)
- Page: https://docs.rual.nl/block-types/modal%20functions/inpinfunction_select_scoped.md

### switch (`inpinfunction_switch`)

- Group: modal functions / condition function
- Returns a inpinfunction based of the given expression.
- In pins: `value` (value), `default` (inpinfunction)
- Out pins: `inpinfunction` (inpinfunction), `matched` (condition)
- Page: https://docs.rual.nl/block-types/modal%20functions/inpinfunction_switch.md

## mollie

### template (`addressmollieconnection_build_address`)

- Group: mollie / address details
- Creates a valid address object that can be used within mollie.
- In pins: `organization_name` (value), `title` (value), `given_name` (value, required), `family_name` (value, required), `email` (value, required), `street_and_number` (value, required), `street_additional` (value), `postal_code` (value, required), `city` (value, required), `country` (value, required), `phone` (value)
- Out pins: `address` (addressmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/addressmollieconnection_build_address.md

### from object (`addressmollieconnection_build_address_from_object`)

- Group: mollie / address details
- Creates a valid address object from a regular object.
- In pins: `address` (object, required)
- Out pins: `address` (addressmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/addressmollieconnection_build_address_from_object.md

### connect (`function_create_mollie`)

- Creates a new connection for mollie, allowing all kind of methods within the Mollie API.
- In pins: `flow` (flow), `apikey` (value)
- Out pins: `flow` (flow), `connection` (mollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/function_create_mollie.md

### template (`linesmollieconnection_build_line`)

- Group: mollie / order lines
- Creates a valid order line object that can be used within mollie.
- In pins: `type` (value), `category` (value), `name` (value, required), `quantity` (number, required), `unit_price` (number, required), `discount_amount` (number), `total_amount` (number, required), `vat_rate` (value, required), `vat_amount` (number, required), `sku` (value), `product_url` (value), `image_url` (value), `metadata` (object)
- Out pins: `lines` (linesmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/linesmollieconnection_build_line.md

### multiple (`linesmollieconnection_build_line_combine`)

- Group: mollie / order lines
- Combines multiple lines.
- In pins: `line_1` (linesmollieconnection, required)
- Out pins: `lines` (linesmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/linesmollieconnection_build_line_combine.md

### from object (`linesmollieconnection_build_line_from_object`)

- Group: mollie / order lines
- Creates a valid order line object from a regular object.
- In pins: `line` (object, required)
- Out pins: `lines` (linesmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/linesmollieconnection_build_line_from_object.md

### from object (`linesmollieconnection_build_lines_from_array`)

- Group: mollie / order lines
- Creates a valid order line array from a regular array of objects.
- In pins: `lines` (array<object>, required)
- Out pins: `lines` (linesmollieconnection)
- Page: https://docs.rual.nl/block-types/mollie/linesmollieconnection_build_lines_from_array.md

### create (`mollieconnection_customers_create`)

- Group: mollie / customers
- Create a customer in Mollie.
- In pins: `flow` (flow), `connection` (mollieconnection), `name` (value, required), `email` (value, required), `locale` (value), `metadata` (object)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `customer` (object), `metadata` (object), `status` (value), `id` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_customers_create.md

### delete (`mollieconnection_customers_delete`)

- Group: mollie / customers
- Delete a customer in Mollie.
- In pins: `flow` (flow), `connection` (mollieconnection), `customer_id` (value, required)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `status` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_customers_delete.md

### update (`mollieconnection_customers_update`)

- Group: mollie / customers
- Update a customer in Mollie.
- In pins: `flow` (flow), `connection` (mollieconnection), `customer_id` (value, required), `name` (value, required), `email` (value, required), `locale` (value), `metadata` (object)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `customer` (object), `metadata` (object), `status` (value), `id` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_customers_update.md

### cancel (`mollieconnection_orders_cancel`)

- Group: mollie / orders
- Cancels a mollie order.
- In pins: `flow` (flow), `connection` (mollieconnection), `id` (value, required)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `order` (object), `metadata` (object), `order_id` (value), `order_status` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_orders_cancel.md

### create (`mollieconnection_orders_create`)

- Group: mollie / orders
- Creates a mollie order.
- In pins: `flow` (flow), `connection` (mollieconnection), `amount` (number, required), `currency` (value, required), `number` (value, required), `locale` (value, required), `billing_address` (addressmollieconnection, required), `shipping_address` (addressmollieconnection), `lines` (linesmollieconnection, required), `redirect_url` (value, required), `webhook_url` (value), `method` (array<value>), `payment` (object), `metadata` (object)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `order` (object), `metadata` (object), `order_id` (value), `order_status` (value), `checkout_link` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_orders_create.md

### get (`mollieconnection_orders_get`)

- Group: mollie / orders
- Retrieve a single order by its ID.
- In pins: `flow` (flow), `connection` (mollieconnection), `id` (value, required)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `order` (object), `metadata` (object), `order_id` (value), `order_status` (value), `payments` (array<object>), `refunds` (array<object>), `shipments` (array<object>), `checkout_link` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_orders_get.md

### update (`mollieconnection_orders_update`)

- Group: mollie / orders
- Updates a mollie order.
- In pins: `flow` (flow), `connection` (mollieconnection), `id` (value, required), `billing_address` (addressmollieconnection, required), `shipping_address` (addressmollieconnection)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `order` (object), `metadata` (object), `order_id` (value), `order_status` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_orders_update.md

### list (`mollieconnection_paymentmethods_list`)

- Group: mollie / payment methods
- Retrieve all enabled payment methods.
- In pins: `flow` (flow), `connection` (mollieconnection, required), `parameters` (object)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `error` (value), `methods` (array)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_paymentmethods_list.md

### create (`mollieconnection_payments_create`)

- Group: mollie / payments
- Creates a new mollie payment, this is where most of the implementations start off.
- In pins: `flow` (flow), `connection` (mollieconnection, required), `amount` (number, required), `currency` (value, required), `description` (value, required), `redirecturl` (value, required), `webhookurl` (value, required), `method` (value), `metadata` (object), `customer_id` (value), `mandate_id` (value), `sequence_type` (value)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `payment` (object), `metadata` (object), `url` (value), `status` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_payments_create.md

### get (`mollieconnection_payments_get`)

- Group: mollie / payments
- Gets all the information about a mollie payment.
- In pins: `flow` (flow), `connection` (mollieconnection), `id` (value)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `payment` (object), `metadata` (object), `id` (value), `status` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_payments_get.md

### create (`mollieconnection_shipments_create`)

- Group: mollie / shipments
- Creates a mollie shipment for a given order.
- In pins: `flow` (flow), `connection` (mollieconnection), `id` (value, required), `lines` (array<object>), `carrier` (value), `code` (value), `url` (value)
- Out pins: `flow` (flow), `connection` (mollieconnection), `success` (condition), `shipment` (object), `shipment_id` (value), `order_id` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/mollie/mollieconnection_shipments_create.md

## mssgs

### send message (`mssgs_send_message`)

- Group: mssgs / mssgs webhook
- Send a message into a mssgs channel. Point it at a mssgs service provider so the webhook URL stays out of this blueprint : the URL embeds the webhook's token, so anyone who can read it can post to the channel. Only the destination and the message are required; the other pins map to the rich message_container options.
- In pins: `flow` (flow), `provider` (value), `webhook` (value), `message` (value, required), `title` (value), `title_url` (value), `sub_title` (value), `color` (value), `type` (value), `avatar_url` (value), `bot_name` (value), `fields` (array<object>), `actions` (array<object>)
- Out pins: `flow` (flow), `response` (object), `success` (condition), `error` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [funnel](https://docs.rual.nl/block-types/funnels/funnel.md) (out)
- Page: https://docs.rual.nl/block-types/mssgs/mssgs_send_message.md

## mssql

### close connection (`function_mssql_close_connection`)

- Closs the MSSQL connection.
- In pins: `flow` (flow), `connection` (mssqlconnection)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/mssql/function_mssql_close_connection.md

### open connection (`function_mssql_open_config_connection`)

- Opens a MSSQL connection.
- In pins: `flow` (flow), `user` (value), `password` (value), `server` (value), `database` (value), `encrypt` (condition)
- Out pins: `flow` (flow), `connection` (mssqlconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/mssql/function_mssql_open_config_connection.md

### execute (`mssqlconnection_query`)

- Group: mssql / query
- Executes provided query on the MSSQL server.
- In pins: `connection` (mssqlconnection), `query` (value, required), `params` (object)
- Out pins: `connection` (mssqlconnection), `results` (array), `affected` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/mssql/mssqlconnection_query.md

## mutations

### multiple (`mutations_add`)

- combine multiple mutations into one.
- Semantics: Concatenates every wired mutations input into a single mutations list, in pin order. Inputs that are unwired, nil, or not a mutations array are skipped; with no valid inputs the output is an empty list.
- In pins: `mutations_1` (mutations), `mutations_2` (mutations)
- Out pins: `mutations` (mutations)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in), [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (in), [set custom field](https://docs.rual.nl/block-types/mutations/mutations_set_custom_field.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add.md

### add file (`mutations_add_file`)

- adds the given file(s) to the existing files
- Semantics: Emits one array.add.unique mutation per file on the files pin, using each file object's path string as the value for the selected file field, so paths are appended without duplicating existing ones. Entries that are not file objects are skipped; an unwired or empty files pin yields an empty mutations list.
- In pins: `files` (file, required)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_file.md

### add multiple unique to array (`mutations_add_multiple_to_array_by_field`)

- pushes all values that do not already exist in the array to the given field.
- Semantics: Emits one array.add.unique mutation per item of the array input, all targeting the selected array field, so each item is appended only if not already present. An empty, nil, or non-array input (or no selected field) yields an empty mutations list.
- In pins: `array` (array)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_multiple_to_array_by_field.md

### add unique to array (`mutations_add_to_array_by_field`)

- push any given type to the array if it doesn't already exist.
- Semantics: Emits a single array.add.unique mutation for the selected array field: the value is appended only if not already present. The value comes from the typed pins (value is stringified, dates become unix timestamps, number/date fields coerce to a number); with no value pin wired the mutation value is null.
- Out pins: `mutations` (mutations)
- Commonly used with: [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [update multiple documents](https://docs.rual.nl/block-types/storage/function_update_documents.md) (out), [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_to_array_by_field.md

### add to array (`mutations_add_to_array_by_field_non_unique`)

- push any given type to the array.
- Semantics: Emits a single array.add mutation for the selected array field: the value is appended unconditionally, duplicates included. The value comes from the typed pins (value is stringified, dates become unix timestamps, number/date fields coerce to a number); with no value pin wired the mutation value is null.
- Out pins: `mutations` (mutations)
- Commonly used with: [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_to_array_by_field_non_unique.md

### add unique to custom array (`mutations_add_to_custom_array`)

- push any given type to the array if it doesn't already exist.
- Semantics: Emits one array.add.unique mutation targeting the dot-path field named by the field pin, appending the value only if not already present. The value comes from the typed pins (when several are wired, the later one wins; dates become unix timestamps). An empty or unwired field pin yields an empty mutations list.
- In pins: `array` (array), `field` (value), `condition` (condition), `value` (value), `number` (number), `date` (date), `object` (object), `index` (number)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_to_custom_array.md

### add to custom array (`mutations_add_to_custom_array_non_unique`)

- push any given type to the array.
- Semantics: Emits one array.add mutation targeting the dot-path field named by the field pin, appending the value unconditionally, duplicates included. The value comes from the typed pins (when several are wired, the later one wins; dates become unix timestamps). An empty or unwired field pin yields an empty mutations list.
- In pins: `array` (array), `field` (value), `condition` (condition), `value` (value), `number` (number), `date` (date), `object` (object), `index` (number)
- Out pins: `mutations` (mutations)
- Commonly used with: [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [object from mutations](https://docs.rual.nl/block-types/object/object_new_mutations.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_add_to_custom_array_non_unique.md

### upsert item to array (`mutations_array_upsert`)

- inserts or updates an object within the given field by the unique key(s)
- Semantics: Emits a single array.upsert mutation for the selected array field: the stored item matching the object pin on all match keys is updated, otherwise the object is inserted. An unwired keys pin becomes an empty match-keys list; an unwired object pin is passed through as null.
- In pins: `keys` (array, required), `object` (object, required)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_array_upsert.md

### if (`mutations_branch`)

- Group: mutations / mutations: conditions
- use mutations X or Y based on a condition.
- Semantics: Outputs the mutations wired to the then pin when the condition is true, otherwise the else pin (branch selection is pre-resolved from the condition by the engine). A selected branch that is unwired, nil, or falsy outputs an empty mutations list.
- In pins: `then` (mutations), `else` (mutations), `condition` (condition)
- Out pins: `mutations` (mutations)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in), [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (in), [increment by field](https://docs.rual.nl/block-types/mutations/mutations_increment_by_field.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_branch.md

### decrement by field (`mutations_decrement_by_field`)

- Semantics: Emits one number.decrement mutation subtracting the decrement_by pin from the selected number field. An unwired pin decrements by 0; a wired value is passed through without coercion.
- In pins: `decrement_by` (number)
- Out pins: `mutations` (mutations)
- Commonly used with: [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_decrement_by_field.md

### decrement custom field (`mutations_decrement_custom_field`)

- Semantics: Emits one number.decrement mutation on the dot-path field named by the field pin, subtracting the decrement_by pin. A falsy or unwired amount counts as 0; an empty field name yields an empty mutations list.
- In pins: `field` (value), `decrement_by` (number)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_decrement_custom_field.md

### define mutations (`mutations_define_reference`)

- Group: mutations / references
- Store these mutations as reference, which can later be used by "use reference"
- In pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_define_reference.md

### difference to mutations (`mutations_difference_from_object`)

- Group: mutations / object
- generates an array of mutations representing the differences between two objects.
- Semantics: Emits the mutations that turn original into modified: field.remove for every flattened key missing or null in modified, set.field for every added or changed non-null value. Nested objects flatten to dot paths, _meta is ignored, and numbers compare by value (5 equals 5.0). An unwired original treats every modified field as new.
- In pins: `original` (object), `modalTypes` (object, required)
- Out pins: `mutations` (mutations)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_difference_from_object.md

### elseif (`mutations_elseif`)

- Group: mutations / mutations: conditions
- Semantics: Evaluates chained elseif conditions and outputs the mutations of the first matching then branch, or the default mutations when none match (branch selection is pre-resolved by the engine). A matched branch that is unwired, nil, or falsy outputs an empty mutations list.
- In pins: `default` (mutations), `elseif` (condition), `then` (mutations)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_elseif.md

### get first mutation (`mutations_first_item`)

- get the first mutation.
- Semantics: Outputs the first mutation object of the incoming mutations list. An empty, nil, or unwired list outputs nil.
- In pins: `mutations` (mutations, required)
- Out pins: `mutation` (object)
- Page: https://docs.rual.nl/block-types/mutations/mutations_first_item.md

### from object (`mutations_from_object`)

- Group: mutations / object
- generates an array of mutations from an object
- Semantics: Emits one set.field mutation per flattened non-null field of the object input, so the object's contents overwrite the stored document. Nested objects flatten to dot paths and _meta is skipped; a nil or unwired object yields an empty mutations list.
- In pins: `object` (object, required)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_from_object.md

### get at index (`mutations_get_at_index`)

- returns the mutation at the specified index position
- Semantics: Outputs the single mutation object at the given index of the incoming mutations list (0-based, default 0). A negative index, an index past the end, or an empty or unwired list outputs nil.
- In pins: `mutations` (mutations, required), `number` (number, required)
- Out pins: `mutation` (object)
- Page: https://docs.rual.nl/block-types/mutations/mutations_get_at_index.md

### increment by field (`mutations_increment_by_field`)

- Semantics: Emits one number.increment mutation adding the increment_by pin to the selected number field. An unwired pin increments by 0; a wired value is passed through without coercion.
- In pins: `increment_by` (number)
- Out pins: `mutations` (mutations)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_increment_by_field.md

### increment custom field (`mutations_increment_custom_field`)

- Semantics: Emits one number.increment mutation on the dot-path field named by the field pin, adding the increment_by pin. A falsy or unwired amount counts as 0; an empty field name yields an empty mutations list.
- In pins: `field` (value), `increment_by` (number)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_increment_custom_field.md

### key -> value (`mutations_keyvalue`)

- Semantics: Emits a one-element mutations array holding a single set.field mutation: key from the key pin, value from the LAST connected typed pin holding a JS-truthy value -- false, 0, "" and null are SKIPPED, and when nothing is truthy the value falls back to {}. The key is omitted from the mutation when the key pin is unconnected.
- In pins: `key` (value), `value` (value), `number` (number), `object` (object), `condition` (condition), `array` (array)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_keyvalue.md

### get last mutation (`mutations_last_item`)

- get the last mutation.
- Semantics: Outputs the last mutation object of the incoming mutations list. An empty, nil, or unwired list outputs nil.
- In pins: `mutations` (mutations, required)
- Out pins: `mutation` (object)
- Page: https://docs.rual.nl/block-types/mutations/mutations_last_item.md

### merge into array (`mutations_merge_into_array_by_field`)

- combines two or more arrays.
- Semantics: Appends every item of the array input to the selected field by emitting one array.add mutation per item; duplicates are not skipped. A nil or non-array input (or no selected field) yields an empty mutations list.
- In pins: `array` (array)
- Out pins: `mutations` (mutations)
- Commonly used with: [with values](https://docs.rual.nl/block-types/array/array_of_values.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_merge_into_array_by_field.md

### remove fields (`mutations_remove_by_field_multiple`)

- Semantics: Emits one field.remove mutation per selected field, deleting those fields from the stored document. Reads no pins; with no fields selected the output is an empty mutations list.
- Out pins: `mutations` (mutations)
- Commonly used with: [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [update multiple documents](https://docs.rual.nl/block-types/storage/function_update_documents.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_remove_by_field_multiple.md

### remove custom field (`mutations_remove_custom_field`)

- Semantics: Emits a single field.remove mutation deleting the dot-path field named by the field pin from the stored document. An empty or unwired field pin yields an empty mutations list.
- In pins: `field` (value)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_remove_custom_field.md

### remove from array (`mutations_remove_from_array_by_field`)

- Semantics: Emits one array.remove mutation deleting the given value from the selected array field. The value comes from the typed pins (when several are wired, the later one wins; dates become unix timestamps); with nothing wired the removal value is null.
- In pins: `value` (value), `number` (number), `date` (date), `object` (object)
- Out pins: `mutations` (mutations)
- Commonly used with: [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_remove_from_array_by_field.md

### remove from custom array (`mutations_remove_from_custom_array`)

- Semantics: Emits one array.remove mutation deleting the given value from the array at the dot-path named by the field pin. The value comes from the typed pins (when several are wired, the later one wins; dates become unix timestamps); an empty field name yields an empty mutations list.
- In pins: `array` (array), `field` (value), `condition` (condition), `value` (value), `number` (number), `date` (date), `object` (object), `index` (number)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_remove_from_custom_array.md

### set fields (`mutations_set_bp_field_multiple`)

- Generates an array of mutations based on the given filled fields.
- Semantics: Emits one set.field mutation per configured field pin, overwriting those fields in the stored document, with per-type coercion (strings stringified, numbers parsed, booleans strict-true, dates to unix timestamps, files to path lists). Every configured pin emits a mutation even when unwired: unwired number pins set 0 and unwired boolean pins set false rather than skipping.
- Out pins: `mutations` (mutations)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md

### set custom field (`mutations_set_custom_field`)

- Semantics: Emits one set.field mutation overwriting the dot-path field named by the field pin with the value from the typed pins (when several are wired, the later one wins: value, number, array, object, condition, date, file). Values coerce by type: numbers and dates parsed numerically, condition pins strict boolean, value pins stringified, files reduced to path lists. An empty field name yields an empty mutations list.
- In pins: `field` (value, required)
- Out pins: `mutations` (mutations)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [object from mutations](https://docs.rual.nl/block-types/object/object_new_mutations.md) (both), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/mutations/mutations_set_custom_field.md

### switch (`mutations_switch`)

- Returns mutations based on the given expression.
- Semantics: Outputs the mutations wired to the case matching the value expression, or the default mutations when no case matches. The matched output is true only when a real case matched : falling through to default counts as unmatched. A matched case whose pin is unwired or falsy outputs nil mutations.
- In pins: `value` (value), `default` (mutations)
- Out pins: `mutations` (mutations), `matched` (condition)
- Page: https://docs.rual.nl/block-types/mutations/mutations_switch.md

### use mutations (`mutations_use_reference`)

- Group: mutations / references
- Use the mutations which were previously defined by a define reference
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/mutations/mutations_use_reference.md

## nginx

### validate site config on the load balancers (`nginxsite_check`)

- Group: nginx / Load balancers
- Run nginx -t for this site config on every load balancer, in the context of its full live config. Writes nothing to any live directory.
- Semantics: Validates an nginx site config on EVERY load balancer in the nodes list and reports per node. The far side overlays the staged file on a shadow of its full live tree and runs the real nginx -t, so the answer covers certificates, includes and interactions with the other live sites : not a syntax check in a vacuum. Nothing reaches a live directory. This is a separate fan-out ahead of any write: 'does this validate everywhere' is answered in full before 'shall we replace anything' is asked. passed comes back true only when every node passed. results carries {name, host, ok, output, exit_code, checksum, site} per node, and checksum is a sha256 of the exact bytes checked: nginxsite_push demands a passing result with a MATCHING checksum for every node it is about to write to, so a flow cannot check, edit and then push a different file. Each node is {name, host, port, user, key_path, known_hosts_path}; user defaults to lbpush. Key MATERIAL must never appear on the pin : only paths : and the block refuses a node object carrying private_key, key, password, passphrase or secret.
- In pins: `flow` (flow), `site` (value, required), `config` (value, required), `nodes` (array, required)
- Out pins: `flow` (flow), `success` (condition), `site` (value), `passed` (condition), `results` (array), `checksum` (value), `passed_count` (number), `node_count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/nginx/nginxsite_check.md

### remove site config from the load balancers (`nginxsite_delete`)

- Group: nginx / Load balancers
- Remove a live site config and reload nginx, per node. The far side refuses when the remaining set would not validate without it, and archives rather than destroys.
- Semantics: Removes a live site config, per node, through the fleet's validated contract: the far side first proves the REMAINING live set still passes nginx -t without this file (a site another config depends on stays live, with the reason in the per-node output), then archives the file : nothing is destroyed : and reloads. On a shared-filesystem fleet pass exactly one node, same convergence rule as nginxsite_push: the other nodes' watchers pick the removal up within seconds. On an independent fleet, list every node.
- In pins: `flow` (flow), `site` (value, required), `nodes` (array, required)
- Out pins: `flow` (flow), `success` (condition), `site` (value), `results` (array), `applied_count` (number), `node_count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/nginx/nginxsite_delete.md

### push site config to the load balancers (`nginxsite_push`)

- Group: nginx / Load balancers
- Replace the live site config and reload nginx, per node. Gated on a passing nginxsite_check over these exact bytes for every target node.
- Semantics: Replaces the live nginx site config and reloads, per node, through the fleet's own validated contract (lb-push/lb-apply): the far side re-validates against its full live tree before promoting, promotes atomically, re-runs nginx -t and rolls back if the tree breaks : a config that fails validation never replaces a live one. The block-side gate is the point: push refuses to run unless the checks pin carries a PASSING nginxsite_check result for every node in ITS OWN nodes list, for this site, with a checksum matching these exact bytes. A validation failure anywhere leaves every node untouched, including the ones that would have accepted it. FLEET SHAPES: on a shared-filesystem fleet (live configs on a filesystem all nodes mount, watchers converging : the rual a-cluster LB trio is this shape) pass exactly ONE node here: the shared fs distributes, the other nodes' watchers validate and reload within seconds, and pushing the same bytes N times only reloads N times for one change. Check may and should still fan out to every node. On an independent fleet, list every node and read the per-node results. Past the gate the push is deliberately NOT atomic across nodes: each node validates and swaps on its own, and a node that refuses keeps serving what it had. nginxsite_status answers whether the fleet agrees afterwards.
- In pins: `flow` (flow), `site` (value, required), `config` (value, required), `nodes` (array, required), `checks` (array, required)
- Out pins: `flow` (flow), `success` (condition), `site` (value), `results` (array), `applied_count` (number), `node_count` (number), `checksum` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/nginx/nginxsite_push.md

### load balancer fleet status (`nginxsite_status`)

- Group: nginx / Load balancers
- Ask every load balancer what it serves and whether the fleet agrees with itself. Reads only.
- Semantics: Asks every load balancer in the nodes list for its status (nginx active?, which sites, which applied-state stamp) and reports per node plus a fleet verdict. Reads only : nothing is written or reloaded. in_sync is deliberately strict: true only when every node answered, every nginx is active, and all nodes report the same applied stamp and the same site list. A node that cannot be reached makes the fleet out of sync by definition : 'two of three agree and the third is silent' is exactly the state a dashboard must show, not average away. sites is the union across nodes; per-node lists are in results. This is the read half the management dashboard builds its view on: list sites from here, edit a config, nginxsite_check it everywhere, nginxsite_push it, then read this again to confirm convergence.
- In pins: `flow` (flow), `nodes` (array, required)
- Out pins: `flow` (flow), `success` (condition), `results` (array), `in_sync` (condition), `sites` (array), `reachable_count` (number), `node_count` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/nginx/nginxsite_status.md

## number

### autoincrement (`number_autoincrement_v2`)

- Semantics: Atomically increments a Redis-backed counter named by the key pin (namespaced per entity, with a separate counter for simulation runs) and outputs the new integer value. When the counter is missing or below initial_number it is first reset to initial_number (clamped to = 0) and then incremented, so the first call outputs initial_number + 1. Outputs 0 when key is empty or Redis is unavailable; a wired expiry pin sets the counter TTL in seconds.
- In pins: `key` (value), `initial_number` (number), `expiry` (date)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_autoincrement_v2.md

### get bearing between points (`number_bearing_between_geopoints`)

- Group: number / geo
- Returns the initial bearing to travel along a geodesic between two points, using Vincenty inverse solution.
- Semantics: Outputs the rhumb line (constant) bearing from geo_point_from to geo_point_to in degrees, normalized to 0-360. Missing or non-numeric lat/lon fields count as 0 instead of failing. Example: from {lat:0,lon:0} to {lat:1,lon:0} - 0 (due north).
- In pins: `geo_point_from` (geo_point, required), `geo_point_to` (geo_point, required)
- Out pins: `bearing` (number)
- Page: https://docs.rual.nl/block-types/number/number_bearing_between_geopoints.md

### if (`number_branch`)

- Group: number / number: conditions
- Semantics: Outputs the then pin when the condition pin evaluated true, otherwise the else pin; which input is read is pre-selected by the engine before this block runs. The chosen value passes through unchanged (no coercion), and no selection means nil. Example: condition=true then=5 else=9 - 5.
- In pins: `then` (number), `else` (number), `condition` (condition)
- Out pins: `number` (number)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [if](https://docs.rual.nl/block-types/number/number_branch.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_branch.md

### number (`number_default`)

- Group: number / custom
- Generates a valid number from the filled custom value in the blueprint.
- Semantics: Outputs the block's statically configured default value as a number. A numeric string or boolean coerces (true=1); a missing or non-numeric configured value outputs nil. This block has no input pins.
- Out pins: `number` (number)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (out), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_default.md

### define number (`number_define_reference`)

- Group: number / references
- Store this number as reference, which can later be used by "use reference"
- In pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_define_reference.md

### elseif (`number_elseif`)

- Group: number / number: conditions
- Semantics: Outputs the then pin of the first elseif condition that evaluated true, or the default pin when none did; which input is read is pre-selected by the engine before this block runs. The chosen value passes through unchanged, and no selection means nil.
- In pins: `default` (number), `elseif` (condition), `then` (number)
- Out pins: `number` (number)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/users/user_field_getter_multiple.md) (in), [<=](https://docs.rual.nl/block-types/condition/condition_lte.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_elseif.md

### GB in bytes (`number_gb_to_bytes`)

- Group: number / bytes
- Converts an amount of gigabytes (GB) to bytes. Binary/1024-based: 1 GB = 1,073,741,824 bytes.
- Semantics: Outputs the number pin (gigabytes) multiplied by 1,073,741,824 : binary/1024-based, so 1 GB = 1024^3 bytes, not the SI 10^9. Numeric strings and booleans coerce; an unwired, nil, or non-numeric input outputs nil. Example: number=2 - 2147483648.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_gb_to_bytes.md

### get distance (`number_geo_get_distance`)

- Group: number / geo
- Returns the difference in meters between two geo points.
- Semantics: Outputs the great-circle (haversine) distance between the two points in meters, rounded UP to the next whole meter (earth radius 6,371,000 m). Reads geo_start_point/geo_end_point when wired, otherwise the deprecated start_point/end_point objects (latitude/longitude or lat/lon keys); missing or non-numeric coordinates count as 0, and the accuracy pin is ignored. Example: identical points - 0.
- In pins: `geo_start_point` (geo_point, required), `geo_end_point` (geo_point, required), `accuracy` (number)
- Out pins: `meters` (number)
- Page: https://docs.rual.nl/block-types/number/number_geo_get_distance.md

### largest (`number_largest`)

- Returns the largest number of all numbers provided.
- Semantics: Outputs the larger of number_0 and number_1. Numeric strings and booleans coerce; when exactly one pin is unwired, nil, or non-numeric the other passes through unchanged, and when both are invalid the output is nil. Example: number_0="3" number_1=7 - 7.
- In pins: `number_0` (number), `number_1` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_largest.md

### logical or (`number_logical_or`)

- Group: number / expressions
- will return the second number if the first is empty.
- Semantics: Outputs the first pin unless it is numerically falsy (exactly nil, 0, or NaN), in which case the second pin, then the first non-falsy number_extended_* pin when extended pins exist. Only numbers can be falsy: strings and booleans : even "" or false : are never treated as empty and pass through unchanged. Example: first=0 second=42 - 42; first="" second=42 - "".
- In pins: `first` (number, required), `second` (number, required)
- Out pins: `number` (number)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [>=](https://docs.rual.nl/block-types/condition/condition_gte.md) (out), [plus hours](https://docs.rual.nl/block-types/date/date_add_hours.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_logical_or.md

### MB in bytes (`number_mb_to_bytes`)

- Group: number / bytes
- Converts an amount of megabytes (MB) to bytes. Binary/1024-based: 1 MB = 1,048,576 bytes.
- Semantics: Outputs the number pin (megabytes) multiplied by 1,048,576 : binary/1024-based, so 1 MB = 1024^2 bytes, not the SI 10^6. Numeric strings and booleans coerce; an unwired, nil, or non-numeric input outputs nil. Example: number=1.5 - 1572864.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_mb_to_bytes.md

### median (`number_median`)

- Group: number / parse
- Semantics: Outputs the median of the array pin: sorts the numeric items and takes the middle one, or the mean of the two middle items for an even count. Only actual numbers count : numeric strings and booleans are silently dropped : and an unwired, empty, or numberless array outputs nil. Example: [1,"2",9,4] - 4 (the string is ignored).
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_median.md

### mode (`number_mode`)

- Group: number / parse
- Semantics: Outputs the most frequently occurring number in the array pin; on a tie the value that appeared first in the array wins. Only actual numbers count : numeric strings and booleans are ignored : and an unwired, empty, or numberless array outputs nil. Example: [3,1,3,1] - 3 (tie, 3 occurred first).
- In pins: `array` (array)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_mode.md

### invert (`number_negation`)

- Turns a positive number into a negative one and a negative into a positive
- Semantics: Outputs the number pin multiplied by -1, flipping its sign. Numeric strings and booleans coerce (true becomes -1); an unwired, nil, or non-numeric input outputs nil. Example: number="-4" - 4.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_negation.md

### one day (`number_one_day`)

- Group: number / ttl
- Returns one day in seconds as a number.
- Semantics: Always outputs the fixed constant 86400: one day expressed in seconds. No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Commonly used with: [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_one_day.md

### one hour (`number_one_hour`)

- Group: number / ttl
- Returns one hour in seconds as a number.
- Semantics: Always outputs the fixed constant 3600: one hour expressed in seconds. No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Commonly used with: [claim lock](https://docs.rual.nl/block-types/locking/function_claim_lock_v2.md) (out), [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (out), [request password forgot token](https://docs.rual.nl/block-types/users/function_user_request_password_reset_token.md) (out), [x](https://docs.rual.nl/block-types/math/number_times.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_one_hour.md

### one minute (`number_one_minute`)

- Group: number / ttl
- Returns one minute in seconds as a number.
- Semantics: Always outputs the fixed constant 60: one minute expressed in seconds. No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Commonly used with: [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (out), [x](https://docs.rual.nl/block-types/math/number_times.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_one_minute.md

### one month (`number_one_month`)

- Group: number / ttl
- Returns one average month in seconds as a number.
- Semantics: Always outputs the fixed constant 2630000: one average month in seconds (about 30.44 days : an average, not a calendar month). No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Commonly used with: [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_one_month.md

### one quarter (`number_one_quarter`)

- Group: number / ttl
- Returns one average quarter in seconds as a number.
- Semantics: Always outputs the fixed constant 7889400: one quarter in seconds (91.3125 days, a quarter of a 365.25-day year). No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_one_quarter.md

### one week (`number_one_week`)

- Group: number / ttl
- Returns one week in seconds as a number.
- Semantics: Always outputs the fixed constant 604800: one week expressed in seconds (7 days). No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_one_week.md

### one year (`number_one_year`)

- Group: number / ttl
- Returns one average year in seconds as a number.
- Semantics: Always outputs the fixed constant 31536000: one year in seconds (exactly 365 days, not 365.25). No inputs; the value never changes between runs.
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_one_year.md

### pad end (`number_pad_end`)

- Group: number / value: actions
- Pads the given number with char. on the right to match the given length.
- Semantics: Outputs the number pin as a string, right-padded with the char pin until it reaches length characters; values already at or above length pass through unchanged. The number is stringified as-is without numeric validation (nil becomes "0"), char defaults to "0", and an empty char pads with spaces. Example: number=42 length=5 char="0" - "42000".
- In pins: `number` (number), `length` (number, required), `char` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/number/number_pad_end.md

### parseFloat (`number_parsefloat`)

- Group: number / parse
- Semantics: Parses the value pin like JavaScript parseFloat: numbers and booleans pass through (true=1), and strings are parsed from their longest leading numeric prefix, so trailing junk is ignored. On success outputs the parsed number plus condition/success true; on failure (no leading digits) outputs condition/success false and leaves the number pin unwritten. Example: value=" 3.5kg" - 3.5 with success=true; value="kg" - success=false.
- In pins: `value` (value)
- Out pins: `number` (number), `success` (condition)
- Page: https://docs.rual.nl/block-types/number/number_parsefloat.md

### parseInt (`number_parseint`)

- Group: number / parse
- Semantics: Parses the value pin like JavaScript parseInt(value, radix): skips leading whitespace and an optional sign, then consumes the longest run of digits valid in the radix (default 10; a 0x prefix forces 16), stopping at the first invalid character instead of failing. radix must be 0 or 2-36; when no digits parse, success is false and the number pin is left unwritten. Example: value="12abc" radix=10 - 12; value="0xff" - 255.
- In pins: `value` (value), `radix` (number)
- Out pins: `number` (number), `success` (condition)
- Page: https://docs.rual.nl/block-types/number/number_parseint.md

### pearson correlation (`number_pearson_correlation`)

- Group: number / math
- Returns the square root of a given positive number.
- Semantics: Outputs the Pearson correlation coefficient between dataset_1 and dataset_2 (1 = perfect positive linear correlation, -1 = perfect negative). Items coerce per number rules (numeric strings and booleans count, other values are dropped) and both datasets are truncated to the shorter filtered length before pairing. Outputs 0 when either dataset ends up empty or has zero variance. Example: [1,2,3] vs [2,4,6] - 1.
- In pins: `dataset_1` (array, required), `dataset_2` (array, required)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_pearson_correlation.md

### random number (`number_random`)

- Generates a random number.
- Semantics: Outputs a cryptographically secure random integer from 0 up to but not including 99,999,999 (so 0-99,999,998). No inputs; produces no value during precompile.
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_random.md

### random between (`number_random_between`)

- Generates a random number between, including, the given two numbers. This number will be an integer (e.g. 1, 2, 3) without decimals.
- Semantics: Outputs a cryptographically secure random integer between number_0 (min) and number_1 (max), both bounds inclusive, with condition=true. Both bounds must be valid integers (numeric strings and booleans coerce): an invalid or non-integer bound outputs number=nil, condition=false, and an error message on the value pin, and max one of 1,2,3,4,5,6.
- In pins: `number_0` (number, required), `number_1` (number, required)
- Out pins: `number` (number), `condition` (condition), `value` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get at index](https://docs.rual.nl/block-types/array/array_get_at_index.md) (out)
- Page: https://docs.rual.nl/block-types/number/number_random_between.md

### square root (`number_sqrt`)

- Group: number / math
- Returns the square root of a given positive number.
- Semantics: Outputs the square root of the number pin. Numeric strings and booleans coerce; unwired, nil, non-numeric, or negative inputs output nil (an input of 0 yields 0). Example: number="9" - 3.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_sqrt.md

### switch (`number_switch`)

- Returns a number based of the given expression.
- Semantics: Outputs the number pin of the case matching the value/expression pin, with matched=true; when no case matches it outputs the default pin with matched=false. Case selection is pre-computed by the engine before this block runs, values pass through without coercion, and with no selection at all the output is number=nil, matched=false.
- In pins: `value` (value), `default` (number)
- Out pins: `number` (number), `matched` (condition)
- Page: https://docs.rual.nl/block-types/number/number_switch.md

### TB in bytes (`number_tb_to_bytes`)

- Group: number / bytes
- Converts an amount of terabytes (TB) to bytes. Binary/1024-based: 1 TB = 1,099,511,627,776 bytes.
- Semantics: Outputs the number pin (terabytes) multiplied by 1,099,511,627,776 : binary/1024-based, so 1 TB = 1024^4 bytes, not the SI 10^12. Numeric strings and booleans coerce; an unwired, nil, or non-numeric input outputs nil. Example: number=3 - 3298534883328.
- In pins: `number` (number)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_tb_to_bytes.md

### convert to hex (`number_to_hex`)

- Group: number / hexadecimals
- Returns a hexadecimal based of the given number.
- Semantics: Outputs the number pin as a hexadecimal string using JS Number coercion: numeric strings parse (including 0x/0o/0b prefixes), booleans count as 1/0, nil and empty strings count as 0, and non-numeric values yield the string "NaN". Non-integer values get a hex fractional part. Writes nothing when the number pin is unwired. Example: number=255 - "ff"; number="0x10" - "10".
- In pins: `number` (number)
- Out pins: `hex` (value)
- Page: https://docs.rual.nl/block-types/number/number_to_hex.md

### use number (`number_use_reference`)

- Group: number / references
- Use the number which was previously defined by a define reference
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/number/number_use_reference.md

### pad start (`number_zpad`)

- Group: number / value: actions
- Pads the given number with char. on the left to match the given length.
- Semantics: Outputs the number pin as a string, left-padded with the char pin until it reaches length characters; values already at or above length pass through unchanged. The number is stringified as-is without numeric validation (nil becomes "0"), char defaults to "0", and an empty char pads with spaces. Example: number=42 length=5 char="0" - "00042".
- In pins: `number` (number), `length` (number, required), `char` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/number/number_zpad.md

### format number language-sensitive (`value_number_format`)

- Group: number / value
- Formats a number in compact notation with K/M/B/T suffixes. The output is always en-US; the language pin is not read by the implementation.
- Semantics: Formats the number in en-US COMPACT notation with about 2 significant digits and K/M/B/T suffixes; the language pin is IGNORED by the implementation, so output is not locale-sensitive despite the label. Non-numeric input outputs "". Example: 12600 - "13K", 1200 - "1.2K".
- In pins: `number` (number, required), `language` (value)
- Out pins: `output` (value)
- Page: https://docs.rual.nl/block-types/number/value_number_format.md

## object

### if (`object_branch`)

- Group: object / object: conditions
- Semantics: Data selector: outputs the then input when the condition resolves exactly boolean true, otherwise the else input; a nil chosen input becomes {}. Only the chosen side's pure-data producer chain is evaluated -- the losing side is never resolved. Does not gate flow; it picks between two already-wired object values.
- In pins: `then` (object), `else` (object), `condition` (condition)
- Out pins: `object` (object)
- Commonly used with: [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (in), [merge objects](https://docs.rual.nl/block-types/object/object_merge_objects.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_branch.md

### custom field exists (`object_custom_field_exists`)

- Group: object / get
- check if custom field exists with a custom value block, or dynamic value
- Semantics: Outputs condition=true only when the field's dot path EXISTS in the object AND its value is not null -- a key present with a null value reads as NOT existing. The field name comes from the block's selected field, else the value pin. Outputs false when the input is not an object or the field name is empty.
- In pins: `object` (object), `value` (value)
- Out pins: `condition` (condition)
- Commonly used with: [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_custom_field_exists.md

### deep-copy object (`object_deep_copy`)

- Group: object / create
- Builds a new object from the given object, removing deep references. This function has performance impact on wide-spread use.
- Semantics: Returns a DEEP copy via JSON round-trip: the output shares NO references with the input, and values are normalized to JSON shapes (dates become strings, all numbers become floats); non-serializable input yields {}. Empty or missing input yields {}. The input object is never modified.
- In pins: `object` (object, required)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_deep_copy.md

### define object (`object_define_reference`)

- Group: object / references
- Store this object as reference, which can later be used by "use reference"
- In pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_define_reference.md

### generate ekt object (`object_ekt_input`)

- Group: object / edifact
- Generates an EKT object for the edifact EKT formatter
- Semantics: Bundles the values of all connected in-pins verbatim into one object keyed by pin id; nil pins are omitted and dates are formatted as ISO 8601 strings. Performs no EDIFACT encoding itself -- the output feeds the EKT formatter downstream.
- In pins: `test` (condition), `date` (date), `sender_name` (value, required), `sender_gln` (value, required), `receiver_name` (value, required), `unique_id` (value, required), `buyer_identification_code` (value, required), `auction_code` (value, required), `seller_gln` (value, required), `lines` (array, required)
- Out pins: `ektinput` (object)
- Page: https://docs.rual.nl/block-types/object/object_ekt_input.md

### ekt line (`object_ekt_line`)

- Group: object / edifact
- Generates a line object for in the EKT Object
- Semantics: Bundles the values of all connected in-pins verbatim into one line object keyed by pin id; nil pins are omitted and dates are formatted as ISO 8601 strings. Performs no validation or EDIFACT encoding itself.
- In pins: `date` (date), `product_name` (value), `product_code` (value), `supplier_code` (value, required), `single_transaction_sequence_number` (value, required), `clock_number` (value), `auction_sequence_number` (value, required), `batch_number` (value), `order_number_seller` (value), `order_number_buyer` (value), `quantity_units` (number, required), `quantity_per_unit` (number, required), `price` (number, required), `packaging_code` (value), `descriptions` (array), `purchaser_number` (value), `seat_number` (value), `picture_url` (value), `fs_fotourl` (value)
- Out pins: `ektline` (object)
- Page: https://docs.rual.nl/block-types/object/object_ekt_line.md

### elseif (`object_elseif`)

- Group: object / object: conditions
- Semantics: Data selector: outputs the then input paired with the FIRST elseif condition (in pin order) that resolves exactly boolean true; when none is true, outputs the default input. A nil winning input becomes {}. Only the winning input's pure-data producer chain is evaluated.
- In pins: `default` (object), `elseif` (condition), `then` (object)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_elseif.md

### empty object (`object_empty`)

- Semantics: Outputs a NEW empty object {} on every evaluation. Takes no inputs.
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_empty.md

### fields exist (`object_field_exists_multiple`)

- Group: object / get
- Semantics: Emits one boolean out-pin per selected field, named after the field: true only when the dot path EXISTS in the object AND the value is not null -- a key present with a null value reads as NOT existing. A missing or non-object input makes every out-pin false.
- In pins: `object` (object)
- Commonly used with: [if](https://docs.rual.nl/block-types/mutations/mutations_branch.md) (out), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [get body](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body.md) (in), [get query](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_query.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_field_exists_multiple.md

### get fields (`object_field_getter_multiple`)

- Gets the selected fields from the given object.
- Semantics: Emits one out-pin per selected field with the value at that dot path, coerced to the pin's chosen type (numbers parsed from strings, conditions via JS truthiness, dates from unix seconds; value pins pass the raw value through unconverted). Missing or null paths emit nil, never type-zero defaults. With convert_type=true, value pins additionally stringify non-string sources (objects/arrays as JSON).
- In pins: `object` (object, required), `convert_type` (condition)
- Commonly used with: [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (both), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_field_getter_multiple.md

### deep-copy & update object (`object_field_setter_multiple`)

- Group: object / create
- Makes a deep-copy of the given object, builds a new object filled with the given fields or mutations. This function has performance impact on wide-spread use.
- Semantics: DEEP-copies the input object (JSON round-trip), sets each connected field pin at its dot path with type coercion, then applies the mutations pin LAST -- a mutation on the same path WINS over a field pin. The input object is NOT modified; missing input starts from {}. A connected field pin resolving null writes that type's default (0, false, {}).
- In pins: `object` (object), `mutations` (mutations)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_field_setter_multiple.md

### selected fields to mutations (`object_field_to_mutations`)

- Gets the selected fields from the given object and returns a fresh mutations from it.
- Semantics: Emits one set.field mutation per selected field, with the value read at that dot path from the object. Fields whose path is missing still emit a mutation with a null value -- they are NOT skipped, so applying the result can overwrite existing data with null. Reads only; nothing is modified.
- In pins: `object` (object, required)
- Out pins: `mutations` (mutations, required)
- Commonly used with: [get body](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body.md) (in), [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (out), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_field_to_mutations.md

### parse xml (`object_from_xml_v2`)

- Group: object / Object
- Parses an XML string into an object with XML attributed data
- Semantics: Parses XML into an xml2js-shaped object: child elements are wrapped in ARRAYS, attributes sit under '$', mixed text under '_', and text-only elements collapse to plain strings. Example: x - {a:{$:{b:"1"},c:["x"]}}. On parse failure or empty input: success=false, error carries the message, object={}.
- In pins: `xml` (value, required), `normalize` (condition), `stripprefix` (condition), `parsenumbers` (condition), `parsebooleans` (condition)
- Out pins: `object` (object), `condition` (condition), `value` (value)
- Page: https://docs.rual.nl/block-types/object/object_from_xml_v2.md

### find nearest from given point (`object_geo_find_nearest_point`)

- Group: object / geo
- Semantics: Returns the element of points closest to from_point by haversine great-circle distance, as the ORIGINAL array element (not a copy). Entries without numeric latitude/longitude keys are skipped. Outputs nil when from_point is missing or has non-numeric coordinates, or points is empty. The distance itself is not output.
- In pins: `from_point` (object), `points` (array)
- Out pins: `point` (object)
- Page: https://docs.rual.nl/block-types/object/object_geo_find_nearest_point.md

### select custom fields from (`object_get_by_custom_fields`)

- Returns an object with the given fields only
- Semantics: Builds a NEW object containing only the dot paths listed in fields, preserving nesting. Example: fields ["a.b"] on {a:{b:1,c:2}} - {a:{b:1}}. Missing paths are omitted (no nulls). Empty fields list or non-object input yields {}. Values are copied by REFERENCE; the input is not modified.
- In pins: `fields` (array, required), `object` (object)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_get_by_custom_fields.md

### select fields from (`object_get_by_fields`)

- select one or multiple fields existing in the object, and only pass those values
- Semantics: Builds a NEW object containing only the selected fields' dot paths, preserving nesting; fields come from the block's field selector (or the fielddefinitions pin as fallback). Missing paths are omitted (no nulls). Non-object input yields {}. Values are copied by REFERENCE; the input is not modified.
- In pins: `fielddefinitions` (fielddefinitions), `object` (object)
- Out pins: `object` (object)
- Commonly used with: [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_get_by_fields.md

### remove fields from (`object_get_by_fields_filter`)

- remove one or multiple fields existing in the object, and only pass the remaining values
- Semantics: REMOVES the selected fields: outputs a DEEP copy (JSON round-trip) of the input with each selected dot path DELETED, keeping everything else. The opposite of select-fields -- the selected fields are what disappears. The input object is not modified; non-object input yields {}.
- In pins: `object` (object)
- Out pins: `object` (object)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in), [sign in](https://docs.rual.nl/block-types/users/function_user_signin.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_get_by_fields_filter.md

### custom field (`object_get_custom_field`)

- Group: object / get
- get the value of a custom field with a custom value block, or dynamic value
- Semantics: Reads the value at the field dot path and emits it on the single out-pin whose type was chosen, coerced to that type (numbers parsed from strings, conditions via JS truthiness, dates from unix seconds; value pins raw). Missing or null paths yield nil on actions created after 2025-12-29, but type-zero defaults (0, false, [], {}, current time for date) on older actions.
- In pins: `object` (object), `field` (value)
- Out pins: `condition` (condition), `value` (value), `number` (number), `date` (date), `array` (array), `object` (object), `file` (file)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get first item](https://docs.rual.nl/block-types/array/array_first_item.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_get_custom_field.md

### custom first defined (`object_get_custom_first_defined`)

- Group: object / get
- Get the value at the first of the given paths that exists in the object and is not null
- Semantics: Returns the value at the FIRST dot path in the array pin (tried in array order) that exists in the object with a non-null value; null-valued paths are skipped, not returned. Outputs nil when no path matches, the paths list is empty, or the input is not an object.
- In pins: `object` (object, required), `array` (array, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/object/object_get_custom_first_defined.md

### get first filled field (`object_get_filled_by_field`)

- get the first filled field
- Semantics: Returns the value at the first selected field (in selector order) whose dot path exists in the object with a non-null value; null-valued fields are skipped. Outputs nil when no field matches. 'Filled' means non-null only -- empty strings, 0, false and {} all count as filled.
- In pins: `object` (object)
- Out pins: `output` (value)
- Page: https://docs.rual.nl/block-types/object/object_get_filled_by_field.md

### get guid (`object_get_guid`)

- Returns the guid (field: _meta.guid) of the given object
- Semantics: Returns the document guid read literally from _meta.guid of the given object; outputs nil when the object or its _meta is missing. No other field is consulted.
- In pins: `object` (object)
- Out pins: `value` (value)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [trigger event](https://docs.rual.nl/block-types/storage/storage_event.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_get_guid.md

### get keys (`object_get_keys`)

- Semantics: Outputs the object's TOP-LEVEL keys as an array, SORTED alphabetically -- not in insertion order. Non-object input yields []. Nested keys are not included.
- In pins: `object` (object)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/object/object_get_keys.md

### get values (`object_get_values`)

- Semantics: Outputs the object's TOP-LEVEL values as an array, ordered by their keys SORTED alphabetically -- not insertion order. Non-object input yields []. Values are references, not copies.
- In pins: `object` (object)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/object/object_get_values.md

### key -> value (`object_keyvalue`)

- Semantics: Outputs a single-entry object {key: value} where value is the FIRST connected typed pin that is non-null (false, 0 and "" are accepted; null and NaN are skipped) and the key is stringified. When no value or no key resolves, the out-pin is NOT written at all -- downstream consumers see their own defaults instead of {}.
- In pins: `key` (value), `value` (value), `number` (number), `object` (object), `condition` (condition), `array` (array)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_keyvalue.md

### get first filled (`object_logical_or`)

- Group: object / expressions
- will return the first non-empty object, checking first, then second, then any extended pins. Returns nothing when all of them are empty.
- Semantics: Returns the first input among first, second, then any extended pins whose value is a NON-EMPTY object; {} and non-object values are skipped as empty. When every input is empty the output is nil, NOT {}. Extended pins are checked in sorted pin-id order.
- In pins: `first` (object, required), `second` (object, required)
- Out pins: `object` (object)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (in), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_logical_or.md

### merge objects (`object_merge_objects`)

- Group: object / object actions
- Semantics: SHALLOW top-level merge: starts from a DEEP copy of the object pin, then copies the top-level keys of every connected object pin over it in pin order -- later pins WIN on duplicate keys, and nested objects are REPLACED whole, never merged recursively. Example: {a:{x:1}} merged with {a:{y:2}} - {a:{y:2}}. Non-object inputs are ignored; inputs are not modified.
- In pins: `object` (object)
- Out pins: `object` (object)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [if](https://docs.rual.nl/block-types/object/object_branch.md) (both), [select fields from](https://docs.rual.nl/block-types/object/object_get_by_fields.md) (both), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_merge_objects.md

### new object (`object_new_fields`)

- Group: object / create
- Builds a new object filled with the given fields.
- Semantics: Builds a NEW object from the block's field pins: each connected non-null pin writes its dot-path field with type coercion -- note value-type pins STRINGIFY their input (numbers arrive as strings), number pins parse to floats, dates become unix seconds. Null pins are skipped entirely. Dotted field ids create nested objects.
- Out pins: `object` (object)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (both)
- Page: https://docs.rual.nl/block-types/object/object_new_fields.md

### object from mutations (`object_new_mutations`)

- Group: object / create
- Builds a new object filled with the given mutations.
- Semantics: Applies the mutations array to a NEW empty object and outputs the result: set.field writes values (dotted keys nest), array.* mutations build arrays from nothing, number.increment/decrement start from 0. Mutations without a key are ignored. Nothing else is read or modified.
- In pins: `mutations` (mutations, required)
- Out pins: `object` (object)
- Commonly used with: [multiple](https://docs.rual.nl/block-types/mutations/mutations_add.md) (in), [set custom field](https://docs.rual.nl/block-types/mutations/mutations_set_custom_field.md) (both), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [add to custom array](https://docs.rual.nl/block-types/mutations/mutations_add_to_custom_array_non_unique.md) (out)
- Page: https://docs.rual.nl/block-types/object/object_new_mutations.md

### shallow-copy object (`object_shallow_copy`)

- Group: object / create
- Builds a new object from the given object, holding deep references (e.g. deep.key.field).
- Semantics: Returns a NEW object with the same top-level key/value pairs; nested objects and arrays remain SHARED references with the input, so mutating them downstream also mutates the original. Empty or missing input yields {}.
- In pins: `object` (object, required)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_shallow_copy.md

### stringify (`object_stringify_querystring`)

- Group: object / querystring
- Semantics: Encodes the object as key=value pairs joined by the separator, mirroring Node querystring.stringify: keys are SORTED alphabetically, array values repeat the key per element, and null or nested object values render as EMPTY strings (no JSON). Example: {a:[1,2],b:null} - "a=1&a=2&b=". success is always true.
- In pins: `object` (object, required), `separator` (value), `equal` (value)
- Out pins: `success` (condition), `querystring` (value)
- Page: https://docs.rual.nl/block-types/object/object_stringify_querystring.md

### switch (`object_switch`)

- Returns a object based of the given expression.
- Semantics: Data selector: stringifies the expression value and compares it for exact STRING equality against each case pin's label; outputs the matching case's object with matched=true, else the default input with matched=FALSE (default never counts as a match). No match and no default yields object=nil. Only the winning input's pure-data chain is evaluated.
- In pins: `value` (value), `default` (object)
- Out pins: `object` (object), `matched` (condition)
- Page: https://docs.rual.nl/block-types/object/object_switch.md

### update existing object (`object_update_fields`)

- Group: object / update
- Updates existing object with given fields.
- Semantics: MUTATES the input object IN PLACE and outputs the SAME reference -- every other holder of that object sees the changes. Applies the mutations pin FIRST, then writes the selected field pins with type coercion, so a field pin WINS over a mutation on the same path. Missing input starts from {}; a connected field pin resolving null writes that type's default (0, false, {}).
- In pins: `original_update_object` (object, required), `mutations_update_object` (mutations)
- Out pins: `object` (object)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in)
- Page: https://docs.rual.nl/block-types/object/object_update_fields.md

### use object (`object_use_reference`)

- Group: object / references
- Use the object which was previously defined by a define reference
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/object/object_use_reference.md

## openstreetmap

### world bbox (`osmworld_bbox`)

- Group: openstreetmap / world
- Fetch OSM world geometry for a bounding box (south,west,north,east) as GeoJSON (roads, buildings, water, greenery).
- In pins: `flow` (flow), `bbox` (value), `south` (number), `west` (number), `north` (number), `east` (number), `kinds` (object), `simplify` (number), `overpass_url` (value), `cache_ttl_seconds` (number)
- Out pins: `flow` (flow), `geojson` (object), `count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/openstreetmap/osmworld_bbox.md

### world tile (`osmworld_tile`)

- Group: openstreetmap / world
- Fetch OSM world geometry for a slippy-map tile (z/x/y) as GeoJSON (roads, buildings, water, greenery). Recommended zoom: 15. Geometry is simplified per zoom (buildings stay crisp at z&ge;15).
- In pins: `flow` (flow), `z` (number, required), `x` (number, required), `y` (number, required), `kinds` (object), `overpass_url` (value), `cache_ttl_seconds` (number)
- Out pins: `flow` (flow), `geojson` (object), `count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/openstreetmap/osmworld_tile.md

## pathfinding

### get weights (`function_pathfinding_get_weights`)

- In pins: `flow` (flow), `tiles` (array, required), `width` (number, required), `height` (number, required), `path` (array, required), `finder` (value), `finder_options` (object)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `weights` (array)
- Page: https://docs.rual.nl/block-types/pathfinding/function_pathfinding_get_weights.md

## payments

### apple: get subscription status (`function_appstore_get_subscription_status`)

- Group: payments / appstore
- Asks Apple what a subscription's state is right now, instead of believing what arrived in a notification. This is the authoritative read : use it when a notification was missed or arrived out of order, and whenever a client claims an entitlement.
- In pins: `flow` (flow), `original_transaction_id` (value, required), `issuer_id` (value, required), `key_id` (value, required), `private_key` (value, required), `bundle_id` (value, required), `sandbox` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `response` (object), `status` (number)
- Page: https://docs.rual.nl/block-types/payments/function_appstore_get_subscription_status.md

### apple: verify signed payload (`function_appstore_verify_signed_payload`)

- Group: payments / appstore
- Verifies an Apple-signed JWS : an App Store Server Notification's signedPayload, or the signedTransactionInfo / signedRenewalInfo nested inside one : and returns its claims. The signature is the only thing separating a real purchase from someone posting themselves a subscription, so nothing downstream should trust a payload this block did not pass.
- In pins: `flow` (flow), `signed_payload` (value, required), `root_certificate` (value, required), `bundle_id` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `payload` (object), `notification_type` (value), `subtype` (value), `bundle_id` (value), `environment` (value), `signed_transaction_info` (value), `signed_renewal_info` (value), `original_transaction_id` (value), `product_id` (value), `transaction_id` (value), `expires_date` (number), `revocation_date` (number)
- Page: https://docs.rual.nl/block-types/payments/function_appstore_verify_signed_payload.md

## places

### list place categories (`places_categories`)

- Group: places / Places
- Lists the curated category groups with their Dutch and English labels and synonyms : the block to build a category dropdown from. Overture ships roughly 1700 raw categories, which is far too many to show a user, so they are folded into a smaller curated set. Any group id or synonym listed here can be passed to the categories pin on the other blocks.
- In pins: `search` (value), `group` (value), `language` (value)
- Out pins: `groups` (array), `count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_categories.md

### places dataset info (`places_dataset_info`)

- Group: places / Places
- Reports which dataset this node is serving: the Overture release, the vocabulary version, and how many records and categories it holds. This is the one places block that answers when no dataset is loaded : that is its job, so check loaded rather than success. Worth surfacing in an admin view: the release string is what makes results reproducible and comparable between refreshes. Accuracy limits worth knowing: education categories overcount by roughly 6% against the official register, counts are indicative until conflation exists, and confidence is uncalibrated.
- Out pins: `loaded` (condition), `release` (value), `vocabulary_version` (value), `record_count` (number), `group_count` (number), `category_count` (number), `bbox` (object), `built_at` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_dataset_info.md

### place density (`places_density`)

- Group: places / Places
- Measures how built-up the area around a point is: how many places sit within the radius, the rate per km², a breakdown per category, and a classification (dense_urban, urban, suburban, rural). The classification is driven by the per-km² rate rather than the raw count, so it does not change when you change the radius. Data is Overture Maps Places.
- In pins: `geo_point` (geo_point, required), `radius_m` (number), `categories` (array)
- Out pins: `total` (number), `raw_total` (number), `per_km2` (number), `by_group` (object), `top_groups` (array), `classification` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_density.md

### enrich with nearby places (`places_enrich`)

- Group: places / Places
- Adds the nearest place per category to every item in a list, in one call : no iterator needed. The usual pipeline is: query your objects, run this block, then write the result back with a mutation. After that an ordinary range query filters on the stored distance, so no further lookups are needed. Each item gets {distance_m, name, id, count} per category under output path. Items are copied, never modified in place, and every item is returned whether or not it had a usable coordinate.
- In pins: `items` (array, required), `point_path` (value), `categories` (array, required), `max_distance` (number), `count_radius` (number), `include` (array), `output_path` (value)
- Out pins: `items` (array), `count` (number), `unresolved` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_enrich.md

### facet counts by places (`places_facet`)

- Group: places / Places
- Counts how many items in a list are near each category : &ldquo;412 objects near a hospital&rdquo; in one node. Counts items, not places: an item with three hospitals nearby counts once, which is what a facet over an inventory means. Pass categories with a shared radius, or filters for a named filter per facet.
- In pins: `items` (array, required), `point_path` (value), `categories` (array), `radius_m` (number), `filters` (object)
- Out pins: `counts` (object), `total` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_facet.md

### filter by places (`places_filter`)

- Group: places / Places
- Keeps or removes items from a list according to a places filter, without writing anything to a store. Feed it a filter from places_parse_query to turn typed text such as binnen 300m van een basisschool straight into a filtered list. Items with no usable coordinate cannot satisfy a spatial test, so they are treated as not matching.
- In pins: `items` (array, required), `point_path` (value), `filter` (object, required), `mode` (value), `annotate` (condition), `output_path` (value)
- Out pins: `items` (array), `count` (number), `removed_count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_filter.md

### get place by id (`places_get`)

- Group: places / Places
- Looks up a single place by its Overture id : the block for re-resolving an id you stored earlier. Not finding it is a successful lookup with found false, not an error: an id can disappear between dataset releases, so branch on found rather than on success. Ids are opaque; do not parse them.
- In pins: `id` (value, required)
- Out pins: `place` (object), `found` (condition), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_get.md

### place here (`places_here`)

- Group: places / Places
- Resolves the place a coordinate is at, rather than the record nearest to it. Two things separate it from places_nearest. It ignores records that are not places you can be at : at Madurodam the restaurant inside it is a metre nearer than the park, and the park is still the answer. And it recognises being inside something: a point in the middle of the Efteling has a snack bar four metres away and the park's own record half a kilometre off at the entrance, so the answer is the park. That is inferred from the park's own attractions surrounding you, because Overture Places has points and no boundaries; kind tells you which way the answer was reached, and a point with nothing prominent around it honestly answers none rather than reaching for the nearest landmark it can find.
- In pins: `geo_point` (geo_point, required), `near_radius` (number), `categories` (array), `min_confidence` (number)
- Out pins: `place` (object), `name` (value), `kind` (value), `distance_m` (number), `is_landmark` (condition), `nearest` (object), `area` (object), `area_group` (value), `area_count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_here.md

### places in bounding box (`places_in_bbox`)

- Group: places / Places
- Returns every point of interest inside a bounding box : the block for rendering what is currently on screen. Results carry no distance, because a bounding box has no query point; use places_nearest when you need distances. Data is Overture Maps Places.
- In pins: `north_east` (geo_point, required), `south_west` (geo_point, required), `categories` (array), `limit` (number), `min_confidence` (number), `dedup` (condition)
- Out pins: `results` (array), `count` (number), `raw_count` (number), `truncated` (condition), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_in_bbox.md

### match places filter (`places_match`)

- Group: places / Places
- Tests one geo point against a places filter, normally one from places_parse_query. distance_m and count come back whether or not the filter matched, so you can re-answer any radius question from the result without calling again : which is what lets a radius slider move without a round trip. reason is a readable Dutch explanation you can show to the user.
- In pins: `geo_point` (geo_point, required), `filter` (object, required), `max_distance` (number)
- Out pins: `matches` (condition), `distance_m` (number), `count` (number), `nearest` (object), `reason` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_match.md

### nearest places (`places_nearest`)

- Group: places / Places
- Finds the nearest points of interest to a geo point, ordered by distance, with the distance to each in metres. Leave max distance empty for an unbounded search : because you get distances back rather than a yes/no, you can apply any radius afterwards without querying again, which is what makes a free-choice radius slider possible. Data is Overture Maps Places; see places_dataset_info for the release, and note that counts are indicative rather than a register.
- In pins: `geo_point` (geo_point, required), `categories` (array), `max_results` (number), `max_distance` (number), `min_confidence` (number), `dedup` (condition)
- Out pins: `results` (array), `nearest` (object), `nearest_distance_m` (number), `count` (number), `success` (condition), `error` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [array with values](https://docs.rual.nl/block-types/array/array_values_default.md) (in), [get lat / lon](https://docs.rual.nl/block-types/geopoint/geo_point_to_lat_lng.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/places/places_nearest.md

### parse places query (`places_parse_query`)

- Group: places / Places
- Turns typed Dutch or English into a structured filter. binnen 300m van een basisschool becomes a proximity filter; niet bij scholen becomes a negated one; minimaal 3 kroegen binnen 500m carries a minimum count; wijk Jordaan and Station Breda resolve to a location. Feed filter into places_match, places_filter or places_facet. Parsing is rule-based and deterministic : no model call and no network. It never guesses silently: anything it could not read comes back in unparsed with a lower confidence, so you can fall back to plain search instead of acting on a half-understood filter.
- In pins: `query` (value, required), `language` (value), `default_radius_m` (number), `near` (geo_point)
- Out pins: `kind` (value), `filter` (object), `negated` (condition), `category_group` (value), `category_label` (value), `radius_m` (number), `min_count` (number), `geo_point` (geo_point), `place_name` (value), `confidence` (number), `unparsed` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_parse_query.md

### resolve place category (`places_resolve_category`)

- Group: places / Places
- Resolves free text such as kroeg, basisschool or supermarkt to a category group id. Regular plurals are handled, so kroegen and bars work without being listed. When a word spans several groups : school is the obvious case : the alternatives are returned rather than one being picked silently, because only you know which was meant.
- In pins: `text` (value, required), `language` (value)
- Out pins: `group` (value), `label` (value), `confidence` (number), `alternatives` (array), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_resolve_category.md

### search places (`places_search`)

- Group: places / Places
- One search box over both points of interest and settlements, with a single ranking across the two. Handles accents (Bréda finds Breda), typos (amsterdm centraal), partial words as you type, and collapses duplicate records for the same real place. Settlements outrank businesses, so Breda resolves to the municipality rather than to one of the ~2000 business names containing it. Pass near to bias results towards the current viewport. Each result carries kind, subtitle and score, so a dropdown renders straight from them.
- In pins: `query` (value, required), `near` (geo_point), `bias_radius_m` (number), `kinds` (array), `categories` (array), `limit` (number), `typo_tolerance` (number), `min_confidence` (number), `dedup` (condition)
- Out pins: `results` (array), `best` (object), `count` (number), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_search.md

### places within radius (`places_within`)

- Group: places / Places
- Returns every point of interest inside a radius, nearest first. Reports both count and raw_count: Overture is not conflated, so the gap between them is how much duplication the source data carries at this spot. Treat count as a deduplicated search result, not a census : train_station totals 1,432 nationally against roughly 400 real stations. Data is Overture Maps Places.
- In pins: `geo_point` (geo_point, required), `radius_m` (number, required), `categories` (array), `limit` (number), `sort` (value), `min_confidence` (number), `dedup` (condition)
- Out pins: `results` (array), `count` (number), `raw_count` (number), `truncated` (condition), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/places/places_within.md

## postmark

### get bounce (`postmarkconnection_get_bounce`)

- retrieves data of a single bounce.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_get_bounce.md

### get bounces (`postmarkconnection_get_bounces`)

- The bounces search allows you to return up-to 10,000 bounces in a search.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `count` (number), `offset` (number), `type` (value), `fromdate` (date), `todate` (date)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_get_bounces.md

### get deliverystats (`postmarkconnection_get_deliverystats`)

- all information regarding the deliverystats of this postmark-server.
- In pins: `flow` (flow), `connection` (postmarkconnection, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_get_deliverystats.md

### get inbound details (`postmarkconnection_get_inbound_details`)

- retrieves the details of an inbound message.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `id` (value, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_get_inbound_details.md

### get outbound details (`postmarkconnection_get_outbound_details`)

- retrieves the details of an outbound message.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `id` (value, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_get_outbound_details.md

### open connection (`postmarkconnection_open`)

- Opens a new postmark connection using the given API token.
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `connection` (postmarkconnection)
- Commonly used with: [send email](https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email.md) (out), [get setting](https://docs.rual.nl/block-types/system%20settings/value_get_system_key_select.md) (in), [send email with template](https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email_template.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_open.md

### send email (`postmarkconnection_send_email`)

- sends a single email.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `subject` (value, required), `from` (value, required), `reply_to` (value), `array_to` (array), `array_cc` (array), `array_bcc` (array), `html` (value, required), `text` (value), `file` (file), `track` (condition)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [open connection](https://docs.rual.nl/block-types/postmark/postmarkconnection_open.md) (in), [with values](https://docs.rual.nl/block-types/array/array_of_values.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email.md

### send email with template (`postmarkconnection_send_email_template`)

- sends a single email with a template.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `from` (value, required), `reply_to` (value), `array_to` (array), `array_cc` (array), `array_bcc` (array), `template_id` (value, required), `template_alias` (value, required), `template_model` (object, required), `file` (file), `track` (condition)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [open connection](https://docs.rual.nl/block-types/postmark/postmarkconnection_open.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email_template.md

### create suppressions (`postmarkconnection_suppression_create`)

- creates the specified suppressions.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `messagestream` (value, required), `suppressionentries` (array, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_suppression_create.md

### delete suppressions (`postmarkconnection_suppression_delete`)

- deletes the specified suppressions.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `messagestream` (value, required), `suppressionentries` (array, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_suppression_delete.md

### get suppressions (`postmarkconnection_suppression_get`)

- gets a dump of suppressions.
- In pins: `flow` (flow), `connection` (postmarkconnection, required), `messagestream` (value, required)
- Out pins: `flow` (flow), `connection` (postmarkconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark/postmarkconnection_suppression_get.md

## postmark account

### create domain (`postmarkaccountconnection_domains_create`)

- Adds a new domain to the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `name` (value, required), `return_path_domain` (value, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_create.md

### delete domain (`postmarkaccountconnection_domains_delete`)

- Deletes a domain in the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_delete.md

### edit domain (`postmarkaccountconnection_domains_edit`)

- Edits a domain in the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required), `return_path_domain` (value, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_edit.md

### get domain details (`postmarkaccountconnection_domains_get`)

- gets all the details for a specific domain.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_get.md

### list domains (`postmarkaccountconnection_domains_list`)

- gets a list of domains containing an overview of the domain and authentication status.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_list.md

### rotate domain dkim keys (`postmarkaccountconnection_domains_rotate_dkim`)

- Creates a new DKIM key to replace the current key.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_rotate_dkim.md

### verify domain dkim status (`postmarkaccountconnection_domains_verify_dkim`)

- Verifies the dkim status of a domain.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_verify_dkim.md

### verify domain return path status (`postmarkaccountconnection_domains_verify_return_path`)

- Verifies the return path status of a domain.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_verify_return_path.md

### verify domain spf status (`postmarkaccountconnection_domains_verify_spf`)

- Verifies the spf status of a domain.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_domains_verify_spf.md

### open connection (`postmarkaccountconnection_open`)

- Opens a new postmark account connection using the given account token.
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `connection` (postmarkaccountconnection)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_open.md

### create sender signature (`postmarkaccountconnection_sender_signatures_create`)

- Adds a new sender signature to the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `from_email` (value, required), `name` (value, required), `confirmation_personal_note` (value)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_create.md

### delete sender signature (`postmarkaccountconnection_sender_signatures_delete`)

- Deletes a sender signature in the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_delete.md

### edit sender signature (`postmarkaccountconnection_sender_signatures_edit`)

- Edits a sender signature in the postmark account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required), `name` (value, required), `confirmation_personal_note` (value)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_edit.md

### get sender signature details (`postmarkaccountconnection_sender_signatures_get`)

- gets all the details for a specific sender signature.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_get.md

### list sender signatures (`postmarkaccountconnection_sender_signatures_list`)

- gets a list of sender signatures containing brief details associated with your account.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_list.md

### resend sender signature confirmation (`postmarkaccountconnection_sender_signatures_resend_confirmation`)

- Resends the sender signature confirmation.
- In pins: `flow` (flow), `connection` (postmarkaccountconnection, required), `id` (number, required)
- Out pins: `flow` (flow), `connection` (postmarkaccountconnection), `condition` (condition), `value` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/postmark%20account/postmarkaccountconnection_sender_signatures_resend_confirmation.md

## printer

### oki file printer (`function_print`)

- Group: printer / print
- Sends print file to a local OKI printer for processing
- Semantics: POSTs each given file as a multipart form to http://{printer_ip}/printer/print.cgi (the OKI web-print interface) with the tray (default TRAY1) and copies (default 1), mimicking a browser upload. status outputs the HTTP status of the LAST file processed; every failure : empty printer IP, no files, unreadable file, a host refused by the SSRF guard, or a request error : leaves status nil. There is no success or error pin: a nil status is the only failure signal.
- In pins: `flow` (flow), `printer_ip` (value), `file` (file, required), `tray` (value, required), `copies` (number)
- Out pins: `flow` (flow), `status` (number)
- Page: https://docs.rual.nl/block-types/printer/function_print.md

### open connection (`ippconnection_open`)

- Group: printer / ipp
- In pins: `flow` (flow), `host` (value, required), `timeout` (number)
- Out pins: `flow` (flow), `connection` (ippconnection), `object` (object), `condition` (condition), `value` (value)
- Page: https://docs.rual.nl/block-types/printer/ippconnection_open.md

### print pdf (`ippconnection_print_pdf`)

- Group: printer / ipp
- In pins: `connection` (ippconnection), `file` (file, required), `operationoptions` (object), `joboptions` (object)
- Out pins: `connection` (ippconnection), `condition` (condition), `file` (file), `value` (value), `errors` (array)
- Page: https://docs.rual.nl/block-types/printer/ippconnection_print_pdf.md

## query

### aggregation (`query_aggregation`)

- Build an aggregation on the given query.
- Semantics: Builds an aggregation object {"aggs": {name: type-definition}}; an empty name pin or an unwired/nil type pin outputs an empty object {}. A non-nil meta pin is added as "meta" and a sub_agg object is deep-merged into the aggregation body. A filter object adds a sibling bucket_selector aggregation named "_filter" whose script joins one "params.keyName " condition per filter key (gt/lt/lte/gte); any other filter key falls through to a = comparison using the gte entry's value.
- In pins: `name` (value), `type` (aggregation), `sub_agg` (query), `filter` (query), `meta` (object)
- Out pins: `query` (query)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [cardinality](https://docs.rual.nl/block-types/aggregation/aggregation_type_cardinality_bp_field.md) (in), [terms](https://docs.rual.nl/block-types/aggregation/aggregation_type_terms_bp_field.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_aggregation.md

### multiple (`query_and`)

- Semantics: Deep-merges every wired query input into one query object; must, must_not, filter and should arrays are concatenated rather than overwritten, as are top-level exists and not_exists arrays, while all other keys merge recursively. Nil or non-object inputs are skipped; with nothing wired the output is an empty object {}, which matches everything.
- In pins: `query` (query), `query_0` (query)
- Out pins: `query` (query)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (in), [disable cache](https://docs.rual.nl/block-types/query/query_disabled_request_cache.md) (in), [sorting](https://docs.rual.nl/block-types/query/query_sort_field.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_and.md

### array should / or (`query_bool_custom_should`)

- One or all queries from array provided should match array based.
- Semantics: Builds {"bool": {"should": [...], "minimum_should_match": N}} from the added_array pin: every array item that is not already a {"bool": ...} object is wrapped in its own bool.must clause. The number pin sets minimum_should_match (unwired or nil = 1), so at least N of the array entries must match; an unwired or empty array yields an empty should list.
- In pins: `number` (number), `added_array` (array, required)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_custom_should.md

### field (`query_bool_exists_bpfield`)

- Group: query / query: exists
- checks if the given field exists in a document. Attention: Checking on a field which has 1024 sub-fields can cause a too_many_clauses exception
- Semantics: Emits {"exists": {"field": }}, matching documents where the selected field has any indexed value; the polarity (include vs exclude) comes from the parent must/must_not/filter/should block. Takes no inputs; an empty field binding becomes the number 0.
- Out pins: `query` (query)
- Commonly used with: [must not](https://docs.rual.nl/block-types/query/query_bool_must_not.md) (out), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_exists_bpfield.md

### custom field (`query_bool_exists_custom`)

- Group: query / query: exists
- checks if the given custom field exists in a document.
- Semantics: Emits {"exists": {"field": }}, matching documents where the named field has any indexed value; nest it under a must_not block to match documents where the field is absent instead. An unwired, nil, empty-string or otherwise falsy field pin is replaced by the number 0.
- In pins: `field` (value, required)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_exists_custom.md

### filter (`query_bool_filter`)

- Build a custom query using higher-level bool query.
- Semantics: Collects every wired query input into a bool.filter clause: {"bool": {"filter": [...]}} : every clause must match, but unlike must a filter clause does not affect relevance scoring. Arrays are flattened in; control fragments (fields, limit, offset, sort, count, ...) are hoisted to the top level of the output instead of being nested as clauses. With nothing wired the output is {"bool": {}}, which matches everything.
- In pins: `query` (query)
- Out pins: `query` (query)
- Commonly used with: [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [match with any](https://docs.rual.nl/block-types/query/query_terms_field.md) (in), [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_filter.md

### bounding box (`query_bool_geo_bounding_box`)

- Group: query / query: geo
- Matches geo_point values that intersect a bounding box
- Semantics: Emits a geo_bounding_box clause on the bound geo_point field, matching documents inside the rectangle between the top-left and bottom-right corners. Corners come from the tl_geo_point/br_geo_point pins when wired, otherwise from the tl_lat/tl_lon/br_lat/br_lon pins; every coordinate is coerced to a number (numeric strings parse, anything non-numeric or unwired becomes 0).
- In pins: `tl_lat` (number, required), `tl_lon` (number, required), `tl_geo_point` (geo_point, required), `br_lat` (number, required), `br_lon` (number, required), `br_geo_point` (geo_point, required)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_geo_bounding_box.md

### distance (`query_bool_geo_distance`)

- Group: query / query: geo
- checks if the given fields is within the given distance.
- Semantics: Emits a geo_distance clause on the bound geo_point field, matching documents within the given distance of the center point. The center comes from the geo_point pin when wired, otherwise from the lat/lon pins; missing or falsy coordinates default to 0 and a missing or falsy distance defaults to "1km". Field name falls back to the deprecated field pin when no field is bound.
- In pins: `distance` (value, required), `lat` (number, required), `lon` (number, required), `geo_point` (geo_point, required)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_geo_distance.md

### polygon (`query_bool_geo_polygon`)

- Group: query / query: geo
- Semantics: Emits a geo_polygon clause on the bound geo_point field, matching documents inside the polygon: {"geo_polygon": {field: {"points": points}}}. The points pin (array of lat/lon objects) is passed through verbatim; an unwired or nil points pin becomes an empty array, which matches nothing.
- In pins: `points` (array<object>, required)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_geo_polygon.md

### search as you type (`query_bool_match_phrase_prefix`)

- Group: query / query: prefix
- Matches documents whose field starts with the given phrase, analyzed on both sides. Use this for type-ahead: the last word is treated as a prefix and the input goes through the same analyzer as the stored text, so mssgs test matches MSSGS-Test-1. For an exact, unanalyzed prefix on a keyword field use starts with instead.
- Semantics: Emits a match_phrase_prefix clause on the bound field: the input is analyzed like the stored text and only the last word is treated as a prefix, the earlier words must match whole tokens in order. value defaults to "" and boost to 1; max_expansions and slop are only sent when the pin holds a positive integer (numeric strings parse), otherwise the Elasticsearch defaults apply (max_expansions 50).
- In pins: `value` (value), `max_expansions` (number), `slop` (number), `boost` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_match_phrase_prefix.md

### must (`query_bool_must`)

- All queries provided must match.
- Semantics: Collects every wired query input into a bool.must clause: {"bool": {"must": [...]}} : every clause must match and each contributes to relevance scoring. Arrays are flattened in; control fragments (fields, limit, offset, sort, count, ...) are hoisted to the top level of the output instead of being nested as clauses. With nothing wired the output is {"bool": {}}, which matches everything.
- In pins: `query` (query)
- Out pins: `query` (query)
- Commonly used with: [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [match with any](https://docs.rual.nl/block-types/query/query_terms_field.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_must.md

### must not (`query_bool_must_not`)

- All queries provided must not match.
- Semantics: Collects every wired query input into a bool.must_not clause: {"bool": {"must_not": [...]}} : this EXCLUDES: any document matching one of these clauses is removed from the result set, and matching clauses do not contribute to scoring. Arrays are flattened in; control fragments (fields, limit, offset, sort, count, ...) are hoisted to the top level. With nothing wired the output is {"bool": {}} and nothing is excluded.
- In pins: `query` (query)
- Out pins: `query` (query)
- Commonly used with: [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (in), [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [field](https://docs.rual.nl/block-types/query/query_bool_exists_bpfield.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_must_not.md

### value (`query_bool_prefix_string_field`)

- Group: query / query: prefix
- checks if the given field starts with the given value.
- Semantics: Emits a term-level prefix clause: the value is matched verbatim (not analyzed) against the START of the whole field value, so "test" matches a stored "Test-1" but never "latest". Value-typed fields target the .keyword sub-field with case_insensitive:true; a binding already ending in .keyword is used as-is. An unwired or falsy value becomes "" and boost defaults to 1.
- In pins: `value` (value), `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_prefix_string_field.md

### query string (`query_bool_query_string_field`)

- Semantics: Emits a query_string full-text clause over the selected fields; the search pin supports full Lucene syntax (wildcards, AND/OR, field scoping), and malformed syntax fails the whole search : for raw user input use simple query string instead. Fields are read from the fielddefinitions pin (entries without a non-empty field string are dropped); search defaults to "" and boost to 1. default_operator is "OR" unless the or pin holds a truthy value, which is then stringified into the operator.
- In pins: `fields` (fielddefinitions), `search` (value), `or` (value), `boost` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_query_string_field.md

### field between (`query_bool_range_date_between`)

- Group: query / range date
- Semantics: Emits a range-fragment object with "lte" and/or "gte" keys holding Unix-second timestamps, meant to feed a range date field block. Each side is included only when its pin holds a truthy value, so this is an INCLUSIVE between (both boundaries match); dates are converted to Unix seconds (unparseable values become 0) and with both pins unwired the output is an empty object {}.
- In pins: `date_gte` (date), `date_lte` (date)
- Out pins: `query` (query)
- Commonly used with: [set to: end of day](https://docs.rual.nl/block-types/date/date_endofday.md) (in), [set to: start of day](https://docs.rual.nl/block-types/date/date_startofday.md) (in), [date](https://docs.rual.nl/block-types/query/query_bool_range_date_field.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_between.md

### date (`query_bool_range_date_field`)

- Group: query / query: range
- do range checks on date fields.
- Semantics: Combines all wired inpin objects (the gt/gte/lt/lte/between/format fragments) into one range clause on the bound field: {"range": {field: {...merged..., "boost": B}}}, emitted on the query_out pin. Fragments are deep-merged and boost defaults to 1; when no fragment is wired (only boost) the block outputs nothing at all.
- In pins: `query_in` (query, required), `boost` (number)
- Out pins: `query_out` (query)
- Commonly used with: [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [field >= {value}](https://docs.rual.nl/block-types/query/query_bool_range_date_gte.md) (in), [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (out), [field < {value}](https://docs.rual.nl/block-types/query/query_bool_range_date_lt.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_field.md

### date format (`query_bool_range_date_format`)

- Group: query / query: range
- Semantics: Emits {"format": }, a range fragment telling the parent range block which date format the stored values use. An unwired, empty or otherwise falsy format pin becomes the number 0.
- In pins: `format` (value)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_format.md

### field > {value} (`query_bool_range_date_gt`)

- Group: query / range date
- Semantics: Emits {"gt": } : a range fragment meaning STRICTLY AFTER: the boundary date itself does not match. The date pin accepts timestamps and common date strings; an unwired or falsy pin uses the current time, an unparseable value becomes 0.
- In pins: `date` (date)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_gt.md

### field >= {value} (`query_bool_range_date_gte`)

- Group: query / range date
- Semantics: Emits {"gte": } : a range fragment meaning AT OR AFTER: the boundary date itself matches. The date pin accepts timestamps and common date strings; an unwired or falsy pin uses the current time, an unparseable value becomes 0.
- In pins: `date` (date)
- Out pins: `query` (query)
- Commonly used with: [date](https://docs.rual.nl/block-types/query/query_bool_range_date_field.md) (out), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [minus days](https://docs.rual.nl/block-types/date/date_subtract_days.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_gte.md

### field < {value} (`query_bool_range_date_lt`)

- Group: query / range date
- Semantics: Emits {"lt": } : a range fragment meaning STRICTLY BEFORE: the boundary date itself does not match. The date pin accepts timestamps and common date strings; an unwired or falsy pin uses the current time, an unparseable value becomes 0.
- In pins: `date` (date)
- Out pins: `query` (query)
- Commonly used with: [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [date](https://docs.rual.nl/block-types/query/query_bool_range_date_field.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_lt.md

### field <= {value} (`query_bool_range_date_lte`)

- Group: query / range date
- Semantics: Emits {"lte": } : a range fragment meaning AT OR BEFORE: the boundary date itself matches. The date pin accepts timestamps and common date strings; an unwired or falsy pin uses the current time, an unparseable value becomes 0.
- In pins: `date` (date)
- Out pins: `query` (query)
- Commonly used with: [date](https://docs.rual.nl/block-types/query/query_bool_range_date_field.md) (out), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [set to: start of day](https://docs.rual.nl/block-types/date/date_startofday.md) (in), [minus hours](https://docs.rual.nl/block-types/date/date_subtract_hours.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_date_lte.md

### number (`query_bool_range_field`)

- Group: query / query: range
- Semantics: Combines all wired inpin objects (the gt/gte/lt/lte fragments) into one range clause on the bound field: {"range": {field: {...merged..., "boost": B}}}. Fragments are deep-merged and boost defaults to 1; when no fragment is wired (only boost) the block outputs nothing at all.
- In pins: `query` (query), `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [field >= {value}](https://docs.rual.nl/block-types/query/query_bool_range_gte.md) (in), [field > {value}](https://docs.rual.nl/block-types/query/query_bool_range_gt.md) (in), [field < {value}](https://docs.rual.nl/block-types/query/query_bool_range_lt.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_field.md

### field > {value} (`query_bool_range_gt`)

- Group: query / query: range
- Semantics: Emits {"gt": } : a range fragment meaning STRICTLY GREATER THAN: the boundary value itself does not match. An unwired or falsy value pin becomes 0, so the fragment then means " 0". Feed it into a range field block.
- In pins: `value` (number)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [number](https://docs.rual.nl/block-types/query/query_bool_range_field.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_gt.md

### field >= {value} (`query_bool_range_gte`)

- Group: query / query: range
- Semantics: Emits {"gte": } : a range fragment meaning GREATER THAN OR EQUAL: the boundary value itself matches. An unwired or falsy value pin becomes 0, so the fragment then means "= 0". Feed it into a range field block.
- In pins: `value` (number)
- Out pins: `query` (query)
- Commonly used with: [number](https://docs.rual.nl/block-types/query/query_bool_range_field.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_gte.md

### field < {value} (`query_bool_range_lt`)

- Group: query / query: range
- Semantics: Emits {"lt": } : a range fragment meaning STRICTLY LESS THAN: the boundary value itself does not match. An unwired or falsy value pin becomes 0, so the fragment then means "
- In pins: `value` (number)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [number](https://docs.rual.nl/block-types/query/query_bool_range_field.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_lt.md

### field <= {value} (`query_bool_range_lte`)

- Group: query / query: range
- Semantics: Emits {"lte": } : a range fragment meaning LESS THAN OR EQUAL: the boundary value itself matches. An unwired or falsy value pin becomes 0, so the fragment then means "
- In pins: `value` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_bool_range_lte.md

### should / or (`query_bool_should`)

- One or all queries provided should match.
- Semantics: Collects every wired query input into a bool.should clause: {"bool": {"should": [...], "minimum_should_match": N}} : should clauses are optional scoring clauses, but with N defaulting to 1 at least one of them must match unless the surrounding query also has must/filter clauses. Each input object is wrapped in its own bool.must clause; control fragments (fields, limit, sort, ...) are hoisted to the top level. With nothing wired the output is {"bool": {"minimum_should_match": 1}}.
- In pins: `number` (number), `query_0` (query), `query_1` (query)
- Out pins: `query` (query)
- Commonly used with: [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (both), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [array match include](https://docs.rual.nl/block-types/query/query_bool_term_array_field.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_should.md

### simple query string (`query_bool_simple_query_string_field`)

- Semantics: Emits a simple_query_string full-text clause over the selected fields; unlike query string, invalid syntax in the search input is ignored instead of failing the search, so this is the safe choice for raw user input. Fields are read from the fielddefinitions pin (entries without a non-empty field string are dropped) and search defaults to "". default_operator is "OR" unless the or pin holds a truthy value, which is then stringified into the operator.
- In pins: `fields` (fielddefinitions), `search` (value), `or` (value)
- Out pins: `query` (query)
- Commonly used with: [get multiple](https://docs.rual.nl/block-types/fields/fielddefinitions_get_multiple.md) (in), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [convert to lowercase](https://docs.rual.nl/block-types/value/value_to_lowercase.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_simple_query_string_field.md

### array match include (`query_bool_term_array_field`)

- Group: query / query: term
- Field array must include given value.
- Semantics: Emits an exact term clause {"term": {field: {"value": V, "boost": B}}} : for an array field this matches documents whose array CONTAINS the value, not documents equal to it. The field comes from the field pin (".keyword" appended when the block's selected type is value); the value is read from the pin named after the block's field type and defaults to "" when unwired or falsy; boost defaults to 1.
- In pins: `field` (value), `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [should / or](https://docs.rual.nl/block-types/query/query_bool_should.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_bool_term_array_field.md

### fields (`query_bool_term_fields`)

- Group: query / query: term
- Semantics: Emits one exact-match term clause per selected field, as an array: {"term": {field: {"value": V, "boost": B}}}. An unwired field pin defaults to "" (date fields become 0 when empty and are converted to Unix seconds when set); condition fields are coerced to real booleans (""/"false"/"0"/"no" become false) so an unwired flag matches false instead of breaking the search. Value-typed fields target the .keyword sub-field; a geo_point field becomes a 10km geo_distance clause instead of a term. boost defaults to 1.
- In pins: `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_term_fields.md

### fuzzy (`query_bool_term_fuzzy`)

- Group: query / query: term
- Returns documents that contain terms similar to the search term
- Semantics: Emits a fuzzy clause on the bound field, matching terms within the given edit distance of the value (Lucene levenshtein); value-typed fields target the .keyword sub-field. fuzziness accepts only "AUTO", "0", "1" or "2" : anything else becomes "AUTO". An unwired or falsy value, or a missing field binding, outputs nil: no clause at all.
- In pins: `value` (value, required), `fuzziness` (value)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_term_fuzzy.md

### value (`query_bool_wildcard_string_field`)

- Group: query / query: wildcard
- checks if the given fields matches in wildcard with the given value.
- Semantics: Emits a term-level wildcard clause: the value is matched verbatim against the WHOLE field value with * (any run) and ? (single char) wildcards, never analyzed into tokens. Value-typed fields target the .keyword sub-field with case_insensitive:true, so "test*" matches a stored "Test-1"; a binding already ending in .keyword is used as-is. An unwired or falsy value becomes "" and boost defaults to 1.
- In pins: `value` (value), `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_bool_wildcard_string_field.md

### if (`query_branch`)

- Group: query / query: misc.
- Semantics: Passes through exactly one input: the flow engine pre-selects the then or else pin from the condition, and this block outputs that pin's value unchanged (nil when the selected pin is unwired). The condition itself is not evaluated here. Does nothing during precompile.
- In pins: `then` (query), `else` (query), `condition` (condition)
- Out pins: `query` (query)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (in), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_branch.md

### cast to object (`query_convert_to_object`)

- Group: query / query: misc.
- Semantics: Casts a query to an object by passing the query pin's value through unchanged; an unwired or nil query pin becomes an empty object {}. No keys are added, removed or rewritten. Does nothing during precompile.
- In pins: `query` (query)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/query/query_convert_to_object.md

### count only (`query_count`)

- Group: query / query: misc.
- Return only the total number of documents found.
- Semantics: Emits the control fragment {"count": true}: the search returns only the total number of matching documents, not the documents themselves. Takes no inputs; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_count.md

### define query (`query_define_reference`)

- Group: query / references
- Store this query as reference, which can later be used by "use reference"
- In pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_define_reference.md

### disable cache (`query_disabled_request_cache`)

- Group: query / query: misc.
- Disables the storage cache in full for this query. Cache could be behind max. 5 seconds.
- Semantics: Emits the control fragment {"request_cache": false}, disabling the storage request cache for this query so results are never served from a potentially stale cache. Takes no inputs; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Commonly used with: [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [if](https://docs.rual.nl/block-types/query/query_branch.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_disabled_request_cache.md

### elseif (`query_elseif`)

- Group: query / query: misc.
- Semantics: Passes through exactly one input: the flow engine pre-selects the query pin of the first elseif whose condition is true (or the default pin), and this block outputs that pin's value unchanged : nil when the selected pin is unwired. The conditions are not evaluated here. Does nothing during precompile.
- In pins: `default` (query), `elseif` (condition), `then` (query)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_elseif.md

### function score (`query_function_score`)

- Wraps a query with function_score for custom relevance scoring. Builds script_score, random_score and decay functions from pins. The script_score scores documents by matching their tags field against the provided params : documents without a tags field return a neutral score of 1.
- Semantics: Wraps the inner query pin in a function_score clause that rewrites relevance scores without changing which documents match. A script_score is added only when script_params is a non-empty object (each document's tags field is scored against the given per-tag weights, documents without tags score a neutral 1; weight from script_weight, default 1); a random_score (weight default 0.15, seeded by the current time) and a decay function (default exp on _meta.created, origin "now", scale "7d", decay 0.5, weight 0.3) are ALWAYS added. Function scores combine per score_mode (default "sum") and replace the query score per boost_mode (default "replace"); max_boost is sent only when its pin is non-nil. An unwired inner query becomes {}, which matches everything.
- In pins: `query` (query, required), `script_params` (object), `script_weight` (number), `random_weight` (number), `decay_type` (value), `decay_field` (value), `decay_origin` (value), `decay_scale` (value), `decay_decay` (number), `decay_weight` (number), `score_mode` (value), `boost_mode` (value), `max_boost` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_function_score.md

### Include geo distance (`query_include_geo_distance`)

- Group: query / query: misc.
- Adds a field "distance" which returns the distance in meters based on the given geo_point
- Semantics: Emits the fragment {"include_geo_distance": {"field": , "geopoint": }}, which the search layer turns into a per-hit script field "distance" (meters from the given location). It ENRICHES results only : it does not filter or sort them. Elasticsearch only.
- In pins: `location` (geo_point, required)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_include_geo_distance.md

### include total hits (`query_include_hits`)

- Group: query / query: misc.
- Include the total number of documents found besides the matching document count.
- Semantics: Emits the control fragment {"include_hits": true}, telling the search to also report the total number of matching documents alongside the returned hits. Takes no inputs; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_include_hits.md

### include removed (`query_include_removed`)

- Group: query / query: misc.
- Include removed documents in the matching results.
- Semantics: Emits the control fragment {"include_removed": true}, telling the search to also return documents flagged as removed that are normally hidden. Takes no inputs; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Commonly used with: [if](https://docs.rual.nl/block-types/query/query_branch.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_include_removed.md

### limit (`query_limit`)

- Group: query / query: misc.
- Limit the search result, this does not work for streaming search on large storages.
- Semantics: Emits the control fragment {"limit": N}, capping how many documents the search returns. An unwired, nil or otherwise falsy limit pin becomes 0. The fragment is hoisted to the top level of the query when collected by a bool block.
- In pins: `limit` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_limit.md

### offset (`query_offset`)

- Group: query / query: misc.
- Start document search with an offset of..
- Semantics: Emits the control fragment {"offset": N}, skipping the first N matching documents (page N of results starts here). An unwired, nil or otherwise falsy offset pin becomes 0. The fragment is hoisted to the top level of the query when collected by a bool block.
- In pins: `offset` (number)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_offset.md

### profile (`query_profile`)

- Group: query / query: misc.
- Returns a profile of the matching results for debug purpose only.
- Semantics: Emits the control fragment {"profile": true}, asking Elasticsearch to include per-clause execution timing in the response for debugging. Takes no inputs and does not change which documents match; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_profile.md

### search after (`query_search_after`)

- Group: query / query: misc.
- Enables cursor-based pagination using search_after. Pass the cursor from a previous search to continue from where it left off.
- Semantics: Emits {"search_after": } for cursor-based pagination: pass the sort values of the last hit of the previous page to continue right after it. An unwired, nil, empty or otherwise falsy cursor emits an empty object {} : no cursor, so the search returns the first page. Elasticsearch only.
- In pins: `cursor` (array)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_search_after.md

### sorting (`query_sort_field`)

- Group: query / query: misc.
- Sorts the results on the given field and ordering.
- Semantics: Emits a bool_sort fragment ordering results by the bound field: {"bool_sort": {field: {"order": ..., "missing": ...}}}; value-typed fields sort on the .keyword sub-field. Order is "asc" ONLY when the asc pin is strictly boolean true : every other value, including a wired desc pin, yields "desc" (the desc pin is never read). Documents missing the field get "missing": false for condition fields, 0 for number/date fields, and "_first"/"_last" otherwise (by truthiness of asc).
- In pins: `asc` (condition), `desc` (condition)
- Out pins: `query` (query)
- Commonly used with: [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (out)
- Page: https://docs.rual.nl/block-types/query/query_sort_field.md

### geo distance sorting (`query_sort_geo_distance`)

- Group: query / query: misc.
- Sorts the results on the given geo_point field and ordering.
- Semantics: Emits a _geo_distance sort fragment ordering results by distance from the location pin to the bound geo_point field. Order is "asc" (nearest first) ONLY when the asc pin is strictly boolean true : every other value, including a wired desc pin, yields "desc" (the desc pin is never read). unit comes verbatim from the unit pin (empty string when unwired, letting Elasticsearch default to meters); an unwired location pin is passed through as nil.
- In pins: `location` (geo_point, required), `asc` (condition), `desc` (condition), `unit` (value)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_sort_geo_distance.md

### sort random (`query_sort_random`)

- Group: query / query: misc.
- Sort the results randomly. This sorting only works if at least one positive query (e.g. must, filter, should) is used.
- Semantics: Emits the control fragment {"sort_random": true}, which the search layer turns into a random ordering of the results (fresh shuffle per search). Takes no inputs; the fragment is hoisted to the top level of the query when collected by a bool block.
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_sort_random.md

### sort score (`query_sort_score`)

- Group: query / query: misc.
- Sorts results by their relevance score. Use together with a tiebreaker sort (e.g. sorting on _meta.created) for reliable cursor-based pagination with search_after.
- Semantics: Emits a bool_sort fragment ordering results by relevance score: {"bool_sort": {"_score": {"order": ...}}}. Order is "desc" (best matches first) unless the asc pin is strictly boolean true : every other value, including a wired desc pin, yields "desc" (the desc pin is never read).
- In pins: `asc` (condition), `desc` (condition)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_sort_score.md

### fields to select (`query_source_by_field`)

- Group: query / query: misc.
- Only return the selected fields in the search results (e.g. speed improvement)
- Semantics: Emits the control fragment {"fields": []}: returned documents contain only the block's selected fields, nothing else. "exclude_meta": true is added ONLY when the include_meta pin is exactly boolean false : an unwired pin or the string "false" keeps metadata included. The fragment is hoisted to the top level of the query when collected by a bool block.
- In pins: `include_meta` (condition)
- Out pins: `query` (query)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (out), [false](https://docs.rual.nl/block-types/condition/condition_is_false.md) (in), [multiple](https://docs.rual.nl/block-types/query/query_and.md) (out), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_source_by_field.md

### switch (`query_switch`)

- Returns a query based of the given expression.
- Semantics: Outputs the query pin whose case the expression value matched (pre-selected by the flow engine), or the default pin when nothing matched; matched is true unless the default pin was selected. A falsy selected value becomes nil, and with no inputs at all the output is query=nil, matched=false.
- In pins: `value` (value), `default` (query)
- Out pins: `query` (query), `matched` (condition)
- Page: https://docs.rual.nl/block-types/query/query_switch.md

### match with any (`query_terms_field`)

- Group: query / query: term
- Semantics: Emits a terms clause matching documents whose bound field equals ANY of the values in the value array pin (OR semantics); value-typed fields target the .keyword sub-field and boost defaults to 1. An unwired, non-array or empty value pin does NOT match everything : it falls back to the sentinel {"terms": {"_meta.created": [-2]}}, which matches nothing. A missing field binding outputs nil: no clause at all.
- In pins: `value` (array), `boost` (number)
- Out pins: `query` (query)
- Commonly used with: [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (out), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in)
- Page: https://docs.rual.nl/block-types/query/query_terms_field.md

### use query (`query_use_reference`)

- Group: query / references
- Use the query which was previously defined by a define reference
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/query/query_use_reference.md

## queue

### remove from queue (`function_remove_from_queue`)

- Group: queue / function
- Removes the given queue item from the active queue.
- Semantics: Deletes the queued job with the given GUID from the queue. Outputs success=false when guid is empty or unwired, or when the underlying remove call fails; success=true otherwise. The flow out pin continues in both cases.
- In pins: `flow` (flow), `guid` (value)
- Out pins: `flow` (flow), `success` (condition)
- Page: https://docs.rual.nl/block-types/queue/function_remove_from_queue.md

### search batch to queue (`function_search_batch_queue`)

- Group: queue / storage
- Streams search results and queues them in batches for parallel processing. Useful for processing large datasets (24k+ items) without timeout. Each batch is processed as a separate queue item.
- Semantics: Runs the query against the storage, then enqueues one fire-and-forget queue item per batch of batch_size (default 100) results, each triggering the selected function with pins batch_index (0-based), total_batches and items; the block does NOT wait for them. Outputs count (total matching items) and total_batches (ceil(count/batch_size)) immediately. No function selected, no storage, or a failed count query yields count=0 and total_batches=0. In simulation, debug, or staging mode only the counts are output and nothing is queued. Queue items expire 4 hours after enqueue.
- In pins: `flow` (flow), `query` (query, required), `batch_size` (number), `queue_title` (value), `storage` (storage, required)
- Out pins: `flow` (flow), `count` (number), `total_batches` (number)
- Page: https://docs.rual.nl/block-types/queue/function_search_batch_queue.md

### wait for queue item (`function_wait_for_queue_item`)

- Group: queue / function
- Polls a queue document by GUID and blocks the flow until the job reaches a terminal state (executed/failed) or the timeout elapses. Use with any block that produces a queue_guid outpin (e.g. video_compress with wait_in_flow=false) to gate downstream work on background completion.
- Semantics: Blocks the flow, polling the queue document once per second, until its state is executed or failed; then outputs that state, the job's recorded result object, and success. success defaults to (state == executed) but a result map carrying its own success boolean overrides that. Giving up after wait_timeout_seconds (default 300) yields state=timeout with error WAIT_TIMEOUT; a cancelled flow yields state=cancelled. Empty queue_guid fails immediately with error MISSING_QUEUE_GUID.
- In pins: `flow` (flow), `queue_guid` (value, required), `wait_timeout_seconds` (number)
- Out pins: `flow` (flow), `success` (condition), `state` (value), `result` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/queue/function_wait_for_queue_item.md

## redis

### rate limit (`function_rate_limit`)

- Counts calls per registered key and reports whether this one is still within the limit. Replaces the incr-key + ttl + condition chain every API blueprint used to build by hand: pick a key that identifies the caller (for example one with a {ip:value} placeholder), a limit, and a window. Rejected calls count towards the limit as well.
- Semantics: Counts this call under the resolved key and outputs allowed=false once the count exceeds limit within the window (default 60 seconds): a fixed window by default, or a sliding window that weights the previous bucket by its overlap when sliding is true. Rejected calls still increment the counter. remaining never drops below 0; retry_after is 0 while allowed and the seconds until reset when blocked. FAIL-OPEN: a missing key (NO_KEY), a non-positive limit (INVALID_LIMIT), or a Redis error all report allowed=true with error set; simulated runs always allow and consume nothing.
- In pins: `flow` (flow), `limit` (number, required), `window_seconds` (number), `sliding` (condition)
- Out pins: `flow` (flow), `allowed` (condition), `remaining` (number), `retry_after` (number), `key` (value), `error` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in)
- Page: https://docs.rual.nl/block-types/redis/function_rate_limit.md

### decrement (`function_redis_cache_decr_key`)

- Decrements the number stored at key by one. If the key does not exist, it is set to 0 before performing the operation.
- Semantics: Decrements the stored integer by the number pin (Redis DECRBY) and outputs the new value; a missing key starts from 0. An unwired or falsy number decrements by 0, NOT by 1; a non-numeric or non-integer number sets error (NOT_A_NUMBER / ERR value is not an integer or out of range) and outputs the current value instead. In simulation the block does nothing at all : output is never even set.
- In pins: `flow` (flow), `number` (number)
- Out pins: `flow` (flow), `output` (number), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_decr_key.md

### delete (`function_redis_cache_delete_key`)

- Removes the specified key and their values.
- Semantics: Deletes the cache key and outputs success=true only when the key actually existed and was deleted : deleting a missing key reports success=false. In simulation nothing is deleted, yet success=true with error NOT_EXECUTED_IN_SIMULATION_MODE.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `success` (condition)
- Commonly used with: [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [delete](https://docs.rual.nl/block-types/redis/function_redis_cache_delete_key.md) (both), [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (in)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_delete_key.md

### get cache key (`function_redis_cache_get_exists`)

- gets the key and returns true or false based of its existence, makes it easier for cache-management in flows
- Semantics: Reads the cache key and outputs its string value, whether it exists, and the resolved key. value and exists come from two separate Redis reads (GET then EXISTS), so a key expiring between them can yield a value with exists=false. A missing key is NOT an error: it outputs exists=false, value="", success=true; only a real Redis failure sets success=false with error.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `exists` (condition), `value` (value), `key` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [parse](https://docs.rual.nl/block-types/value/value_json_parse.md) (out), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists.md

### get cache json key (`function_redis_cache_get_exists_json`)

- gets the key and returns true or false based of its existence, makes it easier for cache-management in flows
- Semantics: Like get cache key, plus JSON: when the stored string parses as JSON, the decoded value is also emitted on the block's dynamically-typed output pin (the selected field type). Invalid JSON is NOT an error : the typed output simply stays unset while value keeps the raw string. Fails with INVALID_TYPE when no field type is selected on the block and with MISSING_REDIS_KEY when no key is configured.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `exists` (condition), `key` (value), `success` (condition)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists_json.md

### get cache ttl (`function_redis_cache_get_ttl`)

- get the time to live in seconds
- Semantics: Outputs the key's remaining TTL in whole seconds with the Redis sentinels passed through: -1 when the key exists but never expires, -2 when it does not exist (also the output on a Redis error). exists is false only for -2; has_expiry is false for both -1 and -2. Example: a permanent key - ttl=-1, exists=true, has_expiry=false.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `ttl` (number), `exists` (condition), `has_expiry` (condition), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_get_ttl.md

### increment (`function_redis_cache_incr_key`)

- Increments the number stored at key by one. If the key does not exist, it is set to 0 before performing the operation.
- Semantics: Increments the stored integer by the number pin (Redis INCRBY) and outputs the new value; a missing key starts from 0. An unwired or falsy number increments by 0, NOT by 1; a non-numeric or non-integer number sets error (NOT_A_NUMBER / ERR value is not an integer or out of range) and outputs the current value instead. In simulation Redis is skipped and output just echoes the number pin (0 when unwired).
- In pins: `flow` (flow), `number` (number)
- Out pins: `flow` (flow), `output` (number), `error` (value), `key` (value)
- Commonly used with: [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (both), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [<=](https://docs.rual.nl/block-types/condition/condition_lte.md) (out), [remote ip](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_ip.md) (in)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_incr_key.md

### exists (`function_redis_cache_key_exists`)

- Checks if the key already exists
- Semantics: Outputs output=true when the cache key exists and false when it does not : a Redis error ALSO yields false, indistinguishable from a missing key. Unlike most redis cache blocks there is no simulation shortcut: the existence check really runs in simulated flows.
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `output` (condition), `key` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [encode](https://docs.rual.nl/block-types/value/value_encode_base64.md) (in), [get fields](https://docs.rual.nl/block-types/users/user_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_key_exists.md

### set (`function_redis_cache_set_key`)

- Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type.
- Semantics: Sets the cache key to the JS-stringified value pin (falsy values store ""), overwriting any existing value regardless of its previous type. ttl is in seconds; absent, zero, or invalid means no expiry. No key configured fails with success=false and error MISSING_REDIS_KEY; in simulation nothing is stored but success=true with error NOT_EXECUTED_IN_SIMULATION_MODE.
- In pins: `flow` (flow), `value` (value, required), `ttl` (number)
- Out pins: `flow` (flow), `success` (condition), `key` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md

### set json (`function_redis_cache_set_key_json`)

- Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type.
- Semantics: JSON-encodes the value from the block's dynamically-typed input pin and stores the resulting string under the cache key, overwriting any existing value; a falsy input stores the JSON empty string "". ttl is in seconds; absent or invalid means no expiry. Fails with INVALID_TYPE when no field type is selected on the block and with MISSING_REDIS_KEY when no key resolves; in simulation nothing is stored but success=true with error NOT_EXECUTED_IN_SIMULATION_MODE.
- In pins: `flow` (flow), `ttl` (number)
- Out pins: `flow` (flow), `success` (condition), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_set_key_json.md

### set cache ttl (`function_redis_cache_ttl`)

- set the time to live in seconds
- Semantics: Sets a new expiry on an existing cache key: ttl seconds, defaulting to 60 when the pin is absent, zero, or invalid. error=KEY_DOES_NOT_EXIST when the key is missing : there is no success pin, so an unset error is the only success signal. In simulation nothing changes and error is NOT_EXECUTED_IN_SIMULATION_MODE.
- In pins: `flow` (flow), `ttl` (number)
- Out pins: `flow` (flow), `error` (value)
- Commonly used with: [increment](https://docs.rual.nl/block-types/redis/function_redis_cache_incr_key.md) (both), [remote ip](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_ip.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [one minute](https://docs.rual.nl/block-types/number/number_one_minute.md) (in)
- Page: https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md

### bf add (`redis_bloom_add`)

- Group: redis / redis bloom
- Add an item to a Bloom filter. Creates the filter if it does not exist.
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `added` (condition), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_bloom_add.md

### bf exists (`redis_bloom_exists`)

- Group: redis / redis bloom
- Check if an item may exist in a Bloom filter. Returns true if the item may exist (with the configured false-positive rate), false if it definitely does not exist.
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `exists` (condition), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_bloom_exists.md

### bf madd (`redis_bloom_madd`)

- Group: redis / redis bloom
- Add multiple items to a Bloom filter at once. Creates the filter if it does not exist.
- In pins: `flow` (flow), `values` (array, required)
- Out pins: `flow` (flow), `results` (array), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_bloom_madd.md

### bf mexists (`redis_bloom_mexists`)

- Group: redis / redis bloom
- Check if multiple items may exist in a Bloom filter. Returns an array of booleans.
- In pins: `flow` (flow), `values` (array, required)
- Out pins: `flow` (flow), `results` (array), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_bloom_mexists.md

### bf reserve (`redis_bloom_reserve`)

- Group: redis / redis bloom
- Create a new Bloom filter with a given error rate and initial capacity. The filter will auto-scale if capacity is exceeded.
- In pins: `flow` (flow), `error_rate` (number, required), `capacity` (number, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_bloom_reserve.md

### get by index (`redis_list_index`)

- Group: redis / redis lists
- Get an element from a list by its index
- In pins: `flow` (flow), `index` (number, required)
- Out pins: `flow` (flow), `element` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_index.md

### insert at index (`redis_list_insert`)

- Group: redis / redis lists
- Insert an element before or after another element in a list
- In pins: `flow` (flow), `beforeafter` (value), `target` (value, required), `element` (value, required)
- Out pins: `flow` (flow), `result` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_insert.md

### len (`redis_list_len`)

- Group: redis / redis lists
- get the length of a list
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `number` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_len.md

### pop (`redis_list_pop`)

- Group: redis / redis lists
- Remove and get the first element in a list
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `element` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_pop.md

### push (`redis_list_push`)

- Group: redis / redis lists
- prepend one element to a list
- In pins: `flow` (flow), `element` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `length` (number), `key` (value)
- Commonly used with: [create document](https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/redis/redis_list_push.md

### push array (`redis_list_push_array`)

- Group: redis / redis lists
- prepend multiple elements to a list
- In pins: `flow` (flow), `elements` (array, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `length` (number), `key` (value)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [trim](https://docs.rual.nl/block-types/redis/redis_list_trim.md) (out)
- Page: https://docs.rual.nl/block-types/redis/redis_list_push_array.md

### pushx (`redis_list_pushx`)

- Group: redis / redis lists
- prepend an element to a list, only if the list exists
- In pins: `flow` (flow), `element` (value, required)
- Out pins: `flow` (flow), `exists` (condition), `success` (condition), `error` (value), `length` (number), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_pushx.md

### range (`redis_list_range`)

- Group: redis / redis lists
- get a range of elements from a list. Use start 0 and stop -1 to retrieve all items.
- In pins: `flow` (flow), `start` (number, required), `stop` (number, required)
- Out pins: `flow` (flow), `elements` (array), `success` (condition), `error` (value), `key` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get multiple documents (cached)](https://docs.rual.nl/block-types/storage/function_get_documents.md) (out), [foreach](https://docs.rual.nl/block-types/foreach/function_foreach.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/redis/redis_list_range.md

### remove (`redis_list_remove`)

- Group: redis / redis lists
- removes the first count occurrences of elements equal to element
- In pins: `flow` (flow), `count` (number, required), `element` (value, required)
- Out pins: `flow` (flow), `result` (number), `success` (condition), `error` (value), `key` (value)
- Commonly used with: [remove document](https://docs.rual.nl/block-types/storage/function_remove_document.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [funnel](https://docs.rual.nl/block-types/funnels/funnel.md) (out)
- Page: https://docs.rual.nl/block-types/redis/redis_list_remove.md

### rpop (`redis_list_rpop`)

- Group: redis / redis lists
- remove and get the last element in a list
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `element` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_rpop.md

### rpush (`redis_list_rpush`)

- Group: redis / redis lists
- append one or multiple elements to a list
- In pins: `flow` (flow), `element` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `length` (number), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_rpush.md

### rpushx (`redis_list_rpushx`)

- Group: redis / redis lists
- append an element to a list, only if the list exists
- In pins: `flow` (flow), `element` (value, required)
- Out pins: `flow` (flow), `exists` (condition), `success` (condition), `error` (value), `length` (number), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_rpushx.md

### set (`redis_list_set`)

- Group: redis / redis lists
- set the value of an element in a list by its index
- In pins: `flow` (flow), `index` (number, required), `element` (value, required)
- Out pins: `flow` (flow), `result` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_list_set.md

### trim (`redis_list_trim`)

- Group: redis / redis lists
- trim a list to the specified range
- In pins: `flow` (flow), `start` (number, required), `stop` (number, required)
- Out pins: `flow` (flow), `result` (value), `success` (condition), `error` (value), `key` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [push](https://docs.rual.nl/block-types/redis/redis_list_push.md) (in)
- Page: https://docs.rual.nl/block-types/redis/redis_list_trim.md

### add (`redis_set_add`)

- Group: redis / redis sets
- add one member to a set
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `result` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_add.md

### card (`redis_set_card`)

- Group: redis / redis sets
- get the number of members in a set
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `number` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_card.md

### is member (`redis_set_ismember`)

- Group: redis / redis sets
- determine if a given value is a member of a set
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `ismember` (condition), `result` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_ismember.md

### members (`redis_set_members`)

- Group: redis / redis sets
- Get all the members in a set
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `members` (array), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_members.md

### pop (`redis_set_pop`)

- Group: redis / redis sets
- Remove and return one random member from a set
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `member` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_pop.md

### push array (`redis_set_push_array`)

- Group: redis / redis sets
- prepend multiple elements to a sadd
- In pins: `flow` (flow), `elements` (array, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `length` (number), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_push_array.md

### randmember (`redis_set_randmember`)

- Group: redis / redis sets
- Get one random member from a set
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `member` (value), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_randmember.md

### rem (`redis_set_rem`)

- Group: redis / redis sets
- Remove one member from a set
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `result` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_rem.md

### zadd (`redis_set_zadd`)

- Group: redis / redis sorted sets
- add one member to a sorted set
- In pins: `flow` (flow), `value` (value, required), `score` (number, required), `options_nx` (condition), `options_incr` (condition)
- Out pins: `flow` (flow), `result` (number), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_zadd.md

### zrange (`redis_set_zrange`)

- Group: redis / redis sorted sets
- retrieve items from the sorted sets
- In pins: `flow` (flow), `start` (number, required), `stop` (number, required), `with_scores` (condition)
- Out pins: `flow` (flow), `results` (array), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_set_zrange.md

### zrem (`redis_zrem`)

- Group: redis / redis sorted sets
- remove one member from a sorted set
- In pins: `flow` (flow), `value` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `key` (value)
- Page: https://docs.rual.nl/block-types/redis/redis_zrem.md

### get cache (`value_redis_cache_get_key`)

- get redis cache
- Semantics: Reads an entity-scoped Redis cache value using the block's configured key template; {name:type} placeholders resolve from the block's OWN in-pins and the whole template is LOWERCASED first. During simulation a wired simulation_value is returned without touching Redis. A missing key, empty stored value, or Redis error leaves value at nil -- there is no error signal. The deprecated key pin is used only when no template is configured.
- In pins: `simulation_value` (value)
- Out pins: `value` (value)
- Commonly used with: [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (out), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/redis/value_redis_cache_get_key.md

## references

### define discord (`discordconnection_define_reference`)

- Store this discordconnection as reference, which can later be used by "use reference"
- In pins: `connection` (discordconnection)
- Page: https://docs.rual.nl/block-types/references/discordconnection_define_reference.md

### use discord (`discordconnection_use_reference`)

- Use the discordconnection which was previously defined by a define reference
- Out pins: `connection` (discordconnection)
- Page: https://docs.rual.nl/block-types/references/discordconnection_use_reference.md

### define geopoint (`geo_point_define_reference`)

- Store this geo_point as reference, which can later be used by "use reference"
- In pins: `geo_point` (geo_point)
- Page: https://docs.rual.nl/block-types/references/geo_point_define_reference.md

### use geopoint (`geo_point_use_reference`)

- Use the geo_point which was previously defined by a define reference
- Out pins: `geo_point` (geo_point)
- Page: https://docs.rual.nl/block-types/references/geo_point_use_reference.md

### define httpconnection (`httpconnection_define_reference`)

- Store this httpconnection as reference, which can later be used by "use reference"
- In pins: `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/references/httpconnection_define_reference.md

### use httpconnection (`httpconnection_use_reference`)

- Use the httpconnection which was previously defined by a define reference
- Out pins: `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/references/httpconnection_use_reference.md

### define state (`state_define_reference`)

- Store this state as reference, which can later be used by "use reference"
- In pins: `state` (state)
- Page: https://docs.rual.nl/block-types/references/state_define_reference.md

### use state (`state_use_reference`)

- Use the state which was previously defined by a define reference
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/references/state_use_reference.md

## scopes

### select (`scope_select`)

- Group: scopes / scope
- Enables you to choose custom scopes
- Out pins: `scope` (scope)
- Page: https://docs.rual.nl/block-types/scopes/scope_select.md

## session management

### revoke token (`function_sessions_management_revoke`)

- Revokes all access tokens based of the authentication document.
- Semantics: Revokes the authentication session identified by the guid pin (the auth document's GUID, not the access token). revoked=true when the revoke call succeeds; revoked=false with error "No guid given." when guid is empty or unwired, or with the revoke error message on failure.
- In pins: `flow` (flow), `guid` (value, required)
- Out pins: `flow` (flow), `revoked` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/session%20management/function_sessions_management_revoke.md

### search tokens (`function_sessions_management_search`)

- Find existing access tokens by query, without exposing the token itself.
- Semantics: Searches the built-in auth storage with the given query and outputs the matching session documents on matches and the total match count on hits (include_hits is forced on; default limit 5000). A nil, unwired, or non-query query : or a failed search : outputs an empty matches array and hits=0, with no error signal.
- In pins: `flow` (flow), `query` (query, required)
- Out pins: `flow` (flow), `matches` (array<object>, required), `hits` (number)
- Commonly used with: [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (in), [foreach](https://docs.rual.nl/block-types/foreach/function_foreach.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [select fields](https://docs.rual.nl/block-types/array/array_get_by_fields.md) (out)
- Page: https://docs.rual.nl/block-types/session%20management/function_sessions_management_search.md

## sftp

### go to (`sftp_cd`)

- In pins: `flow` (flow), `connection` (sftpconnection), `directory` (value)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_cd.md

### close connection (`sftp_close_connection`)

- close sftp connection
- In pins: `flow` (flow), `connection` (sftpconnection)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_close_connection.md

### remove (`sftp_delete`)

- remove a file via sftp
- In pins: `flow` (flow), `connection` (sftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_delete.md

### download file (`sftp_get`)

- Group: sftp / file
- download file via sftp
- In pins: `flow` (flow), `connection` (sftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value), `file` (file)
- Page: https://docs.rual.nl/block-types/sftp/sftp_get.md

### list directories (`sftp_list_directories`)

- In pins: `flow` (flow), `connection` (sftpconnection)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value), `list` (array)
- Page: https://docs.rual.nl/block-types/sftp/sftp_list_directories.md

### list files (`sftp_list_files`)

- receive a list of files via sftp
- In pins: `flow` (flow), `connection` (sftpconnection)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value), `list` (array)
- Page: https://docs.rual.nl/block-types/sftp/sftp_list_files.md

### mkdir (`sftp_mkdir`)

- create folders via sftp
- In pins: `flow` (flow), `connection` (sftpconnection), `directory` (value)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_mkdir.md

### open connection (`sftp_open_connection`)

- open sftp connection
- In pins: `flow` (flow), `host` (value), `username` (value), `password` (value), `port` (number)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_open_connection.md

### upload file (`sftp_put`)

- Group: sftp / file
- upload file via sftp
- In pins: `flow` (flow), `connection` (sftpconnection), `file` (file)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_put.md

### current working directory (`sftp_pwd`)

- receive the current working directory which you are working in
- In pins: `flow` (flow), `connection` (sftpconnection)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value), `directory` (value)
- Page: https://docs.rual.nl/block-types/sftp/sftp_pwd.md

### file attributes (`sftp_stat`)

- In pins: `flow` (flow), `connection` (sftpconnection), `file` (value)
- Out pins: `flow` (flow), `connection` (sftpconnection), `success` (condition), `error` (value), `object` (object)
- Page: https://docs.rual.nl/block-types/sftp/sftp_stat.md

## shipping

### generate barcode (`postnlconnection_barcode_request`)

- Group: shipping / PostNL
- This block is used to request a PostNL barcode for a shipment.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `barcode_type` (value, required), `barcode_serie` (value)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `barcode` (value), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_barcode_request.md

### get barcode status (`postnlconnection_barcode_status`)

- Group: shipping / PostNL
- This block is used to request the status for a barcode.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `barcode` (value, required)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `status_description` (value), `status` (object), `delivery_address` (object), `addresses` (array), `shipment` (object), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_barcode_status.md

### calculate delivery date (`postnlconnection_calculate_delivery_date`)

- Group: shipping / PostNL
- This block is used to calculate the delivery date of a shipment.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `receiver_address` (object, required), `preparing_date` (date, required), `preparing_duration_days` (number, required), `magazine_cuttoff_time` (value, required), `sender_country_code` (value), `cutoff_extra_options` (array)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `delivery_date` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_calculate_delivery_date.md

### calculate shipping date (`postnlconnection_calculate_shipping_date`)

- Group: shipping / PostNL
- This block is used to calculate the shipping date of a shipment.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `receiver_address` (object, required), `delivery_date` (date, required), `preparing_duration_days` (number, required), `sender_country_code` (value)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `shipping_date` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_calculate_shipping_date.md

### generate shipment label (`postnlconnection_label_request`)

- Group: shipping / PostNL
- This block is used to request the status for a barcode.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `sender_address` (object, required), `receiver_address` (object, required), `dimensions` (object, required), `printer_type` (value, required), `confirm_shipment` (condition, required), `receiver_contact_person` (object), `sender_contact_person` (object), `product_code_delivery` (value), `product_code_options` (array), `customer_order_number` (value), `reference` (value), `reference_collect` (value), `barcode` (value)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `barcode` (value), `label` (object), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_label_request.md

### open connection (`postnlconnection_open`)

- Group: shipping / PostNL
- This block is used to open a connection with the PostNL API.
- In pins: `flow` (flow), `api_key` (value, required), `customer_code` (value, required), `customer_number` (value, required), `company_name` (value, required), `is_sandbox` (condition)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_open.md

### get pickup location details (`postnlconnection_pickup_location`)

- Group: shipping / PostNL
- This block is used to request the details of a pickup location.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `location_code` (value, required)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `address` (object), `delivery_options` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_pickup_location.md

### get pickup locations for address (`postnlconnection_pickup_locations_for_address`)

- Group: shipping / PostNL
- This block is used to request the nearby pickup locations for a address.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `zip_code` (value, required), `house_number` (value, required), `country_code` (value), `house_number_ext` (value), `pickup_date` (date)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `most_nearby_location` (object), `locations` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_pickup_locations_for_address.md

### get pickup locations for coordinate (`postnlconnection_pickup_locations_for_coordinate`)

- Group: shipping / PostNL
- This block is used to request the nearby pickup locations for a coordinate.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `geo_point` (geo_point, required), `coordinate_lat` (number, required), `coordinate_lon` (number, required), `country_code` (value), `pickup_date` (date)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `most_nearby_location` (object), `locations` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_pickup_locations_for_coordinate.md

### postalcode check (`postnlconnection_postalcode_check`)

- Group: shipping / PostNL
- This block is used to request a postalcode check.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `zip_code` (value, required), `house_number` (value, required), `house_number_ext` (value)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `city` (value), `street` (value), `house_numbers` (array, required), `formatted_address` (value), `zip_code` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_postalcode_check.md

### get delivery options (`postnlconnection_request_delivery_options`)

- Group: shipping / PostNL
- This block is used to request the delivery options for a delivery.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `sender_address` (object, required), `receiver_address` (object, required), `order_date` (date, required), `preparing_duration_days` (number, required), `holiday_sorting` (condition), `days_quantity` (number), `locations_quantity` (number), `blocked_options` (array), `cutoff_options` (array)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `delivery_options` (array), `pickup_options` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_request_delivery_options.md

### confirm shipment (`postnlconnection_shipment_confirm`)

- Group: shipping / PostNL
- This block is used to manual confirm a shipment.
- In pins: `flow` (flow), `connection` (postnlconnection, required), `barcode` (value, required), `sender_address` (object, required), `receiver_address` (object, required), `dimensions` (object, required), `receiver_contact_person` (object), `sender_contact_person` (object), `product_code_delivery` (value)
- Out pins: `flow` (flow), `connection` (postnlconnection, required), `success` (condition), `barcode` (value), `response` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/shipping/postnlconnection_shipment_confirm.md

## soap connection

### create soap connection (`function_create_soap_call`)

- Group: soap connection / soap
- Builds a soap connection from the provided WSDL
- In pins: `flow` (flow), `uri` (value, required), `wsdl_options` (object), `soap_headers` (object)
- Out pins: `flow` (flow), `connection` (soapconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/soap%20connection/function_create_soap_call.md

### last request info (`soapconnection_last_request_info`)

- Group: soap connection / request
- Exposes extra information about the last function request on this WSDL, allow proper debugging
- In pins: `connection` (soapconnection)
- Out pins: `connection` (soapconnection), `raw_output` (value), `endpoint` (value), `response_headers` (object), `request_headers` (object)
- Page: https://docs.rual.nl/block-types/soap%20connection/soapconnection_last_request_info.md

### soap function (`soapconnection_request_function`)

- Group: soap connection / request
- Requests the given function from the original WSDL
- In pins: `connection` (soapconnection), `name` (value), `request` (object), `options` (object)
- Out pins: `connection` (soapconnection), `output` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/soap%20connection/soapconnection_request_function.md

### function write array to file (`soapconnection_request_function_file`)

- Group: soap connection / request
- Writes the incoming soap stream to a file. The selected key needs to be an array so the file can be streamed later on
- In pins: `flow` (flow), `connection` (soapconnection, required), `name` (value, required), `request` (object, required), `value` (value, required), `options` (object)
- Out pins: `flow` (flow), `condition` (condition), `error` (value), `file` (file)
- Page: https://docs.rual.nl/block-types/soap%20connection/soapconnection_request_function_file.md

### soap function streaming (`soapconnection_request_function_streaming`)

- Group: soap connection / request
- Streams the output of the given function using the original WSDL
- In pins: `connection` (soapconnection), `name` (value), `request` (object), `options` (object)
- Out pins: `connection` (soapconnection), `error` (value), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/soap%20connection/soapconnection_request_function_streaming.md

## state

### execute component (`iteratestate_component`)

- Group: state / state: iterators
- In pins: `iteratestate_Connect` (iteratestate)
- Page: https://docs.rual.nl/block-types/state/iteratestate_component.md

## state actions

### get component attributes (`state_component_attributes`)

- Group: state actions / state: helpers
- Grabs the current attributes of the component
- In pins: `state` (state)
- Out pins: `attributes` (object)
- Page: https://docs.rual.nl/block-types/state%20actions/state_component_attributes.md

### get component child (`state_component_get_child`)

- Group: state actions / state: helpers
- Grabs the current child component of the component
- In pins: `state` (state), `index` (number, required)
- Out pins: `child_exists` (condition), `child_component` (state)
- Page: https://docs.rual.nl/block-types/state%20actions/state_component_get_child.md

### get component name (`state_component_name`)

- Group: state actions / state: helpers
- Grabs the current component name of the component
- In pins: `state` (state)
- Out pins: `name` (value)
- Page: https://docs.rual.nl/block-types/state%20actions/state_component_name.md

### copy to clipboard (`state_copy_to_clipboard`)

- Group: state actions / state: ui
- Copies the given text to the users clipboard
- In pins: `flow` (flow), `text` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20actions/state_copy_to_clipboard.md

## state elements

### checkbox buttons (`state_multi_button_radio_option`)

- Generates a set of buttons and multiple values can be choosen. The field will be used as state key.
- In pins: `form_id` (value, required), `options` (array, required), `vertical` (condition), `disabled` (condition), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20elements/state_multi_button_radio_option.md

### radio buttons (`state_single_button_radio_option`)

- Generates a set of buttons you can choose between. The field will be used as state key.
- In pins: `form_id` (value, required), `options` (array, required), `vertical` (condition), `disabled` (condition), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20elements/state_single_button_radio_option.md

### submit button (`state_submit_button`)

- Group: state elements / buttons
- A submit button to handle your form using a POST or PUT API. An error will be shown if the API responds with a non-200 status code and an error message. For this to work a form element needs to be used.
- In pins: `form_id` (value, required), `value` (value, required), `parameters` (object, required), `query` (object, required), `state` (value, required), `icon` (value), `iconstyle` (uistyle), `iconclass` (uiclass), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `inpinsuccessfunction` (inpinfunction)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20elements/state_submit_button.md

### vertical aligned fields (`state_vertical_fields`)

- Shows the given fields vertical aligned
- In pins: `object` (object, required), `hide_empty` (condition), `key_uiclass` (uiclass), `field_uiclass` (uiclass), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20elements/state_vertical_fields.md

## state events

### close modal (`stateevents_close_modal`)

- Group: state events / events
- Helper action to close the last opened modal on click.
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_close_modal.md

### multiple (`stateevents_multiple`)

- Group: state events / events
- Combines multiple state events
- In pins: `stateevents_0` (stateevents), `stateevents_1` (stateevents), `stateevents_2` (stateevents)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_multiple.md

### on blur (`stateevents_onblur`)

- Group: state events / events
- Triggers the event everytime the blur event has been registered on the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onblur.md

### on change (`stateevents_onchange`)

- Group: state events / events
- Triggers the event everytime a change has been registered within the UI for the connected element. Primarily used with input elements.
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onchange.md

### on click (`stateevents_onclick`)

- Group: state events / events
- Triggers the event everytime a left click has been registered within the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onclick.md

### on key enter (`stateevents_onenter`)

- Group: state events / events
- Triggers the event everytime the enter key has been registered within the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onenter.md

### on focus (`stateevents_onfocus`)

- Group: state events / events
- Triggers the event everytime the focus event has been registered on the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onfocus.md

### on mouse enter (`stateevents_onmouseenter`)

- Group: state events / events
- Triggers the event everytime the mouseenter event has been registered on the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onmouseenter.md

### on mouse leave (`stateevents_onmouseleave`)

- Group: state events / events
- Triggers the event everytime the mouseleave event has been registered on the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onmouseleave.md

### on rightclick (`stateevents_onrightclick`)

- Group: state events / events
- Triggers the event everytime a right click has been registered within the UI for the connected element
- In pins: `stateevents_dom_action` (value), `stateevents_debounce` (number)
- Out pins: `stateevents` (stateevents)
- Page: https://docs.rual.nl/block-types/state%20events/stateevents_onrightclick.md

## state triggers

### on change (`state_on_state_change`)

- Triggers given callback when the state key changes in the UI. This can be used to see button clicks or inputs being changed.
- In pins: `state` (value, required), `inpinfunction` (inpinfunction, required)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20triggers/state_on_state_change.md

## state ui

### open modal (`function_execute_state_modal`)

- Group: state ui / function
- Opens the given modal within the current spark / state page.
- Semantics: In the Go engine this behaves exactly like custom execute: it calls the selected function synchronously and maps its return values back, passing the data pin through like any other input. It does NOT itself open or signal any modal UI.
- In pins: `flow` (flow), `data` (object)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/function_execute_state_modal.md

### hyperlink (`state_a`)

- Group: state ui / state elements
- A anchor element, that can be used to create an link to an intern/extern page.
- In pins: `content` (state), `text` (value, required), `href` (value), `target` (value), `inpinfunction` (inpinfunction), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_a.md

### hyperlink to page (`state_a_page`)

- Group: state ui / state elements
- A anchor element.
- In pins: `content` (state), `text` (value, required), `parameters` (object, required), `query` (object, required), `target` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_a_page.md

### add to state array (`state_add_to_state_array`)

- Group: state ui / state actions
- Adds given value to the array on the frontend and triggers updates based of it.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_add_to_state_array.md

### advanced datatable (`state_advanced_datatable`)

- Group: state ui / state elements
- A pre-styled advanced table showing data using advanced tooling
- In pins: `state` (value), `columns` (fielddefinitions, required), `columns_titles_overwrite` (array), `columns_width` (array), `columns_sortable` (fielddefinitions), `columns_sortable_overwrite` (array), `columns_filterable` (fielddefinitions), `searchfields` (fielddefinitions), `returnfields` (fielddefinitions), `rowactions` (statedatatableconnection), `query` (query), `add_top_pagination` (condition), `displayrows` (number), `displayrows_options` (array), `filters` (statedatatablefilter), `storage` (storage), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function), `row_component` (iteratestate), `function_on_change` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_advanced_datatable.md

### outlined alert (`state_alert_outlined`)

- Group: state ui / state elements
- Generates outline styled information alert element with a icon next to the text.
- In pins: `value` (value, required), `description` (value), `icon` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_alert_outlined.md

### basic alert (`state_alert_regular`)

- Group: state ui / state elements
- Generates a basic styled alert with text.
- In pins: `title` (value), `value` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_alert_regular.md

### autocomplete multiple values (`state_autocomplete_multiple_field`)

- Group: state ui / state elements
- Generates auto-complete select searching a storage and filling the state with the search-key. The field will be used as state key.
- In pins: `form_id` (value, required), `field` (fielddefinitions, required), `search_bar` (condition), `query` (query), `quantity_rows` (number), `returnfields` (fielddefinitions), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `maprow_function` (execute_function), `row_component` (iteratestate)
- Page: https://docs.rual.nl/block-types/state%20ui/state_autocomplete_multiple_field.md

### autocomplete single value (`state_autocomplete_single_field`)

- Group: state ui / state elements
- Generates auto-complete select searching a storage and filling the state with the search-key. The field will be used as state key.
- In pins: `form_id` (value, required), `field` (fielddefinitions, required), `search_bar` (condition), `query` (query), `quantity_rows` (number), `returnfields` (fielddefinitions), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `maprow_function` (execute_function), `row_component` (iteratestate)
- Page: https://docs.rual.nl/block-types/state%20ui/state_autocomplete_single_field.md

### backend request (`state_backend_request`)

- Group: state ui / state actions
- Requests the backend for data that can be used in the state flow
- In pins: `state` (state, required), `state_key` (value, required), `parameters` (object), `query` (object), `show_loader` (condition), `websocket_request` (condition)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_backend_request.md

### br (`state_br`)

- Group: state ui / state elements
- A br element.
- Out pins: `state` (state)
- Commonly used with: [paragraph](https://docs.rual.nl/block-types/state%20ui/state_p.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_br.md

### if (`state_branch`)

- Group: state ui / state conditions
- Allows you to use different state UIs based on your given condition.
- In pins: `then` (state, required), `else` (state, required), `condition` (condition, required)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (both), [translate key](https://docs.rual.nl/block-types/translations/state_translate_key.md) (in), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (in), [send email with template](https://docs.rual.nl/block-types/postmark/postmarkconnection_send_email_template.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_branch.md

### button with text and icon (`state_button`)

- Group: state ui / state elements
- Generates a basic html button element with default styling.
- In pins: `value` (value, required), `type` (value), `icon` (value), `iconstyle` (uistyle), `iconclass` (uiclass), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_button.md

### button (`state_button_content`)

- Group: state ui / state elements
- Generates a basic html button element with default styling.
- In pins: `content` (state, required), `type` (value), `icon` (value), `iconstyle` (uistyle), `iconclass` (uiclass), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Commonly used with: [execute](https://docs.rual.nl/block-types/modal%20functions/inpinfunction_select.md) (in), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (in), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_button_content.md

### basic canvas (`state_canvas`)

- Group: state ui / state elements
- A basic canvas element
- In pins: `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_canvas.md

### regular card (`state_card`)

- Group: state ui / state elements
- Shows a regular card.
- In pins: `title` (value, required), `title_uiclass` (uiclass), `title_uistyle` (uistyle), `title_icon` (value), `sub_title` (value), `header_uiclass` (uiclass), `toolbar_content` (state), `content` (state, required), `footer` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_card.md

### card icon box (`state_card_icon_box`)

- Group: state ui / state elements
- Shows a card with ribbon build-in.
- In pins: `title` (value, required), `icon` (value, required), `icon_class` (uiclass), `content` (state, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_card_icon_box.md

### list card (`state_card_list`)

- Group: state ui / state elements
- Shows a list card.
- In pins: `title` (value, required), `toolbar_content` (state), `options` (array, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_card_list.md

### card with ribbon (`state_card_ribbon`)

- Group: state ui / state elements
- Shows a card with ribbon build-in.
- In pins: `title` (value, required), `ribbon_content` (state, required), `ribbon_class` (uiclass), `content` (state, required), `footer` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_card_ribbon.md

### checkmark (`state_checkmark`)

- Group: state ui / state elements
- A button filled with a green checkmark.
- In pins: `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_checkmark.md

### clear active datatable filters (`state_clear_active_datatable_filters`)

- Group: state ui / state actions
- Sends a state update to the datatable to clear the active datatable filters.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_clear_active_datatable_filters.md

### close modal (`state_close_flow_modal`)

- Group: state ui / state modals
- Closes the first modal that is open.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_close_flow_modal.md

### code (`state_code`)

- Group: state ui / state elements
- A code element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_code.md

### code editor (`state_code_editor`)

- Group: state ui / state elements
- Opens a code editor to define code in various languages (CSS, HTML, JavaScript, JSON, etc.). The code is stored in a document on disk.
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_code_editor.md

### code (highlighted) (`state_code_highlight`)

- Group: state ui / state elements
- Source code with syntax highlighting. Renders server-side with no external library; supports nginx, javascript, json, bash, go, sql and yaml.
- In pins: `value` (value, required), `language` (value), `lineNumbers` (value), `highlightLines` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_code_highlight.md

### column (`state_col`)

- Group: state ui / state elements
- A div with the col-* classes available to it.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_col.md

### container (`state_container`)

- Group: state ui / state elements
- A div with the class container on it by default.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (in), [h1](https://docs.rual.nl/block-types/state%20ui/state_h1.md) (in), [render](https://docs.rual.nl/block-types/state%20ui/state_render_page.md) (out), [color](https://docs.rual.nl/block-types/styling/uistyle_color.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_container.md

### run js function (`state_custom_function_execution`)

- Group: state ui / state actions
- In pins: `flow` (flow), `context` (value), `name` (value, required), `argument_0` (value)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_custom_function_execution.md

### custom is empty (`state_custom_is_empty`)

- Group: state ui / state conditions
- Checks if a custom field is empty.
- In pins: `field` (value, required)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_custom_is_empty.md

### custom is not empty (`state_custom_is_not_empty`)

- Group: state ui / state conditions
- Checks if a custom field is not empty.
- In pins: `field` (value, required)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_custom_is_not_empty.md

### datalist (`state_datalist`)

- Group: state ui / state elements
- A datalist element.
- In pins: `id` (value, required), `options` (array, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_datalist.md

### datatable (`state_datatable`)

- Group: state ui / state elements
- A styled table made to display a lot of data using pagination.
- In pins: `state` (value), `columns` (fielddefinitions, required), `columns_sortable` (fielddefinitions), `searchfields` (fielddefinitions), `returnfields` (fielddefinitions), `rowactions` (statedatatableconnection), `query` (query), `displayrows` (number), `toolbar_content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_datatable.md

### push to datatable (`state_datatable_push`)

- Group: state ui / state actions
- Sends a state update to the datatable to refresh their data.
- In pins: `flow` (flow), `request_id` (value), `key` (value, required), `state` (state), `position` (value), `clear_previous` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_datatable_push.md

### debug (`state_debug`)

- Group: state ui / state elements
- Shows a debug modal to easily debug values within any flow
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_debug.md

### decrement server state (`state_decrement_state`)

- Group: state ui / state actions
- Sends a state update to the frontend and triggers updates based of it.
- In pins: `flow` (flow), `key` (value, required), `number` (number, required), `skip_update` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_decrement_state.md

### div (`state_div`)

- Group: state ui / state elements
- Creates a dynamic and customizable div element on your web page.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (both), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in), [paragraph](https://docs.rual.nl/block-types/state%20ui/state_p.md) (in), [hyperlink](https://docs.rual.nl/block-types/state%20ui/state_a.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_div.md

### dropdown (`state_dropdown`)

- Group: state ui / state elements
- Generates a designed dropdown menu. The field will be used as state key.
- In pins: `form_id` (value, required), `options` (array, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_dropdown.md

### elseif (`state_elseif`)

- Group: state ui / state conditions
- Allows you to use different state UIs based on your given condition.
- In pins: `default` (state), `elseif` (condition), `then` (state)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_elseif.md

### embed (`state_embed`)

- Group: state ui / state elements
- A embed element, that defines a container for an external resource.
- In pins: `src` (value, required), `type` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_embed.md

### new modal (`state_flow_modal`)

- Group: state ui / state modals
- Builds a custom modal
- Out pins: `flow` (flow), `connection` (modalconnection, required), `data` (object)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_flow_modal.md

### footer (`state_footer`)

- Group: state ui / state elements
- A footer element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_footer.md

### div foreach (`state_foreach_div`)

- Group: state ui / state elements
- Serves as a dynamic container, generating an unique div for each element in the specified array.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_div.md

### ol foreach (`state_foreach_ol`)

- Group: state ui / state elements
- Serves as a dynamic ol container.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_ol.md

### tbody foreach (`state_foreach_tbody`)

- Group: state ui / state elements
- Serves as a dynamic container, generating an unique tbody for each element in the specified array.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_tbody.md

### thead foreach (`state_foreach_thead`)

- Group: state ui / state elements
- Serves as a dynamic container, generating an unique thead for each element in the specified array.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_thead.md

### tr foreach (`state_foreach_tr`)

- Group: state ui / state elements
- Serves as a dynamic container, generating an unique tr for each element in the specified array.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_tr.md

### ul foreach (`state_foreach_ul`)

- Group: state ui / state elements
- Serves as a dynamic ul container.
- In pins: `array` (array, required), `state` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/state%20ui/state_foreach_ul.md

### form (`state_form`)

- Group: state ui / state elements
- Generates a basic form element using state UI. All fields within this form will be prefixed if a prefix is given.
- In pins: `form_id` (value, required), `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (both), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_form.md

### form rows from fields (`state_form_fields`)

- Group: state ui / state elements
- Generates rows with the given fields. The fields will be used as state keys.
- In pins: `form_id` (value, required), `label_at_top` (condition), `hide_labels` (condition), `required_fields` (fielddefinitions), `disabled` (condition), `stateformfieldconnection` (stateformfieldconnection), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_form_fields.md

### get form data (`state_form_get`)

- Group: state ui / state actions
- Retrieves the form data from the state.
- In pins: `flow` (flow), `form_id` (value, required)
- Out pins: `flow` (flow), `form-error` (value), `form-object` (object)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_form_get.md

### get key (`state_get_custom_field`)

- Group: state ui / state actions
- Get given key from the current UI state.
- In pins: `field` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (out), [if](https://docs.rual.nl/block-types/state%20ui/state_branch.md) (out), [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_get_custom_field.md

### get fields (`state_get_field`)

- Group: state ui / state actions
- Get given field(s) from the current UI state.
- Page: https://docs.rual.nl/block-types/state%20ui/state_get_field.md

### get uploaded file (`state_get_uploaded_file`)

- Group: state ui / state actions
- Get a recently uploaded file. The file is stored on a temp. dir, move it if you want to keep it.
- In pins: `flow` (flow), `form_id` (value)
- Out pins: `flow` (flow), `files` (file), `condition` (condition), `filename` (value), `type` (value)
- Page: https://docs.rual.nl/block-types/state%20ui/state_get_uploaded_file.md

### h1 (`state_h1`)

- Group: state ui / state elements
- A H1 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [container](https://docs.rual.nl/block-types/state%20ui/state_container.md) (out), [translate key](https://docs.rual.nl/block-types/translations/state_translate_key.md) (in), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h1.md

### h2 (`state_h2`)

- Group: state ui / state elements
- A H2 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h2.md

### h3 (`state_h3`)

- Group: state ui / state elements
- A H3 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (both), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h3.md

### h4 (`state_h4`)

- Group: state ui / state elements
- A H4 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h4.md

### h5 (`state_h5`)

- Group: state ui / state elements
- A H5 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h5.md

### h6 (`state_h6`)

- Group: state ui / state elements
- A H6 element.
- In pins: `content` (state), `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_h6.md

### header (`state_header`)

- Group: state ui / state elements
- A header element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_header.md

### go back (`state_history_back`)

- Group: state ui / state actions
- Causes the browser to move back one page in the session history.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_history_back.md

### go forward (`state_history_forward`)

- Group: state ui / state actions
- Causes the browser to move forward one page in the session history.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_history_forward.md

### update url (`state_history_modify`)

- Group: state ui / state actions
- Modifies the session history by adding to the stack or replacing the current state.
- In pins: `flow` (flow), `url` (value, required), `pushstate` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_history_modify.md

### device overview (`state_homeassist_overview`)

- Group: state ui / homeassist ui
- A ready-made overview of every device home automation knows about: grouped by room or adapter, with live capability readings, sparklines from the analytics store, and the devices that are discovered but not yet adopted. Renders from standard components, so it can be styled and taken apart like anything else.
- In pins: `title` (value), `group_by` (value), `summarise` (condition), `adapter` (value), `room` (value), `show_unadopted` (condition), `show_graphs` (condition), `show_snapshots` (condition), `graph_hours` (number), `uiclass` (uiclass), `uistyle` (uistyle)
- Out pins: `state` (state), `devices` (array), `adapters` (array)
- Page: https://docs.rual.nl/block-types/state%20ui/state_homeassist_overview.md

### hr (`state_hr`)

- Group: state ui / state elements
- A horizontal rule element
- In pins: `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_hr.md

### custom html (`state_html`)

- Group: state ui / state elements
- Renders custom html.
- In pins: `value` (value)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_html.md

### fontawesome icon (`state_icon`)

- Group: state ui / state elements
- Integrates a dynamic FontAwesome icon into your web page
- In pins: `icon` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [icon](https://docs.rual.nl/block-types/value/value_default_icon.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_icon.md

### iframe (`state_iframe`)

- Group: state ui / state elements
- A iframe element with URL state binding.
- In pins: `state` (value, required), `src` (value, required), `srcdoc` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_iframe.md

### image (`state_img`)

- Group: state ui / state elements
- A image element.
- In pins: `src` (value, required), `alt` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [hyperlink](https://docs.rual.nl/block-types/state%20ui/state_a.md) (out), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_img.md

### image from file (`state_img_from_file`)

- Group: state ui / state elements
- A img element from a internal or public file.
- In pins: `file` (file, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_img_from_file.md

### increment server state (`state_increment_state`)

- Group: state ui / state actions
- Sends a state update to the frontend and triggers updates based of it.
- In pins: `flow` (flow), `key` (value, required), `number` (number, required), `skip_update` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_increment_state.md

### input (`state_input`)

- Group: state ui / state elements
- Generates a basic input. The field will be used as state key, prefixed with the form.
- In pins: `form_id` (value, required), `type` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [placeholder](https://docs.rual.nl/block-types/attributes/uiattributes_placeholder.md) (in), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input.md

### checkbox (`state_input_checkbox`)

- Group: state ui / state elements
- Generates a basic checkbox. The field will be used as state key, prefixed with the form.
- In pins: `form_id` (value, required), `value` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_checkbox.md

### date input (`state_input_date`)

- Group: state ui / state elements
- Generates a date input. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_date.md

### datetime input (`state_input_datetime`)

- Group: state ui / state elements
- Generates a datetime input. The field will be used as state key, prefixed with the form.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_datetime.md

### dynamic input (`state_input_dynamic`)

- Group: state ui / state elements
- Generates a basic input with a dynamic field. The field will be used as state key, prefixed with the form.
- In pins: `form_id` (value, required), `field` (value, required), `type` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `onenter` (inpinfunction)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_dynamic.md

### file input (`state_input_file`)

- Group: state ui / state elements
- Generates a file input. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_file.md

### geopoint input (`state_input_geo_point`)

- Group: state ui / state elements
- Generates a geopoint input. The field will be used as state key.
- In pins: `form_id` (value, required), `disabled` (condition), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_geo_point.md

### number input (`state_input_number`)

- Group: state ui / state elements
- Generates a number input. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_number.md

### password input (`state_input_password`)

- Group: state ui / state elements
- Generates a password input. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_password.md

### price input (`state_input_price`)

- Group: state ui / state elements
- Generates a price input. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_price.md

### time input (`state_input_time`)

- Group: state ui / state elements
- Generates a time input. The field will be used as state key, prefixed with the form.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_input_time.md

### is empty (`state_is_empty`)

- Group: state ui / state conditions
- Checks if the given field is empty.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_is_empty.md

### is not empty (`state_is_not_empty`)

- Group: state ui / state conditions
- Checks if the given field is not empty.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_is_not_empty.md

### is true (`state_is_true`)

- Group: state ui / state conditions
- Checks if the given field is true.
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_is_true.md

### italic (`state_italic`)

- Group: state ui / state elements
- A italic text element.
- In pins: `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_italic.md

### kbd (`state_kbd`)

- Group: state ui / state elements
- A kbd element.
- In pins: `value` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_kbd.md

### label (`state_label`)

- Group: state ui / state elements
- Represents a caption for an item in a user interface.
- In pins: `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_label.md

### list element (`state_li`)

- Group: state ui / state elements
- A list element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_li.md

### logout (`state_logout`)

- Group: state ui / state actions
- Logs the user out.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_logout.md

### nav (`state_nav`)

- Group: state ui / state elements
- Defines a set of navigation links.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_nav.md

### custom number (`state_number`)

- Group: state ui / state elements
- A custom number element
- In pins: `number` (number, required), `sep_thou` (value), `sep_dec` (value), `dec_places` (number), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_number.md

### ordered list (`state_ol`)

- Group: state ui / state elements
- An ordered list element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_ol.md

### new tab (`state_open_tab`)

- Group: state ui / state actions
- Opens a new tab with the given url.
- In pins: `flow` (flow), `uri` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_open_tab.md

### paragraph (`state_p`)

- Group: state ui / state elements
- A paragraph element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (in), [translate key](https://docs.rual.nl/block-types/translations/state_translate_key.md) (in), [custom](https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_p.md

### new page (`state_page`)

- Group: state ui / state paging
- Allowes you to create a dynamic web page on the given URL.
- Out pins: `flow` (flow), `connection` (httpconnection), `params` (object), `query` (object)
- Commonly used with: [render](https://docs.rual.nl/block-types/state%20ui/state_render_page.md) (out), [redirect](https://docs.rual.nl/block-types/http%20connection/httpconnection_set_redirect.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute_from_trigger.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_page.md

### SVG Path (`state_path`)

- Group: state ui / state elements
- A path element, to define an arbitrary shape.
- In pins: `data` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_path.md

### play audio (`state_play_sound_media`)

- Group: state ui / state actions
- Plays the given audio file in the users browser
- In pins: `flow` (flow), `url` (value, required), `volume` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_play_sound_media.md

### preformatted text (`state_pre`)

- Group: state ui / state elements
- A pre element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_pre.md

### price format (`state_price_format`)

- Group: state ui / state elements
- In pins: `price` (number, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_price_format.md

### progressbar (`state_progressbar`)

- Group: state ui / state elements
- A progress bar filled up to certain percentage.
- In pins: `percentage` (number), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_progressbar.md

### redirect (`state_redirect`)

- Group: state ui / state actions
- Sends the user to the given page directly.
- In pins: `flow` (flow), `uri` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_redirect.md

### redirect to page (`state_redirect_to_page`)

- Group: state ui / state actions
- Sends the user to the selected page.
- In pins: `flow` (flow), `parameters` (object, required), `query` (object, required), `target` (value)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_redirect_to_page.md

### refresh page (`state_refresh_page`)

- Group: state ui / state actions
- Refreshes the current page directly.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_refresh_page.md

### remove from server state array (`state_remove_from_state_array`)

- Group: state ui / state actions
- Removes given value from the array on the frontend and triggers updates based of it.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_remove_from_state_array.md

### render (`state_render_page`)

- Group: state ui / state paging
- Sends the combined HTML to the frontend and renders the page into React components.
- In pins: `flow` (flow), `connection` (httpconnection), `title` (value, required), `description` (value, required), `content` (state, required)
- Out pins: `onloaded` (execute_function)
- Commonly used with: [new page](https://docs.rual.nl/block-types/state%20ui/state_page.md) (in), [container](https://docs.rual.nl/block-types/state%20ui/state_container.md) (in), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_render_page.md

### return modal (`state_return_modal`)

- Group: state ui / state modals
- Returns modal content
- In pins: `flow` (flow), `connection` (modalconnection, required), `title` (value, required), `content` (state, required), `buttons` (state), `clear_state_keys` (array<value>), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `onclose` (execute_function)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_return_modal.md

### return state (`state_return_state`)

- Group: state ui / state flow
- Returns a reactive state element from events
- In pins: `flow` (flow), `content` (state, required)
- Page: https://docs.rual.nl/block-types/state%20ui/state_return_state.md

### row (`state_row`)

- Group: state ui / state elements
- A div with the class row on it by default.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_row.md

### script (`state_script`)

- Group: state ui / state elements
- A script element.
- In pins: `script` (value, required)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_script.md

### security (`state_security`)

- Group: state ui / state elements
- A basic security component that shows the current sessions, 2fa devices and allows the user to add new twofactor authentication methods.
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_security.md

### select (`state_select`)

- Group: state ui / state elements
- Generates a basic select. The field will be used as state key.
- In pins: `form_id` (value, required), `options` (array, required), `hideempty` (condition), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `stateevents` (stateevents)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_select.md

### dynamic select (`state_select_dynamic`)

- Group: state ui / state elements
- Generates a basic select with a dynamic field. The field will be used as state key.
- In pins: `form_id` (value, required), `field` (value, required), `options` (array, required), `hideempty` (condition), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_select_dynamic.md

### set access token (`state_set_access_token`)

- Group: state ui / state actions
- In pins: `flow` (flow), `value` (value, required), `path` (value), `duration` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_access_token.md

### set cookie (`state_set_cookie`)

- Group: state ui / state actions
- In pins: `flow` (flow), `name` (value, required), `value` (value, required), `path` (value), `duration` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_cookie.md

### refresh datatable (`state_set_datatable_refresh`)

- Group: state ui / state actions
- Sends a state update to the datatable to refresh their data.
- In pins: `flow` (flow), `key` (value, required), `guid` (value), `guids` (array)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_datatable_refresh.md

### update datatable search (`state_set_datatable_search`)

- Group: state ui / state actions
- Sends a state update to the datatable to search for a specific value.
- In pins: `flow` (flow), `key` (value, required), `searchvalue` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_datatable_search.md

### datatable get selection (`state_set_datatable_selection`)

- Group: state ui / state actions
- Returns the current datatable selection.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow), `selection` (array)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_datatable_selection.md

### datatable update selection (`state_set_datatable_selection_update`)

- Group: state ui / state actions
- Updates the datatable selection.
- In pins: `flow` (flow), `key` (value, required), `selection` (array, required)
- Out pins: `flow` (flow), `selection` (array)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_datatable_selection_update.md

### set localstorage (`state_set_localstorage`)

- Group: state ui / state actions
- In pins: `flow` (flow), `name` (value, required), `value` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_set_localstorage.md

### small (`state_small`)

- Group: state ui / state elements
- A small text element.
- In pins: `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_small.md

### span (`state_span`)

- Group: state ui / state elements
- A span element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [hyperlink](https://docs.rual.nl/block-types/state%20ui/state_a.md) (out), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (in), [translate key](https://docs.rual.nl/block-types/translations/state_translate_key.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_span.md

### text to speech (`state_speech_synthesis_utterance`)

- Group: state ui / state actions
- Uses browsers text-to-speech to output a certain text in voice
- In pins: `flow` (flow), `voice` (value, required), `text` (value, required), `pitch` (number), `rate` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_speech_synthesis_utterance.md

### spinner (`state_spinner`)

- Group: state ui / state elements
- A div with the class spinner on it by default.
- In pins: `uiclass` (uiclass)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_spinner.md

### strong (`state_strong`)

- Group: state ui / state elements
- Indicates that its text has strong importance, seriousness, or urgency.
- In pins: `text` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_strong.md

### SVG (`state_svg`)

- Group: state ui / state elements
- A SVG element.
- In pins: `content` (state), `viewbox` (value, required), `xmlns` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_svg.md

### switch (`state_switch`)

- Group: state ui / state conditions
- Returns state based of the given expression.
- In pins: `value` (value), `default` (state)
- Out pins: `state` (state), `matched` (condition)
- Page: https://docs.rual.nl/block-types/state%20ui/state_switch.md

### table (`state_table`)

- Group: state ui / state elements
- A table element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_table.md

### table body (`state_tbody`)

- Group: state ui / state elements
- A tbody element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_tbody.md

### table column (`state_td`)

- Group: state ui / state elements
- A table column element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_td.md

### custom text (`state_text`)

- Group: state ui / state elements
- In pins: `value` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Commonly used with: [paragraph](https://docs.rual.nl/block-types/state%20ui/state_p.md) (out), [translate key](https://docs.rual.nl/block-types/translations/value_translate_key.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out)
- Page: https://docs.rual.nl/block-types/state%20ui/state_text.md

### textarea (`state_textarea`)

- Group: state ui / state elements
- Generates a basic textarea. The field will be used as state key.
- In pins: `form_id` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_textarea.md

### dynamic textarea (`state_textarea_dynamic`)

- Group: state ui / state elements
- Generates a basic textarea with a dynamic field. The field will be used as state key.
- In pins: `form_id` (value, required), `field` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_textarea_dynamic.md

### table header (`state_th`)

- Group: state ui / state elements
- A th element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_th.md

### table head (`state_thead`)

- Group: state ui / state elements
- A thead element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_thead.md

### table row (`state_tr`)

- Group: state ui / state elements
- A tr element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_tr.md

### unordered list (`state_ul`)

- Group: state ui / state elements
- An unordered list element.
- In pins: `content` (state), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_ul.md

### update server state (`state_update_state`)

- Group: state ui / state actions
- Sends a state update to the frontend and triggers updates based of it.
- In pins: `flow` (flow), `key` (value, required), `skip_update` (condition)
- Out pins: `flow` (flow)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in)
- Page: https://docs.rual.nl/block-types/state%20ui/state_update_state.md

### update server state fields (`state_update_state_fields`)

- Group: state ui / state actions
- Sends a state update to the frontend and triggers updates based of it.
- In pins: `flow` (flow), `keys` (array, required), `skip_update` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_update_state_fields.md

### update server state if empty (`state_update_state_if_empty`)

- Group: state ui / state actions
- Sends a state update to the frontend and triggers updates based of it if the field is empty.
- In pins: `flow` (flow), `key` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_update_state_if_empty.md

### rerender server state (`state_update_state_push`)

- Group: state ui / state actions
- Sends all previously non-processed state updates to the UI directly without waiting for further updates.
- In pins: `flow` (flow)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/state%20ui/state_update_state_push.md

### video (`state_video`)

- Group: state ui / state elements
- A video element.
- In pins: `src` (value, required), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/state%20ui/state_video.md

### if (`statedatatableconnection_branch`)

- Group: state ui / datatable actions
- Conditional branching for datatable connection (if.. then.. else..)
- In pins: `then` (statedatatableconnection), `else` (statedatatableconnection), `condition` (condition)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_branch.md

### button (`statedatatableconnection_button`)

- Group: state ui / datatable actions
- Adds a button that can be placed anywhere in the row.
- In pins: `text` (value, required), `icon` (value), `column_title` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `uiclassicon` (uiclass), `uistyleicon` (uistyle), `uiattributesicon` (uiattributes), `add_before` (fielddefinitions), `fielddefinitions` (fielddefinitions)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_button.md

### checkbox (`statedatatableconnection_checkbox`)

- Group: state ui / datatable actions
- Adds a checkbox that can be placed anywhere in the row.
- In pins: `value` (value), `add_check_all` (condition), `column-uiclass` (uiclass), `column-uistyle` (uistyle), `column-uiattributes` (uiattributes), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `add_before` (fielddefinitions), `add_after` (fielddefinitions)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_checkbox.md

### link (`statedatatableconnection_link`)

- Group: state ui / datatable actions
- Adds a link that can be placed anywhere in the row.
- In pins: `text` (value, required), `icon` (value), `column_title` (value), `href` (value, required), `target` (value), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `uiclassicon` (uiclass), `uistyleicon` (uistyle), `uiattributesicon` (uiattributes), `add_before` (fielddefinitions), `fielddefinitions` (fielddefinitions)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_link.md

### multiple (`statedatatableconnection_multiple`)

- Group: state ui / datatable actions
- Combine multiple datatable connections
- In pins: `statedatatableconnection_1` (statedatatableconnection), `statedatatableconnection_2` (statedatatableconnection)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_multiple.md

### radio input (`statedatatableconnection_radio`)

- Group: state ui / datatable actions
- Adds a radio input that can be placed anywhere in the row.
- In pins: `value` (value), `column-uiclass` (uiclass), `column-uistyle` (uistyle), `column-uiattributes` (uiattributes), `uiclass` (uiclass), `uistyle` (uistyle), `uiattributes` (uiattributes), `add_before` (fielddefinitions), `add_after` (fielddefinitions)
- Out pins: `statedatatableconnection` (statedatatableconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatableconnection_radio.md

### if (`statedatatablefilter_branch`)

- Group: state ui / datatable filter
- In pins: `then` (statedatatablefilter), `else` (statedatatablefilter), `condition` (condition)
- Out pins: `statedatatablefilter` (statedatatablefilter)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatablefilter_branch.md

### multiple (`statedatatablefilter_multiple`)

- Group: state ui / datatable filter
- In pins: `statedatatablefilter_1` (statedatatablefilter), `statedatatablefilter_2` (statedatatablefilter)
- Out pins: `statedatatablefilter` (statedatatablefilter)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatablefilter_multiple.md

### query filter (`statedatatablefilter_query`)

- Group: state ui / datatable filter
- In pins: `label` (value), `active` (condition), `force_active` (condition), `query` (query, required)
- Out pins: `statedatatablefilter` (statedatatablefilter)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatablefilter_query.md

### dynamic query filter (`statedatatablefilter_query_dynamic`)

- Group: state ui / datatable filter
- Creates a dynamic filter using a query
- In pins: `form_id` (value, required), `label` (value), `active` (condition), `force_active` (condition), `query` (query, required), `label_at_top` (condition), `required_fields` (fielddefinitions), `disabled` (condition), `stateformfieldconnection` (stateformfieldconnection), `extra_persistent_fields` (fielddefinitions)
- Out pins: `statedatatablefilter` (statedatatablefilter)
- Page: https://docs.rual.nl/block-types/state%20ui/statedatatablefilter_query_dynamic.md

### attributes (`stateformfieldconnection_attributes`)

- Group: state ui / form fields
- Overwrites attributes for given fields
- Out pins: `stateformfieldconnection` (stateformfieldconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/stateformfieldconnection_attributes.md

### class (`stateformfieldconnection_class`)

- Group: state ui / form fields
- Overwrites class for given fields
- Out pins: `stateformfieldconnection` (stateformfieldconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/stateformfieldconnection_class.md

### multiple (`stateformfieldconnection_multiple`)

- Group: state ui / form fields
- In pins: `stateformfieldconnection_1` (stateformfieldconnection), `stateformfieldconnection_2` (stateformfieldconnection)
- Out pins: `stateformfieldconnection` (stateformfieldconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/stateformfieldconnection_multiple.md

### state (`stateformfieldconnection_state`)

- Group: state ui / form fields
- Overwrites state for given fields
- Out pins: `stateformfieldconnection` (stateformfieldconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/stateformfieldconnection_state.md

### style (`stateformfieldconnection_style`)

- Group: state ui / form fields
- Overwrites style for given fields
- Out pins: `stateformfieldconnection` (stateformfieldconnection)
- Page: https://docs.rual.nl/block-types/state%20ui/stateformfieldconnection_style.md

## storage

### create document (`function_create_document_from_mutations`)

- Creates a document in the given storage.
- Semantics: Applies the mutations (e.g. set fields) to an empty object and creates the result in the selected storage, outputting the stored document, its guid, success, and a millisecond timestamp. A guid_seed derives a deterministic GUID (sha256 of the raw seed): if a live document already has it, the create is refused with DOCUMENT_GUID_ALREADY_EXISTS and success=false, while a soft-deleted one is restored and updated instead. Missing or unknown storage fails with MISSING_STORAGE. In simulation nothing is stored : the output document is synthetic with generated _meta.
- In pins: `flow` (flow), `mutations` (mutations), `expiry` (date), `options` (object), `storage` (storage), `guid_seed` (value)
- Out pins: `flow` (flow), `success` (condition), `guid` (value), `object` (object), `timestamp` (number), `error` (value)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (both), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_create_document_from_mutations.md

### create multiple documents (`function_create_documents`)

- Creates multiple documents in the given storage, each item in the array becomes a document.
- Semantics: Creates one document per object item of the array in the selected storage and outputs the array with created items replaced by their stored documents. Non-object items and items whose create fails pass through UNCHANGED and do NOT fail the block : success stays true with error nil even when some items were never created. Missing or unknown storage fails with MISSING_STORAGE; a non-array input creates nothing and outputs []. In simulation the input array is returned as-is and nothing is stored.
- In pins: `flow` (flow), `array` (array<object>), `expiry` (date), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `array` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/storage/function_create_documents.md

### permanently delete document (`function_delete_document`)

- Deletes the given document from the given storage permanently and unrecoverably.
- Semantics: Hard-deletes the document with the given guid permanently and unrecoverably. The very_sure pin must be truthy (true, a non-zero number, or any string other than "", "0", or "false") or the block refuses with DID_NOT_PROVIDE_VERY_SURE and success=false; missing storage fails with MISSING_STORAGE. In simulation nothing is deleted but success=true is still reported.
- In pins: `flow` (flow), `guid` (value, required), `very_sure` (condition, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_delete_document.md

### get document (`function_get_document`)

- get a specific document based on the given GUID
- Semantics: Fetches one document by guid from the selected storage, following the found flow pin only when it exists. conditionFound mirrors that; removed is true when _meta.removed0 AND also when the document does not exist at all; accessible is true only when found and not removed. A nil guid, missing storage, or read error outputs object=nil with conditionFound=false and removed=true. Example: unknown guid - object=nil, conditionFound=false, removed=true, accessible=false.
- In pins: `flow` (flow), `guid` (value), `storage` (storage)
- Out pins: `found` (flow), `object` (object), `guid` (value), `conditionFound` (condition), `removed` (condition), `accessible` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (both), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_get_document.md

### get multiple documents (cached) (`function_get_documents`)

- Get multiple documents from the given storage using the hot document cache. Fetches each document individually. Skips documents that do not exist or are removed.
- Semantics: Fetches each requested guid individually via the hot document cache and outputs the found documents, skipping misses: duplicate guids are deduped and objects with _meta.guid are accepted in place of plain guid strings. Removed documents are skipped unless include_removed is true. all_found is true only when every guid resolved cleanly : a missing, removed-and-hidden, or errored document makes it false : and error carries the first real store failure (a simple miss is a skip, not an error).
- In pins: `flow` (flow), `storage` (storage), `guids` (array), `include_removed` (condition)
- Out pins: `flow` (flow), `documents` (array), `all_found` (condition), `error` (value)
- Commonly used with: [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (both), [get multiple documents (cached)](https://docs.rual.nl/block-types/storage/function_get_documents.md) (both), [range](https://docs.rual.nl/block-types/redis/redis_list_range.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_get_documents.md

### get mapping (`function_get_mapping`)

- Returns the mapping of a given storage.
- Semantics: Outputs the selected storage's index mapping on mapping and its field names, sorted alphabetically, on fields. A missing or unknown storage fails with error "No storage given.", a storage without mapping support with "Storage does not support mapping retrieval." : both with success=false and empty mapping and fields.
- In pins: `flow` (flow), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `mapping` (object), `fields` (array)
- Page: https://docs.rual.nl/block-types/storage/function_get_mapping.md

### get multiple documents (`function_mget_documents`)

- Get multiple documents from the given storage using a single Elasticsearch multi-get request. Much faster than fetching each document individually.
- Semantics: Fetches all requested guids in ONE multi-get round trip and outputs the found documents plus their number on count. Duplicate guids are deduped, objects with _meta.guid are accepted in place of plain strings, missing guids are skipped, and removed documents are skipped unless include_removed is true. Failures are SILENT: missing storage, an unknown store, or a failed multi-get all leave documents=[] and count=0 with no error signal.
- In pins: `flow` (flow), `storage` (storage), `guids` (array), `include_removed` (condition)
- Out pins: `flow` (flow), `documents` (array), `count` (number)
- Commonly used with: [select fields](https://docs.rual.nl/block-types/array/array_get_by_fields.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_mget_documents.md

### remove document (`function_remove_document`)

- Removes the given document from the given storage.
- Semantics: SOFT-deletes the document: it stamps _meta.removed and the data stays recoverable : use permanently delete document for a hard delete. The guid comes from the guid pin, else the guid_seed (same sha256 derivation as create document), else the deprecated object pin's _meta.guid; with none of these it fails with MISSING_DATA. Outputs the removed document and its guid. In simulation nothing is stored : the fetched document is only stamped in memory.
- In pins: `flow` (flow), `guid` (value), `guid_seed` (value), `expiry` (date), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `object` (object), `guid` (value), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (both), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_remove_document.md

### remove multiple documents (`function_remove_documents`)

- Removes multiple documents from the given storage.
- Semantics: SOFT-deletes every document whose guid is in the array (plain guid strings or objects with _meta.guid); the documents stay recoverable. It stops at the FIRST failure : success=false with that error, later guids never attempted, earlier ones already removed. An empty array or any simulated run reports success=true without touching storage.
- In pins: `flow` (flow), `array` (array), `expiry` (date), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (both), [date now](https://docs.rual.nl/block-types/date/date_currentdate.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [funnel](https://docs.rual.nl/block-types/funnels/funnel.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_remove_documents.md

### restore document (`function_restore_document`)

- Restores a single document from the removed state and adds a revisions for this modification.
- Semantics: Un-deletes one soft-deleted document: the guid pin wins, falling back to the deprecated object pin's _meta.guid. On success outputs the restored document with success=true and error=nil. No guid gives error=MISSING_DATA, no storage MISSING_STORAGE, and a store failure the store's error message; object is an empty object in those cases (nil only when the restore call itself errors). Simulation returns an empty object with success=true without touching storage.
- In pins: `flow` (flow), `guid` (value), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `object` (object), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_restore_document.md

### restore multiple documents (`function_restore_documents`)

- Restores multiple documents from the removed state.
- Semantics: Un-deletes every document whose GUID is in the array pin; items may be GUID strings or objects carrying _meta.guid. Stops at the first failing GUID with success=false and the store's error, leaving later GUIDs unrestored. An empty, nil, or non-array input (or a missing storage) yields success=false with error MISSING_DATA or MISSING_STORAGE. Simulation reports success=true without writing.
- In pins: `flow` (flow), `array` (array), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/storage/function_restore_documents.md

### search (`function_search`)

- searches in the given storage based on a query.
- Semantics: Runs the merged query (all wired query* pins deep-merged, bool clauses concatenated) against the storage and outputs the matching documents on array, their GUIDs on guids, and has_hits=true when anything matched. hits is the RETURNED array length by default, not the total match count; the total is only reported when the query opts in via include_hits or profile. Default limit is 5000 when unwired. When the query returns aggregations, array holds a single object with the aggregation results instead of documents. Missing storage gives success=false with error MISSING_STORAGE; a failed search gives success=false, the error message, an empty array and hits=0.
- In pins: `flow` (flow), `query` (query, required), `limit` (number), `offset` (number), `cache_key` (value), `storage` (storage)
- Out pins: `flow` (flow), `array` (array), `hits` (number), `guids` (array), `has_hits` (condition), `profile` (array), `success` (condition), `error` (value), `cursor` (array)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_search.md

### find existing documents (`function_search_find_meta_by_key`)

- returns array of existing and non-existing documents in a given storage from an array of objects.
- Semantics: Splits the values array into existing (a document with the same key value was found in the storage) and non_existing. String items are wrapped as {key: string}; object items keep their fields and, when found, get the stored document's _meta. An item that arrived WITH its own _meta always lands in non_existing. Empty values, an empty key, a missing storage, or a failed search outputs two empty arrays. Non-string non-object items (numbers, booleans) are dropped from both outputs.
- In pins: `flow` (flow), `key` (value), `values` (array), `storage` (storage)
- Out pins: `flow` (flow), `existing` (array), `non_existing` (array)
- Page: https://docs.rual.nl/block-types/storage/function_search_find_meta_by_key.md

### search neighbors (`function_search_neighbors`)

- Given an anchor GUID, returns the N documents directly before and the M directly after it when the storage is sorted by the chosen field. Use this to show context around a specific document (e.g. messages around a chat message) without paginating the whole storage.
- Semantics: Returns the before (default 2) documents immediately before and the after (default 2) immediately after the anchor GUID when the storage is sorted by sort_field, plus combined = before + anchor + after in display order. sort_order defaults to desc and any other value falls back to desc. found=false with anchor=nil when the GUID does not exist : note success is still true then (error ANCHOR_NOT_FOUND); success=false is reserved for missing storage/guid/sort_field and search failures, with before/after/combined empty.
- In pins: `flow` (flow), `guid` (value, required), `sort_field` (value, required), `sort_order` (value), `before` (number), `after` (number), `query` (query), `storage` (storage)
- Out pins: `flow` (flow), `before` (array), `anchor` (object), `after` (array), `combined` (array), `found` (condition), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/storage/function_search_neighbors.md

### search single (`function_search_single_result`)

- searches in the given storage based on a query and returns maximum one result.
- Semantics: Runs the query with limit forced to 1 and outputs the FIRST matching document on object, its _meta.guid on guid, and has_hits=true. No match gives an empty object, guid=nil and has_hits=false with success=true. Missing storage or a failed search gives success=false with error MISSING_STORAGE or the search error, plus empty object and guid=nil.
- In pins: `flow` (flow), `query` (query, required), `cache_key` (value), `storage` (storage)
- Out pins: `flow` (flow), `object` (object), `guid` (value), `has_hits` (condition), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [must](https://docs.rual.nl/block-types/query/query_bool_must.md) (in), [filter](https://docs.rual.nl/block-types/query/query_bool_filter.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_search_single_result.md

### search streaming (`function_search_stream`)

- streams the results of the search to a function. When using a limit, the first scroll will always fetch 10k items, we'll just truncate them if your limit is
- Semantics: Runs the query against the storage and outputs count = number of found items, capped by limit (default 10000). In the Go engine the wired function is NOT executed per result : only count is emitted; do not rely on the function pin firing. Missing storage or a failed search outputs count=0.
- In pins: `flow` (flow), `query` (query, required), `concurrency` (number), `id` (value), `storage` (storage, required)
- Out pins: `flow` (flow), `count` (number), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/storage/function_search_stream.md

### storage left join document (`function_storage_left_join_document`)

- Left joins documents from a storage into the given array. Looks up each document by its corresponding GUID and nests the found document under the specified key. Documents without a match get null for that key.
- Semantics: Enriches each item of array by nesting the storage document whose GUID sits at the SAME INDEX in guids under document_key; items without a match get null for that key. count reports how many items matched. When fields is wired only those fields (plus _meta) are copied, otherwise the whole document. Soft-deleted documents count as missing unless include_removed is exactly true. Empty array, empty guids, empty document_key, or missing storage passes the input array through unchanged with count=0.
- In pins: `flow` (flow), `storage` (storage), `array` (array, required), `guids` (array, required), `document_key` (value, required), `fields` (fielddefinitions), `include_removed` (condition)
- Out pins: `flow` (flow), `array` (array), `count` (number)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in), [remove fields](https://docs.rual.nl/block-types/array/array_remove_fields.md) (out), [get multiple](https://docs.rual.nl/block-types/fields/fielddefinitions_get_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_storage_left_join_document.md

### storage left join exists (`function_storage_left_join_exists`)

- Left joins a boolean field into the given array based on whether a document exists in the storage for each corresponding GUID. Sets the field to true when found, false when not.
- Semantics: Sets found_key=true on each array item whose same-index GUID in guids exists in the storage, false otherwise; count reports how many matched. Soft-deleted documents count as NOT existing unless include_removed is exactly true. Empty array, empty guids, empty found_key, or missing storage passes the input array through unchanged with count=0.
- In pins: `flow` (flow), `storage` (storage), `array` (array, required), `guids` (array, required), `found_key` (value, required), `include_removed` (condition)
- Out pins: `flow` (flow), `array` (array), `count` (number)
- Commonly used with: [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_storage_left_join_exists.md

### set document expiry (`function_update_document_expiry`)

- Updates the expiry of the given document from the given storage.
- Semantics: Sets only the expiry timestamp of an existing document; an unwired expiry pin stores -1. Verifies the document exists first: an unknown GUID fails with success=false and the store's error. Missing storage gives error MISSING_STORAGE. Simulation does nothing at all : no success/error pins are set.
- In pins: `flow` (flow), `guid` (value, required), `expiry` (date, required), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/storage/function_update_document_expiry.md

### update document (`function_update_document_mutations`)

- Update document in the given storage and creates a revision for it.
- Semantics: Applies the mutations to the document addressed by guid : falling back to guid_seed (sha256 of the raw seed, same as create document) and then to the deprecated object pin's _meta.guid : and outputs the updated document, its guid, and timestamp in ms. No resolvable GUID gives error MISSING_GUID; missing storage MISSING_STORAGE; a failed update gives success=false, an empty object and timestamp=-1. has_changes=false when the update succeeded but effectively changed nothing, so success=true does not imply a modification. Simulation applies the mutations in memory and reports success without writing.
- In pins: `flow` (flow), `guid` (value), `guid_seed` (value), `mutations` (mutations), `expiry` (date), `options` (object), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `guid` (value), `object` (object), `timestamp` (number), `error` (value), `has_changes` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (both), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_update_document_mutations.md

### update multiple documents (`function_update_documents`)

- Updates multiple documents in the given storage
- Semantics: Applies the same mutations to every document whose GUID is in the array pin (items may be GUID strings or objects with _meta.guid). Unlike the single-document block this keeps going past failures: success=false when one or more GUIDs failed, with those GUIDs listed on failed_updates and the successfully updated documents (without _meta) on documents. An empty or unresolvable array is success=true with nothing done. Missing storage gives success=false with error MISSING_STORAGE. Simulation reports success without writing.
- In pins: `flow` (flow), `array` (array), `mutations` (mutations), `expiry` (date), `options` (object), `priority` (number), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `failed_updates` (array), `documents` (array)
- Commonly used with: [search](https://docs.rual.nl/block-types/storage/function_search.md) (both), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in), [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out)
- Page: https://docs.rual.nl/block-types/storage/function_update_documents.md

### upsert document (`function_upsert_document_from_mutations`)

- Creates or updates a document with the given GUID. If the document does not exist, it will be created. If it already exists, the mutations will be applied to the existing document.
- Semantics: Updates the document at guid (falling back to guid_seed, the sha256 of the raw seed) when it exists, otherwise creates it from the mutations; created tells which path ran. A soft-deleted document at that GUID is RESTORED first and then updated, reported as created=true. has_changes=false only when an existing live document was updated without effective changes; creates and revivals always report has_changes=true. No resolvable GUID gives error MISSING_GUID; missing storage MISSING_STORAGE; a failed write gives success=false, empty object, timestamp=-1. Simulation applies mutations in memory without writing.
- In pins: `flow` (flow), `guid` (value), `guid_seed` (value), `mutations` (mutations), `expiry` (date), `options` (object), `storage` (storage)
- Out pins: `flow` (flow), `success` (condition), `guid` (value), `object` (object), `timestamp` (number), `error` (value), `created` (condition), `has_changes` (condition)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [generate guid](https://docs.rual.nl/block-types/value/value_guid.md) (in), [return Exposed Data](https://docs.rual.nl/block-types/function%20execution/function_return_exposed.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/storage/function_upsert_document_from_mutations.md

### wait for document (`function_wait_for_document_search`)

- Using the given timestamp will wait for the document to be present in search.
- Semantics: Blocks until the storage's search index has processed the write marked by the timestamp pin (unix ms, e.g. from an update/create block's timestamp out pin), then outputs available=true. Without a timestamp the wait anchors to the storage's most recent insert marker instead. No storage configured gives available=false; simulation skips the wait and returns available=true immediately.
- In pins: `flow` (flow), `timestamp` (number)
- Out pins: `flow` (flow), `available` (condition)
- Page: https://docs.rual.nl/block-types/storage/function_wait_for_document_search.md

### dynamic storage (`storage_dynamic`)

- define a storage using a dynamic value
- Semantics: Wraps the value pin in an array and outputs it as a storage name, so a runtime-computed value can select the storage for connected blocks. A nil or unwired value outputs an empty array (no storage), not an array containing nil.
- In pins: `value` (value)
- Out pins: `storage` (storage)
- Page: https://docs.rual.nl/block-types/storage/storage_dynamic.md

### trigger event (`storage_event`)

- Event is executed when the storage receives an event relevant update (removed, created, updated or saved).
- Semantics: Entry point that fires when a document in the configured storage is created, updated, removed, or saved. The event body seeds the out pins: object is the document at event time, storage the triggering storage, revisions and fields_modified what changed, and user_guids the known caller GUIDs (can be empty for queue or anonymous writes). Runs as a production run; the block itself has no execute-time logic.
- Out pins: `flow` (flow), `object` (object), `storage` (storage), `revisions` (array<object>), `fields_modified` (array), `user_guids` (array)
- Commonly used with: [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [delete](https://docs.rual.nl/block-types/redis/function_redis_cache_delete_key.md) (out), [get guid](https://docs.rual.nl/block-types/object/object_get_guid.md) (out)
- Page: https://docs.rual.nl/block-types/storage/storage_event.md

## stripe

### connect (`function_create_stripe`)

- Opens a Stripe connection. Point it at a Stripe service provider so the secret key stays in the provider store and never appears in this blueprint : the API key pin is the older way and leaves the key readable to anyone who can open the flow.
- In pins: `flow` (flow), `provider` (value), `apikey` (value), `account_id` (value), `api_version` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/stripe/function_create_stripe.md

### create checkout (`stripeconnection_checkout_create`)

- Group: stripe / checkout
- Creates a Stripe Checkout Session and returns the url of Stripe's hosted payment page to redirect the customer to : or, with ui mode set to embedded, a client secret for mounting Checkout inline on your own page. No card data reaches this cluster. Either wire line_items, or give amount + product name for a one-off price that needs nothing set up in Stripe first.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `mode` (value), `ui_mode` (value), `success_url` (value), `cancel_url` (value), `return_url` (value), `amount` (number), `currency` (value), `product_name` (value), `quantity` (number), `interval` (value), `interval_count` (number), `line_items` (array<object>), `customer_id` (value), `customer_email` (value), `client_reference_id` (value), `metadata` (object), `payment_method_types` (array<value>), `locale` (value), `trial_period_days` (number), `allow_promotion_codes` (boolean), `automatic_tax` (boolean), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `url` (value), `client_secret` (value), `session_id` (value), `session` (object), `payment_intent_id` (value), `customer_id` (value), `amount_total` (number), `currency` (value), `metadata` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_checkout_create.md

### get checkout (`stripeconnection_checkout_get`)

- Group: stripe / checkout
- Reads back a Checkout Session to answer did they pay. Branch on the paid pin, not on status : a session reaches status complete in subscription and setup modes where no money moved at all.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `session_id` (value, required)
- Out pins: `flow` (flow), `connection` (stripeconnection), `paid` (condition), `payment_status` (value), `status` (value), `payment_intent_id` (value), `subscription_id` (value), `customer_id` (value), `customer_email` (value), `amount_total` (number), `currency` (value), `client_reference_id` (value), `line_items` (array<object>), `metadata` (object), `session` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_checkout_get.md

### create credit note (`stripeconnection_credit_notes_create`)

- Group: stripe / credits
- Credits a customer against an invoice : the accounting way to give a subscriber a month back without refunding their card. credit_balance (the default) puts the amount on their Stripe balance so it comes off their next invoice; refund also sends the money back; out_of_band just records that you settled it elsewhere. The invoice id comes off get subscription as latest invoice id, or off list invoices.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `invoice_id` (value, required), `amount` (number, required), `credit_type` (value), `reason` (value), `memo` (value), `email_customer` (boolean), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `credit_note_id` (value), `number` (value), `status` (value), `amount` (number), `currency` (value), `customer_id` (value), `invoice_id` (value), `pdf_url` (value), `metadata` (object), `credit_note` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_credit_notes_create.md

### create customer (`stripeconnection_customers_create`)

- Group: stripe / customers
- Creates the Stripe customer that saved cards, subscriptions and invoices hang off. Stripe enforces no uniqueness : creating this twice for one person gives them two billing histories and two sets of saved cards, so wire an idempotency key from your own user GUID.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `email` (value), `name` (value), `phone` (value), `description` (value), `locale` (value), `address` (object), `shipping` (object), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `customer_id` (value), `email` (value), `name` (value), `balance` (number), `currency` (value), `metadata` (object), `customer` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_customers_create.md

### get customer (`stripeconnection_customers_get`)

- Group: stripe / customers
- Reads a Stripe customer. A customer deleted in Stripe comes back as a tombstone rather than an error : this block reports that as CUSTOMER_DELETED instead of handing back an almost-empty object that looks live.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `customer_id` (value, required)
- Out pins: `flow` (flow), `connection` (stripeconnection), `customer_id` (value), `email` (value), `name` (value), `balance` (number), `currency` (value), `metadata` (object), `customer` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_customers_get.md

### list invoices (`stripeconnection_invoices_list`)

- Group: stripe / credits
- The billing history for a customer or a subscription, newest first. Set at least one of the two filters : unfiltered this would walk the whole account. The latest invoice pins are the shortcut for "credit their last month".
- In pins: `flow` (flow), `connection` (stripeconnection, required), `customer_id` (value), `subscription_id` (value), `status` (value), `limit` (number)
- Out pins: `flow` (flow), `connection` (stripeconnection), `invoices` (array<object>), `count` (number), `has_more` (condition), `latest_invoice_id` (value), `latest_invoice` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_invoices_list.md

### cancel payment (`stripeconnection_paymentintents_cancel`)

- Group: stripe / payments
- Cancels a payment that has not completed. A payment that already succeeded cannot be cancelled : refund it instead.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `payment_intent_id` (value, required), `reason` (value), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `succeeded` (condition), `status` (value), `payment_intent_id` (value), `client_secret` (value), `amount` (number), `amount_received` (number), `currency` (value), `payment_method_type` (value), `payment_method_label` (value), `payment_method` (object), `charge_id` (value), `receipt_url` (value), `customer_id` (value), `metadata` (object), `payment_intent` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_paymentintents_cancel.md

### create payment (`stripeconnection_paymentintents_create`)

- Group: stripe / payments
- Creates a PaymentIntent : the route for a custom card form, where the page confirms with Stripe.js using the client secret. For a hosted payment page use create checkout instead. Also the way to charge a card already on file, with off session.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `amount` (number, required), `currency` (value), `description` (value), `customer_id` (value), `payment_method_id` (value), `off_session` (boolean), `confirm` (boolean), `save_payment_method` (boolean), `payment_method_types` (array<value>), `receipt_email` (value), `statement_descriptor_suffix` (value), `statement_descriptor` (value), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `succeeded` (condition), `status` (value), `payment_intent_id` (value), `client_secret` (value), `amount` (number), `amount_received` (number), `currency` (value), `payment_method_type` (value), `payment_method_label` (value), `payment_method` (object), `charge_id` (value), `receipt_url` (value), `customer_id` (value), `metadata` (object), `payment_intent` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_paymentintents_create.md

### get payment (`stripeconnection_paymentintents_get`)

- Group: stripe / payments
- Answers did this payment succeed, and what did they pay with. The payment method pins come off the charge, so they report the method actually used rather than the ones that were offered.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `payment_intent_id` (value, required)
- Out pins: `flow` (flow), `connection` (stripeconnection), `succeeded` (condition), `status` (value), `payment_intent_id` (value), `client_secret` (value), `amount` (number), `amount_received` (number), `currency` (value), `payment_method_type` (value), `payment_method_label` (value), `payment_method` (object), `charge_id` (value), `receipt_url` (value), `customer_id` (value), `metadata` (object), `payment_intent` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_paymentintents_get.md

### list payment methods (`stripeconnection_paymentmethods_list`)

- Group: stripe / payments
- The cards and mandates a customer has saved, for a "pay with a card on file" screen. Each entry carries a label so a picker can be rendered without digging through the nested object.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `customer_id` (value, required), `type` (value), `limit` (number)
- Out pins: `flow` (flow), `connection` (stripeconnection), `payment_methods` (array<object>), `count` (number), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_paymentmethods_list.md

### create refund (`stripeconnection_refunds_create`)

- Group: stripe / credits
- Sends money back to whatever the customer paid with. Leave amount empty to refund the whole payment. This is one of the two ways to credit someone : it moves real money out of the account. The other is create credit note, which settles against a future invoice instead.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `payment_intent_id` (value), `charge_id` (value), `amount` (number), `reason` (value), `reverse_transfer` (boolean), `refund_application_fee` (boolean), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `refunded` (condition), `status` (value), `refund_id` (value), `amount` (number), `currency` (value), `charge_id` (value), `failure_reason` (value), `metadata` (object), `refund` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_refunds_create.md

### cancel subscription (`stripeconnection_subscriptions_cancel`)

- Group: stripe / subscriptions
- Cancels a subscription. By default at the end of the paid-for period: the customer keeps their access until it runs out, the subscription stays active with cancels at period end set, and resume subscription undoes it. Tick immediately to stop access now : that is irreversible, and unless prorate is set the customer is not credited for the unused time.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `subscription_id` (value, required), `immediately` (boolean), `prorate` (boolean), `reason` (value), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `is_active` (condition), `status` (value), `subscription_id` (value), `cancel_at_period_end` (condition), `current_period_end` (number), `current_period_start` (number), `canceled_at` (number), `trial_end` (number), `price_id` (value), `items` (array<object>), `customer_id` (value), `latest_invoice_id` (value), `metadata` (object), `subscription` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_cancel.md

### create subscription (`stripeconnection_subscriptions_create`)

- Group: stripe / subscriptions
- Starts recurring billing for a customer who already has a payment method on file. To collect the card and subscribe in one step, use create checkout in subscription mode instead.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `customer_id` (value, required), `price_id` (value), `quantity` (number), `items` (array<object>), `payment_method_id` (value), `trial_period_days` (number), `coupon` (value), `allow_incomplete` (boolean), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `is_active` (condition), `status` (value), `subscription_id` (value), `cancel_at_period_end` (condition), `current_period_end` (number), `current_period_start` (number), `canceled_at` (number), `trial_end` (number), `price_id` (value), `items` (array<object>), `customer_id` (value), `latest_invoice_id` (value), `metadata` (object), `subscription` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_create.md

### get subscription (`stripeconnection_subscriptions_get`)

- Group: stripe / subscriptions
- Reads a subscription : whether it is active, when the paid-for period ends, and whether it is set to run out. Also where the latest invoice id a credit note needs comes from.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `subscription_id` (value, required)
- Out pins: `flow` (flow), `connection` (stripeconnection), `is_active` (condition), `status` (value), `subscription_id` (value), `cancel_at_period_end` (condition), `current_period_end` (number), `current_period_start` (number), `canceled_at` (number), `trial_end` (number), `price_id` (value), `items` (array<object>), `customer_id` (value), `latest_invoice_id` (value), `metadata` (object), `subscription` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_get.md

### resume subscription (`stripeconnection_subscriptions_resume`)

- Group: stripe / subscriptions
- Renews a subscription that was going to stop: clears cancels at period end, and lifts a pause if one is set. A subscription that has already ended cannot be resumed by anything : the block says so rather than failing obscurely, and a new subscription has to be created.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `subscription_id` (value, required), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `is_active` (condition), `status` (value), `subscription_id` (value), `cancel_at_period_end` (condition), `current_period_end` (number), `current_period_start` (number), `canceled_at` (number), `trial_end` (number), `price_id` (value), `items` (array<object>), `customer_id` (value), `latest_invoice_id` (value), `metadata` (object), `subscription` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_resume.md

### update subscription (`stripeconnection_subscriptions_update`)

- Group: stripe / subscriptions
- Upgrades, downgrades or re-quantities a subscription. proration behaviour decides what happens to the part of the term already paid for: create_prorations credits the unused time and bills the new plan pro rata on the next invoice, always_invoice bills it straight away, none leaves the customer on the old amount until the term ends. Changing the plan needs the subscription item's id, which this block looks up for you when you give a price id.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `subscription_id` (value, required), `price_id` (value), `quantity` (number), `items` (array<object>), `proration_behavior` (value), `payment_method_id` (value), `coupon` (value), `cancel_at_period_end` (boolean), `metadata` (object), `idempotency_key` (value)
- Out pins: `flow` (flow), `connection` (stripeconnection), `is_active` (condition), `status` (value), `subscription_id` (value), `cancel_at_period_end` (condition), `current_period_end` (number), `current_period_start` (number), `canceled_at` (number), `trial_end` (number), `price_id` (value), `items` (array<object>), `customer_id` (value), `latest_invoice_id` (value), `metadata` (object), `subscription` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_update.md

### verify webhook (`stripeconnection_webhook_verify`)

- Group: stripe / webhooks
- Proves an incoming webhook really came from Stripe, and unpacks the event. Wire the raw request body into payload : a body that has been parsed into an object and re-encoded will never verify, because the signature covers the exact bytes Stripe sent. Without this block an endpoint acts on anything POSTed to a URL that appears in the Stripe dashboard, the blueprint and every log it passed through.
- In pins: `flow` (flow), `connection` (stripeconnection, required), `payload` (value, required), `signature` (value, required), `secret` (value), `tolerance` (number)
- Out pins: `flow` (flow), `connection` (stripeconnection), `verified` (condition), `event_type` (value), `event_id` (value), `object` (object), `object_id` (value), `metadata` (object), `livemode` (condition), `event` (object), `success` (condition), `error` (value), `error_code` (value), `decline_code` (value)
- Page: https://docs.rual.nl/block-types/stripe/stripeconnection_webhook_verify.md

## studio functions

### text (`comment_chat`)

- Group: studio functions / comment
- Semantics: Studio-only annotation: no pins, no executor, no runtime effect : the flow engine has no case for this type and skips it. Its text is documentation on the canvas, not data.
- Page: https://docs.rual.nl/block-types/studio%20functions/comment_chat.md

### title (`comment_title`)

- Group: studio functions / comment
- Semantics: Studio-only annotation rendered as a title on the canvas: no pins, no executor, no runtime effect : the flow engine has no case for this type and skips it.
- Page: https://docs.rual.nl/block-types/studio%20functions/comment_title.md

### warning (`comment_warning_icon`)

- Group: studio functions / comment
- Semantics: Studio-only annotation that marks a canvas note with a warning icon: no pins, no executor, no runtime effect : the flow engine has no case for this type and skips it.
- Page: https://docs.rual.nl/block-types/studio%20functions/comment_warning_icon.md

## styling

### position absolute (`uistyle_absolute`)

- Group: styling / element
- Specifies the type of positioning method used for an element (absolute).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_absolute.md

### background (`uistyle_background`)

- Group: styling / element
- property sets the background color/image of an element.
- In pins: `color` (value), `image` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_background.md

### border (`uistyle_border`)

- Group: styling / element
- A shorthand property for all the border properties.
- In pins: `top` (value), `bottom` (value), `left` (value), `right` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_border.md

### if (`uistyle_branch`)

- Group: styling / style
- Conditional branching for conditions (if.. then.. else..).
- In pins: `then` (uistyle), `else` (uistyle), `condition` (condition)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_branch.md

### color (`uistyle_color`)

- Group: styling / element
- CSS property sets the foreground color value of an element their text and text decorations, and sets the value.
- In pins: `color` (value)
- Out pins: `uistyle` (uistyle)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [container](https://docs.rual.nl/block-types/state%20ui/state_container.md) (out), [multiple](https://docs.rual.nl/block-types/styling/uistyle_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/styling/uistyle_color.md

### cursor (`uistyle_cursor`)

- Group: styling / element
- sets the type of mouse cursor, if any, to show when the mouse pointer is over an element.
- In pins: `cursor` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_cursor.md

### custom (`uistyle_custom`)

- Group: styling / style
- Custom styling
- Out pins: `uistyle` (uistyle)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [get at index](https://docs.rual.nl/block-types/array/array_get_at_index.md) (in), [div](https://docs.rual.nl/block-types/Component%20UI/component_content_div.md) (out), [custom text](https://docs.rual.nl/block-types/Component%20UI/component_text.md) (out)
- Page: https://docs.rual.nl/block-types/styling/uistyle_custom.md

### display (`uistyle_display`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex.
- In pins: `display` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display.md

### display block (`uistyle_display_block`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (block).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_block.md

### display flex (`uistyle_display_flex`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (flex).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_flex.md

### display inline (`uistyle_display_inline`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (inline).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_inline.md

### display inline block (`uistyle_display_inline_block`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (inline-block).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_inline_block.md

### display none (`uistyle_display_none`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (none).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_none.md

### display show (`uistyle_display_show`)

- Group: styling / element
- sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex (show).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_display_show.md

### position fixed (`uistyle_fixed`)

- Group: styling / element
- Specifies the type of positioning method used for an element (fixed).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_fixed.md

### font size (`uistyle_font_size`)

- Group: styling / element
- Specifies the font size of text.
- In pins: `fontsize` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_font_size.md

### font weight (`uistyle_font_weight`)

- Group: styling / element
- sets the weight (or boldness) of the font
- In pins: `fontweight` (value, required)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_font_weight.md

### height (`uistyle_height`)

- Group: styling / element
- Sets the height of an element.
- In pins: `height` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_height.md

### margin (`uistyle_margin`)

- Group: styling / element
- Sets all the margin properties in one declaration.
- In pins: `top` (value), `bottom` (value), `left` (value), `right` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_margin.md

### max height (`uistyle_max_height`)

- Group: styling / element
- sets the maximum height of an element.
- In pins: `max-height` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_max_height.md

### max width (`uistyle_max_width`)

- Group: styling / element
- sets the maximum width of an element.
- In pins: `max-width` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_max_width.md

### multiple (`uistyle_multiple`)

- Group: styling / style
- Multiple styling
- In pins: `style_1` (uistyle), `style_2` (uistyle)
- Out pins: `uistyle` (uistyle)
- Commonly used with: [h1](https://docs.rual.nl/block-types/state%20ui/state_h1.md) (out), [color](https://docs.rual.nl/block-types/styling/uistyle_color.md) (in), [padding](https://docs.rual.nl/block-types/styling/uistyle_padding.md) (in)
- Page: https://docs.rual.nl/block-types/styling/uistyle_multiple.md

### opacity (`uistyle_opacity`)

- Group: styling / element
- Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency.
- In pins: `opacity` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_opacity.md

### padding (`uistyle_padding`)

- Group: styling / element
- A shorthand property for all the padding-* properties.
- In pins: `top` (value), `bottom` (value), `left` (value), `right` (value)
- Out pins: `uistyle` (uistyle)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [multiple](https://docs.rual.nl/block-types/styling/uistyle_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/styling/uistyle_padding.md

### position  (`uistyle_position`)

- Group: styling / element
- Specifies the top/bottom/left/right position of a positioned element.
- In pins: `top` (value), `bottom` (value), `left` (value), `right` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_position.md

### position relative (`uistyle_relative`)

- Group: styling / element
- Specifies the type of positioning method used for an element (relative).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_relative.md

### rgb (`uistyle_rgb`)

- Group: styling / element
- R (red), G (green), and B (blue).
- In pins: `red` (number), `green` (number), `blue` (number)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_rgb.md

### rgba (`uistyle_rgba`)

- Group: styling / element
- R (red), G (green), B (blue) and A (alpha).
- In pins: `red` (number), `green` (number), `blue` (number), `alpha` (number)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_rgba.md

### position static (`uistyle_static`)

- Group: styling / element
- Specifies the type of positioning method used for an element (static).
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_static.md

### switch (`uistyle_switch`)

- Group: styling / style
- returns a style based of the given expression
- In pins: `value` (value), `default` (uistyle)
- Out pins: `uistyle` (uistyle), `matched` (condition)
- Page: https://docs.rual.nl/block-types/styling/uistyle_switch.md

### width (`uistyle_width`)

- Group: styling / element
- Sets the width of an element.
- In pins: `width` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_width.md

### z index (`uistyle_zindex`)

- Group: styling / element
- sets the z-order of a positioned element and its descendants or flex items.
- In pins: `zindex` (value)
- Out pins: `uistyle` (uistyle)
- Page: https://docs.rual.nl/block-types/styling/uistyle_zindex.md

## system settings

### set system setting (`function_set_system_key`)

- Group: system settings / system
- define a system setting
- Semantics: Creates a document in the system_key_value storage with the given field name and value (plus description when wired), then continues; there is no success or error output. An empty or unwired field does nothing at all, and a failing write is silently swallowed. The is_secure pin is declared but not read by the Go executor.
- In pins: `flow` (flow), `field` (value, required), `value` (value, required), `description` (value), `is_secure` (condition)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/system%20settings/function_set_system_key.md

### get dynamic setting (`value_get_system_key`)

- Group: system settings / system
- get a setting key using a dynamic value
- Semantics: Reads a system setting whose key comes from the field pin, FALLING BACK to the block's label text when field is empty. Outputs the setting's stored value, or nil when the key does not exist or the lookup fails; when both field and label are empty NO output is written at all.
- In pins: `field` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/system%20settings/value_get_system_key.md

### get setting (`value_get_system_key_select`)

- Group: system settings / system
- get a created system setting
- Semantics: Reads the system setting selected in the block's configuration (fixed key, no input pins) and outputs its stored value. Outputs nil when the key does not exist or the lookup fails; when no key is configured NO output is written at all.
- Out pins: `value` (value)
- Commonly used with: [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [open connection](https://docs.rual.nl/block-types/postmark/postmarkconnection_open.md) (out), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (out)
- Page: https://docs.rual.nl/block-types/system%20settings/value_get_system_key_select.md

## threads

### create (`function_create_thread`)

- Semantics: Claims a named thread for the whole cluster and reports on `running` whether THIS node took it. The claim is per entity and per name, so exactly one node answers true no matter how many run the blueprint : which is what makes it the right place to put startup work that must happen once, given system_event_startup itself fires on every node. A node that loses answers running=false with error THREAD_ALREADY_CLAIMED; branch on `running` rather than assuming it. The claim is released by function_shutdown_thread, and lapses on its own shortly after the holding node stops.
- In pins: `flow` (flow), `name` (value)
- Out pins: `flow` (flow), `running` (condition), `error` (value), `function_startup` (execute_function), `function_shutdown` (execute_function), `function_on_message` (execute_function)
- Page: https://docs.rual.nl/block-types/threads/function_create_thread.md

### send message (`function_message_thread`)

- In pins: `flow` (flow), `thread` (value), `message` (object)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/threads/function_message_thread.md

### shutdown (`function_shutdown_thread`)

- In pins: `flow` (flow), `name` (value)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/threads/function_shutdown_thread.md

### listen for thread messages (`function_thread_message_listener`)

- In pins: `flow` (flow)
- Out pins: `flow` (flow), `error` (value), `function_on_message` (execute_function)
- Page: https://docs.rual.nl/block-types/threads/function_thread_message_listener.md

## tikkie

### custom delete (`tikkie_custom_delete`)

- A custom DELETE request.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `url` (value, required), `body` (object, required), `query` (object)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_custom_delete.md

### custom get (`tikkie_custom_get`)

- A custom GET request.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `url` (value, required), `query` (object)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_custom_get.md

### custom post (`tikkie_custom_post`)

- A custom POST request.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `url` (value, required), `body` (object, required), `query` (object)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_custom_post.md

### custom put (`tikkie_custom_put`)

- A custom PUT request.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `url` (value, required), `body` (object, required), `query` (object)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_custom_put.md

### connect (`tikkie_open_connection`)

- Creates an initial connection with the Tikkie API using your app token.
- In pins: `flow` (flow), `apikey` (value, required), `apptoken` (value, required), `production` (condition, required)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_open_connection.md

### create paymentrequest (`tikkie_paymentrequest_create`)

- Creates a payment request.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `amountincents` (number), `description` (value, required), `expirydate` (date), `referenceid` (value)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_paymentrequest_create.md

### get paymentrequests (`tikkie_paymentrequest_get_all`)

- Get all payment requests.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `pagenumber` (number, required), `pagesize` (number, required), `fromdatetime` (date), `todatetime` (date)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_paymentrequest_get_all.md

### get paymentrequests (`tikkie_paymentrequest_get_by_id`)

- Get all payment requests.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `paymentrequesttoken` (value, required)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_paymentrequest_get_by_id.md

### subscribe to notifications (`tikkie_subscribe_notifications`)

- Subscribes to payment request related notifications.
- In pins: `flow` (flow), `connection` (tikkieconnection, required), `url` (value, required)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_subscribe_notifications.md

### unsubscribe from notifications (`tikkie_unsubscribe_notifications`)

- Unsubscribes from payment request related notifications.
- In pins: `flow` (flow), `connection` (tikkieconnection, required)
- Out pins: `flow` (flow), `connection` (tikkieconnection), `success` (condition), `response` (object), `statuscode` (number)
- Page: https://docs.rual.nl/block-types/tikkie/tikkie_unsubscribe_notifications.md

## timers

### clear timer (`function_clear_timeout`)

- Clears the given unique timeout or interval by ID.
- In pins: `flow` (flow), `id` (value, required)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/timers/function_clear_timeout.md

### create interval (`function_set_interval`)

- Creates an interval to run the given function each time.
- In pins: `flow` (flow), `id` (value, required), `seconds` (number, required)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/timers/function_set_interval.md

### create timeout (`function_set_timeout`)

- Creates a timeout to run the given function in X seconds.
- In pins: `flow` (flow), `id` (value, required), `seconds` (number, required)
- Out pins: `flow` (flow), `function` (execute_function)
- Page: https://docs.rual.nl/block-types/timers/function_set_timeout.md

### delay (`function_timer`)

- Group: timers / flow
- generate a delay in seconds
- Semantics: Blocks the flow for wait SECONDS, then continues; a zero, negative, or unwired wait returns immediately. The sleep runs to completion even past the inbound request's timeout : the request deadline is detached before sleeping, so later blocks in the flow still run.
- In pins: `flow` (flow), `wait` (number)
- Out pins: `flow` (flow)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (both), [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [sign in](https://docs.rual.nl/block-types/users/function_user_signin.md) (out)
- Page: https://docs.rual.nl/block-types/timers/function_timer.md

### delay ms (`function_timer_ms`)

- Group: timers / flow
- generate a delay in milliseconds
- Semantics: Blocks the flow for wait MILLISECONDS, then continues; a zero, negative, or unwired wait returns immediately. The sleep runs to completion even past the inbound request's timeout : the request deadline is detached before sleeping, so later blocks in the flow still run.
- In pins: `flow` (flow), `wait` (number)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/timers/function_timer_ms.md

## translations

### create key (`function_create_translate_key`)

- Group: translations / translate
- creates or updates a translate key by provided key, value and language
- Semantics: Creates the translation in the language storage under the GUID "language:key" (both lowercased, the key URI-encoded), or updates the existing document's value when that GUID already exists : repeated calls never duplicate. A nil or unwired key, value, or language fails with EMPTY_KEY / EMPTY_VALUE / EMPTY_LANGUAGE; a missing language store fails with MISSING_LANGUAGE_STORE. Example: key="Hello World" language="EN" - guid "en:Hello%20World".
- In pins: `flow` (flow), `key` (value), `value` (value), `language` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/translations/function_create_translate_key.md

### translate dynamic (`state_translate_dynamic`)

- Group: translations / state ui
- Translates a dynamic key and builds DOM nodes from the HTML within these keys.
- In pins: `key` (value, required), `language` (value)
- Out pins: `state` (state)
- Page: https://docs.rual.nl/block-types/translations/state_translate_dynamic.md

### translate key (`state_translate_key`)

- Group: translations / state ui
- Translates a given key and builds DOM nodes from the HTML within these keys
- In pins: `language` (value)
- Out pins: `state` (state)
- Commonly used with: [paragraph](https://docs.rual.nl/block-types/state%20ui/state_p.md) (out), [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [h1](https://docs.rual.nl/block-types/state%20ui/state_h1.md) (out), [span](https://docs.rual.nl/block-types/state%20ui/state_span.md) (out)
- Page: https://docs.rual.nl/block-types/translations/state_translate_key.md

### dynamic translate (`value_translate`)

- Group: translations / value
- Translates a dynamic key.
- Semantics: Looks up the value_1 key (TRIMMED and LOWERCASED first) in the entity's translations. Language priority: value_0 pin, then the request's language, then the entity default, with a retry in the entity's fallback language. When no translation exists the block outputs the sanitized KEY itself and the condition pin stays UNSET (not false); condition is true only on a successful lookup, and an empty key yields value nil with condition false.
- In pins: `value_0` (value), `value_1` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/translations/value_translate.md

### translate key (`value_translate_key`)

- Group: translations / value
- Translates a given key.
- Semantics: Translates the STATIC key configured on the block (not a pin), trimmed and lowercased. Language priority: language pin, then the request's language, then the entity default, with a retry in the entity's fallback language; an untranslated key outputs the key itself. {{bp-name}} placeholders inside the resolved translation are replaced with the matching template-name in-pin values; a missing pin renders as "".
- In pins: `language` (value)
- Out pins: `value` (value)
- Commonly used with: [custom text](https://docs.rual.nl/block-types/state%20ui/state_text.md) (out), [hyperlink](https://docs.rual.nl/block-types/state%20ui/state_a.md) (out), [h3](https://docs.rual.nl/block-types/state%20ui/state_h3.md) (out), [render](https://docs.rual.nl/block-types/state%20ui/state_render_page.md) (out)
- Page: https://docs.rual.nl/block-types/translations/value_translate_key.md

## twilio

### connection (`function_create_twilioconnection`)

- Connect with your twilio account to execute API items.
- In pins: `flow` (flow), `account_sid` (value, required), `auth_token` (value, required)
- Out pins: `flow` (flow), `success` (condition), `connection` (twilioconnection), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/function_create_twilioconnection.md

### update (`twilioconnection_calls_update`)

- Group: twilio / calls
- Updates the current call status
- In pins: `flow` (flow), `connection` (twilioconnection, required), `sid` (value, required), `status` (value), `twiml` (value)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `call_id` (value), `status` (value), `call` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_calls_update.md

### create (`twilioconnection_credential_create`)

- Group: twilio / credential
- Create a new credential
- In pins: `flow` (flow), `connection` (twilioconnection, required), `list_id` (value, required), `username` (value, required), `password` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `credential_id` (value), `credential` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credential_create.md

### get (`twilioconnection_credential_get`)

- Group: twilio / credential
- Get a existing credential
- In pins: `flow` (flow), `connection` (twilioconnection, required), `list_id` (value, required), `sid` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `credential_id` (value), `credential` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credential_get.md

### remove (`twilioconnection_credential_remove`)

- Group: twilio / credential
- Remove an existing credential
- In pins: `flow` (flow), `connection` (twilioconnection, required), `list_id` (value, required), `sid` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credential_remove.md

### update (`twilioconnection_credential_update`)

- Group: twilio / credential
- Update an existing credential
- In pins: `flow` (flow), `connection` (twilioconnection, required), `list_id` (value, required), `sid` (value, required), `password` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `credential_id` (value), `credential` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credential_update.md

### create (`twilioconnection_credentiallist_create`)

- Group: twilio / credential list
- Create a credential list
- In pins: `flow` (flow), `connection` (twilioconnection, required), `name` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `list_id` (value), `status` (value), `list` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credentiallist_create.md

### get (`twilioconnection_credentiallist_get`)

- Group: twilio / credential list
- Get a credential list
- In pins: `flow` (flow), `connection` (twilioconnection, required), `sid` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `list_id` (value), `status` (value), `list` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credentiallist_get.md

### update (`twilioconnection_credentiallist_update`)

- Group: twilio / credential list
- Update a credential list
- In pins: `flow` (flow), `connection` (twilioconnection, required), `sid` (value, required), `name` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `list_id` (value), `status` (value), `list` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_credentiallist_update.md

### get (`twilioconnection_get_message`)

- Group: twilio / messages
- Get the current status and information from twilio regarding an existing message.
- In pins: `flow` (flow), `connection` (twilioconnection, required), `sid` (value, required)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `message_id` (value), `status` (value), `message` (object), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_get_message.md

### send message (`twilioconnection_reply_whatsapp_message`)

- Group: twilio / whatsapp
- Send or reply to a whatsapp message. You can only start new conversations if the message matches a pre-approved whatsapp template.
- In pins: `flow` (flow), `connection` (twilioconnection, required), `to` (value, required), `from` (value, required), `status_webhook_url` (value), `persistent_action` (array<value>), `content_sid` (value, required), `content_vars` (value)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `message_id` (value), `status` (value), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_reply_whatsapp_message.md

### send message (`twilioconnection_send_message`)

- Group: twilio / sms
- Send a regular SMS using twilio.
- In pins: `flow` (flow), `connection` (twilioconnection, required), `to` (value, required), `from` (value, required), `message` (value, required), `status_webhook_url` (value)
- Out pins: `flow` (flow), `connection` (twilioconnection), `success` (condition), `message_id` (value), `status` (value), `error_code` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/twilio/twilioconnection_send_message.md

## twinfield

### open connection (`function_twinfield_open_connection`)

- Connects using oAuth 2.0 with your secured Twinfield environment.
- In pins: `flow` (flow), `office` (value)
- Out pins: `flow` (flow), `connection` (twinfieldconnection), `success` (condition), `user_code` (value), `id` (value)
- Page: https://docs.rual.nl/block-types/twinfield/function_twinfield_open_connection.md

### if (`twinfield_branch`)

- condition based splitting, in case of multiple twinfield connections are required in different situations.
- In pins: `flow` (flow), `then` (twinfieldconnection), `else` (twinfieldconnection), `condition` (condition)
- Out pins: `flow` (flow), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfield_branch.md

### create (`twinfieldconnection_create_invoice`)

- Group: twinfield / invoices
- generates a new invoice in the twinfield classic invoicing.
- In pins: `flow` (flow), `connection` (twinfieldconnection, required), `code` (value, required), `invoice_number` (value), `customer` (value), `ledger` (value, required), `status` (value, required), `lines` (array, required), `total_incl` (number, required), `currency` (value), `date` (date)
- Out pins: `flow` (flow), `success` (condition), `invoice` (object), `invoice_number` (value), `due_date` (date, required), `lines` (array, required), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_create_invoice.md

### get all (`twinfieldconnection_get_offices`)

- Group: twinfield / offices
- gets all the offices available within the current verified user.
- In pins: `flow` (flow), `connection` (twinfieldconnection)
- Out pins: `flow` (flow), `success` (condition), `offices` (array), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_get_offices.md

### match (`twinfieldconnection_match`)

- Group: twinfield / matching
- matches two twinfield transactions. See Twinfield Docs for a full description.
- In pins: `flow` (flow), `code` (value, required), `date` (date), `lines` (array, required), `connection` (twinfieldconnection)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_match.md

### read (`twinfieldconnection_read_invoice`)

- Group: twinfield / invoices
- reads the sales invoice of supplied invoice type and invoice number.
- In pins: `flow` (flow), `connection` (twinfieldconnection, required), `code` (value, required), `invoice_number` (value)
- Out pins: `flow` (flow), `success` (condition), `invoice` (object), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_read_invoice.md

### read (`twinfieldconnection_read_journal_transaction`)

- Group: twinfield / journal transactions
- reads a given journal transaction from twinfield.
- In pins: `flow` (flow), `code` (value, required), `number` (value, required), `connection` (twinfieldconnection)
- Out pins: `flow` (flow), `success` (condition), `location` (value), `number` (value), `date` (date), `transaction` (object), `lines` (array), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_read_journal_transaction.md

### create/update (`twinfieldconnection_upsert_journal_transaction`)

- Group: twinfield / journal transactions
- creates a new journal transaction or updates existing ones. See Twinfield Docs for a full description.
- In pins: `flow` (flow), `status` (value, required), `code` (value, required), `number` (value), `currency` (value), `date` (date), `lines` (array, required), `connection` (twinfieldconnection)
- Out pins: `flow` (flow), `success` (condition), `location` (value), `number` (value), `date` (date), `transaction` (object), `lines` (array), `error` (value), `connection` (twinfieldconnection)
- Page: https://docs.rual.nl/block-types/twinfield/twinfieldconnection_upsert_journal_transaction.md

## type casting

### cast to fields (`array_convert_to_fielddefinitions`)

- Group: type casting / array: actions
- Converts your array to fielddefinitions
- In pins: `array` (array)
- Out pins: `fielddefinitions` (fielddefinitions)
- Page: https://docs.rual.nl/block-types/type%20casting/array_convert_to_fielddefinitions.md

### cast to file (`array_convert_to_file`)

- Group: type casting / array: actions
- Converts your array to an file.
- In pins: `array` (array)
- Out pins: `file` (file)
- Page: https://docs.rual.nl/block-types/type%20casting/array_convert_to_file.md

### cast to mutations (`array_convert_to_mutations`)

- Group: type casting / array: actions
- Converts your array to mutations.
- In pins: `array` (array)
- Out pins: `mutations` (mutations)
- Page: https://docs.rual.nl/block-types/type%20casting/array_convert_to_mutations.md

### cast to storage (`array_convert_to_storage`)

- Group: type casting / array
- Converts your array to storages
- In pins: `array` (array)
- Out pins: `storage` (storage)
- Page: https://docs.rual.nl/block-types/type%20casting/array_convert_to_storage.md

### cast to value (`array_convert_to_value`)

- Group: type casting / array: actions
- Converts your array to a value.
- In pins: `array` (array)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/type%20casting/array_convert_to_value.md

### cast to value (`condition_convert_to_value`)

- Group: type casting / condition
- Converts condition to value (true/false).
- In pins: `condition` (condition)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/type%20casting/condition_convert_to_value.md

### cast to number (`date_convert_to_number`)

- Group: type casting / date
- Converts date to number.
- In pins: `date` (date)
- Out pins: `number` (number)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/type%20casting/date_convert_to_number.md

### cast to value (`date_convert_to_value`)

- Group: type casting / date
- Converts date to value.
- In pins: `date` (date)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/type%20casting/date_convert_to_value.md

### cast to array (`fielddefinitions_convert_to_array`)

- Group: type casting / Convert
- Converts fielddefinitions to array.
- In pins: `fielddefinitions` (fielddefinitions)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/type%20casting/fielddefinitions_convert_to_array.md

### cast to array (`file_convert_to_array`)

- Group: type casting / file: actions
- Converts your given file to an array.
- In pins: `file` (file)
- Out pins: `array` (array)
- Commonly used with: [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_array.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [get last item](https://docs.rual.nl/block-types/array/array_last_item.md) (out), [resize](https://docs.rual.nl/block-types/files/function_resize_image.md) (in)
- Page: https://docs.rual.nl/block-types/type%20casting/file_convert_to_array.md

### cast to object (`floridayconnection_convert_to_object`)

- Group: type casting / floriday
- Casts the connection to an object. This allows caching and generating custom connections.
- In pins: `connection` (floridayconnection)
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/type%20casting/floridayconnection_convert_to_object.md

### cast to array (`mutations_convert_to_array`)

- Group: type casting / mutations: actions
- Converts your mutations to an array.
- In pins: `mutations` (mutations)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/type%20casting/mutations_convert_to_array.md

### cast to date (`number_convert_to_date`)

- Group: type casting / number
- Converts the given unix timestamp to a date.
- In pins: `number` (number)
- Out pins: `date` (date)
- Page: https://docs.rual.nl/block-types/type%20casting/number_convert_to_date.md

### cast to value (`number_convert_to_value`)

- Group: type casting / number
- Converts the given number into a value.
- In pins: `number` (number)
- Out pins: `value` (value)
- Commonly used with: [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (out), [get lat / lon](https://docs.rual.nl/block-types/geopoint/geo_point_to_lat_lng.md) (in), [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [get unixtimestamp](https://docs.rual.nl/block-types/date/number_from_date.md) (in)
- Page: https://docs.rual.nl/block-types/type%20casting/number_convert_to_value.md

### cast to array (`object_convert_to_array`)

- Group: type casting / object
- Converts the given object to an array.
- In pins: `object` (object)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/type%20casting/object_convert_to_array.md

### cast to floridayconnection (`object_convert_to_floridayconnection`)

- Group: type casting / object
- Converts the given object to a floridayconnection.
- In pins: `object` (object)
- Out pins: `connection` (floridayconnection)
- Page: https://docs.rual.nl/block-types/type%20casting/object_convert_to_floridayconnection.md

### cast to number (`object_convert_to_number`)

- Group: type casting / object
- Converts the given object to a number.
- In pins: `object` (object)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/type%20casting/object_convert_to_number.md

### cast to query (`object_convert_to_query`)

- Group: type casting / object
- Converts the given object to a query.
- In pins: `object` (object)
- Out pins: `query` (query)
- Page: https://docs.rual.nl/block-types/type%20casting/object_convert_to_query.md

### cast to value (`object_convert_to_value`)

- Group: type casting / object
- Converts the given object to a value.
- In pins: `object` (object)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/type%20casting/object_convert_to_value.md

### cast to array (`value_convert_to_array`)

- Group: type casting / value
- Converts the given value into an array.
- In pins: `value` (value)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/type%20casting/value_convert_to_array.md

### cast to boolean (`value_convert_to_condition`)

- Group: type casting / value
- Converts the given value into a boolean.
- In pins: `value` (value)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/type%20casting/value_convert_to_condition.md

### cast to number (`value_convert_to_number`)

- Group: type casting / value
- Converts the given value into a number.
- In pins: `value` (value)
- Out pins: `number` (number)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [get at index](https://docs.rual.nl/block-types/array/array_get_at_index.md) (in), [get cache key](https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists.md) (in), [if](https://docs.rual.nl/block-types/number/number_branch.md) (out)
- Page: https://docs.rual.nl/block-types/type%20casting/value_convert_to_number.md

### cast to object (`value_convert_to_object`)

- Group: type casting / value
- Converts the given value into an object.
- In pins: `value` (value)
- Out pins: `object` (object)
- Commonly used with: [Request: DELETE](https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_delete.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out)
- Page: https://docs.rual.nl/block-types/type%20casting/value_convert_to_object.md

### cast to storage (`value_convert_to_storage`)

- Group: type casting / value
- Converts the given value into a storage.
- In pins: `value` (value)
- Out pins: `storage` (storage)
- Page: https://docs.rual.nl/block-types/type%20casting/value_convert_to_storage.md

## ui class

### active (`uiclass_active`)

- Group: ui class / general
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_active.md

### danger (`uiclass_alert_danger`)

- Group: ui class / alert
- alert in danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_danger.md

### dark (`uiclass_alert_dark`)

- Group: ui class / alert
- alert in dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_dark.md

### info (`uiclass_alert_info`)

- Group: ui class / alert
- alert in info style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_info.md

### light (`uiclass_alert_light`)

- Group: ui class / alert
- alert in light style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_light.md

### notice style (`uiclass_alert_notice`)

- Group: ui class / alert
- alert in notice style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_notice.md

### primary (`uiclass_alert_primary`)

- Group: ui class / alert
- alert in primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_primary.md

### secondary (`uiclass_alert_secondary`)

- Group: ui class / alert
- alert in secondary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_secondary.md

### add shadow (`uiclass_alert_shadow`)

- Group: ui class / alert
- alert in shadow style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_shadow.md

### success (`uiclass_alert_success`)

- Group: ui class / alert
- alert in success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_success.md

### warning (`uiclass_alert_warning`)

- Group: ui class / alert
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_alert_warning.md

### dark (`uiclass_background_dark`)

- Group: ui class / background
- background in dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_dark.md

### info (`uiclass_background_info`)

- Group: ui class / background
- background in info style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_info.md

### primary (`uiclass_background_primary`)

- Group: ui class / background
- background in primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_primary.md

### secondary (`uiclass_background_secondary`)

- Group: ui class / background
- background in secondary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_secondary.md

### success (`uiclass_background_success`)

- Group: ui class / background
- background in success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_success.md

### warning (`uiclass_background_warning`)

- Group: ui class / background
- background in warning style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_background_warning.md

### if (`uiclass_branch`)

- Group: ui class / class
- Use classes based of a given condition.
- In pins: `then` (uiclass), `else` (uiclass), `condition` (condition)
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_branch.md

### block (`uiclass_button_block`)

- Group: ui class / button
- give your button the button block style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_block.md

### danger (`uiclass_button_color_danger`)

- Group: ui class / button background
- button background in danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_danger.md

### dark (`uiclass_button_color_dark`)

- Group: ui class / button background
- button background in dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_dark.md

### info (`uiclass_button_color_info`)

- Group: ui class / button background
- button background in info style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_info.md

### light danger (`uiclass_button_color_light_danger`)

- Group: ui class / button background
- button background in light danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_light_danger.md

### light dark (`uiclass_button_color_light_dark`)

- Group: ui class / button background
- button background in light dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_light_dark.md

### light primary (`uiclass_button_color_light_primary`)

- Group: ui class / button background
- button background in light primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_light_primary.md

### light success (`uiclass_button_color_light_success`)

- Group: ui class / button background
- button background in light success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_light_success.md

### light warning (`uiclass_button_color_light_warning`)

- Group: ui class / button background
- button background in light warning style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_light_warning.md

### link-style (`uiclass_button_color_link`)

- Group: ui class / button background
- button background in link style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_link.md

### outline danger (`uiclass_button_color_outline_danger`)

- Group: ui class / button background
- button background in outline danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_danger.md

### outline dark (`uiclass_button_color_outline_dark`)

- Group: ui class / button background
- button background in outline dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_dark.md

### info (`uiclass_button_color_outline_info`)

- Group: ui class / button background
- button background in outline info style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_info.md

### outline primary (`uiclass_button_color_outline_primary`)

- Group: ui class / button background
- button background in outline primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_primary.md

### outline secondary (`uiclass_button_color_outline_secondary`)

- Group: ui class / button background
- button background in outline secondary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_secondary.md

### outline success (`uiclass_button_color_outline_success`)

- Group: ui class / button background
- button background in outline success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_success.md

### outline warning (`uiclass_button_color_outline_warning`)

- Group: ui class / button background
- button background in outline warning style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_outline_warning.md

### primary (`uiclass_button_color_primary`)

- Group: ui class / button background
- button background in primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_primary.md

### secondary (`uiclass_button_color_secondary`)

- Group: ui class / button background
- button background in secondary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_secondary.md

### success (`uiclass_button_color_success`)

- Group: ui class / button background
- button background in succes style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_success.md

### warning (`uiclass_button_color_warning`)

- Group: ui class / button background
- button background in warning style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_warning.md

### white (`uiclass_button_color_white`)

- Group: ui class / button background
- button background in white style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_color_white.md

### large (`uiclass_button_size_lg`)

- Group: ui class / button size
- button size large
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_size_lg.md

### small (`uiclass_button_size_sm`)

- Group: ui class / button size
- button size small
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_button_size_sm.md

### bordered card (`uiclass_card_bordered`)

- Group: ui class / cards
- normal bordered card
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_bordered.md

### danger wave (`uiclass_card_danger_wave`)

- Group: ui class / background
- background in danger wave style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_danger_wave.md

### gray wave (`uiclass_card_gray_wave`)

- Group: ui class / background
- background in gray wave style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_gray_wave.md

### primary wave (`uiclass_card_primary_wave`)

- Group: ui class / background
- background in primary wave style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_primary_wave.md

### semi bordered card (`uiclass_card_semi_bordered`)

- Group: ui class / cards
- generate a card with small borders
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_semi_bordered.md

### success wave (`uiclass_card_success_wave`)

- Group: ui class / background
- background in success wave style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_success_wave.md

### animate wave (`uiclass_card_wave_animate_slow`)

- Group: ui class / background
- background in animate wave style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_card_wave_animate_slow.md

### cast to value (`uiclass_cast_to_value`)

- Group: ui class / class
- Casts the class type to a value
- In pins: `uiclass` (uiclass, required)
- Out pins: `value` (value, required)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_cast_to_value.md

### extra small 1 (`uiclass_col_1`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_1.md

### extra small 10 (`uiclass_col_10`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_10.md

### extra small 11 (`uiclass_col_11`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_11.md

### extra small 12 (`uiclass_col_12`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_12.md

### extra small 2 (`uiclass_col_2`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_2.md

### extra small 3 (`uiclass_col_3`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_3.md

### extra small 4 (`uiclass_col_4`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_4.md

### extra small 5 (`uiclass_col_5`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_5.md

### extra small 6 (`uiclass_col_6`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_6.md

### extra small 7 (`uiclass_col_7`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_7.md

### extra small 8 (`uiclass_col_8`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_8.md

### extra small 9 (`uiclass_col_9`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_9.md

### large 1 (`uiclass_col_lg_1`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_1.md

### large 10 (`uiclass_col_lg_10`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_10.md

### large 11 (`uiclass_col_lg_11`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_11.md

### large 12 (`uiclass_col_lg_12`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_12.md

### large 2 (`uiclass_col_lg_2`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_2.md

### large 3 (`uiclass_col_lg_3`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_3.md

### large 4 (`uiclass_col_lg_4`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_4.md

### large 5 (`uiclass_col_lg_5`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_5.md

### large 6 (`uiclass_col_lg_6`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_6.md

### large 7 (`uiclass_col_lg_7`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_7.md

### large 8 (`uiclass_col_lg_8`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_8.md

### large 9 (`uiclass_col_lg_9`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_lg_9.md

### medium 1 (`uiclass_col_md_1`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_1.md

### medium 10 (`uiclass_col_md_10`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_10.md

### medium 11 (`uiclass_col_md_11`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_11.md

### medium 12 (`uiclass_col_md_12`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_12.md

### medium 2 (`uiclass_col_md_2`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_2.md

### medium 3 (`uiclass_col_md_3`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_3.md

### medium 4 (`uiclass_col_md_4`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_4.md

### medium 5 (`uiclass_col_md_5`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_5.md

### medium 6 (`uiclass_col_md_6`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_6.md

### medium 7 (`uiclass_col_md_7`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_7.md

### medium 8 (`uiclass_col_md_8`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_8.md

### medium 9 (`uiclass_col_md_9`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_md_9.md

### small 1 (`uiclass_col_sm_1`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_1.md

### small 10 (`uiclass_col_sm_10`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_10.md

### small 11 (`uiclass_col_sm_11`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_11.md

### small 12 (`uiclass_col_sm_12`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_12.md

### small 2 (`uiclass_col_sm_2`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_2.md

### small 3 (`uiclass_col_sm_3`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_3.md

### small 4 (`uiclass_col_sm_4`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_4.md

### small 5 (`uiclass_col_sm_5`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_5.md

### small 6 (`uiclass_col_sm_6`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_6.md

### small 7 (`uiclass_col_sm_7`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_7.md

### small 8 (`uiclass_col_sm_8`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_8.md

### small 9 (`uiclass_col_sm_9`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_sm_9.md

### extra large 1 (`uiclass_col_xl_1`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_1.md

### extra large 10 (`uiclass_col_xl_10`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_10.md

### extra large 11 (`uiclass_col_xl_11`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_11.md

### extra large 12 (`uiclass_col_xl_12`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_12.md

### extra large 2 (`uiclass_col_xl_2`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_2.md

### extra large 3 (`uiclass_col_xl_3`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_3.md

### extra large 4 (`uiclass_col_xl_4`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_4.md

### extra large 5 (`uiclass_col_xl_5`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_5.md

### extra large 6 (`uiclass_col_xl_6`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_6.md

### extra large 7 (`uiclass_col_xl_7`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_7.md

### extra large 8 (`uiclass_col_xl_8`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_8.md

### extra large 9 (`uiclass_col_xl_9`)

- Group: ui class / column
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_col_xl_9.md

### custom (`uiclass_custom`)

- Group: ui class / class
- Custom class input
- Out pins: `uiclass` (uiclass)
- Commonly used with: [div](https://docs.rual.nl/block-types/state%20ui/state_div.md) (out), [hyperlink](https://docs.rual.nl/block-types/state%20ui/state_a.md) (out), [paragraph](https://docs.rual.nl/block-types/state%20ui/state_p.md) (out), [h3](https://docs.rual.nl/block-types/state%20ui/state_h3.md) (out)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_custom.md

### from value (`uiclass_dynamic`)

- Group: ui class / class
- Generates a class type from the given value.
- In pins: `value` (value, required)
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_dynamic.md

### elseif (`uiclass_elseif`)

- Group: ui class / class
- Use classes based of multiple conditions
- In pins: `default` (uiclass), `elseif` (condition), `then` (uiclass)
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_elseif.md

### fontawesome icon (`uiclass_fontawesome`)

- Group: ui class / class
- Contains a list with fontawesome icon suggestions
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_fontawesome.md

### multiple (`uiclass_multiple`)

- Group: ui class / class
- Combine multiple classes
- In pins: `uiclass_1` (uiclass), `uiclass_2` (uiclass)
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_multiple.md

### color danger (`uiclass_nav_danger`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_danger.md

### vertical view (`uiclass_nav_flex_column`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_flex_column.md

### color info (`uiclass_nav_info`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_info.md

### color light danger (`uiclass_nav_light_danger`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_light_danger.md

### color light info (`uiclass_nav_light_info`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_light_info.md

### color light success (`uiclass_nav_light_success`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_light_success.md

### rounded tabs (`uiclass_nav_pills`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_pills.md

### color success (`uiclass_nav_success`)

- Group: ui class / navigation
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_nav_success.md

### danger (`uiclass_spinner_color_danger`)

- Group: ui class / spinner color
- spinner color in danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_danger.md

### dark (`uiclass_spinner_color_dark`)

- Group: ui class / spinner color
- spinner color in dark style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_dark.md

### darker danger (`uiclass_spinner_color_darker_danger`)

- Group: ui class / spinner color
- spinner color in darker danger style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_darker_danger.md

### darker primary (`uiclass_spinner_color_darker_primary`)

- Group: ui class / spinner color
- spinner color in darker primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_darker_primary.md

### darker success (`uiclass_spinner_color_darker_success`)

- Group: ui class / spinner color
- spinner color in darker success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_darker_success.md

### info (`uiclass_spinner_color_info`)

- Group: ui class / spinner color
- spinner color in info style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_info.md

### primary (`uiclass_spinner_color_primary`)

- Group: ui class / spinner color
- spinner color in primary style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_primary.md

### success (`uiclass_spinner_color_success`)

- Group: ui class / spinner color
- spinner color in success style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_success.md

### warning (`uiclass_spinner_color_warning`)

- Group: ui class / spinner color
- spinner color in warning style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_color_warning.md

### left align (`uiclass_spinner_left`)

- Group: ui class / spinner
- spinner color in left align style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_left.md

### right align (`uiclass_spinner_right`)

- Group: ui class / spinner
- spinner color in right align style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_right.md

### track (`uiclass_spinner_track`)

- Group: ui class / spinner type
- spinner color in track style
- Out pins: `uiclass` (uiclass)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_spinner_track.md

### switch (`uiclass_switch`)

- Group: ui class / class
- Returns a ui class based of the given expression.
- In pins: `value` (value), `default` (uiclass)
- Out pins: `uiclass` (uiclass), `matched` (condition)
- Page: https://docs.rual.nl/block-types/ui%20class/uiclass_switch.md

## users

### apple sso get auth url (`function_sso_apple_get_auth_url`)

- Group: users / sso
- Generate an Apple SSO authorization URL. Redirect the user to this URL to start the login flow.
- In pins: `flow` (flow), `client_id` (value, required), `redirect_uri` (value, required), `state` (value), `scopes` (value)
- Out pins: `flow` (flow), `url` (value), `state` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_apple_get_auth_url.md

### apple sso refresh token (`function_sso_apple_refresh_token`)

- Group: users / sso
- Refresh an Apple OAuth access token using a refresh token.
- In pins: `flow` (flow), `client_id` (value, required), `team_id` (value, required), `key_id` (value, required), `private_key` (value, required), `refresh_token` (value, required)
- Out pins: `flow` (flow), `access_token` (value), `refresh_token` (value), `expires_in` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_apple_refresh_token.md

### apple sso revoke token (`function_sso_apple_revoke_token`)

- Group: users / sso
- Revoke an Apple OAuth access or refresh token.
- In pins: `flow` (flow), `client_id` (value, required), `team_id` (value, required), `key_id` (value, required), `private_key` (value, required), `token` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_apple_revoke_token.md

### apple sso verify code (`function_sso_apple_verify_code`)

- Group: users / sso
- Exchange an Apple authorization code for user identity. Returns email, name, and a service token for "user exists by service".
- In pins: `flow` (flow), `client_id` (value, required), `team_id` (value, required), `key_id` (value, required), `private_key` (value, required), `code` (value, required), `redirect_uri` (value, required), `user_data` (value)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `service_token` (value), `provider_user_id` (value), `access_token` (value), `refresh_token` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_apple_verify_code.md

### github sso get auth url (`function_sso_github_get_auth_url`)

- Group: users / sso
- Generate a GitHub SSO authorization URL. Redirect the user to this URL to start the login flow.
- In pins: `flow` (flow), `client_id` (value, required), `redirect_uri` (value, required), `state` (value), `scopes` (value)
- Out pins: `flow` (flow), `url` (value), `state` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_github_get_auth_url.md

### github sso get user info (`function_sso_github_get_user_info`)

- Group: users / sso
- Fetch the current GitHub user profile using an access token.
- In pins: `flow` (flow), `access_token` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `provider_user_id` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_github_get_user_info.md

### github sso revoke token (`function_sso_github_revoke_token`)

- Group: users / sso
- Revoke a GitHub OAuth access token.
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `token` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_github_revoke_token.md

### github sso verify code (`function_sso_github_verify_code`)

- Group: users / sso
- Exchange a GitHub authorization code for user identity. Returns email, name, and a service token for "user exists by service".
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `code` (value, required), `redirect_uri` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `service_token` (value), `provider_user_id` (value), `access_token` (value), `refresh_token` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_github_verify_code.md

### google sso get auth url (`function_sso_google_get_auth_url`)

- Group: users / sso
- Generate a Google SSO authorization URL. Redirect the user to this URL to start the login flow.
- In pins: `flow` (flow), `client_id` (value, required), `redirect_uri` (value, required), `state` (value), `scopes` (value)
- Out pins: `flow` (flow), `url` (value), `state` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_google_get_auth_url.md

### google sso get user info (`function_sso_google_get_user_info`)

- Group: users / sso
- Fetch the current Google user profile using an access token.
- In pins: `flow` (flow), `access_token` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `provider_user_id` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_google_get_user_info.md

### google sso refresh token (`function_sso_google_refresh_token`)

- Group: users / sso
- Refresh a Google OAuth access token using a refresh token.
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `refresh_token` (value, required)
- Out pins: `flow` (flow), `access_token` (value), `refresh_token` (value), `expires_in` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_google_refresh_token.md

### google sso revoke token (`function_sso_google_revoke_token`)

- Group: users / sso
- Revoke a Google OAuth access or refresh token.
- In pins: `flow` (flow), `token` (value, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_google_revoke_token.md

### google sso verify code (`function_sso_google_verify_code`)

- Group: users / sso
- Exchange a Google authorization code for user identity. Returns email, name, and a service token for "user exists by service".
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `code` (value, required), `redirect_uri` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `service_token` (value), `provider_user_id` (value), `access_token` (value), `refresh_token` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_google_verify_code.md

### microsoft sso get auth url (`function_sso_microsoft_get_auth_url`)

- Group: users / sso
- Generate a Microsoft SSO authorization URL. Redirect the user to this URL to start the login flow.
- In pins: `flow` (flow), `client_id` (value, required), `tenant_id` (value), `redirect_uri` (value, required), `state` (value), `scopes` (value)
- Out pins: `flow` (flow), `url` (value), `state` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_microsoft_get_auth_url.md

### microsoft sso get user info (`function_sso_microsoft_get_user_info`)

- Group: users / sso
- Fetch the current Microsoft user profile using an access token.
- In pins: `flow` (flow), `access_token` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `provider_user_id` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_microsoft_get_user_info.md

### microsoft sso refresh token (`function_sso_microsoft_refresh_token`)

- Group: users / sso
- Refresh a Microsoft OAuth access token using a refresh token.
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `tenant_id` (value), `refresh_token` (value, required)
- Out pins: `flow` (flow), `access_token` (value), `refresh_token` (value), `expires_in` (value), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_microsoft_refresh_token.md

### microsoft sso verify code (`function_sso_microsoft_verify_code`)

- Group: users / sso
- Exchange a Microsoft authorization code for user identity. Returns email, name, and a service token for "user exists by service".
- In pins: `flow` (flow), `client_id` (value, required), `client_secret` (value, required), `tenant_id` (value), `code` (value, required), `redirect_uri` (value, required)
- Out pins: `flow` (flow), `email` (value), `name` (value), `firstname` (value), `lastname` (value), `service_token` (value), `provider_user_id` (value), `access_token` (value), `refresh_token` (value), `raw` (object), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_sso_microsoft_verify_code.md

### create user (`function_user_create`)

- Group: users / user management
- create a new user in your cluster
- In pins: `flow` (flow), `user_id` (value, required), `password` (value, required), `mutations` (mutations), `expiry` (date), `username_sanitize` (condition), `allow_login_as` (condition), `allow_passwordless_login` (condition)
- Out pins: `flow` (flow), `user` (object), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [true](https://docs.rual.nl/block-types/condition/condition_is_true.md) (in), [log](https://docs.rual.nl/block-types/logging/function_console_log.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/users/function_user_create.md

### user exists (`function_user_exists`)

- Group: users / user management
- Finds a user by ID.
- In pins: `flow` (flow), `user_id` (value, required)
- Out pins: `flow` (flow), `user` (user), `exists` (condition)
- Page: https://docs.rual.nl/block-types/users/function_user_exists.md

### user exist by service (`function_user_exists_by_service`)

- Group: users / user management
- Finds a user by oAuth service token.
- In pins: `flow` (flow), `service_token` (value, required)
- Out pins: `flow` (flow), `user` (user), `exists` (condition)
- Page: https://docs.rual.nl/block-types/users/function_user_exists_by_service.md

### request 2fa sms (`function_user_request_2fa_sms`)

- Group: users / user management
- request a 2fa code for the user
- In pins: `flow` (flow), `access_token` (value, required), `domain` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/users/function_user_request_2fa_sms.md

### request password forgot token (`function_user_request_password_reset_token`)

- Group: users / user management
- Request a token to send to a user, so the user can change / reset his password with that token
- In pins: `flow` (flow), `user_guid` (value, required), `expiry` (number)
- Out pins: `flow` (flow), `token` (value), `success` (condition)
- Commonly used with: [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (in), [one hour](https://docs.rual.nl/block-types/number/number_one_hour.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [open connection](https://docs.rual.nl/block-types/postmark/postmarkconnection_open.md) (in)
- Page: https://docs.rual.nl/block-types/users/function_user_request_password_reset_token.md

### request passwordless login code (`function_user_request_passwordless_code`)

- Group: users / user management
- Send a passwordless login code (email or SMS) to a user. Bypasses the rate limit so it can be triggered right after creating an account. The code itself is never exposed.
- In pins: `flow` (flow), `identifier` (value, required), `identifier_type` (value), `ip` (value)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/users/function_user_request_passwordless_code.md

### change password from token (`function_user_reset_password_with_token`)

- Group: users / user management
- Change the password for a user with the password forgot token
- In pins: `flow` (flow), `user_guid` (value, required), `token` (value, required), `password` (value, required)
- Out pins: `flow` (flow), `success` (condition, required), `error` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (in), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (in)
- Page: https://docs.rual.nl/block-types/users/function_user_reset_password_with_token.md

### sign in (`function_user_signin`)

- Group: users / user management
- let a user be able to login
- In pins: `flow` (flow), `user_id` (value, required), `password` (value, required), `expiry_date` (date)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `auth` (object), `accesstoken` (value), `user` (object), `need_2fa` (condition), `2fa_methods` (array), `default_2fa` (value)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [plus days](https://docs.rual.nl/block-types/date/date_add_days.md) (in), [log](https://docs.rual.nl/block-types/logging/function_console_log.md) (out)
- Page: https://docs.rual.nl/block-types/users/function_user_signin.md

### sign in as user (`function_user_signin_as`)

- Group: users / user management
- Sign in a regular user account, this only works for accounts with the setting "allow_login_as_user" enabled
- In pins: `flow` (flow), `user_guid` (value, required), `expiry_date` (date)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `auth` (object), `accesstoken` (value), `user` (object)
- Page: https://docs.rual.nl/block-types/users/function_user_signin_as.md

### update user (`function_user_update`)

- Group: users / user management
- update the given user their information or password
- In pins: `flow` (flow), `guid` (value), `password` (value), `mutations` (mutations), `expiry` (date)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `user` (object)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/users/function_user_update.md

### validate password forgot token (`function_user_validate_password_reset_token`)

- Group: users / user management
- Validate the user input token before actually use it to change the password
- In pins: `flow` (flow), `user_guid` (value, required), `token` (value, required)
- Out pins: `flow` (flow), `valid` (condition, required)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (in), [new page](https://docs.rual.nl/block-types/state%20ui/state_page.md) (in)
- Page: https://docs.rual.nl/block-types/users/function_user_validate_password_reset_token.md

### verify 2fa (`function_user_verify_2fa`)

- Group: users / user management
- verify the user their 2fa code
- In pins: `flow` (flow), `auth` (object, required), `method` (value, required), `token` (value, required)
- Out pins: `flow` (flow), `user` (object), `valid` (condition)
- Page: https://docs.rual.nl/block-types/users/function_user_verify_2fa.md

### verify password (`function_user_verify_password`)

- Group: users / user management
- verify the user their password
- In pins: `flow` (flow), `guid` (value, required), `password` (value, required)
- Out pins: `flow` (flow), `valid` (condition)
- Page: https://docs.rual.nl/block-types/users/function_user_verify_password.md

### cast to user (`object_convert_to_user`)

- Group: users / user
- Converts an object type to an user object type.
- Semantics: Re-labels an object pin as a user pin without changing the data: a map input passes through unchanged, a nil or non-map input outputs nil. Performs no validation that the object actually is a user document.
- In pins: `user` (object)
- Out pins: `user` (user)
- Commonly used with: [search single](https://docs.rual.nl/block-types/storage/function_search_single_result.md) (in), [get fields](https://docs.rual.nl/block-types/users/user_field_getter_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/users/object_convert_to_user.md

### matches ip (`user_check_ip`)

- Group: users / current user
- Checks if the current user matches the given ip.
- Semantics: True when the current connection's IP matches at least one entry of the array input; entries may be exact IPs, CIDR ranges, or start-end ranges (e.g. 10.0.0.1-10.0.0.255). False when the array is empty or unwired, when the client IP is unknown, or when nothing matches. Uses the connection IP, so no login is required.
- In pins: `array` (array)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/users/user_check_ip.md

### has scope (`user_check_scope`)

- Group: users / current user
- Checks if the current logged-in user matches the given scopes.
- Semantics: True when the current user's scopes satisfy the required scopes : from the scopes pin, or the block's scope selector when the pin is unwired. With match_all every required scope must match, otherwise any one suffices; a required public or *public scope always passes, a user wildcard * grants everything, and wildcards like storage_* cover prefixed scopes. An empty required list yields true.
- In pins: `match_all` (condition)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/users/user_check_scope.md

### cast to object (`user_convert_to_object`)

- Group: users / user
- Converts an user object type to an object type.
- Semantics: Re-labels a user pin as an object pin: a map input passes through unchanged, a nil or non-map input outputs an empty object {} rather than nil.
- In pins: `user` (user)
- Out pins: `user` (object)
- Commonly used with: [select fields from](https://docs.rual.nl/block-types/object/object_get_by_fields.md) (out), [current user](https://docs.rual.nl/block-types/users/user_current.md) (in)
- Page: https://docs.rual.nl/block-types/users/user_convert_to_object.md

### current user (`user_current`)

- Group: users / current user
- Returns the current logged-in user object as user-pin.
- Semantics: Outputs the current logged-in user's full document, loaded fresh from the users store by the session user's guid. Falls back to the session's in-memory user object when the store has no persisted copy; outputs an empty object {} when nobody is logged in.
- Out pins: `user` (user)
- Commonly used with: [get guid](https://docs.rual.nl/block-types/users/user_get_guid.md) (out), [get fields](https://docs.rual.nl/block-types/users/user_field_getter_multiple.md) (out), [cast to object](https://docs.rual.nl/block-types/users/user_convert_to_object.md) (out)
- Page: https://docs.rual.nl/block-types/users/user_current.md

### define users (`user_define_reference`)

- Group: users / references
- Store this user as reference, which can later be used by "use reference"
- In pins: `user` (user)
- Page: https://docs.rual.nl/block-types/users/user_define_reference.md

### get fields (`user_field_getter_multiple`)

- Group: users / user
- Gets the given fields from user data and returns this per data-pin.
- Semantics: Outputs each configured field of the user input through its own out pin, coerced to the pin type (numbers parsed, strings stringified, files become {path, filename} objects). Missing, nil, or wrong-typed fields output nil, not type defaults; a nil or unwired user input yields nil on every pin.
- In pins: `user` (user)
- Commonly used with: [current user](https://docs.rual.nl/block-types/users/user_current.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [OR](https://docs.rual.nl/block-types/condition/condition_or.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/users/user_field_getter_multiple.md

### get connection (`user_get_connection`)

- Group: users / current user
- Returns an API connection for the current user
- Semantics: Finds an OAuth token in the user input's oauth_tokens matching the block's configured provider type (and host when set) and opens an API connection with its access token. Outputs no connection when the user pin is unwired, has no tokens, or none match.
- In pins: `flow` (flow), `user` (user)
- Out pins: `flow` (flow)
- Page: https://docs.rual.nl/block-types/users/user_get_connection.md

### get custom field from user (`user_get_custom_field`)

- Group: users / user
- get the value of a custom field using a custom value or dynamic values
- Semantics: Outputs the value at the dot path given on the field pin, read from the user input, through the single typed out pin with coercion (numbers parsed, strings stringified, files become {path, filename} objects). Missing or nil fields yield nil on newer blocks, or type defaults (false, 0, [], {}) on older blocks.
- In pins: `user` (user), `field` (value)
- Out pins: `condition` (condition), `value` (value), `number` (number), `date` (date), `array` (array), `object` (object)
- Page: https://docs.rual.nl/block-types/users/user_get_custom_field.md

### get guid (`user_get_guid`)

- Group: users / user
- Returns the guid (field: _meta.guid) of the given user
- Semantics: Outputs the _meta.guid string of the given user. A nil, unwired, or non-map user input outputs an empty string.
- In pins: `user` (user)
- Out pins: `value` (value)
- Commonly used with: [current user](https://docs.rual.nl/block-types/users/user_current.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out), [array includes](https://docs.rual.nl/block-types/condition/condition_array_contains_string.md) (out)
- Page: https://docs.rual.nl/block-types/users/user_get_guid.md

### get ip (`user_get_ip`)

- Group: users / current user
- Returns the ip of the user currently browsing the page. It uses the connection so the user does not need to be logged in in order for the IP to be returned.
- Semantics: Outputs the current connection's IP address string, from the client or auth context; the user does not need to be logged in. Outputs an empty string when the IP is unknown.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/users/user_get_ip.md

### has 2FA (`user_has_twofactor`)

- Group: users / current user
- Returns true if the current user has 2FA enabled and outputs the enabled methods.
- Semantics: True when the current session user has at least one two-factor method registered, with the method names (up to 10) on the methods output. False with an empty methods array when nobody is logged in or no methods exist.
- Out pins: `condition` (condition), `methods` (array)
- Page: https://docs.rual.nl/block-types/users/user_has_twofactor.md

### host url (`user_host_url`)

- Group: users / host url
- Returns the URL from the Host.
- Semantics: Outputs the current entity's primary hostname (bare host, no scheme or path). Outputs nil when no hostname is registered for the entity.
- Out pins: `url` (value)
- Page: https://docs.rual.nl/block-types/users/user_host_url.md

### token (`user_token`)

- Group: users / current user
- Returns information about the currently used user token.
- Semantics: Outputs an object describing the current auth token: expiry, last_activity, scopes, onetime, hide_session, verified, last_verified, and _meta.created. Outputs nil when there is no auth context, e.g. an anonymous request.
- Out pins: `object` (object)
- Page: https://docs.rual.nl/block-types/users/user_token.md

### use users (`user_use_reference`)

- Group: users / references
- Use the user which was previously defined by a define reference
- Out pins: `user` (user)
- Page: https://docs.rual.nl/block-types/users/user_use_reference.md

## value

### binary value (`value_binary_value`)

- Converts a boolean/condition to a value (1 for true, 0 for false).
- Semantics: Outputs the STRING "1" when condition is boolean true, otherwise the STRING "0" (never numbers). Only an actual boolean true counts; any non-boolean input, including truthy strings or numbers, is treated as false.
- In pins: `condition` (condition, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_binary_value.md

### if (`value_branch`)

- Group: value / conditions
- Conditional branching for values (if.. then.. else..). Selects which input value is passed through; it does not route flow.
- Semantics: VALUE selector, not a flow gate: the engine pre-evaluates condition and this block outputs the input wired to the winning pin (then when true, else when false). It does not route execution and works for any value type, not just arrays. When no branch was pre-chosen it outputs an empty string.
- In pins: `then` (value), `else` (value), `condition` (condition)
- Out pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [if](https://docs.rual.nl/block-types/value/value_branch.md) (both), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_branch.md

### code editor (`value_code_editor`)

- Group: value / custom
- Opens a code editor to define code in various languages (CSS, HTML, JavaScript, JSON, etc.). The code is stored in a document on disk.
- Semantics: Outputs the source text saved in this block's code editor (stored in the codeeditorfiles store, keyed by this action's GUID) as a plain string; the code is NOT executed or parsed. Outputs an empty string when no stored document is found.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_code_editor.md

### concatenate values (`value_concatenate`)

- Group: value / utils
- Semantics: Joins all input pins into one string in LEXICOGRAPHIC pin-id order (value_10 sorts before value_2). Nil and empty-string inputs are SKIPPED; other values are coerced JS-style: numbers without trailing zeros, booleans as true/false, arrays comma-joined, objects as [object Object].
- In pins: `value_0` (value), `value_1` (value), `value_2` (value)
- Out pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [generate guid](https://docs.rual.nl/block-types/value/value_guid.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_concatenate.md

### core version (`value_core_version`)

- Group: value / custom
- Returns the current RUAL Core version
- Semantics: Outputs the version string of the RUAL Core build currently running on core_version. No inputs; the value only changes when the node is redeployed.
- Out pins: `core_version` (value)
- Page: https://docs.rual.nl/block-types/value/value_core_version.md

### current language (`value_current_language`)

- Returns the current language.
- Semantics: Outputs the ENTITY's configured language setting, not the requesting user's locale. Outputs an empty string when no language is configured or the language service is unavailable.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_current_language.md

### decode (`value_decode_base64`)

- Group: value / base64
- Decode a Base64 value into a raw value.
- Semantics: Decodes STANDARD Base64, falling back to the URL-safe alphabet when that fails. When both decodes fail, or the encoded pin is not wired, NO output is written at all - raw stays unset rather than emitting an error or empty string.
- In pins: `encoded` (value, required)
- Out pins: `raw` (value)
- Page: https://docs.rual.nl/block-types/value/value_decode_base64.md

### decode uri (`value_decodeuri`)

- Decodes a URI by replacing URI safe characters with normal characters.
- Semantics: Mirrors JS decodeURI: decodes %XX escapes EXCEPT the reserved set ;/?:@&=+$,# which stay percent-encoded, and + is NOT converted to a space. A malformed % sequence returns the input UNCHANGED instead of erroring. Example: "a%2Fb%20c" - "a%2Fb c".
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_decodeuri.md

### decode uri component (`value_decodeuricomponent`)

- Decodes a URI by replacing URI safe characters with normal characters.
- Semantics: Mirrors JS decodeURIComponent: decodes ALL %XX escapes including reserved characters, and + passes through UNCHANGED (never becomes a space). A malformed % sequence returns the input UNCHANGED instead of erroring. Example: "a%2Fb+c" - "a/b+c".
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_decodeuricomponent.md

### value (`value_default`)

- Group: value / custom
- Simply returns the provided value.
- Semantics: Outputs the literal value configured in the block, exactly as stored - no coercion, no placeholder substitution, no inputs.
- Out pins: `value` (value)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (out), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_default.md

### dynamic value (`value_default_dynamic`)

- Group: value / custom
- Returns the provided value with support for dynamic inpins using {name:type} placeholders : the pin's name first, then its type, e.g. {guid:value}.
- Semantics: Outputs the configured value with every {name:type} placeholder replaced by the matching dynamic input pin's value; a placeholder whose pin is unwired or nil becomes an EMPTY string, and brace text without a colon is left as-is. The result is always a single string.
- Out pins: `value` (value)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [Request: POST json](https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_post.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_default_dynamic.md

### icon (`value_default_icon`)

- Group: value / custom
- Semantics: Outputs the block's configured static value (an icon identifier) exactly as stored, identical in behavior to the plain value block.
- Out pins: `value` (value)
- Commonly used with: [fontawesome icon](https://docs.rual.nl/block-types/state%20ui/state_icon.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_default_icon.md

### define value (`value_define_reference`)

- Group: value / references
- Store this value as reference, which can later be used by "use reference"
- In pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_define_reference.md

### elseif (`value_elseif`)

- Group: value / conditions
- Conditional branching for values (if.. then.. else if.. then.. else if.. default..).
- Semantics: Multi-way VALUE selector, not a flow gate: the engine pre-evaluates the elseif conditions in order and this block outputs the input wired to the winning then pin, or default when none match. It does not route execution. Outputs an empty string when no pin was pre-chosen.
- In pins: `default` (value), `elseif` (condition), `then` (value)
- Out pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [>=](https://docs.rual.nl/block-types/condition/condition_gte.md) (in), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_elseif.md

### emojify (`value_emoji_emojify`)

- Group: value / emoji
- replaces all :emoji: with the actual emoji
- Semantics: Replaces ALL known :shortcode: tokens in the text with their emoji characters; unknown shortcodes are left untouched. Outputs an empty string when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_emojify.md

### from emoticon (`value_emoji_from_emoticon`)

- Group: value / emoji
- Replaces emoticons by emoji
- Semantics: Replaces only a FIXED set of ASCII emoticons - :) :-) :( :-( ;) ;-) :D :-D :') - with emoji, and only when the emoticon appears at the START of the string or after a SPACE; mid-word occurrences are left alone. Matching is case-sensitive (:D needs uppercase D). Outputs an empty string when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_from_emoticon.md

### get emoji (`value_emoji_get`)

- Group: value / emoji
- returns the emoji code for a given value
- Semantics: Looks up ONE emoji by shortcode name, with or without surrounding colons. An UNKNOWN name is returned wrapped in colons (":name:") rather than an empty string or error, so colons in the output signal a failed lookup. Outputs an empty string only when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_get.md

### has emoji (`value_emoji_hasemoji`)

- Group: value / emoji
- checks whether the text contains any emoji, either a known :shortcode: token or a raw emoji character
- Semantics: Outputs true on condition when the text CONTAINS any known :shortcode: token or any emoji-range Unicode character; it scans the whole string, it does not validate a single emoji name. Shortcodes missing from the built-in table do not count, but raw characters in emoji Unicode ranges match even without a table entry.
- In pins: `value` (value, required)
- Out pins: `condition` (condition)
- Page: https://docs.rual.nl/block-types/value/value_emoji_hasemoji.md

### insert custom (`value_emoji_insert_custom`)

- Group: value / emoji
- Replaces the given strings by the given emoji
- Semantics: Replaces occurrences of find[i] in the text with replace[i]. Find terms are matched LITERALLY (regex-escaped) and case-INSENSITIVELY, but a hit whose case differs from the find entry is left UNCHANGED because the replacement is looked up by the exact matched text. When value is unwired or find/replace is empty, NO output is written at all.
- In pins: `value` (value, required), `find` (array, required), `replace` (array, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_insert_custom.md

### random (`value_emoji_random`)

- Group: value / emoji
- returns a random emoji
- Semantics: Outputs an OBJECT with keys emoji (the character) and name (its shortcode), not a bare emoji string. Picks uniformly at random from the built-in emoji table on every run.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_random.md

### unemojify (`value_emoji_unemojify`)

- Group: value / emoji
- replaces the actual emoji with :emoji:
- Semantics: Replaces ALL recognized emoji in the text, including multi-rune ZWJ sequences, with their :shortcode: form; variation selectors are ignored during lookup and unrecognized characters pass through unchanged. Outputs an empty string when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_emoji_unemojify.md

### encode (`value_encode_base64`)

- Group: value / base64
- Encode a raw value into Base64.
- Semantics: Encodes the input to STANDARD Base64 with padding (not URL-safe). Strings and byte inputs are encoded as-is; other types are coerced to a string and whitespace-TRIMMED first. A nil or unwired raw pin writes NO output at all.
- In pins: `raw` (value, required)
- Out pins: `encoded` (value)
- Commonly used with: [get cache key](https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists.md) (out), [exists](https://docs.rual.nl/block-types/redis/function_redis_cache_key_exists.md) (out), [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [set cache ttl](https://docs.rual.nl/block-types/redis/function_redis_cache_ttl.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_encode_base64.md

### encode uri (`value_encodeuri`)

- Encodes a URI by replacing specific characters with URI safe characters.
- Semantics: Mirrors JS encodeURI: percent-encodes characters EXCEPT letters, digits and ;,/?:@&=+$-_.!~*'()# so a full URL keeps its structure (/ ? # & = stay literal). Space becomes %20. Outputs an empty string when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_encodeuri.md

### encode uri component (`value_encodeuricomponent`)

- Encodes a URI by replacing specific characters with URI safe characters.
- Semantics: Mirrors JS encodeURIComponent: percent-encodes EVERYTHING except letters, digits and -_.!~*'() - including / ? & = and : - so it suits individual query values, not whole URLs. Space becomes %20, never +. Outputs an empty string when value is not wired.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_encodeuricomponent.md

### newline (linux/mac) (`value_eol_linux`)

- Group: value / eol
- Will return a linux / mac EOL character (\n)
- Semantics: Outputs the constant LF newline character (\n); no carriage return, no inputs.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_eol_linux.md

### newline (windows) (`value_eol_windows`)

- Group: value / eol
- Will return a windows EOL character (\r\n)
- Semantics: Outputs the constant CRLF sequence (\r\n); no inputs.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_eol_windows.md

### escape (`value_escape`)

- Converts the characters "&", "", '"', and "'" in string to their corresponding HTML entities.
- Semantics: HTML-escapes exactly five characters - & " ' - into &amp; &lt; &gt; &quot; &#39;. ALL occurrences are replaced in one pass and nothing else is touched; already-escaped text is escaped again ("&amp;" becomes "&amp;amp;").
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_escape.md

### extract domain from email (`value_extract_email_domain`)

- Extracts the domain part from an email address (the part after @)
- Semantics: Outputs everything after the FIRST @ as domain ("a@b@c" - "b@c"); no other email validation is performed. valid is true only when an @ exists with a non-empty remainder; otherwise valid is false and domain is nil.
- In pins: `email` (value, required)
- Out pins: `valid` (condition), `domain` (value)
- Page: https://docs.rual.nl/block-types/value/value_extract_email_domain.md

### format number (`value_format_number`)

- Semantics: Formats a number as a string with EUROPEAN defaults: thousand separator ".", decimal separator ",", ROUNDED to dec_places decimals (default 2, capped at 100). dec_places of 0 omits the decimal separator entirely; large values keep full precision via arbitrary-precision parsing; unparseable input formats as 0. Example: 1234567.891 - "1.234.567,89".
- In pins: `number` (number), `sep_thou` (value), `sep_dec` (value), `dec_places` (number)
- Out pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_format_number.md

### decode (`value_google_polyline_decode`)

- Group: value / esque polyline
- takes a string representation of 1+ coordinate pairs and returns an array of lat, lon arrays.
- Semantics: Decodes a Google-encoded polyline into an array of [lat, lng] pairs - latitude FIRST - dividing by 10^precision (default 5). An empty string yields an empty array. Input is not validated: malformed strings produce nonsense coordinates rather than an error.
- In pins: `value` (value, required), `precision` (number)
- Out pins: `array` (array)
- Page: https://docs.rual.nl/block-types/value/value_google_polyline_decode.md

### generate guid (`value_guid`)

- Generates a unique GUID. When a seed is provided, the GUID is deterministic (same seed always produces the same GUID) : the sha256 of the seed, the same derivation the document blocks apply to their guid_seed pin. Wire this output into verbatim guid pins (get / update / remove) to address seed-created documents. Never wire it into a guid_seed pin: that would hash the already-hashed value again and address a different document : give guid_seed pins the raw seed instead.
- Semantics: With seed wired the output is DETERMINISTIC: the 64-char SHA-256 hex of the seed, the same derivation document blocks apply to guid_seed pins - wire it into verbatim guid pins, never into a guid_seed pin (that double-hashes). Without seed it outputs a random 40-char SHA-1 hex, different every run.
- In pins: `seed` (value)
- Out pins: `guid` (value)
- Commonly used with: [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (in), [get document](https://docs.rual.nl/block-types/storage/function_get_document.md) (out), [update document](https://docs.rual.nl/block-types/storage/function_update_document_mutations.md) (out), [rename](https://docs.rual.nl/block-types/files/file_rename.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_guid.md

### hex to rgb (`value_hex_to_rgb`)

- Converts a hex color code into rgb/a
- Semantics: Strips ALL non-hex characters first (# may appear anywhere), then requires exactly 3, 4, 6 or 8 hex digits (4/8 carry alpha). Alpha is emitted as a 0-1 float rounded to 2 decimals (default 1). On any other digit count condition is false and rgb/rgba/array are NOT written. Example: "#0F08" - rgba(0,255,0,0.53).
- In pins: `value` (value, required)
- Out pins: `condition` (condition), `rgb` (value), `rgba` (value), `array` (array)
- Page: https://docs.rual.nl/block-types/value/value_hex_to_rgb.md

### includes - multi search (`value_includes_multi_search`)

- Group: value / condition
- checks if one of the given strings is included in the primary string.
- Semantics: Case-SENSITIVE substring test: matches lists each entry of searches found anywhere in value (the terms themselves, not positions); has_match is true when at least one hit exists. Nil entries are skipped, non-string entries are coerced JS-style, and an empty-string entry matches EVERYTHING. A non-array searches yields has_match false and empty matches.
- In pins: `value` (value, required), `searches` (array, required)
- Out pins: `has_match` (condition), `matches` (array)
- Page: https://docs.rual.nl/block-types/value/value_includes_multi_search.md

### index of (`value_index_of`)

- Finds the given value in its value.
- Semantics: Outputs the UTF-16 code-unit index (JS String#indexOf semantics, NOT a byte offset) of the FIRST case-SENSITIVE occurrence of keyword in value, or -1 when absent; matched mirrors index -1. An empty keyword matches at index 0.
- In pins: `value` (value, required), `keyword` (value, required)
- Out pins: `index` (number), `matched` (condition)
- Page: https://docs.rual.nl/block-types/value/value_index_of.md

### geolocation from IP (`value_ip_geolocate`)

- Group: value / custom
- Retrieves location data (city, province, country, continent, timezone) from an IPv4/IPv6 address using a geo database. No coordinates are returned
- Semantics: Resolves an IP to city, province, country, continent, timezone and accuracy_radius (km); NO latitude/longitude outputs exist. An empty ip is looked up as 0.0.0.0. On any failure success stays false, the location pins stay nil, and error carries INVALID_IP, GEOLOCATOR_NOT_AVAILABLE, LOOKUP_FAILED or NOT_FOUND.
- In pins: `ip` (value, required)
- Out pins: `success` (condition), `city` (value), `province` (value), `country` (value), `continent` (value), `timezone` (value), `accuracy_radius` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/value/value_ip_geolocate.md

### javascript type (`value_javascript_type`)

- Returns the JS-engine type of a given value
- Semantics: Outputs a type name string: null, number, NaN, Infinity, string, boolean, array, or object. This DIVERGES from raw JS typeof: nil reports "null" (not "object"), arrays report "array", and NaN/Infinity are named explicitly. Strings always report "string" - numeric-looking text is NOT sniffed.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_javascript_type.md

### parse (`value_json_parse`)

- Group: value / json
- Converts a JSON in text format to a data structure that can be used inside functions.
- Semantics: Parses JSON text and emits the result on the type-selected output pin; an unwired stringified pin parses the default "{}". The parsed value is NOT validated against the selected pin type. On parse failure success is false, error carries the parser message, and the selected pin receives an EMPTY OBJECT regardless of the chosen type.
- In pins: `stringified` (value)
- Out pins: `success` (condition, required), `error` (value)
- Commonly used with: [get cache key](https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists.md) (in), [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [Request: GET](https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_get.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_json_parse.md

### stringify (`value_json_stringify_v2`)

- Group: value / json
- uses JSON.stringify to produce a string of the given data
- Semantics: Serializes the FIRST non-nil input among the typed pins (spacing excluded) to a JSON string; when every input is nil it outputs "{}". spacing greater than 0 pretty-prints with that many spaces of indentation. If serialization fails it outputs the literal string "null" instead of erroring.
- In pins: `json` (value), `number` (number), `object` (object), `condition` (condition), `array` (array), `spacing` (number)
- Out pins: `stringified` (value)
- Commonly used with: [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [select field values](https://docs.rual.nl/block-types/array/array_get_values_from_bp_field.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [search](https://docs.rual.nl/block-types/storage/function_search.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_json_stringify_v2.md

### l33t decoder (`value_leet_decoder`)

- Group: value / custom
- Semantics: Replaces leet-speak tokens with letters, trying the LONGEST token at each position, but advances only ONE character after a match, so the tail of a multi-character token is decoded again. Example: "13" - "BE" (13-B, then 3-E). Decoded letters keep the mixed upper/lower case of the internal mapping table; unmatched characters pass through unchanged.
- In pins: `value` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_leet_decoder.md

### get length (`value_length`)

- value contains the length of the string in UTF-16 code units
- Semantics: Outputs the UTF-16 code-unit count for strings (JS .length semantics: an emoji above U+FFFF counts as 2), the element count for arrays, and nil when the input is nil. Any other input is coerced to its JS string form first and that string's length is returned. NOT a byte or code-point count.
- In pins: `value` (value)
- Out pins: `number` (number)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [>](https://docs.rual.nl/block-types/condition/condition_gt.md) (out), [===](https://docs.rual.nl/block-types/condition/condition_deep_equal.md) (out), [>=](https://docs.rual.nl/block-types/condition/condition_gte.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_length.md

### locale compare (`value_locale_compare`)

- Semantics: Outputs -1, 0, or 1 comparing value_0 against value_1 using Unicode locale-aware collation (JS localeCompare semantics), NOT plain byte order. value_2 selects the locale; an empty or unparseable locale falls back to the default collator. Unwired string inputs default to "-".
- In pins: `value_0` (value), `value_1` (value), `value_2` (value)
- Out pins: `number` (number)
- Page: https://docs.rual.nl/block-types/value/value_locale_compare.md

### logical OR (`value_logical_or`)

- Group: value / expressions
- will return the first truthy value, checking first, then second, then any extended pins. Falsy means null, false, 0, NaN or an empty string, so first being 0 or false also falls through.
- Semantics: Outputs the FIRST JS-truthy value among first, second, then any value_extended_* pins in alphabetical pin-name order. Falsy means nil, false, 0, NaN, or "" -- so first=0 or first=false falls through to second, not just missing values. When every input is falsy the output is the second pin's (falsy) value, not nil.
- In pins: `first` (value, required), `second` (value, required)
- Out pins: `value` (value)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (out), [custom field](https://docs.rual.nl/block-types/object/object_get_custom_field.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_logical_or.md

### matchall (`value_match_all_regexp`)

- Group: value / regexp
- Semantics: Runs a JS-flavored regex (lookbehind and backreferences supported) against text; matches is an array where EACH element is itself an array: index 0 the full match, then one entry per capture group (unmatched groups become ""). success is true only when at least one match exists; an invalid pattern outputs success=false and an empty array without failing. global=false stops after the FIRST match; flags come from the insensitive/multline pins, not from the expression.
- In pins: `text` (value, required), `expression` (value, required), `global` (condition), `insensitive` (condition), `multline` (condition)
- Out pins: `success` (condition), `matches` (array)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [map](https://docs.rual.nl/block-types/array/array_map.md) (out), [branch](https://docs.rual.nl/block-types/flow/branch.md) (out), [AND](https://docs.rual.nl/block-types/condition/condition_and.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_match_all_regexp.md

### pad end (`value_pad_end`)

- Group: value / utils
- Pads the given value with char. on the right to match the given length.
- Semantics: Appends pad_with (repeated, then truncated) on the RIGHT until the value reaches target_length, counting Unicode code points, not bytes. Returns the value unchanged when it is already at or beyond target_length or when pad_with is empty; pad_with defaults to a single space. Example: "7" target_length=3 pad_with="0" - "700".
- In pins: `value` (value), `target_length` (number), `pad_with` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_pad_end.md

### pad start (`value_pad_start`)

- Group: value / utils
- Pads the given value with char. on the left to match the given length.
- Semantics: Prepends pad_with (repeated, then truncated) on the LEFT until the value reaches target_length, counting Unicode code points, not bytes. Returns the value unchanged when it is already at or beyond target_length or when pad_with is empty; pad_with defaults to a single space. Example: "7" target_length=3 pad_with="0" - "007". The deprecated success and error out-pins are never emitted.
- In pins: `value` (value), `target_length` (number), `pad_with` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_pad_start.md

### parser (`value_parse_querystring`)

- Group: value / querystring
- Semantics: Parses the query string into an object; a key that appears more than once becomes an array of its values, and percent-encoding is decoded in both keys and values. Pairs are split on separator (default "&") and keys from values on equal (default "="); an empty value on either pin falls back to that default. success is always true; empty input yields an empty object, and pairs with an empty key are dropped.
- In pins: `querystring` (value, required), `separator` (value), `equal` (value)
- Out pins: `success` (condition), `object` (object)
- Page: https://docs.rual.nl/block-types/value/value_parse_querystring.md

### parser (`value_parse_url`)

- Group: value / url
- Semantics: Decomposes the URL: protocol INCLUDES the trailing ":", search INCLUDES the leading "?", hash INCLUDES the leading "#", and search_params_entries is an array of {name,value} objects preserving query order. When the url pin is unwired or the URL cannot be parsed, NO out-pins are set at all -- there is no error signal.
- In pins: `url` (value)
- Out pins: `host` (value), `port` (value), `protocol` (value), `hash` (value), `hostname` (value), `href` (value), `origin` (value), `username` (value), `password` (value), `pathname` (value), `search` (value), `search_params_entries` (array)
- Page: https://docs.rual.nl/block-types/value/value_parse_url.md

### pbkdf2 (`value_pbkdf2`)

- Group: value / hashing
- Semantics: Derives a PBKDF2 key and outputs it as lowercase hex; keylen counts BYTES, so the hex output is 2*keylen characters (default 512 bytes - 1024 chars). digest selects sha1, sha256, or sha512 -- any other value silently uses sha512. When password or salt is empty, NOTHING is output (the out-pin stays unset); iterations falls back to 10000 only when the pin is entirely absent.
- In pins: `password` (value), `salt` (value), `iterations` (number), `keylen` (number), `digest` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_pbkdf2.md

### qr code (`value_qr`)

- Group: value / custom
- A basic QR code.
- Semantics: Renders a QR code from the input string: plain text when output="string" (default) or a data URI when output="dataurl". options.scale (1-20, default 4) and options.margin (0-10, default 4) are honored; out-of-range values silently keep the defaults. Empty input or a generation error outputs "" rather than failing.
- In pins: `value` (value), `options` (object), `output` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_qr.md

### generate random string (`value_random_string`)

- Generates a cryptographically random string from an alphabet you choose. Use it for human-facing codes (claim, invite, voucher) where the alphabet has to exclude lookalike characters. Every character of the alphabet is equally likely.
- Semantics: Uniform (rejection-sampled) crypto-random string from the given alphabet; the default alphabet is digits plus uppercase letters WITHOUT I and O. length defaults to 8 and is SILENTLY capped at 4096. Empty alphabet - value "" and error "NO_ALPHABET"; zero or negative length - value "" and error "INVALID_LENGTH"; on success error is nil.
- In pins: `alphabet` (value), `length` (number)
- Out pins: `value` (value), `error` (value)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_random_string.md

### random bytes (`value_randombytes`)

- Group: value / crypto
- Semantics: Outputs N crypto-random bytes encoded as a string: hex (default, 2*N characters) or base64. N comes from the number pin, defaults to 16, resets to 16 when negative, and is clamped to 256; any encoding other than hex or base64 silently falls back to hex.
- In pins: `number` (number), `encoding` (value)
- Out pins: `value` (value)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_randombytes.md

### remove special chars (`value_remove_special_chars`)

- Returns the value with accents stripped. Only combining diacritical marks are removed - punctuation and symbols are kept
- Semantics: ONLY strips accents: Unicode-decomposes the input and removes combining diacritical marks (U+0300-U+036F), so "e" with an accent becomes plain "e". Punctuation, symbols, and other special characters are KEPT despite the label. Empty input emits NO output (the output pin stays unset).
- In pins: `value` (value, required)
- Out pins: `output` (value)
- Commonly used with: [trim](https://docs.rual.nl/block-types/value/value_trim.md) (both), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (out), [convert to lowercase](https://docs.rual.nl/block-types/value/value_to_lowercase.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_remove_special_chars.md

### repeat (`value_repeat`)

- Group: value / utils
- This method constructs and returns a new string which contains the specified number of copies of the string on which it was called, concatenated together.
- Semantics: Outputs the value concatenated length times. A length of 0, an unwired length, or a NEGATIVE length all output "" without erroring (unlike JS repeat, which throws on negative counts).
- In pins: `value` (value), `length` (number)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_repeat.md

### replace (`value_replace`)

- Returns a new value with one, some, or all matches of a pattern replaced by a replacement
- Semantics: When substr is not of the form /pattern/flags it is a literal, case-SENSITIVE search and only the FIRST occurrence is replaced. A /pattern/flags value runs as a JS-style regex; ALL occurrences are replaced only with the g flag. A leading slash without a closing slash plus valid flag letters (e.g. the path "/api/v1") is treated as a literal, and an invalid regex outputs the input unchanged.
- In pins: `value` (value), `substr` (value), `replace` (value)
- Out pins: `value` (value)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [replace](https://docs.rual.nl/block-types/value/value_replace.md) (both), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out), [substring](https://docs.rual.nl/block-types/value/value_substr.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_replace.md

### rgb to hex (`value_rgb_to_hex`)

- Converts rgb color codes into hex
- Semantics: Prefers the array pin ([r,g,b,a]); otherwise extracts the numbers found in an rgb()/rgba() string. Missing components default to r=0 g=0 b=0 a=1; r/g/b are rounded and clamped to 0-255, alpha is clamped to 0-1. Outputs lowercase "#rrggbb" on value and "#rrggbbaa" on hexopacity; condition is ALWAYS true -- it never signals a parse failure.
- In pins: `value` (value), `array` (array)
- Out pins: `condition` (condition), `value` (value), `hexopacity` (value)
- Page: https://docs.rual.nl/block-types/value/value_rgb_to_hex.md

### sanitize html (`value_sanitize_html`)

- Sanitizes the given html
- Semantics: With allowed_tags empty, strips ALL HTML tags; script and style elements lose their CONTENT too, not just the tags. With allowed_tags set, disallowed tags are removed (their inner text kept) and allowed tags keep only attributes listed in allowed_attr -- an empty allowed_attr strips every attribute. Regex-based tag filtering, not a full HTML parser.
- In pins: `html` (value, required), `allowed_tags` (array), `allowed_attr` (array)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_sanitize_html.md

### sha1 (`value_sha1`)

- Group: value / hashing
- Semantics: Outputs the SHA-1 digest, as lowercase hex, of ALL in-pin values concatenated in pin order (each coerced to string; unwired pins contribute ""). Extra value pins extend the hashed input, they are not hashed separately. NOT an HMAC and not salted.
- In pins: `value` (value)
- Out pins: `hashed` (value)
- Commonly used with: [reverse geocode](https://docs.rual.nl/block-types/geopoint/geo_point_reverse_geocode.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (both), [get cache key](https://docs.rual.nl/block-types/redis/function_redis_cache_get_exists.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_sha1.md

### sha1 (`value_sha1_hmac`)

- Group: value / hmac
- Semantics: Outputs the HMAC-SHA1 of value keyed with secret, as lowercase hex on the signature pin. Unwired or empty pins are treated as "" -- the block still emits a signature rather than erroring.
- In pins: `secret` (value), `value` (value)
- Out pins: `signature` (value)
- Page: https://docs.rual.nl/block-types/value/value_sha1_hmac.md

### sha256 (`value_sha256`)

- Group: value / hashing
- Semantics: Outputs the SHA-256 digest, as lowercase hex, of ALL in-pin values concatenated in pin order (each coerced to string; unwired pins contribute ""). Extra value pins extend the hashed input, they are not hashed separately. NOT an HMAC and not salted.
- In pins: `value` (value)
- Out pins: `hashed` (value)
- Page: https://docs.rual.nl/block-types/value/value_sha256.md

### sha256 (`value_sha256_hmac`)

- Group: value / hmac
- HMAC-SHA256 of the value keyed with the secret, as lowercase hex : e.g. to verify a webhook's X-Mssgs-Signature: sha256=&lt;hex&gt; header against the raw request body.
- Semantics: Outputs the HMAC-SHA256 of value keyed with secret, as lowercase hex on the signature pin. Unwired or empty pins are treated as "" -- the block still emits a signature rather than erroring.
- In pins: `secret` (value), `value` (value)
- Out pins: `signature` (value)
- Commonly used with: [get raw body](https://docs.rual.nl/block-types/http%20connection/httpconnection_get_body_raw.md) (in), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_sha256_hmac.md

### sha512 (`value_sha512`)

- Group: value / hashing
- Semantics: Outputs the SHA-512 digest, as lowercase hex, of ALL in-pin values concatenated in pin order (each coerced to string; unwired pins contribute ""). Extra value pins extend the hashed input, they are not hashed separately. NOT an HMAC and not salted.
- In pins: `value` (value)
- Out pins: `hashed` (value)
- Commonly used with: [join](https://docs.rual.nl/block-types/array/array_join.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_sha512.md

### generate shortid (`value_shortid`)

- Semantics: Generates a crypto-random id from the FIXED 64-character nanoid alphabet (0-9, A-Z, a-z, hyphen, underscore); length defaults to 21. The alphabet is not configurable -- use value_random_string for custom alphabets. A new id on every execution.
- In pins: `length` (number)
- Out pins: `shortid` (value)
- Commonly used with: [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out), [sha1](https://docs.rual.nl/block-types/value/value_sha1.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_shortid.md

### simple normalize (`value_simple_normalize`)

- Transliterates German umlauts and sharp-s (ae/oe/ue/ss), then replaces whitespace and every character outside letters, digits, underscore and hyphen. Underscore and hyphen are kept
- Semantics: Transliterates German umlauts and sharp-s first (ae/oe/ue/ss), then REPLACES every whitespace and every character outside letters, digits, underscore, and hyphen with replaceby (default: removed entirely), and collapses consecutive replaceby runs to one. Underscore and hyphen are KEPT; leading/trailing replaceby is NOT trimmed. Empty input outputs "".
- In pins: `value` (value, required), `replaceby` (value)
- Out pins: `value` (value)
- Commonly used with: [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_simple_normalize.md

### split (`value_split`)

- takes a pattern and divides this string into an ordered list of substrings by searching for the pattern, puts these substrings into an array, and returns the array
- Semantics: Splits value_0 on the LITERAL separator value_1 (not a regex) into an array of strings. When limit is 0 or greater the array is capped at limit entries and the leftover text is DROPPED, unless join_exceeding=true, which appends the entire remainder (separators included) to the last entry. Example: "a,b,c" sep="," limit=2 - ["a","b"]; with join_exceeding=true - ["a","b,c"]. limit=0 yields []; an empty separator splits into single characters.
- In pins: `value_0` (value, required), `value_1` (value, required), `limit` (number), `join_exceeding` (condition)
- Out pins: `array` (array)
- Commonly used with: [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [get at index](https://docs.rual.nl/block-types/array/array_get_at_index.md) (out), [get last item](https://docs.rual.nl/block-types/array/array_last_item.md) (out), [number](https://docs.rual.nl/block-types/number/number_default.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_split.md

### substring (`value_substr`)

- Group: value / utils
- Semantics: Extracts number_1 characters starting at index number_0, counting Unicode code points. A falsy input (nil, "", or the number 0) emits NO output at all (the out-pin stays unset). A NEGATIVE start is clamped to 0 -- it does NOT count from the end like JS substr; a start past the end outputs "", and a missing or non-numeric length takes the rest of the string. Non-string input is coerced to its JS string form first.
- In pins: `value` (value), `number_0` (number), `number_1` (number)
- Out pins: `value` (value)
- Commonly used with: [number](https://docs.rual.nl/block-types/number/number_default.md) (in), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [random between](https://docs.rual.nl/block-types/number/number_random_between.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_substr.md

### switch (`value_switch`)

- Returns a value based of the given expression.
- Semantics: String-compares the expression's value, EXACT and case-SENSITIVE, against each case pin's NAME and outputs the value wired into the matching case pin; when nothing matches it outputs the default pin's value. matched is true only for a non-default match; with no match and no default wired, value is nil and matched is false. There is no fall-through and no partial matching.
- In pins: `value` (value), `default` (value)
- Out pins: `value` (value), `matched` (condition)
- Page: https://docs.rual.nl/block-types/value/value_switch.md

### template value (`value_text_template_v2`)

- Renders the given template using mustache.
- Semantics: Renders the template with Mustache plus platform extensions: {{if x}}/{{if !x}}/{{for x}} sections, {{translate}}, {{scoped}}, and {{get}} lambdas, {{x.length}} on arrays, and comparison sections like {{#x == 1}}. The view comes from the object pin; nil values render as "" and entity/language keys are injected automatically. A template parse failure outputs value=nil, success=false and the message on error; an empty template outputs "" with success=true.
- In pins: `value` (value, required), `object` (object)
- Out pins: `value` (value, required), `success` (condition, required), `error` (value)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (both), [value](https://docs.rual.nl/block-types/value/value_default.md) (in), [if](https://docs.rual.nl/block-types/object/object_branch.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_text_template_v2.md

### convert to lowercase (`value_to_lowercase`)

- Semantics: Lowercases the input ONLY when it is a string (Unicode-aware); any non-string input -- numbers, arrays, objects -- passes through completely UNCHANGED, with no coercion to string.
- In pins: `value` (value)
- Out pins: `value` (value)
- Commonly used with: [trim](https://docs.rual.nl/block-types/value/value_trim.md) (both), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [fields](https://docs.rual.nl/block-types/query/query_bool_term_fields.md) (out), [==](https://docs.rual.nl/block-types/condition/condition_equal.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_to_lowercase.md

### capitalize first letter (`value_to_ucfirst`)

- Semantics: Uppercases the FIRST character and LOWERCASES the entire rest of the string -- existing capitals are not preserved and each word is not title-cased. Example: "hello WORLD" - "Hello world". Empty input outputs "".
- In pins: `value` (value)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_to_ucfirst.md

### convert to uppercase (`value_to_uppercase`)

- Semantics: Uppercases the input ONLY when it is a string (Unicode-aware); any non-string input -- numbers, arrays, objects -- passes through completely UNCHANGED, with no coercion to string.
- In pins: `value` (value)
- Out pins: `value` (value)
- Commonly used with: [replace](https://docs.rual.nl/block-types/value/value_replace.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [execute](https://docs.rual.nl/block-types/function%20execution/function_custom_execute.md) (in), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_to_uppercase.md

### trim (`value_trim`)

- Removes characters from both ends of a string
- Semantics: With value_1 empty, trims Unicode whitespace from BOTH ends. Otherwise value_1 is treated as ONE literal string, and repeated occurrences of that WHOLE string are stripped from both ends -- it is NOT a set of characters. Example: value_0="ababXab" value_1="ab" - "X". Nothing is removed from the middle; empty input outputs "".
- In pins: `value_0` (value, required), `value_1` (value)
- Out pins: `value` (value)
- Commonly used with: [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [convert to lowercase](https://docs.rual.nl/block-types/value/value_to_lowercase.md) (both), [is not empty](https://docs.rual.nl/block-types/condition/condition_not_empty_value.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_trim.md

### unescape (`value_unescape`)

- Converts the HTML entities &amp;, &lt;, &gt;, &quot;, and &#39; in string to their corresponding characters.
- Semantics: Replaces ONLY the five entities amp, lt, gt, quot, and #39 with their literal characters (& " '); every other entity, including nbsp and other numeric references, is left untouched. Not a general HTML entity decoder.
- In pins: `value` (value, required)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_unescape.md

### use value (`value_use_reference`)

- Group: value / references
- Use the value which was previously defined by a define reference
- Out pins: `value` (value)
- Commonly used with: [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_use_reference.md

### generate uuid (`value_uuid`)

- Generates a random universally unique identifier according to the RFC 4122
- Semantics: Outputs a random version 4 UUID in canonical lowercase hyphenated form (36 characters); a new value on every execution. Not deterministic and not derived from any input.
- Out pins: `value` (value)
- Commonly used with: [rename](https://docs.rual.nl/block-types/files/file_rename.md) (out), [concatenate values](https://docs.rual.nl/block-types/value/value_concatenate.md) (out), [replace](https://docs.rual.nl/block-types/value/value_replace.md) (out), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out)
- Page: https://docs.rual.nl/block-types/value/value_uuid.md

### validate against whitelist (`value_validate_values`)

- Matches the input against a whitelist by string representation and returns the matching whitelist entry (in its original type), or the fallback when nothing matches
- Semantics: Compares unsafe_value against each safe_array element by STRING representation and outputs the matching array ELEMENT (its original type), not the input. No match -- or a match whose string form is empty -- outputs fallback_value, or the FIRST array element when fallback_value is empty or unwired. An empty or missing safe_array emits NO output at all.
- In pins: `unsafe_value` (value, required), `safe_array` (array, required), `fallback_value` (value)
- Out pins: `value` (value)
- Commonly used with: [array with values](https://docs.rual.nl/block-types/array/array_values_default.md) (in), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (in), [set fields](https://docs.rual.nl/block-types/mutations/mutations_set_bp_field_multiple.md) (out), [value](https://docs.rual.nl/block-types/value/value_default.md) (in)
- Page: https://docs.rual.nl/block-types/value/value_validate_values.md

### whitespace (`value_whitespace`)

- Group: value / custom
- Semantics: Always outputs exactly one ASCII space character; it has no inputs and no configuration.
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/value/value_whitespace.md

## video

### compress (`video_compress`)

- Compresses a video file with ffmpeg as a background queue job. Use a preset for standard message-media output, or override individual settings. Wire on_complete_function / on_error_function to react to the result.
- In pins: `flow` (flow), `file` (value, required), `preset` (value), `output_file` (value), `max_size` (number), `video_bitrate` (value), `max_rate` (value), `buf_size` (value), `audio_bitrate` (value), `fps` (number), `start_seconds` (number), `duration_seconds` (number), `passthrough` (value), `wait_in_flow` (condition), `wait_timeout_seconds` (number)
- Out pins: `flow` (flow), `queue_guid` (value), `output_file` (value), `width` (number), `height` (number), `duration_ms` (number), `size_bytes` (number), `success` (condition), `error` (value), `on_complete_function` (execute_function), `on_error_function` (execute_function)
- Page: https://docs.rual.nl/block-types/video/video_compress.md

### probe (`video_probe`)

- Reads width, height, duration, size and whether the file has audio : without transcoding. Runs inline (ffprobe is milliseconds), so branch on the result before deciding whether to compress.
- In pins: `flow` (flow), `file` (value, required)
- Out pins: `flow` (flow), `success` (condition), `width` (number), `height` (number), `duration_ms` (number), `size_bytes` (number), `has_audio` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/video/video_probe.md

### thumbnail (`video_thumbnail`)

- Extracts a single frame from a video as a JPEG poster image. Runs inline : it decodes one frame, not the whole file.
- In pins: `flow` (flow), `file` (value, required), `output_file` (value), `at_seconds` (number), `max_size` (number), `quality` (number)
- Out pins: `flow` (flow), `success` (condition), `output_file` (value), `width` (number), `height` (number), `error` (value)
- Page: https://docs.rual.nl/block-types/video/video_thumbnail.md

## virtualisation

### get cluster info (`lxdconnection_cluster_info`)

- Group: virtualisation / LXD
- Retreives the information about the LXD cluster.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `cluster_info` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_cluster_info.md

### get cluster members (`lxdconnection_cluster_members`)

- Group: virtualisation / LXD
- Retreives the LXD cluster members.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `members` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_cluster_members.md

### get instance info (`lxdconnection_instance`)

- Group: virtualisation / LXD
- Get info of a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance.md

### remove instance (`lxdconnection_instance_remove`)

- Group: virtualisation / LXD
- Starts a instance remove operation on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `operation` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_remove.md

### restart instance (`lxdconnection_instance_restart`)

- Group: virtualisation / LXD
- Restart a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `force` (condition), `timeout` (number)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `operation` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_restart.md

### start instance (`lxdconnection_instance_start`)

- Group: virtualisation / LXD
- Start a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `timeout` (number)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `operation` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_start.md

### get instance state (`lxdconnection_instance_state`)

- Group: virtualisation / LXD
- Get state of a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `status` (value), `cpu_usage` (object), `disk_usage` (object), `memory_usage` (object), `network_state` (object), `processes_running` (number), `stats` (object), `mounts` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_state.md

### stop instance (`lxdconnection_instance_stop`)

- Group: virtualisation / LXD
- Stop a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `force` (condition), `stateful` (condition), `timeout` (number)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `operation` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_stop.md

### update instance (`lxdconnection_instance_update`)

- Group: virtualisation / LXD
- Updates a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `instance` (object, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_update.md

### update instance configuration (`lxdconnection_instance_update_configuration`)

- Group: virtualisation / LXD
- Updates a instance configuration on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `instance_name` (value, required), `instance` (object, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instance_update_configuration.md

### get instances (`lxdconnection_instances`)

- Group: virtualisation / LXD
- Retreives the instances that are on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instances` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instances.md

### create instance (`lxdconnection_instances_create`)

- Group: virtualisation / LXD
- Creates a instance on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `description` (value, required), `instance_type` (value, required), `type` (value, required), `config` (array, required), `source` (object, required), `devices` (object, required), `profiles` (array, required), `restore` (value), `is_create_and_start` (condition), `delete_on_shutdown` (condition), `stateful` (condition)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `instance` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_instances_create.md

### get network info (`lxdconnection_network`)

- Group: virtualisation / LXD
- Retreives all the info of a network on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `network_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `network` (object), `status` (value), `used_by` (array), `ipv4` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network.md

### get network acl info (`lxdconnection_network_acl`)

- Group: virtualisation / LXD
- Retreives all the info of a network ACL on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `network_acl_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `description` (value), `egress_rules` (array), `ingress_rules` (array), `config` (object), `used_by` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_acl.md

### remove network acl (`lxdconnection_network_acl_remove`)

- Group: virtualisation / LXD
- Starts a network acl remove operation on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `network_acl_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_acl_remove.md

### update network acl (`lxdconnection_network_acl_update`)

- Group: virtualisation / LXD
- Updates the given network ACL on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `config` (array, required), `ingress_rules` (array, required), `egress_rules` (array, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_acl_update.md

### get network acls (`lxdconnection_network_acls`)

- Group: virtualisation / LXD
- Retreives all the networks ACLS on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `networks_acls` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_acls.md

### connect network acl to network (`lxdconnection_network_connect_acl`)

- Group: virtualisation / LXD
- Connects the given network ACL with the given network on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `network_name` (value, required), `network_aclname` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_connect_acl.md

### remove network (`lxdconnection_network_remove`)

- Group: virtualisation / LXD
- Starts a network remove operation on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `network_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_remove.md

### rename network (`lxdconnection_network_rename`)

- Group: virtualisation / LXD
- Renames the given network on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `new_name` (value, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_rename.md

### update network (`lxdconnection_network_update`)

- Group: virtualisation / LXD
- Updates the given network on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `description` (value), `config` (array, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_network_update.md

### get networks (`lxdconnection_networks`)

- Group: virtualisation / LXD
- Retreives all the networks on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `networks` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_networks.md

### create network acl (`lxdconnection_networks_acls_create`)

- Group: virtualisation / LXD
- Creates a network ACL on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `description` (value, required), `config` (array, required), `ingress_rules` (array, required), `egress_rules` (array, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_networks_acls_create.md

### create network (`lxdconnection_networks_create`)

- Group: virtualisation / LXD
- Creates a network on the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `name` (value, required), `description` (value, required), `type` (value, required), `config` (array, required), `auto_assign_ipv4` (condition), `auto_assign_ipv4_prefix` (value)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_networks_create.md

### open connection (`lxdconnection_open`)

- Group: virtualisation / LXD
- This block is used to open a connection to a LXD or Incus server. Incus is the fork of LXD and answers the same API, so one connection serves both.
- Semantics: Opens a mutual-TLS connection to an LXD or Incus REST API (default port 8443) and publishes it on the connection pin for the other lxdconnection_* blocks to consume. Takes three PEM files from the entity's file store: the client key, the client certificate, and the server's certificate (used as the CA). The client certificate must already be trusted by the server -- on Incus that is `incus config trust add` -- otherwise every later call answers as untrusted rather than failing here. reject_unauthorized off skips server certificate verification; on, the certificate_authority file must validate the server. The connection pin carries only file paths and a cache key, never key material.
- In pins: `flow` (flow), `hostname` (value, required), `port` (number, required), `client_key` (file, required), `client_certificate` (file, required), `certificate_authority` (file, required), `reject_unauthorized` (condition)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_open.md

### get operation state (`lxdconnection_operation`)

- Group: virtualisation / LXD
- Retreives all the state of a operation on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required), `operation_id` (value, required), `wait` (condition)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `operation` (object), `status` (value), `location` (value), `description` (value), `created_at` (date), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_operation.md

### get operations (`lxdconnection_operations`)

- Group: virtualisation / LXD
- Retreives all the operations on LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `operations` (array), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_operations.md

### get server info (`lxdconnection_server_info`)

- Group: virtualisation / LXD
- Retreives the information about the LXD server.
- In pins: `flow` (flow), `connection` (lxdconnection, required)
- Out pins: `flow` (flow), `connection` (lxdconnection, required), `success` (condition), `server_info` (object), `error` (value)
- Page: https://docs.rual.nl/block-types/virtualisation/lxdconnection_server_info.md

## webhooks

### Request: DELETE (`function_trigger_webhook_http_delete`)

- Performs an HTTP DELETE request to remove a resource at the specified URL. Returns the response as a string value.
- In pins: `flow` (flow), `url` (value), `auth` (value), `querystring` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (value), `headers` (object)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [cast to object](https://docs.rual.nl/block-types/type%20casting/value_convert_to_object.md) (out)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_delete.md

### Request: DELETE json (`function_trigger_webhook_http_delete_json`)

- Performs an HTTP DELETE request to remove a resource at the specified URL. Automatically parses the response as JSON.
- In pins: `flow` (flow), `url` (value), `auth` (value), `querystring` (object), `body` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (object), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_delete_json.md

### Request: GET (`function_trigger_webhook_http_get`)

- Performs an HTTP GET request to retrieve data from the specified URL. Returns the response as a string value.
- In pins: `flow` (flow), `url` (value), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (value), `headers` (object)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (both), [parse](https://docs.rual.nl/block-types/value/value_json_parse.md) (out), [===](https://docs.rual.nl/block-types/condition/condition_deep_equal.md) (out), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (in)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_get.md

### Request: GET JSON (`function_trigger_webhook_http_get_json`)

- Performs an HTTP GET request to retrieve data from the specified URL. Automatically parses the response as JSON.
- In pins: `flow` (flow), `url` (value), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (object), `headers` (object)
- Commonly used with: [branch](https://docs.rual.nl/block-types/flow/branch.md) (in), [set](https://docs.rual.nl/block-types/redis/function_redis_cache_set_key.md) (out), [get fields](https://docs.rual.nl/block-types/object/object_field_getter_multiple.md) (out), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (in)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_get_json.md

### Request: HEAD (`function_trigger_webhook_http_head`)

- The HEAD HTTP method requests the metadata of a resource in the form of headers that the server would have sent if the GET method was used instead.
- In pins: `flow` (flow), `url` (value), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_head.md

### Request: PATCH json (`function_trigger_webhook_http_patch`)

- Performs an HTTP PATCH request to partially update a resource at the specified URL with a JSON body.
- In pins: `flow` (flow), `url` (value), `body` (object), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (object), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_patch.md

### Request: POST json (`function_trigger_webhook_http_post`)

- Performs an HTTP POST request to create or submit data to the specified URL with a JSON body.
- In pins: `flow` (flow), `url` (value), `body` (object), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (object), `headers` (object)
- Commonly used with: [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [return](https://docs.rual.nl/block-types/function%20execution/function_return.md) (out), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (in)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_post.md

### Request: POST form-data (`function_trigger_webhook_http_post_form`)

- Performs an HTTP POST request with application/x-www-form-urlencoded content type. The body object is automatically encoded as form data.
- In pins: `flow` (flow), `url` (value), `body` (object), `querystring` (object), `auth` (value), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (value), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_post_form.md

### Request: POST value (`function_trigger_webhook_http_post_value`)

- Performs an HTTP POST request to create or submit data to the specified URL with a raw string body.
- In pins: `flow` (flow), `url` (value), `body` (value), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (value), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_post_value.md

### Request: PUT json (`function_trigger_webhook_http_put`)

- Performs an HTTP PUT request to create or replace a resource at the specified URL with a JSON body.
- In pins: `flow` (flow), `url` (value), `body` (object), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (object), `headers` (object)
- Commonly used with: [reply in JSON](https://docs.rual.nl/block-types/json/httpconnection_set_json.md) (out), [new object](https://docs.rual.nl/block-types/object/object_new_fields.md) (in), [create](https://docs.rual.nl/block-types/globals/trigger_custom_function.md) (in), [dynamic value](https://docs.rual.nl/block-types/value/value_default_dynamic.md) (in)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_put.md

### Request: PUT value (`function_trigger_webhook_http_put_value`)

- Performs an HTTP PUT request to create or replace a resource at the specified URL with a raw string body.
- In pins: `flow` (flow), `url` (value), `body` (value), `auth` (value), `querystring` (object), `headers` (object), `skip_ssl` (condition), `include_user_token` (condition), `timeout` (number), `retry` (condition), `retry_count` (number), `retry_delay` (number), `signing_key` (value)
- Out pins: `flow` (flow), `code` (number), `response` (value), `headers` (object)
- Page: https://docs.rual.nl/block-types/webhooks/function_trigger_webhook_http_put_value.md

## websocket

### subscribe websocket on backend (`function_broadcast_subscribe`)

- Subscribes the websocket to a specific channel. All broadcasts will be handled in the backend.
- Semantics: Subscribes the current websocket connection to the given channels (the channels array, or the single channel value) and runs the function wired to on_broadcast for each incoming broadcast, passing its event and message. success=true only means the block ran with a callback and a websocket : it stays true even when ZERO channel subscriptions succeeded, so check the channels output for what actually subscribed. An empty channel list fails with MISSING_CHANNELS, no wired callback with MISSING_CALLBACK, no active websocket with MISSING_WEBSOCKET; in simulation it does nothing and errors PRODUCTION_RUN_ONLY. An empty events array listens to all events on the channel; skipjwt=true hides the subscription from the frontend.
- In pins: `flow` (flow), `channels` (array), `channel` (value), `events` (array), `skipjwt` (condition)
- Out pins: `flow` (flow), `on_broadcast` (execute_function, required), `success` (condition), `error` (value), `channels` (array)
- Page: https://docs.rual.nl/block-types/websocket/function_broadcast_subscribe.md

### spark on disconnect (`function_spark_on_disconnect`)

- Executes a given function if a spark disconnects.
- Semantics: Registers the function wired to on_disconnect to run LATER, when the current WebSocket connection drops; the block itself returns immediately with success=true, and the function receives the connection's channel list on its channels pin. success=false with error "No spark found" without a WebSocket, DISCONNECT_NOT_SUPPORTED when the connection cannot register callbacks, or "No function connected" when on_disconnect is unwired. Does nothing in simulation. The clearall pin is declared but not read by the Go executor.
- In pins: `flow` (flow), `clearall` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `on_disconnect` (execute_function)
- Page: https://docs.rual.nl/block-types/websocket/function_spark_on_disconnect.md

### subscribe websocket on frontend (`function_subscribe_spark`)

- Subscribes the websocket to a specific channel. All broadcasts will be pushed to that spark / the frontend.
- Semantics: Subscribes the current WebSocket connection to the given channels (channels array and channel pin merged, duplicates removed) so later broadcasts on them reach this client; the channels out pin lists the channels that actually subscribed. Scoped to the events list when wired, all events when empty. success=false with error MISSING_CHANNELS when no channel resolves, MISSING_WEBSOCKET when there is no connection, or PRODUCTION_RUN_ONLY in simulation. Unless skipjwt is true, the new subscription set is broadcast to the frontend.
- In pins: `flow` (flow), `channels` (array, required), `channel` (value), `events` (array), `skipjwt` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `channels` (array)
- Page: https://docs.rual.nl/block-types/websocket/function_subscribe_spark.md

### websocket subscriptions (`function_subscriptions_spark`)

- Returns all subscriptions registered on the current websocket.
- Semantics: Outputs the channel names the current WebSocket connection is subscribed to on channels with success=true. Without a WebSocket connection: success=false, error=MISSING_WEBSOCKET, channels=[].
- In pins: `flow` (flow)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `channels` (array)
- Page: https://docs.rual.nl/block-types/websocket/function_subscriptions_spark.md

### unsubscribe websocket (`function_unsubscribe_spark`)

- Unsubscribes the websocket from a specific channel.
- Semantics: Unsubscribes the current WebSocket connection from the given channels (channels array and channel pin merged, duplicates removed); the channels out pin lists the channels actually unsubscribed. Scoped to the events list when wired, all events when empty. success=false with error MISSING_CHANNELS when no channel resolves or MISSNG_WEBSOCKET (sic) when there is no connection; does nothing in simulation. Unless skipjwt is true, the new subscription set is broadcast to the frontend.
- In pins: `flow` (flow), `channels` (array, required), `channel` (value, required), `events` (array), `skipjwt` (condition)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `channels` (array)
- Page: https://docs.rual.nl/block-types/websocket/function_unsubscribe_spark.md

### send message (`function_write_to_websocket`)

- Send the given payload as JSON to the current websocket
- Semantics: Writes the payload to the current WebSocket connection as a {type: "payload", data: ...} message. When fields is wired, only those dot-paths survive : everything else is stripped before sending (per element on arrays). success=false with error MISSING_WEBSOCKET when there is no connection, PRODUCTION_RUN_ONLY in simulation, or the write error when sending fails.
- In pins: `flow` (flow), `payload` (object, required), `fields` (array<value>)
- Out pins: `flow` (flow), `success` (condition), `error` (value)
- Page: https://docs.rual.nl/block-types/websocket/function_write_to_websocket.md

### active id (`value_current_websocket_id`)

- retrieve the unique active websocket id
- Semantics: Outputs the ID of the WebSocket connection that triggered this run, or nil when the run has no live WebSocket (plain HTTP call, queue job, scheduled trigger).
- Out pins: `id` (value)
- Page: https://docs.rual.nl/block-types/websocket/value_current_websocket_id.md

## xml

### from object (`function_parse_xml_from_object`)

- Group: xml / XML
- Semantics: Builds an XML string FROM the object : despite the name it serializes, it does not parse. Keys become elements in ALPHABETICAL order (not insertion order), arrays repeat the parent element per item, scalar values are escaped, and nil values emit empty elements; the xml_root pin wraps everything in a root tag after the XML declaration. Falsy data (nil, "", 0, false) serializes as an empty root. success is always true and error is never set; "@" keys become literal elements, NOT attributes.
- In pins: `flow` (flow), `xml_root` (value), `data` (object)
- Out pins: `flow` (flow), `success` (condition), `xml` (value), `error` (value)
- Page: https://docs.rual.nl/block-types/xml/function_parse_xml_from_object.md

### reply with xml from json (`httpconnection_set_xml`)

- Group: xml / response
- Reply to any httpconnection with XML using a JSON object
- Semantics: Converts the data object to XML and sends it: Content-Type text/xml unless the type pin overrides it, status from the code pin (default 200), and the xml_root pin sets the root element name. Flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number), `type` (value), `headers` (array<object>), `xml_root` (value), `data` (object)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/xml/httpconnection_set_xml.md

### reply with xml (`httpconnection_set_xml_value`)

- Group: xml / response
- Return to any httpconnection with XML content
- Semantics: Sends the xml pin string verbatim as the response body : no escaping or conversion. Content-Type text/xml unless the type pin overrides it, status from the code pin (default 200); a falsy xml value sends an empty string. Flushes immediately mid-flow; an unwired or nil connection sends nothing and outputs nil.
- In pins: `flow` (flow), `connection` (httpconnection), `code` (number), `type` (value), `headers` (array<object>), `xml` (value)
- Out pins: `flow` (flow), `connection` (httpconnection)
- Page: https://docs.rual.nl/block-types/xml/httpconnection_set_xml_value.md

## zip

### unzip (`function_unzip`)

- Unzips the given file
- Semantics: Extracts every .zip archive from the file pin into a fresh temp folder and outputs the extracted entries on file as {filename, path, type} objects; non-zip entries in the pin are skipped. success (the condition pin) is true with an empty file array when the pin is empty : that is not a failure. Extraction aborts with success=false, file=nil and the reason on value when a single file exceeds 1 GiB (UNZIPPED_FILE_TOO_BIG), the total exceeds 4 GiB (UNZIPPED_ARCHIVE_TOO_BIG), more than 50000 files would be written (UNZIPPED_TOO_MANY_FILES), or the archive cannot be read; a failed extraction deletes everything already written.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `condition` (condition), `value` (value), `file` (file)
- Page: https://docs.rual.nl/block-types/zip/function_unzip.md

### zip (`function_zip`)

- zips the given files
- Semantics: Packs every file from the file pin into one new ZIP in the entity temp folder, stored by basename only (directory paths are junked), and outputs a one-element file array describing the archive. An empty or unwired file pin is success=true with an empty file array : not an error. Fails with error INVALID_FILES (entry not an object or bad path), NON_EXISTING_FILES (a source missing on disk), FILE_PATH_NOT_CONFIGURED, COULD_NOT_CREATE_TEMP_FOLDER, or ERROR_DURING_ZIP; on those, file is nil.
- In pins: `flow` (flow), `file` (file, required)
- Out pins: `flow` (flow), `success` (condition), `error` (value), `file` (file)
- Page: https://docs.rual.nl/block-types/zip/function_zip.md

## zpl

### send to zebra printer (`function_zpl_print`)

- In pins: `flow` (flow), `host` (value), `port` (value), `zpl` (zpl)
- Out pins: `flow` (flow), `condition` (condition), `value` (value)
- Page: https://docs.rual.nl/block-types/zpl/function_zpl_print.md

### barcode (`zpl_barcode`)

- In pins: `orientation` (value), `height` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_barcode.md

### matrix code (`zpl_barcode_bx`)

- In pins: `orientation` (value), `height` (number), `quality` (number), `columns` (number), `rows` (number), `datatype` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_barcode_bx.md

### barcode code-128 (`zpl_barcode_code_128`)

- In pins: `orientation` (value), `height` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_barcode_code_128.md

### barcode field defaults (`zpl_barcode_field_defaults`)

- In pins: `width` (number), `height` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_barcode_field_defaults.md

### if (`zpl_branch`)

- In pins: `then` (zpl), `else` (zpl), `condition` (condition)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_branch.md

### cast to value (`zpl_cast_to_value`)

- In pins: `zpl` (zpl)
- Out pins: `value` (value)
- Page: https://docs.rual.nl/block-types/zpl/zpl_cast_to_value.md

### End (`zpl_end`)

- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_end.md

### field data (`zpl_field_data`)

- In pins: `data` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_field_data.md

### position (`zpl_field_origin`)

- In pins: `x` (number), `y` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_field_origin.md

### field reverse print (`zpl_field_reverse`)

- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_field_reverse.md

### field separator (`zpl_field_separator`)

- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_field_separator.md

### graphic box (`zpl_graphic_box`)

- In pins: `width` (number), `height` (number), `thickness` (number), `color` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_graphic_box.md

### label home (`zpl_label_home`)

- In pins: `x` (number), `y` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_label_home.md

### multiple (`zpl_multiple`)

- In pins: `zpl1` (zpl), `zpl2` (zpl)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_multiple.md

### text (`zpl_premade_text`)

- Group: zpl / ZPL (premade)
- In pins: `x` (number), `y` (number), `height` (number), `width` (number), `text` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_premade_text.md

### print quantity (`zpl_print_quantity`)

- In pins: `quantity` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_print_quantity.md

### print rate (`zpl_print_rate`)

- In pins: `speed` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_print_rate.md

### font (`zpl_set_font`)

- In pins: `font` (value), `height` (number), `width` (number)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_set_font.md

### start (`zpl_start`)

- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_start.md

### plain code (advanced) (`zpl_value`)

- uses plain text as command
- In pins: `value` (value)
- Out pins: `zpl` (zpl)
- Page: https://docs.rual.nl/block-types/zpl/zpl_value.md

