Coverage Terms

Overview

Coverage terms are a special kind of policy data. They are more rigidly defined than data extensions, but serve a similar purpose: storing information about the policy and what it covers.

Coverage terms are useful for managing policy aspects such as:

  • Deductibles

  • Exclusions

  • Limits (e.g. split limits, aggregate limits, lifetime limits, etc.)

  • Benefit Levels (e.g. term-life payouts)

  • Riders (e.g. optional inclusion of additional coverage that doesn’t need a full Coverage element)

Coverage terms are associated with elements, typically of the coverage category. However, coverage terms can be assigned to elements of any category.

Configuration

Like elements, coverage terms are defined at the root level of the tenant configuration. Each element definition can specify which coverage terms may be used with that element.

Each coverage term definition must have a name that is a valid identifier.

If you would like a value associated with the coverage term, you can choose to leverage options, or specify a value.

  • With options, you define a finite set of values that the coverage term can take when it is on an element. Each option definition has:

    • A name (which also most be a valid identifier)

    • An optional numeric value

    • An optional tag of type string

  • With value, you supply a PropertyRef definition for any of the platform’s supported built-in types, such as string or int.

You cannot specify both options and value for a coverage term. See the CoverageTermRef reference for comprehensive configuration details.

Sample Configuration

// ... ,
"coverageTerms": {
    "LiabilityLimit": {
      // defining an "options" coverage term
      "type": "limit",
      "displayName": "Liability Limit",
      "options": {
        "PAL100_000" : {
          "displayName" : "$100,000"
        },
        "PAL250_000" : {
          "displayName" : "$250,000"
        },
      // ...,
      }
    },
    "ComputedLimit": {
      // defining a "value" coverage term
      "type": "limit",
      "displayName": "Computed Limit",
      "value": {
        "type": "int",
        "min": 1000,
        "max": 5000
      }
    },
    "SpecialDeductible": {
      // defining a coverage term with no associated value
      "type": "deductible",
      "displayName": "Special Deductible"
    }
}

Elements with Coverage Terms

Each element definition contains an optional coverageTerms property, with an array of strings, each of which must be the name of a configured coverage term.

Creation

At run time, each element create request has an optional coverageTerms property, which is a map<string, string>. For each item, the key must be the name of a valid coverage term for that element. If the coverage term has no options or has a default option, the associated value may be null; otherwise, a value conforming to the configured options or value must be supplied.

Update

When an element is updated, the update request can do any of:

  • Remove a coverage term from the element

  • Add a new coverage term to the element, along with its value (just like the protocol on element creation)

  • Change the option for a coverage term

Default Coverage Term Options and Values

If the name of a coverage term option is prefixed with an asterisk, such as *deductible, then that option will be the default option for that coverage term. That means that it doesn’t need to be specified when setting the coverage terms for an element. A value-based coverage term does not have a default value, even if the PropertyRef specifies a defaultValue.

Automatic elements cannot have any coverage terms, unless one of these things is true for all coverage terms on the element:

  • The coverage term is optional; or

  • The coverage term has no options, or a default option.

When an automatic element with coverage terms is automatically added, optional coverage terms will not be added, but required coverage terms will.

Plugins

In plugins, when elements are exposed via the plugin payload, each coverage term is included with its selected option name, value, and tag, if the coverage term has options. An isVariable boolean property can be used to distinguish between an options-based (isVariable: false) and value-based (isVariable: true) coverage term.