diff --git a/REFERENCE.md b/REFERENCE.md
index 863c8ff..c5ae5da 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -24,6 +24,10 @@ Configures IcingaDB
* `icingadb::redis::service`: Manage IcingaDB Redis server service
* `icingadb::service`: Manage IcingaDB service
+### Data types
+
+* [`IcingaDB::RetentionOptions`](#IcingaDB--RetentionOptions)
+
## Classes
### `icingadb`
@@ -405,14 +409,7 @@ Default value: `undef`
##### `retention_options`
-Data type:
-
-```puppet
-Hash[Enum[
- 'acknowledgement','comment','downtime',
- 'flapping','notification','state'
- ], Integer[1]]
-```
+Data type: `IcingaDB::RetentionOptions`
Map of history category to number of days to retain its data in order to
enable retention only for specific categories or to override the number
@@ -759,3 +756,18 @@ Data type: `Stdlib::Absolutepath`
+## Data types
+
+### `IcingaDB::RetentionOptions`
+
+The IcingaDB::RetentionOptions data type.
+
+Alias of
+
+```puppet
+Hash[Enum[
+ 'acknowledgement','comment','downtime',
+ 'flapping','notification','state'
+ ], Integer[1]]
+```
+
diff --git a/manifests/init.pp b/manifests/init.pp
index 9752057..d29faae 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -178,10 +178,7 @@
Pattern[/^\d+\.?\d*[d|h|m|s]?$/] $logging_interval = '20s',
Optional[Integer[1]] $retention_history_data = undef,
Optional[Integer[1]] $retention_sla_data = undef,
- Hash[Enum[
- 'acknowledgement','comment','downtime',
- 'flapping','notification','state'
- ], Integer[1]] $retention_options = {},
+ IcingaDB::RetentionOptions $retention_options = {},
) {
require icingadb::globals
diff --git a/types/retetionoptions.pp b/types/retetionoptions.pp
new file mode 100644
index 0000000..eade6c9
--- /dev/null
+++ b/types/retetionoptions.pp
@@ -0,0 +1,7 @@
+type IcingaDB::RetentionOptions = Hash[
+ Enum[
+ 'acknowledgement','comment','downtime',
+ 'flapping','notification','state'
+ ],
+ Integer[1]
+]