> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Patterns

> Overview of all pattern types in Alumio and when to use each.

Patterns are dot-notated paths used throughout Alumio to navigate and select data within an entity. Several features use pattern fields, but their behavior differs per context.

## Pattern syntax

| Syntax | Meaning |
| - | - |
| `product.name` | Access the `name` key nested under `product` |
| `products.0` | Access the first element of the `products` array |
| `products.*` | Match all elements of the `products` array |
| `products.*.name` | Access `name` for every element in `products` |

## Pattern types by feature

### Pattern accessor

Accesses one or more values from entity data. Use `*` to match all array items.

Example: `products.*.sku` returns the `sku` of every product.

[View documentation](/references/accessor/pattern)

***

### Copy / Move using a pattern

Copies or moves data from one location to another. Each `*` in the source pattern becomes a numbered capture group (`$1`, `$2`, ...) that can be referenced in the replacement.

Example:

* **Pattern**: `products.*.name`
* **Replacement**: `product_names.$1`

[View documentation for Copy](/references/transformer/pattern-copy) | [View documentation for Move](/references/transformer/pattern-move)

***

### Get branches from a pattern

Splits one entity into multiple branches based on an array in the data. The pattern **must include `*`** — each element matching `*` becomes its own branch.

Example: `products.*` creates one branch per product.

[View documentation](/references/transformer-step/brancher)

***

### Pattern to items (stream deserializers)

Points to the array within the data that contains the items to process. This field does **not** require `*` — it points to the array itself, and the system automatically iterates over all elements.

Example: `data.products` reads items from `{"data": {"products": [...]}}`

Used in: [JSON](/references/stream-deserializer/json), [XML](/references/stream-deserializer/xml), [YAML](/references/stream-deserializer/yaml), [Form URL encoded](/references/stream-deserializer/form-urlencoded)

***

## Key difference: `*` required vs. not required

| Feature | Requires `*`? | Reason |
| - | :-: | - |
| Pattern accessor | Optional | `*` matches all items; without it, only a single path is accessed |
| Copy / Move using a pattern | Optional | `*` enables capture groups in the replacement |
| Get branches from a pattern | **Yes** | The `*` indicates which array level to split on |
| Pattern to items (deserializer) | **No** | Points to the array; iteration is implicit |

## Placeholders

Placeholders (`&{...}`) are a separate feature that inserts dynamic values from entity data into strings. They are different from patterns and work across most text fields.

Example: `&{product.name}` is replaced by the actual product name at runtime.

[View placeholder documentation](/documentation/placeholders-and-patterns/placeholders)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.