---
title: "FieldBlueprint"
url: "https://developers.zinnia.com/apis/market-connect-order-entry/versions/50f981c3-db50-4358-884f-31eb427255ec/schemas/FieldBlueprint"
---

> Full API specification: https://developers.zinnia.com/apis/market-connect-order-entry/versions/50f981c3-db50-4358-884f-31eb427255ec.md

# FieldBlueprint

## OpenAPI definition

```yaml
openapi: 3.0.1
info:
  title: Market Connect Order Entry API
  version: 1.0.3
servers:
  - url: https://dev.api.zinnia.io
  - url: https://qa.api.zinnia.io
  - url: https://uat.api.zinnia.io
components:
  schemas:
    LocalizedText:
      type: object
      properties:
        en:
          type: string
          description: English text content
          nullable: true
      additionalProperties: false
    RenderCondition:
      required:
        - type
        - targetNodeId
      type: object
      properties:
        type:
          enum:
            - equality
            - range
            - presence
          type: string
          description: Kind of comparison performed by the condition.
          example: equality
        isEqual:
          type: boolean
          description: When true the condition passes if the target value equals 'value';
            when false the condition passes if it differs.
          example: true
        value:
          type: string
          description: The value to compare against the resolved target answer.
          example: NY
        targetNodeId:
          type: string
          description: The answer node identifier whose value is evaluated by this
            condition.
          example: SolicitationStateCode
      description: Single condition controlling whether a field/section is rendered.
    LayoutSettings:
      type: object
      properties:
        size:
          type: integer
          description: The size of the field in a 12-column HTML grid that determines its
            rendered width (12 = full-width, 6 = half-width, 4 = one-third, 3 =
            quarter-width). Field column widths sum to 12 per row - e.g., two
            fields of 6 sit side-by-side, three fields of 4 share a row, four
            fields of 3 share a row.
          format: int32
      additionalProperties: false
    SelectOption:
      required:
        - text
        - value
      type: object
      properties:
        text:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The display text representing the user's selected answer. For
            example, a country dropdown may display 'United States of America'
            to the user, while the blueprint stores the value as 'USA'
        value:
          minLength: 1
          type: string
          description: The value representing the user's selected answer. For example, a
            country dropdown may display 'United States of America' to the user,
            while the blueprint stores the value as 'USA'
      additionalProperties: false
    SelectOptionsApplicationContext:
      type: object
      properties:
        tag:
          type: string
          description: Tag used to associate dataset values with a field
          nullable: true
        labelKey:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: Localized label key for dataset items
        valuePath:
          type: string
          description: Dataset value path
          nullable: true
      additionalProperties: false
      example:
        tag: "507602"
        labelKey:
          en: Name
        valuePath: Value
    VisibilitySettings:
      type: object
      properties:
        booleanOperator:
          type: string
          description: The boolean operator for combining conditions
          nullable: true
        conditions:
          type: array
          items:
            $ref: "#/components/schemas/VisibilityCondition"
          description: Array of visibility conditions with varying structures per
            condition type
          nullable: true
      additionalProperties: false
      example:
        booleanOperator: AND
        conditions:
          - type: equality
            isEqual: true
            value: Yes
            targetNodeId: Transaction.SolicitationState
    FieldValidationRule:
      required:
        - conditions
        - message
      type: object
      properties:
        message:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: Localized message displayed to the user when validation fails
        conditions:
          allOf:
            - $ref: "#/components/schemas/ValidationConditionGroup"
          description: The validation conditions wrapper containing an optional
            booleanOperator and an array of individual conditions
          example:
            booleanOperator: and
            conditions:
              - type: numberComparisonCondition
                targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
                value: 9999999999
                operator: lessThanOrEqual
              - type: numberComparisonCondition
                targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
                value: 1
                operator: greaterThanOrEqual
      additionalProperties: false
      example:
        message:
          en: Please enter valid email address
        conditions:
          conditions:
            - type: matchesRegexCondition
              targetNodeId: Transaction.Beneficiaries[0].EmailAddresses["Home"].Address
              regex: ^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    VisibilityCondition:
      required:
        - type
        - targetNodeId
      type: object
      properties:
        type:
          enum:
            - equality
            - range
            - presence
          type: string
          description: Kind of comparison performed by the condition.
          example: equality
        isEqual:
          type: boolean
          description: When true the condition passes if the target value equals 'value';
            when false the condition passes if it differs.
          example: true
        value:
          type: string
          description: The value to compare against the resolved target answer.
          example: NY
        targetNodeId:
          type: string
          description: The answer node identifier whose value is evaluated by this
            condition.
          example: SolicitationStateCode
      description: Single condition controlling whether a field/section is visible at
        runtime.
    ValidationConditionGroup:
      type: object
      properties:
        booleanOperator:
          type: string
          description: The boolean operator used to combine multiple conditions (e.g.,
            "and"). Omitted when there is only one condition.
          nullable: true
        conditions:
          type: array
          items:
            $ref: "#/components/schemas/ValidationCondition"
          description: Array of validation conditions with varying structures per
            condition type
          nullable: true
      additionalProperties: false
      example:
        booleanOperator: and
        conditions:
          - type: numberComparisonCondition
            targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
            value: 9999999999
            operator: lessThanOrEqual
          - type: numberComparisonCondition
            targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
            value: 1
            operator: greaterThanOrEqual
    ValidationCondition:
      required:
        - type
        - targetNodeId
      type: object
      properties:
        type:
          enum:
            - matchesRegexCondition
            - numberComparisonCondition
            - characterCountInBetween
          type: string
          description: The kind of validation this condition performs.
          example: matchesRegexCondition
        targetNodeId:
          type: string
          description: The answer node identifier this condition evaluates.
          example: Transaction.Beneficiaries[0].EmailAddresses["Home"].Address
        regex:
          type: string
          description: Regex pattern. Only used when `type` is `matchesRegexCondition`.
          nullable: true
          example: ^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
        operator:
          enum:
            - lessThan
            - lessThanOrEqual
            - greaterThan
            - greaterThanOrEqual
            - equal
            - notEqual
          type: string
          description: Comparison operator. Only used when `type` is
            `numberComparisonCondition`.
          nullable: true
          example: lessThanOrEqual
        value:
          anyOf:
            - type: number
              example: 9999999999
            - type: integer
              example: 1
            - type: object
              properties:
                minLength:
                  type: integer
                  example: 0
                maxLength:
                  type: integer
                  example: 128
          description: Condition-specific value. Number for `numberComparisonCondition`;
            object `{ minLength, maxLength }` for `characterCountInBetween`.
            Absent for `matchesRegexCondition`.
      description: "Single validation condition inside a FieldValidationRule. The
        shape varies by `type`: `matchesRegexCondition` uses `regex`;
        `numberComparisonCondition` uses `value` + `operator`;
        `characterCountInBetween` uses `value: { minLength, maxLength }`."
    FieldBlueprint:
      required:
        - fieldType
        - id
        - partName
        - text
        - title
      type: object
      properties:
        fieldType:
          enum:
            - money
            - date
            - information
            - radio
            - input
            - email
            - dropdown
            - phone
            - checkboxgroup
            - number
            - checkbox
          type: string
          description: |-
            The type of field displayed for collecting response values:
            money - Currency input field
            date - Date selection input field
            information - Read-only informational text display field
            radio - Single-selection radio button field
            input - Free-form text input field
            email - Email address input field
            dropdown - Selection field with predefined options
            phone - Phone number input field
            checkboxgroup - Checkbox group field for multiple selections
            number - Number input field for numeric values
            checkbox - Checkbox field for single selection (value is string)
        text:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The text associated with a field title, such as descriptions or
            related notes. Supports localization through language codes (e.g.,
            en, fr)
        title:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The field title in multiple languages. Supports localization
            through language codes (e.g., en, fr)
        answerNodeId:
          type: string
          description: A unique identifier used to store and infer a field's answer, and
            to build validation and visibility conditions across the order entry
            blueprint
          nullable: true
        renderOn:
          type: array
          items:
            $ref: "#/components/schemas/RenderCondition"
          description: An array of conditions that determine when a field is rendered
          nullable: true
        platforms:
          type: array
          items:
            type: string
          description: An array of platforms where this field is available (e.g., D2C-only
            versus advisor-driven experiences)
          nullable: true
        copyable:
          type: string
          description: A comma-separated list of roles (e.g., annuitant, insured, owner,
            payor) that are allowed to copy this field.
          nullable: true
        triggerStepNavigation:
          type: boolean
          description: Indicates whether the field triggers step navigation
        layout:
          allOf:
            - $ref: "#/components/schemas/LayoutSettings"
          description: Layout options for the field. Used to define the field's rendered
            width in the 12-column grid.
        displayInCardPreview:
          type: boolean
          description: Indicates whether this field should be displayed in card preview mode
        applicationModes:
          type: array
          items:
            type: string
          description: Array of application modes where this field is available. Helper
            for filtering what is shown in different modes or channels
          nullable: true
        placeholder:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: List of localized default text values for the field. When rendered,
            the appropriate localized text is displayed as the field's initial
            answer until modified.
        id:
          minLength: 1
          type: string
          description: The unique identifier for the field
        partName:
          minLength: 1
          type: string
          description: An identifier (partName) for the field.
        validateAs:
          type: string
          description: Validation type applied to fields such as phone numbers, where the
            value must contain digits only. These validations exist and are
            managed through Zinnia UI
          nullable: true
        selectOptions:
          type: array
          items:
            $ref: "#/components/schemas/SelectOption"
          description: Array of options (answers) that can be selected for dropdown,
            radio, checkbox, or checkboxgroup fields
          nullable: true
        selectOptionsApplicationContext:
          allOf:
            - $ref: "#/components/schemas/SelectOptionsApplicationContext"
          description: Application context for select options sourced from subscriber
            dataset
          example:
            tag: "507602"
            labelKey:
              en: Name
            valuePath: Value
        visible:
          allOf:
            - $ref: "#/components/schemas/VisibilitySettings"
          description: Visibility settings containing a boolean operator and an array of
            conditions that determine when the field is visible.
          example:
            booleanOperator: AND
            conditions:
              - type: equality
                isEqual: true
                value: Yes
                targetNodeId: Transaction.SolicitationState
        valid:
          type: array
          items:
            $ref: "#/components/schemas/FieldValidationRule"
          description: An array of validation rules applied to the field (e.g., regex,
            number range, character count)
          nullable: true
          example:
            - message:
                en: Please enter valid email address
              conditions:
                conditions:
                  - type: matchesRegexCondition
                    targetNodeId: Transaction.Beneficiaries[0].EmailAddresses["Home"].Address
                    regex: ^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
            - message:
                en: Please enter value greater than or equal to 1 and less than or equal to
                  9999999999
              conditions:
                booleanOperator: and
                conditions:
                  - type: numberComparisonCondition
                    targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
                    value: 9999999999
                    operator: lessThanOrEqual
                  - type: numberComparisonCondition
                    targetNodeId: Transaction.Payments[0].MonetaryAmounts["PaymentAmount"].CurrencyAmount
                    value: 1
                    operator: greaterThanOrEqual
            - message:
                en: Please enter no more than 128 characters
              conditions:
                conditions:
                  - type: characterCountInBetween
                    targetNodeId: PhysicalAddress.Line1
                    value:
                      minLength: 0
                      maxLength: 128
        optional:
          type: boolean
          description: Indicates if this field is optional (not required)
        disabled:
          type: boolean
          description: "Indicates whether the field is rendered as disabled (read-only) in
            the form. Emitted when the upstream control carries ReadOnly: 1 /
            ReadOnly: true. Omitted when the field is not disabled."
          nullable: true
          example: true
        hidden:
          type: boolean
          description: Indicates the field is not displayed in the UI but is still present
            in the blueprint and data. Emitted as true when upstream
            BaseControlType is 15 (Hidden). Omitted for all other field types.
          nullable: true
      additionalProperties: false
```
