# Tenzir Node v5.26.0

This release adds link-based HTTP pagination for the from\_http and http operators and introduces optional field parameters and secret-typed parameters for user-defined operators. It also performs recursive deep merging in the merge() function and improves write\_lines performance.

## 🚀 Features

### Optional field parameters for user-defined operators

Feb 12, 2026 · [@mavam](https://github.com/mavam), [@claude](https://github.com/claude) · [#5753](https://github.com/tenzir/tenzir/pull/5753)

User-defined operators in packages can now declare optional field-type parameters with `null` as the default value. This allows operators to accept field selectors that are not required to be provided.

When a field parameter is declared with `type: field` and `default: null`, you can omit the argument when calling the operator, and the parameter will receive a `null` value instead. You can then check whether a field was provided by comparing the parameter to `null` within the operator definition.

Example:

In your package’s operator definition, declare an optional field parameter:

```yaml
args:
  named:
    - name: selector
      type: field
      default: null
```

In the operator implementation, check if the field was provided:

```tql
set result = if $selector != null then "field provided" else "field omitted"
```

When calling the operator, the field argument becomes optional:

```tql
my_operator                    # field is null
my_operator selector=x.y       # field is x.y
```

Only `null` is allowed as the default value for field parameters. Non-null defaults are rejected with an error during package loading.

### Link header pagination for HTTP operators

Feb 11, 2026 · [@mavam](https://github.com/mavam), [@claude](https://github.com/claude)

The `paginate` parameter for the `from_http` and `http` operators now supports link-based pagination via the `Link` HTTP header.

Previously, pagination was only available through a lambda function that extracted the next URL from response data. Now you can use `paginate="link"` to automatically follow pagination links specified in the response’s `Link` header, following RFC 8288. This is useful for APIs that use HTTP header-based pagination instead of embedding next URLs in the response body.

The operator parses the `Link` header and follows the `rel=next` relation to automatically fetch the next page of results.

Example:

```plaintext
from_http "https://api.example.com/data", paginate="link"
```

If an invalid pagination mode is provided (neither a lambda nor `"link"`), the operator now reports a clear error message.

## 🐞 Bug Fixes

### Improve write\_lines operator performance

Feb 12, 2026 · [@IyeOnline](https://github.com/IyeOnline)

We have significantly improved the performance of the `write_lines` operator.

### Secret type support for user-defined operator parameters

Feb 12, 2026 · [@mavam](https://github.com/mavam), [@claude](https://github.com/claude) · [#5752](https://github.com/tenzir/tenzir/pull/5752)

User-defined operators in packages can now declare parameters with the `secret` type to ensure that secret values are properly handled as secret expressions:

```plaintext
args:
  positional:
    - name: api_key
      type: secret
      description: "API key to use for authentication"
```

### merge() function recursive deep merge for nested records

Feb 5, 2026 · [@mavam](https://github.com/mavam), [@claude](https://github.com/claude) · [#5728](https://github.com/tenzir/tenzir/pull/5728)

The `merge()` function now performs a recursive deep merge when merging two records. Previously, nested fields were dropped when merging, so `merge({hw: {sn: "XYZ123"}}, {hw: {model: "foobar"}})` would incorrectly produce `{hw: {model: "foobar"}}` instead of recursively merging the nested fields. The function now correctly produces `{hw: {sn: "XYZ123", model: "foobar"}}` by materializing both input records and performing a deep merge on them.

[ Download on GitHub ](https://github.com/tenzir/tenzir/releases/tag/v5.26.0)

[Get the release artifacts and source code.](https://github.com/tenzir/tenzir/releases/tag/v5.26.0)