Skip to main content
When you map what an application receives at sign-on (the Subject (NameID) for a SAML app, or the subject and claims for an OIDC app), each value is an IQL expression. IQL lets you pull from a user’s profile and reshape the value before it is sent.
IQL (Iru Query Language) is Iru’s expression language for mapping, used in several places:
  • The attributes and claims an application receives at sign-on.
  • The fields a connected source maps into your directory (see Attribute mapping).
  • Auto Group rules and list filters.
The same syntax works everywhere IQL appears.IQL is built on CEL (Common Expression Language), the open expression-language standard, so any expression that is valid in CEL is valid in IQL.
As you type, the mapping editor suggests the available fields, functions, and operators, and shows a live preview of the result. An expression must type-check in the editor and again when you save, so mistakes surface before they ever reach a sign-on or a sync.

Referencing your data

What you reference depends on where the expression runs:
  • Application mapping starts from the user object, whose fields are your directory’s profile attributes:
    The defaults reflect this: an OIDC app’s subject defaults to user.id, and a SAML app’s Subject defaults to user.username.
  • Directory Sync mapping references the source’s field names directly, as they come from the connected system:
Field names are case-sensitive. Reach into nested values with a dot (user.profile.team), and into a list or map with [...] (covered below).

Building blocks

Literals

Strings support the usual escapes, such as \n, \t, \\, \", and \uXXXX.

Operators

Precedence

From tightest-binding to loosest. When in doubt, add parentheses.

String functions

String operations are written as methods on a value, in the form value.method(...):

Conditionals and defaults

The conditional operator is the simplest way to supply a fallback when a value might be blank:
For richer null handling, IQL also has optional (null-safe) helpers, below.

Optional values

Optional helpers let you work with values that might be missing without causing an error. An optional either holds a value or is empty.
ofNonZeroValue treats these as empty: an empty string "", 0, false, an empty list [], an empty map {}, and null.

Comments and whitespace

Whitespace is not significant, and // starts a comment that runs to the end of the line:

Examples

Use the preview in the mapping editor to confirm an expression produces what you expect before publishing; it renders the exact value Iru will send or store.

Where to go next

Application mapping

Map IQL values into the assertion or token an application receives.

Attribute mapping

Use the same IQL to map a connected source into your directory.

Auto Groups

Drive group membership from IQL rules over profile attributes.

Profile attributes

The user fields your expressions draw from.