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 typestring
With
value
, you supply a PropertyRef definition for any of the platform’s supported built-in types, such asstring
orint
.
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.