# Policy Elements



Overview [#overview]

Policy Elements are the building blocks of any insurance product. They are structured in a hierarchy, with an element of type `product` at the top, and other elements layered below. The structure can be simple or elaborate depending on the needs of the product. A simple warranty product may just have a single product element, while a commercial package policy may have a hierarchy several layers deep.

The structure of the product hierarchy is specified in configuration. Each element type may be configured to contain some number of sub-elements, using the `contents` property of the element definition.

Categories and Types [#categories-and-types]

Each Socotra element must be configured with a `category` and a `type`. The `type` can be any valid identifier, while the `category` must be one of the following built-in values:

* `product`
* `policyLine`
* `exposureGroup`
* `exposure`
* `coverage`

For example, an element may be defined with the category `exposure` and the type `building`.

The `product` element is implicit based on the configuration of the product as a whole, and the other types are declared as stand-alone elements. You may configure any arrangement of hierarchy you want, such as a product with exposures which contain coverages, or coverages which contain exposures, or both.

Example [#example]

In your top-level `config.json`, you may have a section that looks like this:

```json
{
	"coverages": {
		"LiabilityCoverage": {},
		"ComprehensiveCoverage": {}
	},
	"exposures": {
		"Person": {},
		"PersonalVechicle": {}
	}
}
```

`LiabilityCoverage`, `ComprehensiveCoverage`, `Person`, and `PersonalVehicle` are all unique types. Each type's respective category is indicated by its position under one of the recognized category key names. In this case, `LiabilityCoverage` and `ComprehensiveCoverage` are both `coverages`, while `Person` and `PersonalVehicle` are `exposures`.

<Callout>
  There can be only one element definition per type name. Type names must be unique across all categories; for example, you cannot define a `Person` under the `exposures` category and once again under the `coverages` category.
</Callout>

Quantifiers [#quantifiers]

In the `contents` for each element, the allowed sub-elements may be qualified by *Quantifiers*, which describe how Socotra will validate that a draft quote is acceptable. They are indicated by a suffix, or lack of a suffix, on the name of the sub-element.

See the [Quantifiers](/configuration/general-topics/quantifiers) topic for more information.

Coverage Terms [#coverage-terms]

Each element type may also be configured to include any number of Coverage Terms. Each of these is a named type with a set of allowed options and metadata. See the [Coverage Terms](/features/policy-management/coverage-terms) topic for more information.

Data Extensions [#data-extensions]

Each element type may be configured to include a set of required and optional data, of various dataExtensions. See the [Data Extensions](/configuration/data-extensions/overview) topic for details.

See Also [#see-also]

* [Quantifiers](/configuration/general-topics/quantifiers)
* [Coverage Terms](/features/policy-management/coverage-terms)
* [Data Extensions](/configuration/data-extensions/overview)
