RapidIdentity Cloud Product Guide

Field Value Selector

The goal of the Field Value Selector is to identify the value of a particular field in each of the records in the array selected by the Record Selector. The input to the expression is an individual record from the array.

Using the above example responses in which each property has a single scalar (i.e., string, number, or boolean) value:

{"name": "Seattle", "state": "WA"}

The Field Value Selector is going to be just the name of the property within the object (e.g., name or state).

There are also many common variations.

  1. Property is an array:

    {"stooges": ["Larry", "Curly", "Moe"]}
    1. For all values: stooges[*]

    2. For just the first value: stooges[0]

    3. For just the last value: stooges[-1]

  2. Property is an object:

    {"name": {"first": "John", "middle": "Paul", "last": "Jones"}}

    This is a slightly harder case because Studio fields can only be a scalar value or an array of scalar values, so you need to decide on a case-by-case basis the strategy you want to use to represent the property. The most common strategy would be to flatten the structure by defining separate record fields for each of the sub-properties, as follows:

    1. field givenName: name.first

    2. field middleName: name.middle

    3. field surname: name.last

  3. Property is an array of objects (this is common in Google Directory API):

    {
        "phones": [
          {"value": "+18005551212", "type": "work"},
          {"value": "+1800COLLECT", "type": "home"},
        ]
    }

    This is even harder, but there are strategies that can work, such as:

    1. flatten based on some key property

      1. field workPhone: phones[?type == 'work'].value

      2. field homePhone: phones[?type == 'home'].value

    2. flatten and extract arrays of each sub-property in which you are interested

      1. field phoneValues: phones[].value

        1. which gives ["+18005551212", "+1800COLLECT"]

      2. field phoneTypes: phones[].type

        1. which gives ["work", "home"]

    3. extract arrays of combined properties

      1. field phones: phones[].join(':', [type, value])

        1. which gives ["work:+18005551212", "home:+1800COLLECT"]

    4. just pulling in as an array of JSON strings that can be parsed by a value template expression (JavaScript) further down the line

      1. field phones: phones[].to_string(@)

      2. which gives ["{\"value\": \"+18005551212\", \"type\": \"work\"}", "{\"value\": \"+1800COLLECT\", \"type\": \"home\"}"]