# Core (std)

## Std

### Call Function

<div align="left"><figure><img src="/files/cWdprqcS5NmU9FP6Mfki" alt="" width="563"><figcaption><p>This example calls the Add function with inputs 123 and 321.</p></figcaption></figure></div>

Calls the supplied `handler` function using list of arguments supplied to `inputs`.

### Or Else

<div align="left"><figure><img src="/files/6HxmRJqaxdBo1CrPO41Y" alt="" width="456"><figcaption></figcaption></figure></div>

Return `first` if it is not null, otherwise `second`.

### Switch

<figure><img src="/files/rx0p2WOA7i7UZMq1HKNt" alt=""><figcaption></figcaption></figure>

Propagates the first value if the first trigger is called, otherwise propagates the second value.

### Generate UUID

<figure><img src="/files/BTvl4PjpZMZqrCrCPKkA" alt="" width="330"><figcaption></figcaption></figure>

Generates a UUID (universally unique identifier).

### Delay

<figure><img src="/files/egaLJI5lGa632QCs5gyU" alt="" width="256"><figcaption></figcaption></figure>

Pauses execution for `delay for` ms. All execution is blocked during this time.

### Cache

<figure><img src="/files/MRYaJD9Rs6dFZVH2QoTj" alt="" width="375"><figcaption></figcaption></figure>

Relay makes the `input` value available on the `value` output. Since this is an executable function, the input value will be cached, so `Relay` can be used for caching of expensive computations.

### Log (std)

<figure><img src="/files/KWuS2gCsE09PrImQVHJA" alt="" width="277"><figcaption></figcaption></figure>

Write `input` to the Log panel.

### Format Log

<figure><img src="/files/H2VM0UpeOflT0mxeZUha" alt="" width="375"><figcaption></figcaption></figure>

Logs a formatted string to the log window, letting you replace {{input name}} with any input value.

### To String

<div align="left"><figure><img src="/files/3UpxIm4cx93cUWIn065A" alt="" width="375"><figcaption></figcaption></figure></div>

Converts any `input` type to a String. This function is not suitable for serialization; use for example `Json.Stringify` instead.

### If

<div align="left"><figure><img src="/files/uCSQbdHYAcDdw2YfnbkK" alt="" width="375"><figcaption></figcaption></figure></div>

If `input` is true, the `then` trigger is executed, otherwise the `else` trigger is executed. `value` contains the value of `input`.

### Choose

<div align="left"><figure><img src="/files/6QkDk9RgfL799NXhE9Lx" alt="" width="375"><figcaption></figcaption></figure></div>

A non-triggable alternative to `Std If`, which can be used to choose one of two values based on whether `predicate` is true or false.

### Match

<div align="left"><figure><img src="/files/Ag4tHfLa5H7RkDBjhS8n" alt="" width="375"><figcaption></figcaption></figure></div>

Switches on the values provided to the `cases` parameter, which accepts a list of values. For each value, an output trigger is created, which is triggered when the `value` property matches that list item.

### Type Of

<div align="left"><figure><img src="/files/aX2AWNmY9E1l8k0vSMOm" alt="" width="375"><figcaption></figcaption></figure></div>

Returns the type of `value` as a String.

### For

<div align="left"><figure><img src="/files/J85VgZpON4PShimJYpHL" alt="" width="563"><figcaption></figcaption></figure></div>

Count can be used to make tranditional for-loops. The `on count`  trigger will execute \`iterations\` number of times. The `done`trigger will execute when the loop is completed. The `reset` input trigger is used to start the loop.

### For Each

<div align="left"><figure><img src="/files/YYv1nzwPAjzXgHS8aIzP" alt="" width="563"><figcaption></figcaption></figure></div>

For can be used to make a traditional for-each-loop. The `on count` trigger will execute once per item in the `items` input, which expects a list.

### Stop

<div align="left"><figure><img src="/files/lc270tyBfVvcTfg048Xp" alt="" width="150"><figcaption></figcaption></figure></div>

Used to explicitly stop execution. The `exit code` input is currently not used for anything user-facing, but might be exposed in the future.

### Is Number

<div align="left"><figure><img src="/files/J735JcuOXFwfciYo1HXP" alt="" width="336"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is Number

### Is Bool

<div align="left"><figure><img src="/files/DAhs9m0iUakfjKZ5XeC3" alt="" width="300"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is Bool

### Is String

<div align="left"><figure><img src="/files/UCQr48opsjOiT7xWRiYd" alt="" width="313"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is String

### Is Null

<div align="left"><figure><img src="/files/UDnRTiVQMFSYJq3U67bb" alt="" width="301"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is Null

### Not Null

<div align="left"><figure><img src="/files/MNjUOagMH52WK4RmAZtF" alt="" width="303"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is not Null

### Is List

<div align="left"><figure><img src="/files/SVKGjXiMEbnNu01wHGqH" alt="" width="375"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is List

### Is Object

<div align="left"><figure><img src="/files/g2IKufT1SomT7rUoSYhS" alt="" width="375"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is Map

### Is Buffer

<div align="left"><figure><img src="/files/mgWBzzj0pJR0ifTeRSlu" alt="" width="375"><figcaption></figcaption></figure></div>

Returns true if the type of `input` is Buffer

### Start

<div align="left"><figure><img src="/files/lPN693JjdM5t2hIO6BCE" alt="" width="375"><figcaption></figcaption></figure></div>

An event which is triggered as soon as the application starts.

## Process

### Spawn Processes from Range

<figure><img src="/files/9Dt3LEQZDFdOBffoaDgP" alt=""><figcaption></figcaption></figure>

Spawns a new process for each index in a range, executing the `child spawned` trigger for each of them, with a corresponding `index`.

### Spawn Processes from List

<div align="left"><figure><img src="/files/SxyUAUONLZ6o9DTYZxJP" alt=""><figcaption></figcaption></figure></div>

Spawns a new process for each item in a list, executing the `child spawned` trigger for each of them, with a corresponding `item`.

### Spawn

<figure><img src="/files/H7MFk2wALWwDM9YcvLde" alt=""><figcaption></figcaption></figure>

Spawns a new process by copying the current one. The current process continues through the `done` output trigger, while the forked process continues throug the `spawned` output trigger, but in a new process.

### Merge

<div align="left"><figure><img src="/files/AnjZ3Wm78OwHlrplqi4n" alt="" width="563"><figcaption><p>Use Std Merge to merge a child process with its parent process.</p></figcaption></figure></div>

Merges a child process with its parent process. See `Std.Fork`for how to spawn a child process.

### Merge All

<div align="left"><figure><img src="/files/yMfglYveZ0DNApLdUWF1" alt="" width="563"><figcaption></figcaption></figure></div>

Merges a set of processes spawned using either `Std Spawn Processes from Range` or `Std Spawn Processes from List`, collecting the value passed to the `result` input in each child process into a list.

### Current Process Id

<div align="left"><figure><img src="/files/17HAw4XtIMNqtvmWuRmj" alt="" width="310"><figcaption></figcaption></figure></div>

Gets the process id of the executing process.

## Time

### Now

<div align="left"><figure><img src="/files/GTBibSCInuZRrBMg3hFC" alt="" width="226"><figcaption></figcaption></figure></div>

Gives the current time in nano seconds

### Current Time

<div align="left"><figure><img src="/files/rPMMJR8lcSr2J3Ie4gBF" alt="" width="375"><figcaption></figcaption></figure></div>

Gives the current time as a `DateTime` object

### Parse

<div align="left"><figure><img src="/files/0qCglTAau4sNkZIivahF" alt="" width="303"><figcaption></figcaption></figure></div>

Parses an [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) and [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time string such as 1996-12-19T16:39:57-08:00.

### Format

<div align="left"><figure><img src="/files/Dl1urWuNMW7D8cU2lqxA" alt="" width="563"><figcaption></figcaption></figure></div>

Formats a time value as a string using the given format string (as defined in <https://docs.rs/chrono/latest/chrono/format/strftime/index.html>).

### Add Seconds

<div align="left"><figure><img src="/files/vKCQjfoOZmJQ223iZvbf" alt="" width="298"><figcaption></figcaption></figure></div>

Adds the given amount of `seconds` to the provided `time` object

### Add Minutes

<div align="left"><figure><img src="/files/amS8V5zSsbqTexPLy6li" alt="" width="314"><figcaption></figcaption></figure></div>

Adds the given amount of `minutes` to the provided `time` object

### Add Hours

<div align="left"><figure><img src="/files/uPmNqgweiVmaMjuc3kIq" alt="" width="313"><figcaption></figcaption></figure></div>

Adds the given amount of `hours` to the provided `time` object

### Add Days

<div align="left"><figure><img src="/files/Mkrx0Xw9tCeOaXnxKyLT" alt="" width="310"><figcaption></figcaption></figure></div>

Adds the given amount of `days` to the provided `time` object

### Add Weeks

<div align="left"><figure><img src="/files/dZJokSBokJXMYGxCyewi" alt="" width="310"><figcaption></figcaption></figure></div>

Adds the given amount of `weeks` to the provided `time` object

## Strings

### Create Empty

<div align="left"><figure><img src="/files/d5zZqNgVMswV5lBIqoxa" alt="" width="333"><figcaption></figcaption></figure></div>

Creates a new, empty string.

### Concatenate

<div align="left"><figure><img src="/files/EnUbqFK5ywdcdkIQ9Wyz" alt="" width="318"><figcaption></figcaption></figure></div>

Concatenates the values in `left` and `right` as strings, making it available on the `result` output.

### Template

<div align="left"><figure><img src="/files/8GjjXw3T4H33EOOj2vOc" alt="" width="375"><figcaption></figcaption></figure></div>

Creates a string template letting you replace {{input name}} with string content.

### Length

<div align="left"><figure><img src="/files/3gpktKEs8xK681z4QEFt" alt="" width="311"><figcaption></figcaption></figure></div>

Returns the length of the string `input`.

### Substring

<div align="left"><figure><img src="/files/UubzIAKoS3RGtpZ3cHpv" alt="" width="350"><figcaption></figcaption></figure></div>

Returns the substring of `input` starting at `start` and ending at `end`. If `end` is not provided, the substring will be from `start` to the end of the string.

### Replace

<div align="left"><figure><img src="/files/OUWg3GhqDrDwBxmUHPlC" alt="" width="346"><figcaption></figcaption></figure></div>

Returns the string `input` with all occurrences of `search` replaced with `replace`.

### To Lower-Case

<div align="left"><figure><img src="/files/LAEqudCPZWaSJLOp4CIo" alt="" width="319"><figcaption></figcaption></figure></div>

Returns the string `input` with all characters converted to lowercase.

### To Upper-Case

<figure><img src="/files/NkhnafYXpNlC7aZHUyKK" alt=""><figcaption></figcaption></figure>

Returns the string `input` with all characters converted to uppercase.

### Is Lower-Case

![](/files/x0ibQwZqd1z6P6UJgdah)

Returns true if all characters in `input` are lower case.

### Is Upper-Case

<div align="left"><figure><img src="/files/a0xxggowWueq6SovhBBs" alt="" width="322"><figcaption></figcaption></figure></div>

Returns true if all characters in `input` are upper case.

### Trim

![](/files/X67SEL8KlFdubTmis60H)

Returns a trimmed version of `input` where leading and trailing whitespace is removed.

### Join (strings)

<div align="left"><figure><img src="/files/aKi9gu67ppihRiXAEiRd" alt="" width="375"><figcaption></figcaption></figure></div>

Combines each string in `string list` by placing `separator` between them.

### Split

<div align="left"><figure><img src="/files/yOuVGv318fqFfcghzrSx" alt="" width="375"><figcaption></figcaption></figure></div>

Splits a string into a list of strings at any place in the string that matches `split on`.

### Is Numeric

<div align="left"><figure><img src="/files/h9qMzwsy7ypQEKvTJzja" alt="" width="343"><figcaption></figcaption></figure></div>

Returns true if the input string only contains numberic characters, or parses as a number.

### Is Alphabetic

<div align="left"><figure><img src="/files/WH4zUJ83d85IWVlCLZw1" alt="" width="375"><figcaption></figcaption></figure></div>

Returns true if the input string only contains alphabetic characters.

### Is Alpha Numeric

<figure><img src="/files/p2ciVEWz5fcxcH9THz9p" alt=""><figcaption></figcaption></figure>

Returns true if the input string contains only alphabetic or numeric characters.

### Is Whitespace

<div align="left"><figure><img src="/files/U3mbowtcJZfP4hUxtQDu" alt="" width="375"><figcaption></figcaption></figure></div>

Returns true if the input string only contains whitespace characters.

### Is Empty

<div align="left"><figure><img src="/files/Awi4bn6dkaRmv5RKAo0x" alt="" width="329"><figcaption></figcaption></figure></div>

Returns true if the input string is empty.

### Reversed

<div align="left"><figure><img src="/files/oMUVFWjsXRb7E39jlYcV" alt="" width="338"><figcaption></figcaption></figure></div>

Reverses the `input` string.

### Match Indices

<div align="left"><figure><img src="/files/d3DS01Ba5veq3izVuuLT" alt="" width="375"><figcaption></figcaption></figure></div>

Returns a list over the disjoint matches of a pattern (not regex) within the `input` string as well as the index that the match starts at.

### Right Match Indices

<div align="left"><figure><img src="/files/h9om8LJi2fpMwrPsYgSf" alt="" width="375"><figcaption></figcaption></figure></div>

Returns a list over the disjoint matches of a pattern (not regex) within the `input` string as well as the index that the match starts at, yielded in reverse order.

### Characters

<div align="left"><figure><img src="/files/ZBJBv5Vax6shGYXiPBKk" alt="" width="340"><figcaption></figcaption></figure></div>

Returns the characters of `input` as a list.

### Contains

<div align="left"><figure><img src="/files/zGwuJiT5elh8mfl8GYvk" alt="" width="338"><figcaption></figcaption></figure></div>

Returns true if `input` contains `contains` as a substring.

### Starts With

<div align="left"><figure><img src="/files/t5YBcYqoWVYaBuT9ghqX" alt="" width="338"><figcaption></figcaption></figure></div>

Returns true if `input` starts with `prefix`.

### Ends With

<div align="left"><figure><img src="/files/vBjThvDskM6l0uwP48FV" alt="" width="319"><figcaption></figcaption></figure></div>

Returns true if `input` ends with `suffix`.

### Remove Prefix

<div align="left"><figure><img src="/files/AiYwT4aGO2BPZuCF94ER" alt="" width="317"><figcaption></figcaption></figure></div>

Returns the string `input` with the `prefix` removed from the start if it exists, otherwise returns null.

### Remove Suffix

<div align="left"><figure><img src="/files/u3vi2rgx3qY7EphBPl8Y" alt="" width="318"><figcaption></figcaption></figure></div>

Returns the string `input` with the `suffix` removed from the end if it exists, otherwise returns null.

## Testing

### Assert Equal

<div align="left"><figure><img src="/files/jD0cYf3C5j7RThNsOWGa" alt="" width="563"><figcaption></figcaption></figure></div>

Asserts that `expected` and `actual` are equal. The equality check is a deep check, where objects are traversed and matched against each other. `testId` identifies which test this assert is run under, and is provided by the `Testing.Test` event.

### Assert True

<div align="left"><figure><img src="/files/lE8qYVmS8rfiwyB01V6F" alt="" width="375"><figcaption></figcaption></figure></div>

Asserts that the input value is `true`.

### Assert False

<div align="left"><figure><img src="/files/ybYl8tflB1JoC3p0KFRY" alt="" width="375"><figcaption></figcaption></figure></div>

Asserts that the input value is `false`.

### Fail

<div align="left"><figure><img src="/files/MYGORZckS4Mg2BBCpEb5" alt="" width="375"><figcaption></figcaption></figure></div>

Causes the test identified by `testId` to fail.

### Test

<div align="left"><figure><img src="/files/vc076v5vGbPRY0bQi7E7" alt="" width="563"><figcaption><p>The various assertion functions can be called anywhere in a flow starting from a <code>Test</code>event.</p></figcaption></figure></div>

Creates a test, which can be run using the cli tool. `id` is used by `Testing.AssertEqual` to identify the running test.

## Ephemeral Store

The nodes in the `Ephemeral Store` module are used to interact with a global in memory data store. Data stored here can be viewed in the [service panel](/midio-docs/reference/overview/services.md#ephemeral-data).

### Get

<div align="left"><figure><img src="/files/1gAtGVEJDQj3ZhFcTYMk" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the `data` stored under `key` if the key exists. If the key is present, the `got data` trigger is executed, otherwise the `key not found` trigger is executed.

### Set

<div align="left"><figure><img src="/files/WSBk6axthoc3XYqMrKv9" alt="" width="334"><figcaption></figcaption></figure></div>

Associates a `value` with a string `key`, and also passes on a copy of the inserted data through the `inserted value` output.

### Remove

<div align="left"><figure><img src="/files/hPALYFKNR0tKPaqx5EIu" alt="" width="245"><figcaption></figcaption></figure></div>

Removes the data at `key`

### Changed

<div align="left"><figure><img src="/files/UqPTQp7RemLwQ3Ko6fbN" alt=""><figcaption></figcaption></figure></div>

Allows one to get an event whenever data on a `key` is **added**, **removed** or **updated**.

## Json

### Parse

<div align="left"><figure><img src="/files/ywMEij4KQ6cVQH6MvzRB" alt="" width="335"><figcaption></figcaption></figure></div>

Parses the json provided in the `string` property. The parsed `value` is available on success, and the `parsed` trigger is executed. If parsing fails, the `failed` trigger is executed, and the error is available on the `message` output.

### Parsed

<div align="left"><figure><img src="/files/BTJn1x1Jv70TihYwW66M" alt="" width="251"><figcaption></figcaption></figure></div>

Parses the json provided in the `string` property. Returns null if parsing fails. Use `Json Parse` if you need to be able to handle a parse error explicitly.

### Stringify

<div align="left"><figure><img src="/files/eOcZfFCFcjJRWyaAMDPJ" alt="" width="375"><figcaption></figcaption></figure></div>

Converts any object on the `json` input to a String.

### Generate Json Schema

<div align="left"><figure><img src="/files/Bwu8AxJnXn46mwJDQkrs" alt="" width="563"><figcaption><p>Generate JSON Schema for a data object</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/kNBY4ZLFCqJEWR9jgx8y" alt="" width="563"><figcaption><p>Generate JSON Schema for a function (notice that we connect the functions 'instance' socket (top right socket).</p></figcaption></figure></div>

Generates a JSON Schema for the given language item, like a function, event or data object.

## CSV

### Parse

<div align="left"><figure><img src="/files/rKAKE6pWlaLFLNNFBGsk" alt="" width="225"><figcaption></figcaption></figure></div>

Parses the provided CSV `string` into a Midio object.

### Stringify

<div align="left"><figure><img src="/files/uwoLYcG7bfR6MIapEpoo" alt="" width="160"><figcaption></figcaption></figure></div>

Converts the given Midio object into a CSV string.

## List

### Create Empty

<div align="left"><figure><img src="/files/UW55kGrbdlJKEImZTynh" alt="" width="206"><figcaption></figcaption></figure></div>

Creates an empty list

### Get At

<div align="left"><figure><img src="/files/VnTQxuvdsgzGt1YL5GYU" alt="" width="563"><figcaption></figcaption></figure></div>

Gets the item at `index` from `list`, returning Null if the index is out of bounds.

### Set At

<div align="left"><figure><img src="/files/TlYJ4Q9SZ6EdvPKlIzR4" alt="" width="563"><figcaption></figcaption></figure></div>

Sets the item at `index` of `list` to `value`

### Add

<div align="left"><figure><img src="/files/FNoRaQZhUnu890vovFjf" alt="" width="563"><figcaption></figcaption></figure></div>

Adds `item` to the `list` by creating a new list with the item added, available on the `listWithItem` output.

### Remove

<div align="left"><figure><img src="/files/I1UjMbsMfZ6fbx6wr5as" alt="" width="563"><figcaption></figcaption></figure></div>

Removes the item at `index` from `list` by creating a new list with the item removed, available on the `listWithoutItem` output.

### Length

<div align="left"><figure><img src="/files/THb6pnWHqVydq0c9lehn" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the number of items in `list`.

### Contains

<div align="left"><figure><img src="/files/2B1da0H95SRfx8Qhjg8k" alt="" width="563"><figcaption></figcaption></figure></div>

Returns true if `item` is contained in `list`.

### Sort

<div align="left"><figure><img src="/files/FKWDPUlYG8ynWKnW1aec" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a sorted version of `list`

### Sort On

<div align="left"><figure><img src="/files/FFjha4DflKKuwCiPHTRk" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a sorted version of `list`. Sorting in done based on the provided `key`, which is retrieved from the objects in the list, which are expected to have that key. If any value in the list is not an object, or doesn't contain the given key, it is treated as less than any other item.

### Generate Range

<div align="left"><figure><img src="/files/WUeRfUNr5OQIhbwBbA05" alt="" width="297"><figcaption></figcaption></figure></div>

A list containing number from `from` to `to`.

### Max

<div align="left"><figure><img src="/files/HhaNCQBZDsROclLwCjgZ" alt="" width="563"><figcaption></figcaption></figure></div>

Finds the largest item in a list of numbers

### Min

<div align="left"><figure><img src="/files/14AqS5tUh0ffOkuvqPso" alt="" width="563"><figcaption></figcaption></figure></div>

Finds the smallest item in a list of numbers

### Slice

<div align="left"><figure><img src="/files/lbLB4aV05GjFouYJ7Gzn" alt="" width="563"><figcaption></figcaption></figure></div>

Gets a slice of the list from `start` to, but not including, `end`. Gets the rest of the list if end == -1

### Reversed

<div align="left"><figure><img src="/files/hQzk8pzJkHttUg4G5A2O" alt="" width="563"><figcaption></figcaption></figure></div>

Reverses the order of the items in `list`

### Chunks

<div align="left"><figure><img src="/files/r8TY9VwJ9dPiEjKIDLV4" alt="" width="563"><figcaption></figcaption></figure></div>

Splits the given `list` into a list of lists where each sublist contains `chunk size` items from the original list.

### First Item

<div align="left"><figure><img src="/files/Lh6xqZbnxeS8QTSYuKYa" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the first item in the list.

### Last Item

<div align="left"><figure><img src="/files/bssOeUVi8GPapTxf6VB9" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the last item in the list.

### Is Empty

<div align="left"><figure><img src="/files/xzy8aaj9CWCkCdf4GBZV" alt="" width="563"><figcaption></figcaption></figure></div>

Checks whether the given `list` is empty.

### Not Empty

<div align="left"><figure><img src="/files/v0qPTcqHNEcNPqd9M3pT" alt="" width="563"><figcaption></figcaption></figure></div>

Checks whether the given `list` has any items.

### Flatten

<div align="left"><figure><img src="/files/zISINxSUlI6b7kMX0DUw" alt="" width="563"><figcaption></figcaption></figure></div>

Converts a list of lists into a flattened list.

### Concatenate

<div align="left"><figure><img src="/files/ADcxja8dtYaqnKJfImQr" alt="" width="563"><figcaption></figcaption></figure></div>

Concatenates two lists

### Group by Key

<div align="left"><figure><img src="/files/83iPhTB0tGO2uSDd7hMd" alt="" width="563"><figcaption></figcaption></figure></div>

## Query

### Select Fields

<div align="left"><figure><img src="/files/hPIMxJBVmBbtQJesrp8z" alt="" width="563"><figcaption></figcaption></figure></div>

Maps over a list of objects and selects the given set of keys from each object.

### Pick Field

<div align="left"><figure><img src="/files/F81wcmuxqM5HRVa1pD3Y" alt="" width="563"><figcaption></figcaption></figure></div>

Maps over a list of objects extracts the value for the given field from each item.

### Inner Join On

<div align="left"><figure><img src="/files/ugGIsCu4CQHKWzqwYC5d" alt="" width="563"><figcaption></figcaption></figure></div>

Join two list of objects together where the given keys match. If there are several pairs of matches, one pair for each match will be present in the list.

## Structure

### Get

<div align="left"><figure><img src="/files/LATbLGRkfBMfmhxsKYLp" alt="" width="563"><figcaption></figcaption></figure></div>

Retrieves the value located at a specified `path` within a `record`. The `path` is a string that represents keys and indices in a nested structure. Keys are denoted by strings, and indices by numbers. If the `path` is valid and the value exists, it triggers `onValue` with the result. If the `path` is invalid or the value does not exist, it triggers `onError`.

### Set

<div align="left"><figure><img src="/files/LLecGtfxRDqUxvf905Lo" alt="" width="563"><figcaption></figcaption></figure></div>

Updates the value at a given `path` within a `record`. The `path` is a string representing where the value should be set within the nested structure of the record. This function creates a new record with the updated value and outputs it as `record_with_value`. Strings in the `path` indicate keys, while numbers indicate indices.

## Object

### Get Value

<div align="left"><figure><img src="/files/Cr33ciR5r9SOBRxd0H3n" alt="" width="563"><figcaption></figcaption></figure></div>

Gets the `value` stored in `object` on `key`.

### Set Value

<div align="left"><figure><img src="/files/wP3FHuZQvwq8mAJMH4mI" alt="" width="563"><figcaption></figcaption></figure></div>

Sets the `value` on `key` of `object` by returning a new object with the value, available on the `object with value` output.

### Create Empty

<div align="left"><figure><img src="/files/z3eizs7FVmDFYKoDgTEr" alt="" width="175"><figcaption></figcaption></figure></div>

Returns an empty object.

### Merge

<div align="left"><figure><img src="/files/28b1hnRR5WSIAJLR5CuV" alt="" width="563"><figcaption></figcaption></figure></div>

Merge two maps into one, picking the last maps items for duplicate keys. If a key in `second` is set to Null, it will not replace an existing value for that key.

### Contains Key

<div align="left"><figure><img src="/files/oH2BOOF5ObW6AURhg5kE" alt="" width="563"><figcaption></figcaption></figure></div>

Checks if `map` has a key `key`.

### Keys

<div align="left"><figure><img src="/files/HgJQFufwOzU1rdnXud6S" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a list of all the `keys` in `map`.

### Values

<div align="left"><figure><img src="/files/me78O4zFQbs6Qx2HBNPO" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a list of all the `values` in `map`.

### Entries

<div align="left"><figure><img src="/files/SsKsUeITWiykClwlikMx" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a list of all key-values pairs in `map` as a list of lists.

### With Keys

<div align="left"><figure><img src="/files/gxfh3rnVnKxIs1Sxju1O" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a new object with only the fields specified in the `fields` list.

### Map Entries

<div align="left"><figure><img src="/files/M67sYZVIp1UdJqjmQNEp" alt="" width="563"><figcaption></figcaption></figure></div>

Calls the given mapping function instance (`handler`) once for each key value pair in `object` returning a new list with the mapped values (`output list`).

### Remove Null Fields

<div align="left"><figure><img src="/files/MdyM7mjVNmZG9LeKMGHG" alt="" width="563"><figcaption></figcaption></figure></div>

Returns a new object with all null fields removed.

## Iteration

### For Each (Iteration)

<div align="left"><figure><img src="/files/rvXr0cFUOIEqWXirCOeB" alt="" width="563"><figcaption></figcaption></figure></div>

Calls the given function instance (`handler`) once for each item in `items`

### Map (Iteration)

<div align="left"><figure><img src="/files/LfOFo3ogKfbbZ6geRDtz" alt="" width="563"><figcaption></figcaption></figure></div>

Calls the given function instance (`handler`) once for each item in `items` returning a new list with the mapped values (`output_list`). Handle is expected to be a function which takes in at least one input (the item), and returns a single item, the mapped value. It can also take a second input, which is the index of the value, and a third value, an optional context value passed from the outside.

### Zip

<div align="left"><figure><img src="/files/ZnKaAB8o7O2BMRVKKDhH" alt="" width="563"><figcaption></figcaption></figure></div>

Merges two lists using the provided handler function, which should return the merged item.

### Filter (Iteration)

<div align="left"><figure><img src="/files/yHE7bo812G3OQZFe0rjF" alt="" width="563"><figcaption></figcaption></figure></div>

### Reduce

<div align="left"><figure><img src="/files/3wV53rGG16GJ7YL119So" alt="" width="563"><figcaption></figcaption></figure></div>

Reduces the list `item` using the provided reducer function, which is expected to accept 2-4 inputs, the first being the accumulator, and the second the current item in the iteration. A third optional input will contain the current index, while the fourth optional input will contain the context input.

### Find (Iteration)

<div align="left"><figure><img src="/files/3sn7aU26tG08n3HzQ7ka" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the first item for which the provided `predicate` handler returns true.

### Create Iterator

<figure><img src="/files/N75jBEDNMAsAVqaMkIDU" alt=""><figcaption></figcaption></figure>

Creates an iterator from a source list. The iterator items can then be consumed by `Iteration.Next` in a loop. This function is similar to `Std.For` and `Std.Count`, except that it separates the iterator creation and consumption into two distinct functions.

### Get Next

<div align="left"><figure><img src="/files/ZZkNq3JQyiPQ1Muutp3d" alt="" width="171"><figcaption></figcaption></figure></div>

Gets the next item in the iterator in the consumed context.

## Math

### Floor

<div align="left"><figure><img src="/files/b8KetK2bEdBH2OYGC4pR" alt="" width="312"><figcaption></figcaption></figure></div>

Returns the largest integer less than or equal `input`

### Add

<div align="left"><figure><img src="/files/ZYQViAOXVUhlGNxFoItc" alt="" width="329"><figcaption></figcaption></figure></div>

Adds `first` and `second` making the result avilable on the `result` output.

### Sub

<div align="left"><figure><img src="/files/0eGPop51lacKDx7j3a0q" alt="" width="327"><figcaption></figcaption></figure></div>

Subtracts `first` and `second` making the result avilable on the `result` output.

### Mul

<div align="left"><figure><img src="/files/JV1Jh6rxn8xy3j2YACfA" alt="" width="320"><figcaption></figcaption></figure></div>

Multiplies `first` and `second` making the result avilable on the `result` output.

### Div

<div align="left"><figure><img src="/files/XpjLj4IfMZU2n9Vtmod6" alt="" width="323"><figcaption></figcaption></figure></div>

Divides `first` by `second` making the result avilable on the `result` output.

### Less Than

<div align="left"><figure><img src="/files/peJIXcWaK1RPAvpITpEu" alt="" width="313"><figcaption></figcaption></figure></div>

Checks is `left` less than `right`.

### Greater Than

<div align="left"><figure><img src="/files/3pSvFev1YkBv8rruWoBr" alt="" width="310"><figcaption></figcaption></figure></div>

Checks if `left` is greater than `right`

### Less Than or Equal

<div align="left"><figure><img src="/files/3miwXaqOWfOBssg6trTl" alt="" width="310"><figcaption></figcaption></figure></div>

### Greater Than or Equal

<div align="left"><figure><img src="/files/ABiz8jpjlf44MfEr18KJ" alt="" width="309"><figcaption></figcaption></figure></div>

### Abs

<figure><img src="/files/8nwQsne1NIixBhqtCtWb" alt=""><figcaption></figcaption></figure>

Returns the absolute value of `x`.

### Sin

<div align="left"><figure><img src="/files/HG4UuXsCKh0Jv7uslCB1" alt="" width="188"><figcaption></figcaption></figure></div>

Returns the sine of `x` (in radians).

### Cos

<div align="left"><figure><img src="/files/cVflgb1oU5ZojRq6X9Mn" alt="" width="187"><figcaption></figcaption></figure></div>

Returns the cosine of `x` (in radians).

### Tan

<div align="left"><figure><img src="/files/6zTvw8IawRukzRh8pB1g" alt="" width="158"><figcaption></figcaption></figure></div>

Returns the tangent of `x` (in radians).

### Asin

<div align="left"><figure><img src="/files/MTMiIZpt2Z6B1f2y5Eto" alt="" width="160"><figcaption></figcaption></figure></div>

Returns the arcsine of `x` (in radians).

### Acos

<div align="left"><figure><img src="/files/kmAG9AORwGAcjfhSP5lu" alt="" width="166"><figcaption></figcaption></figure></div>

Returns the arccosine of `x` (in radians).

### Atan

<div align="left"><figure><img src="/files/zmhqgYwBEjH8si0dbUPD" alt="" width="158"><figcaption></figcaption></figure></div>

Returns the arctangent of `x` (in radians).

### Exp

<div align="left"><figure><img src="/files/OpnejuBrXvOAowuXOftP" alt="" width="162"><figcaption></figcaption></figure></div>

Returns the natural exponential function of `x`.

### Log

<div align="left"><figure><img src="/files/xKl8FlPGEdyIZws0XW6T" alt="" width="149"><figcaption></figcaption></figure></div>

Returns the natural logarithm (base e) of `x`.

### Log10

<div align="left"><figure><img src="/files/2rZjMAueddlSIh0d3gXB" alt="" width="188"><figcaption></figcaption></figure></div>

Returns the base-10 logarithm of `x`.

### Pow

<div align="left"><figure><img src="/files/EXHRsOUzr6vKkXMoh9pZ" alt="" width="312"><figcaption></figcaption></figure></div>

Returns `x` raised to the power of `y`.

### Square Root

<div align="left"><figure><img src="/files/gMr6YcqB8qdu5MQ6CISa" alt="" width="316"><figcaption></figcaption></figure></div>

Returns the positive square root of `x`.

### Cube Root

<div align="left"><figure><img src="/files/YL4oBS1fZST1z6xtGMYh" alt="" width="145"><figcaption></figcaption></figure></div>

Returns the cube root of `x`.

### Nth Root

<div align="left"><figure><img src="/files/X2yZ8dPAxQKPnzGS4MTR" alt="" width="168"><figcaption></figcaption></figure></div>

Returns the `n`th root of `x`.

### Ceil

<div align="left"><figure><img src="/files/VsPNDlTef2JQVfyzYWyC" alt="" width="299"><figcaption></figcaption></figure></div>

Returns the smallest integer greater than or equal to `x`.

### Modulo

<div align="left"><figure><img src="/files/g7hut6VjlLNthAfG7fQD" alt="" width="323"><figcaption></figcaption></figure></div>

### Round

<div align="left"><figure><img src="/files/1ftlTat3GirV9eoPeaya" alt="" width="563"><figcaption></figcaption></figure></div>

Rounds `x` to the nearest integer.

### Round To

<div align="left"><figure><img src="/files/gswlEmYMtxl52RGRit8g" alt="" width="309"><figcaption></figcaption></figure></div>

Rounds `x` to `decimals` decimal places.

### Min

<div align="left"><figure><img src="/files/R0O2hdXODMnUvwLjsJpj" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the smallest of the input numbers.

### Max

<div align="left"><figure><img src="/files/wQU1Pd8pTRO5odVJVYC7" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the largest of the input numbers.

### Max2

<div align="left"><figure><img src="/files/QlvXyAHwANaRZBUvByc7" alt="" width="300"><figcaption></figcaption></figure></div>

Finds the largest of two numbers

### Min2

<div align="left"><figure><img src="/files/41sjni0BPFKyt2ISCoFR" alt="" width="300"><figcaption></figcaption></figure></div>

Finds the smallest of two numbers

### Random

<div align="left"><figure><img src="/files/bR2H2kM7aLWAtoZ6mOM6" alt="" width="295"><figcaption></figcaption></figure></div>

Creates a random `value` from `from` to `to` each time the function is `execute`d.

### Number from String

<div align="left"><figure><img src="/files/8mJc0FCpffPySj1NSx6R" alt="" width="208"><figcaption></figcaption></figure></div>

Converts `string` to a number. If the string is not convertible to a number, Null is returned.

## LinearAlgebra

### Vector from List

<div align="left"><figure><img src="/files/r9q3xRtNyQRVBmQhTx35" alt="" width="563"><figcaption></figcaption></figure></div>

Converts a list of numbers to a vector of dimensionality equal to the length of the list.

### Dot Product

<div align="left"><figure><img src="/files/qD1GlueaL1qswdb7Ais0" alt="" width="563"><figcaption></figcaption></figure></div>

Calculates to dot product of two vectors.

### L^2-Norm

<figure><img src="/files/OheOM81w0SyQT9wtXLY6" alt=""><figcaption></figcaption></figure>

### K-Means Cluster

<div align="left"><figure><img src="/files/U6m3tgf1ShNtsyPiiHrW" alt="" width="298"><figcaption></figcaption></figure></div>

Calculates the cluster center points of the provided list of vectors using the k-means clustering algorithm.

## Logic

### Equal

<div align="left"><figure><img src="/files/xT5rFgJpZJ5g3HSwB9sX" alt="" width="563"><figcaption></figcaption></figure></div>

Checks if `left` and `right` are equal by performing a deep scan of the objects.

### Not Equal

<div align="left"><figure><img src="/files/ALB8noUOoQkhxGLDeoX5" alt="" width="563"><figcaption></figcaption></figure></div>

Checks if `left` and `right` are not equal by performing a deep scan of the objects.

### Not

<div align="left"><figure><img src="/files/MLwKiU8zmQhJBQxv8hMB" alt="" width="331"><figcaption></figcaption></figure></div>

The logic not operator

### Or

<div align="left"><figure><img src="/files/7TSBJwPbEhUhBKSw3yAD" alt="" width="320"><figcaption></figcaption></figure></div>

The logic or operator

### And

<div align="left"><figure><img src="/files/kNE7QZoMiQYHiTJE3WV7" alt="" width="314"><figcaption></figcaption></figure></div>

The logic and operator

## Scheduling

### Schedule

<div align="left"><figure><img src="/files/26g13g5ZFAW5RarUqd0l" alt="" width="563"><figcaption></figcaption></figure></div>

Schedule can be used to trigger flows based on a timed schedule. It is based on the Cron API, but with support for resolution down to seconds. Note that scheduling is started relative to the current UTC time.

### Schedule from Cron Expression

<div align="left"><figure><img src="/files/zKkPRtTOJzj9F02JY4cQ" alt="" width="563"><figcaption></figcaption></figure></div>

Creates a schedule using a cron expression (second minute hour 'day of month' 'month' 'day of week' year). See <https://en.wikipedia.org/wiki/Cron> for details (note that this page doesn't show with second as the lowest resolution, as we do here.

## Image

### From Buffer (image)

<div align="left"><figure><img src="/files/9PLigd0Pysd4r7drNEs7" alt="" width="563"><figcaption></figcaption></figure></div>

Converts the `buffer` to an `image`

### To Buffer

<div align="left"><figure><img src="/files/O7jDPsqR89pslbvWuNCX" alt="" width="207"><figcaption></figcaption></figure></div>

Converts the `image` to a `buffer`

### Box Filter

<div align="left"><figure><img src="/files/MXb1wL6DYzfuCjmZzvLr" alt="" width="273"><figcaption></figcaption></figure></div>

Applies a 3x3 box filter on the image using the provided `kernel`, which expects a flattened 3x3 list of numbers (9 numbers).

### Blend

<div align="left"><figure><img src="/files/3PPey3fHuEflitiMBsqD" alt="" width="208"><figcaption></figcaption></figure></div>

Blends two images together

### Resize

<div align="left"><figure><img src="/files/HTUSlIzJPkxrwMjfGbiT" alt="" width="232"><figcaption></figcaption></figure></div>

Resizes the `image` to `width` and `height`, making the result available on the `resized_image` output.

### Blur

<div align="left"><figure><img src="/files/3zZqo8293LdD4mGlOutM" alt="" width="194"><figcaption></figcaption></figure></div>

Blurs the `image` by `amount`. NOTE: This function can become slow when using large values for `amount`. This should be fixed in the future.

### Grayscale

<div align="left"><figure><img src="/files/8Xxm1wtgJi2Vhpou3zqy" alt="" width="206"><figcaption></figcaption></figure></div>

Converts `image` to grayscale.

### Brighten

<div align="left"><figure><img src="/files/W3DWYBHEDu0mmNmHtfqJ" alt="" width="202"><figcaption></figcaption></figure></div>

Brightens `image` by `amount`.

### Contrast

<div align="left"><figure><img src="/files/ZgPEKMN7RwJb2nLUOh7w" alt="" width="249"><figcaption></figcaption></figure></div>

Increases the contrast of `image` by `amount`.

### Flip Horizontal

<div align="left"><figure><img src="/files/Fys1VhnlcAlIWKBuAkrD" alt="" width="201"><figcaption></figcaption></figure></div>

Flips `image` horizontally.

### Flip Vertical

<div align="left"><figure><img src="/files/uG6IS3uHNwKL3GHuFzNI" alt="" width="200"><figcaption></figcaption></figure></div>

Flips `image` vertically.

### Rotate 90

<div align="left"><figure><img src="/files/3FEyUxcxwOW3QqwTuRZq" alt="" width="205"><figcaption></figcaption></figure></div>

Rotates `image` by 90 degress clockwise.

### Rotate 180

<div align="left"><figure><img src="/files/7wyMKZoBrnLk8W4Xns45" alt="" width="210"><figcaption></figcaption></figure></div>

Rotates `image` by 180 degress.

### Rotate 270

<figure><img src="/files/9DEfWlZK2XS1t2cdmOzu" alt=""><figcaption></figcaption></figure>

Rotates `image` by 270 degress clockwise.

### Threshold

<div align="left"><figure><img src="/files/pwxgn3BoSEVqvYzGQ9vP" alt="" width="314"><figcaption></figcaption></figure></div>

Threshold `image` by `threshold`.

### Base64 Encode

<div align="left"><figure><img src="/files/fvr1lj9ViIl7g0r1Fkfk" alt="" width="248"><figcaption></figcaption></figure></div>

Base64 encodes `image` into a string.

## Environment

### Get Environment Variable

<div align="left"><figure><img src="/files/M8JdkW38oPMFUJ3EnaXc" alt="" width="312"><figcaption></figcaption></figure></div>

Gets a secret or variable which can be configured in the project settings.

## Buffer

### From String

<figure><img src="/files/ULZaInKccnWKjXXKVO2C" alt=""><figcaption></figcaption></figure>

Converts a string into its corresponding utf8 bytes.

### Reading bytes

The following functions exist for reading bytes from a buffer. Reading data from a buffer moves the cursor forward that amount, so that the next read will read the bytes that come after.

<div align="left"><figure><img src="/files/iVtpnkanwjtekNVejQDN" alt=""><figcaption></figcaption></figure></div>

The following 'read' functions are available:

| Type    | Big Endian (BE) | Little Endian (LE) | Native Endian (NE) |
| ------- | --------------- | ------------------ | ------------------ |
| **i8**  | ReadI8          | —                  | —                  |
| **u16** | ReadU16BE       | ReadU16LE          | ReadU16NE          |
| **i16** | ReadI16BE       | ReadI16LE          | ReadI16NE          |
| **u32** | ReadU32BE       | ReadU32LE          | ReadU32NE          |
| **i32** | ReadI32BE       | ReadI32LE          | ReadI32NE          |
| **u64** | ReadU64BE       | ReadU64LE          | ReadU64NE          |
| **i64** | ReadI64BE       | ReadI64LE          | ReadI64NE          |
| **f32** | ReadF32BE       | ReadF32LE          | ReadF32NE          |
| **f64** | ReadF64BE       | ReadF64LE          | ReadF64NE          |

### Writing bytes

Values can be written to a buffer using the following functions.

<div align="left"><figure><img src="/files/Ic02K6AL6SxEVyrRdiE6" alt=""><figcaption></figcaption></figure></div>

The following 'write' functions are available:

| Type    | Big Endian (BE) | Little Endian (LE) | Native Endian (NE) |
| ------- | --------------- | ------------------ | ------------------ |
| **u8**  | PutU8           | —                  | —                  |
| **i8**  | PutI8           | —                  | —                  |
| **u16** | PutU16BE        | PutU16LE           | PutU16NE           |
| **i16** | PutI16BE        | PutI16LE           | PutI16NE           |
| **u32** | PutU32BE        | PutU32LE           | PutU32NE           |
| **i32** | PutI32BE        | PutI32LE           | PutI32NE           |
| **u64** | PutU64BE        | PutU64LE           | PutU64NE           |
| **i64** | PutI64BE        | PutI64LE           | PutI64NE           |
| **f32** | PutF32BE        | PutF32LE           | PutF32NE           |
| **f64** | PutF64BE        | PutF64LE           | PutF64NE           |

### Decode UTF-8

<div align="left"><figure><img src="/files/JuuspHI2UL6lBjBxR2Qs" alt="" width="303"><figcaption></figcaption></figure></div>

Decodes a buffer as a utf8 string.

### Encode UTF-8

<div align="left"><figure><img src="/files/bY21DQwsL1FlKuKw665p" alt="" width="256"><figcaption></figcaption></figure></div>

Encodes utf8 string to a byte buffer.

### Concatenate

<div align="left"><figure><img src="/files/AQsqZdxKBwNErrhFjtov" alt="" width="263"><figcaption></figcaption></figure></div>

Concatenates two buffers by allocating a new one and copying the contents of `left` and `right`.

### Length

<div align="left"><figure><img src="/files/47KCq6xBm1QpCb9yIUrk" alt="" width="209"><figcaption></figcaption></figure></div>

Returns the number of bytes in the buffer.

### Create Empty

<div align="left"><figure><img src="/files/zI5lthvZrZkqegjqdE2j" alt="" width="234"><figcaption></figcaption></figure></div>

Returns an empty buffer.

### To Byte List

<div align="left"><figure><img src="/files/2Mxz56Pr4jiV24pIeiFO" alt="" width="214"><figcaption></figcaption></figure></div>

Converts a buffer to a list of numbers. Note that a list of numbers takes up significantly more space than a buffer, since all numbers are 64 bits.

## Sets

### Intersection

<div align="left"><figure><img src="/files/zgxmd1E0ZqF0EYAt8XFR" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the intersection of the two input lists, meaning the set of items which are in both lists.

### Union

<div align="left"><figure><img src="/files/vEiIZOIQLk305abh54l2" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the union of the two input lists, meaning the set of items which are in either the `left` or `right` lists.

### Difference

<div align="left"><figure><img src="/files/4ebhG3qRR8AFTOvwgYHQ" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the difference between the two input lists, meanig items which are in `left`, and not in `right`, and vice versa.

## Base64

### Encode

<div align="left"><figure><img src="/files/BjczLjX7l87hDagJNbBx" alt="" width="297"><figcaption></figcaption></figure></div>

Base64-encodes the provided input string or buffer.

### Decode

<div align="left"><figure><img src="/files/ySK19HXQi7YPPhVNs8ic" alt="" width="307"><figcaption></figcaption></figure></div>

Decodes a base64 encoded string back into its original input. If the decoding fails, the `on error` trigger is executed. Use `Base64 Encoded` for a version without triggers.

### Decoded

<div align="left"><figure><img src="/files/a1uHaIp98NM7XVMBuoXe" alt="" width="322"><figcaption></figcaption></figure></div>

A non triggable version of `Base64 Decode`

## Hashing (crypto)

### Argon2

#### HashPassword

<div align="left"><figure><img src="/files/TQwEM1BVMv0pDSA5xfUz" alt="" width="236"><figcaption></figcaption></figure></div>

#### VerifyPassword

<div align="left"><figure><img src="/files/cIU2AorGm3I7PwwBLyl2" alt="" width="272"><figcaption></figcaption></figure></div>

#### HashKey

<div align="left"><figure><img src="/files/Geigfed4ee2syaAwHm9D" alt="" width="264"><figcaption></figcaption></figure></div>

### Sha2

#### Hash

<div align="left"><figure><img src="/files/pIZTlCITeN2KCtnEjg3c" alt="" width="279"><figcaption></figcaption></figure></div>

### Sha3

#### Hash

<div align="left"><figure><img src="/files/UDUj7hpxPxnc9X4ysjn2" alt="" width="299"><figcaption></figcaption></figure></div>

### HMAC

#### Compute

<div align="left"><figure><img src="/files/yDiR31WL2pjE0KIlZMt2" alt="" width="345"><figcaption></figcaption></figure></div>

#### Verify

<div align="left"><figure><img src="/files/Ukq7Fjn5jsXNGRQNjHfI" alt="" width="330"><figcaption></figcaption></figure></div>

## Reflection

### Name

<div align="left"><figure><img src="/files/9KwspXmBmzzERB1VZ47V" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the full name of the given nodes declaration.

### Qualified Name

<div align="left"><figure><img src="/files/6241teNZg7arudKvFW7h" alt="" width="563"><figcaption></figcaption></figure></div>

Returns the fully qualified name of the given nodes declaration, including its namespaces.

## Human (experimental)

### Get User Input

<div align="left"><figure><img src="/files/6xYXoZWxQUZw7cmH9ASO" alt="" width="505"><figcaption></figcaption></figure></div>

Opens a prompt in the editor requesting string data from the user. This is an experimental API.

## PDF

<div align="left"><figure><img src="/files/T3Vam91qkK4BNv3vjxgd" alt=""><figcaption></figcaption></figure></div>

### FromBuffer (pdf)

<div align="left"><figure><img src="/files/3ZxCkFmQsiLJMimhAshj" alt="" width="244"><figcaption></figcaption></figure></div>

Converts the `buffer` to a `PDF`

### GetText

<div align="left"><figure><img src="/files/qiidO9UBnw9MOOi6ztS3" alt="" width="263"><figcaption></figcaption></figure></div>

Extracts all text from a `PDF` document

## Markdown

### Parsed

<div align="left"><figure><img src="/files/87PUM1PlehGBQ2dmBvKv" alt="" width="563"><figcaption></figcaption></figure></div>

Parses the given markdown string.

## Tracing

The tracing module is used to iteract with the "User Trace" panel, which lets you stream information about what is happening in your flows directly to the editor. This is very useful for example when working with agents, which can stream their tokens, information about tool calls and more, to the editor using this API.

<div align="left"><figure><img src="/files/42eZcyQHNaNjhOwgtTYH" alt=""><figcaption></figcaption></figure></div>

### Start Trace

<figure><img src="/files/YUn7cxvTmOcf8kYkJyTp" alt=""><figcaption></figcaption></figure>

Starts a new user defined trace, which will show up in the 'USER TRACE' panel. An optional parent trace can be provided for nested traces.

### New Text Span

<div align="left"><figure><img src="/files/c4va5oO09LsmQEptFOq7" alt="" width="563"><figcaption></figcaption></figure></div>

Adds a new text span to the given trace. Text spans can be further modified using the `AppendTextToSpan` function.

### Append Text to Span

<div align="left"><figure><img src="/files/LJS2PHC0Lzwkq9tt6c8a" alt=""><figcaption></figcaption></figure></div>

Appends the given `text` to the `span`.

### New Block Span

<div align="left"><figure><img src="/files/rjRMppkzO3Vtw3jyHCrh" alt="" width="563"><figcaption></figcaption></figure></div>

Adds a new block span to the given trace. A block span can contain several kinds of content, which can be added using `AppendBlockSpanText`, `AppendBlockSpanDataObject` or `AppendBlockSpanLabeledItem`.

### Append Text to Block Span

<figure><img src="/files/N9q47sMT59gjj8ugJ6SU" alt=""><figcaption></figcaption></figure>

Adds the given `text` to the block span.

### Append Data Object to Block Span

<div align="left"><figure><img src="/files/tNLR8IoqFtmMaZGg3MqB" alt="" width="563"><figcaption></figcaption></figure></div>

Appends an arbitrary object to the block span.

### Append Labeled Item to Block Span

<div align="left"><figure><img src="/files/1NtFBSoFEGhreHUTxNGC" alt="" width="563"><figcaption></figcaption></figure></div>

Appends a labeled item to the block span with the given values.

## Append Image to Block Span

Appends an image to the provided block span.


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.midio.com/midio-docs/built-in-nodes/core-std.md?ask=<question>
```

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

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