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

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

# Blueprint

## 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:
    SectionBlueprint:
      required:
        - id
        - partName
        - title
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The unique identifier for the section
        sectionGroupKey:
          type: string
          description: A key used to group related sections within the blueprint
          nullable: true
        partName:
          minLength: 1
          type: string
          description: An identifier (partName) for the section
        title:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The section title in multiple languages. Supports localization
            through language codes (e.g., en, fr)
        modules:
          type: array
          items:
            type: string
          description: An array of module names associated with this section
          nullable: true
        isCustom:
          type: boolean
          description: Indicates whether this section is custom
        subsections:
          type: array
          items:
            $ref: "#/components/schemas/SubsectionBlueprint"
          description: Array of subsections within this section
          nullable: true
        copyable:
          type: string
          description: Role identifier controlling copy behavior. Use 'none' to disable
            copying, or a role name (e.g., 'owner', 'annuitant', 'insured',
            'payor'). Multiple roles may be comma-separated.
          nullable: true
        renderOn:
          type: array
          items:
            type: string
          description: An array of conditions that determine when a section is rendered
          nullable: true
        pdfDocuments:
          type: array
          items:
            type: string
          description: An array of PDF document identifiers where this section appears
          nullable: true
        platforms:
          type: array
          items:
            type: string
          description: An array of platforms where this section is available (e.g.,
            D2C-only versus advisor-driven experiences)
          nullable: true
        visible:
          allOf:
            - $ref: "#/components/schemas/VisibilitySettings"
          description: 'Visibility conditions for the section. When present, the section
            is only visible when all conditions are met. Example: {
            "booleanOperator": "AND", "conditions": [ { "type": "equality",
            "isEqual": true, "value": "NY", "targetNodeId":
            "SolicitationStateCode" } ] }'
          example:
            booleanOperator: AND
            conditions:
              - type: equality
                isEqual: true
                value: Yes
                targetNodeId: Transaction.SolicitationState
        repeatable:
          allOf:
            - $ref: "#/components/schemas/RepeatableBlueprint"
          description: Repeat-instance metadata when the wizard section declares IsRepeated.
      additionalProperties: false
    SectionGroupBlueprint:
      required:
        - id
        - title
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The unique identifier for the section group
        title:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The section group title in multiple languages. Supports
            localization through language codes (e.g., en, fr)
        partName:
          type: string
          description: An identifier (partName) for the section group
          nullable: true
      additionalProperties: false
    LocalizedText:
      type: object
      properties:
        en:
          type: string
          description: English text content
          nullable: true
      additionalProperties: false
    SubsectionBlueprint:
      required:
        - id
        - partName
        - title
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The unique identifier for the subsection
        partName:
          minLength: 1
          type: string
          description: The part name for the subsection
        text:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: Text content for the subsection
        title:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The title of the subsection
        isCustom:
          type: boolean
          description: Indicates if this is a custom subsection
        fieldGroups:
          type: array
          items:
            $ref: "#/components/schemas/FieldGroupBlueprint"
          description: Array of field groups within this subsection
          nullable: true
        subsections:
          type: array
          items:
            $ref: "#/components/schemas/SubsectionBlueprint"
          description: Array of nested subsections within this subsection
          nullable: true
        showInNavigation:
          type: boolean
          description: Indicates if this subsection should be shown in navigation
        copyable:
          type: string
          description: Role identifier controlling copy behavior. Use 'none' to disable
            copying, or a role name (e.g., 'owner', 'annuitant', 'insured',
            'payor'). Multiple roles may be comma-separated.
          nullable: true
        visible:
          allOf:
            - $ref: "#/components/schemas/VisibilitySettings"
          description: 'Visibility conditions for the subsection. When present, the
            subsection is only visible when all conditions are met. Example: {
            "booleanOperator": "AND", "conditions": [ { "type": "equality",
            "isEqual": true, "value": "NY", "targetNodeId":
            "SolicitationStateCode" } ] }'
          example:
            booleanOperator: AND
            conditions:
              - type: equality
                isEqual: true
                value: Yes
                targetNodeId: Transaction.SolicitationState
        repeatable:
          allOf:
            - $ref: "#/components/schemas/RepeatableBlueprint"
          description: Repeat-instance metadata when the wizard subsection or custom
            control declares IsRepeated.
      additionalProperties: false
    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
    RepeatableBlueprint:
      type: object
      properties:
        repeatableAnswerNodeId:
          type: string
          description: Blueprint id this repeat block is bound to (matches
            SubsectionBlueprint.id or FieldGroupBlueprint.id).
          nullable: true
        addButtonText:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: Localized label for the control that adds another row.
        removeButtonText:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: Localized label for removing a row.
        minRepeatable:
          type: integer
          description: Minimum number of instances.
          format: int32
        maxRepeatable:
          type: integer
          description: Maximum number of instances.
          format: int32
        outputPath:
          type: string
          description: Optional binding path for persisted repeat instances.
          nullable: true
      additionalProperties: false
    FieldGroupBlueprint:
      required:
        - id
        - partName
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The unique identifier for the field group
        partName:
          minLength: 1
          type: string
          description: An identifier (partName) for the field group
        text:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The text associated with a field group, such as descriptions or
            related notes. Supports localization through language codes (e.g.,
            en, fr).
        title:
          allOf:
            - $ref: "#/components/schemas/LocalizedText"
          description: The title of the field group in multiple languages. Supports
            localization through language codes (e.g., en, fr).
        isCustom:
          type: boolean
          description: Indicates whether this is a custom field group
        fields:
          type: array
          items:
            $ref: "#/components/schemas/FieldBlueprint"
          description: Array of fields (questions) within this field group
          nullable: true
        displayAsCard:
          type: boolean
          description: Indicates if this field group should be displayed as a card
        copyable:
          type: string
          description: Role identifier controlling copy behavior. Use 'none' to disable
            copying, or a role name (e.g., 'owner', 'annuitant', 'insured',
            'payor'). Multiple roles may be comma-separated.
          nullable: true
        repeatable:
          allOf:
            - $ref: "#/components/schemas/RepeatableBlueprint"
          description: Repeat-instance metadata when the wizard field element or custom
            control declares IsRepeated.
      additionalProperties: false
    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.
    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
    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
    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+)*$
    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 }`."
    Blueprint:
      required:
        - sectionBlueprints
        - sectionGroupBlueprints
      type: object
      properties:
        sectionBlueprints:
          type: array
          items:
            $ref: "#/components/schemas/SectionBlueprint"
          description: An array of sections representing the hierarchical structure of an
            order entry blueprint, nested from sections to subsections, field
            groups, and individual fields
        sectionGroupBlueprints:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/SectionGroupBlueprint"
          description: Map of section groups keyed by group identifier. Each value assigns
            sections to their corresponding group.
      additionalProperties: false
```
