core2-jvm (latest)
core2-jvm (latest)core-jvm
  • Home
  • Features
  • Spec
  • Guides
  • Sandbox
  • Step Studio
  • Step
    • Action
    • External
    • Help
    • Link Handler
    • Navigation
    • Persist Async
    • Polling
    • Refresh On Change
    • Schema On Change
    • Step Error
    • Suggestions
    • Summary
    • Toolbar
    • Upload
    • Validate Async
    • Schema
    • All Of Schema
    • Array Schema
    • Blob Schema
    • Boolean Schema
    • Const Schema
    • Integer Schema
    • Number Schema
    • Object Schema
    • One Of Schema
    • String Schema
    • Layout
    • Alert Layout
    • Box Layout
    • Button Layout
    • Columns Layout
    • Decision Layout
    • Divider Layout
    • Form Layout
    • Heading Layout
    • Image Layout
    • Instructions Layout
    • List Layout
    • Loading Indicator Layout
    • Markdown Layout
    • Media Layout
    • Modal Layout
    • Paragraph Layout
    • Progress Layout
    • Review Layout
    • Search Layout
    • Section Layout
    • Status List Layout
    • Tabs Layout
    • Upsell Layout
    • Behavior
    • Action Behavior
    • Copy Behavior
    • Dismiss Behavior
    • Link Behavior
    • Modal Behavior
    • Refresh Behavior
    • Subflow Behavior
    • Subflow
    • Dynamic Launch Config
    • Launch Config
    • Modal Presentation
    • Native Launch Config
    • Presentation
    • Push Presentation
    • Action Response Body
    • Error Response Body
    • Flow Response
    • Modal Response Body
    • No Op Response Body
    • Search Initial Layout Config
    • Search Initial Results Config
    • Search Initial State
    • Search Layout Response Body
    • Search Response
    • Search Response Body
    • Search Result
    • Search Results Response Body
    • Subflow Response Body
    • Additional Info
    • Align
    • Autocapitalization Type
    • Autocomplete Token
    • Context
    • Icon
    • Image
    • Inline Alert
    • Media
    • Native Capabilities
    • Request
    • Size
    • Supporting Values
    • Control
    • Tag

Array Schema

Android - 8.25.0 iOS - 11539 Web - 2.5.0

Represents an array of data in the submission.

Arrays are either a list or a tuple:

  • A list is a set of fields which can be repeated a number of times, with each set being an element in the array.
  • A tuple is a fixed set of fields, where each field corresponds to an element in the array.
val repeatableStepExample = Step.build {
    id = "Repeatable"
    title = ""
    schemas {
        obj {
            id = "#schema"
            properties {
                list("residency") {
                    title = "Tax residency"
                    addItemTitle = "Add a tax residency"
                    editItemTitle = "Edit a tax residency"
                    items = OneOfSchema.build {
                        schemas {
                            obj {
                                title = "United Kingdom"
                                summary = Summary.Provider(providesMedia = true)
                                media = Media.Avatar.build {
                                    content { uri { uri = "urn:wise:countries:gb:image" } }
                                }
                                properties {
                                    const("country") {
                                        title = "United Kingdom"
                                        value("UK")
                                        summary = Summary.Provider(providesTitle = true)
                                    }
                                }
                            }
                            obj {
                                title = "Spain"
                                summary = Summary.Provider(providesMedia = true)
                                media = Media.Avatar.build {
                                    content { uri { uri = "urn:wise:countries:es:image" } }
                                }
                                properties {
                                    const("country") {
                                        title = "Spain"
                                        value("ES")
                                        summary = Summary.Provider(providesTitle = true)
                                    }
                                    string("taxNumber") {
                                        title = "NIE Number"
                                        summary = Summary.Provider(providesDescription = true)
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    layout {
        form {
            schemaId = "#schema"
        }
    }
    model = encodeToJsonElement(
        mapOf(
            "residency" to listOf(
                mapOf("country" to "UK"),
                mapOf(
                    "country" to "ES",
                    "taxNumber" to "12345678"
                )
            )
        )
    )
}

Subtypes

List

A variable length array where each item matches the items JSON schema. This can be used, for example, to create a repeating form section, or multi-file upload.

If no items are entered, the value for submission is an empty array.

Properties

PropertyTypeRequiredDescription
$idStringNoA unique id which can be used to refer to the schema.
addItemTitleStringYesThe title for the add a new item, and the title for the screen to enter the item info.

additionalText

String

No

Additional information to be displayed to the user.

Android - Unsupported iOS - Unsupported Web - Unsupported

alertAlertLayoutNoConfigure an alert which will be displayed above the UI for this schema. This can be used to provide warnings or additional information to the user, but shouldn't be used for validation. For client-side validation please see the validation available on each schema type, or see Validate Async and Action for server-side validation.
analyticsIdStringNoAn internal id which is attached to analytics events relating to the schema. It allows you to override $id during event emission, it is not user-facing and does not have to be unique within the step.
controlStringNoAn identifier which can be used to request the client use a particular UI control to represent this schema.
descriptionStringNoA user-facing description for the schema.
disabledBooleanNoIf true, the UI for this schema will not accept input, but the corresponding data will still be submitted. Defaults to false.
editItemTitleStringYesThe title for the screen to edit the item info.
hiddenBooleanNoIf true, no UI will be shown to the user for this schema, but the corresponding data will still be submitted. Defaults to false.
iconIconNoAn icon which the client can use to represent this entity.
imageImageNoAn image which the client can use to represent this entity.

inlineAlert

InlineAlert

No

An alert that will be displayed inline with the item.

Android - Unsupported iOS - Unsupported Web - Unsupported

itemsSchemaYesA schema which describes the structure of each array element.
keywordsArray<String>NoA list of keywords that can be used when searching or filtering items in a One Of Schema. Only applies when this schema is child schema in a One Of Schema.
maxItemsIntNoThe maximum number of items in the array.
mediaMediaNoA media object which the client can use to represent this entity.
minItemsIntNoThe minimum number of items in the array.
persistAsyncPersistAsyncNo
placeholderStringNoA user-facing placeholder value to use for the field. This can be used to provide an example of the expected input.
summarySummary.SummariserNoConfigure how this schema will be summarised when included in an Array Schema.

supportingValues

SupportingValues

No

An object containing two strings representing two user-facing values. One being clearly more important than the other.

Android - Unsupported iOS - Unsupported Web - Unsupported

tags

Array<String>

No

An optional list of identifiers used to configure renderers.

Android - 8.131.0 iOS - 8.125 Web - 4.33.0

titleStringNoA user-facing title for the schema.
typeStringYesIt must be array.
validationAsyncValidateAsyncNo
validationMessagesMap<String, String>NoAn object where each property/value pair is the name of a validation property (e.g. maximum) to the user-facing error message to display if the validation fails.

Tuple

A fixed-length array where each schema represents the data at the corresponding element in the array.

As ordering needs to remain consistent, the submission value will include null values where applicable.

The minItems and maxItems validation has no purpose for a tuple, and should be ignored if provided.

Properties

PropertyTypeRequiredDescription
$idStringNoA unique id which can be used to refer to the schema.

additionalText

String

No

Additional information to be displayed to the user.

Android - Unsupported iOS - Unsupported Web - Unsupported

alertAlertLayoutNoConfigure an alert which will be displayed above the UI for this schema. This can be used to provide warnings or additional information to the user, but shouldn't be used for validation. For client-side validation please see the validation available on each schema type, or see Validate Async and Action for server-side validation.
analyticsIdStringNoAn internal id which is attached to analytics events relating to the schema. It allows you to override $id during event emission, it is not user-facing and does not have to be unique within the step.
controlStringNoAn identifier which can be used to request the client use a particular UI control to represent this schema.
descriptionStringNoA user-facing description for the schema.
disabledBooleanNoIf true, the UI for this schema will not accept input, but the corresponding data will still be submitted. Defaults to false.
hiddenBooleanNoIf true, no UI will be shown to the user for this schema, but the corresponding data will still be submitted. Defaults to false.
iconIconNoAn icon which the client can use to represent this entity.
imageImageNoAn image which the client can use to represent this entity.

inlineAlert

InlineAlert

No

An alert that will be displayed inline with the item.

Android - Unsupported iOS - Unsupported Web - Unsupported

itemsArray<Schema>YesAn array of schemas which define each element that appears in this array.
keywordsArray<String>NoA list of keywords that can be used when searching or filtering items in a One Of Schema. Only applies when this schema is child schema in a One Of Schema.
mediaMediaNoA media object which the client can use to represent this entity.
persistAsyncPersistAsyncNo
summarySummary.ProviderNoConfigure how this schema will be summarised when included in an Array Schema.

supportingValues

SupportingValues

No

An object containing two strings representing two user-facing values. One being clearly more important than the other.

Android - Unsupported iOS - Unsupported Web - Unsupported

tags

Array<String>

No

An optional list of identifiers used to configure renderers.

Android - 8.131.0 iOS - 8.125 Web - 4.33.0

titleStringNoA user-facing title for the schema.
typeStringYesIt must be array.
validationAsyncValidateAsyncNo

Controls

inline

Android - 9.15.0 iOS - 9.16 Web - 5.8.0

Prefer inlined multi-selectable items instead of a drop-down.

inline-checkbox-group

Android - 9.24.0 iOS - 9.34 Web - 5.14.0

Prefer checkbox group for multi-selectable items.

obj {
    id = "#schema"
    properties {
        list("currencies") {
            title = "Select your preferred currencies"
            addItemTitle = ""
            editItemTitle = ""
            control = Control.Schema.Array.INLINE_CHECKBOX_GROUP
            items = OneOfSchema.build {
                schemas {
                    const {
                        title = "USD"
                        description = "United States dollar"
                        media = Media.Avatar.build {
                            content { uri { uri = "urn:wise:currencies:usd:image" } }
                        }
                        value("USD")
                    }
                    const {
                        title = "GBP"
                        description = "British pound"
                        media = Media.Avatar.build {
                            content { uri { uri = "urn:wise:currencies:gbp:image" } }
                        }
                        value("GBP")
                    }
                    const {
                        title = "EUR"
                        description = "Euro"
                        media = Media.Avatar.build {
                            content { uri { uri = "urn:wise:currencies:eur:image" } }
                        }
                        value("EUR")
                    }
                }
            }
        }
    }
}