diff --git a/.puppet-lint.rc b/.puppet-lint.rc
index dd8272c..02a3e71 100644
--- a/.puppet-lint.rc
+++ b/.puppet-lint.rc
@@ -1,3 +1 @@
 --fail-on-warnings
---no-parameter_documentation-check
---no-parameter_types-check
diff --git a/REFERENCE.md b/REFERENCE.md
index 108b45d..30cd9dc 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -16,13 +16,13 @@
 * [`bareos::params`](#bareos--params): == Class: bareos::params
 * [`bareos::profile::client`](#bareos--profile--client): setup an simple bareos filedaemon/client
 * [`bareos::profile::director`](#bareos--profile--director): Ready to use director with default configs
-* [`bareos::profile::director::client`](#bareos--profile--director--client): == Class: bareos::profile::director::client Default client, backup bareos director itself
-* [`bareos::profile::director::fileset`](#bareos--profile--director--fileset): == Class: bareos::profile::director::fileset Default filesets
-* [`bareos::profile::director::jobdefs`](#bareos--profile--director--jobdefs): == Class: bareos::profile::director::jobdefs Default jobdefs
-* [`bareos::profile::director::messages`](#bareos--profile--director--messages): == Class: bareos::profile::director::messages Default messages
-* [`bareos::profile::director::pool`](#bareos--profile--director--pool): == Class: bareos::profile::director::pool Some default pools
+* [`bareos::profile::director::client`](#bareos--profile--director--client): Default client, backup bareos director itself
+* [`bareos::profile::director::fileset`](#bareos--profile--director--fileset): Default filesets
+* [`bareos::profile::director::jobdefs`](#bareos--profile--director--jobdefs): Default jobdefs
+* [`bareos::profile::director::messages`](#bareos--profile--director--messages): Default messages
+* [`bareos::profile::director::pool`](#bareos--profile--director--pool): Some default pools
 * [`bareos::profile::director::profile`](#bareos--profile--director--profile): == Class: bareos::profile::director::profile
-* [`bareos::profile::director::schedule`](#bareos--profile--director--schedule): == Class: bareos::profile::director::schedule Default schedules
+* [`bareos::profile::director::schedule`](#bareos--profile--director--schedule): Default schedules
 * [`bareos::profile::director::storage`](#bareos--profile--director--storage): Default storage daemon
 * [`bareos::profile::storage`](#bareos--profile--storage)
 * [`bareos::repository`](#bareos--repository): Manages the bareos repository. Parameters should be configured in the bareos class. This class will be automatically included when a resource is defined. This class will be automatically included when a resource is defined. It is not intended to be used directly by external resources like node definitions or other modules.
@@ -116,7 +116,7 @@ The following parameters are available in the `bareos` class:
 
 ##### <a name="-bareos--repo_release"></a>`repo_release`
 
-Data type: `String`
+Data type: `String[1]`
 
 The major bareos release version which should be used
 
@@ -172,7 +172,7 @@ Default value: `true`
 
 ##### <a name="-bareos--package_ensure"></a>`package_ensure`
 
-Data type: `String`
+Data type: `String[1]`
 
 Package version to be installed
 
@@ -180,7 +180,7 @@ Default value: `present`
 
 ##### <a name="-bareos--service_ensure"></a>`service_ensure`
 
-Data type: `String`
+Data type: `String[1]`
 
 Service state which should be ensured
 
@@ -212,7 +212,7 @@ Default value: `true`
 
 ##### <a name="-bareos--package_name"></a>`package_name`
 
-Data type: `String`
+Data type: `String[1]`
 
 Name of the package which should be installed
 
@@ -220,7 +220,7 @@ Default value: `'bareos-common'`
 
 ##### <a name="-bareos--director_service_allow_restart"></a>`director_service_allow_restart`
 
-Data type: `Any`
+Data type: `Boolean`
 
 Whether puppet is allowed to restart the director service. If not it will reload
 
@@ -228,7 +228,7 @@ Default value: `false`
 
 ##### <a name="-bareos--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -236,7 +236,7 @@ Default value: `$bareos::params::config_dir`
 
 ##### <a name="-bareos--config_dir_webui"></a>`config_dir_webui`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -244,7 +244,7 @@ Default value: `$bareos::params::config_dir_webui`
 
 ##### <a name="-bareos--file_owner"></a>`file_owner`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -252,7 +252,7 @@ Default value: `$bareos::params::file_owner`
 
 ##### <a name="-bareos--file_group"></a>`file_group`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -260,7 +260,7 @@ Default value: `$bareos::params::file_group`
 
 ##### <a name="-bareos--file_mode"></a>`file_mode`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -268,7 +268,7 @@ Default value: `$bareos::params::file_mode`
 
 ##### <a name="-bareos--file_dir_mode"></a>`file_dir_mode`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -276,7 +276,7 @@ Default value: `$bareos::params::file_dir_mode`
 
 ##### <a name="-bareos--console_package_name"></a>`console_package_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -284,7 +284,7 @@ Default value: `$bareos::params::console_package_name`
 
 ##### <a name="-bareos--monitor_package_name"></a>`monitor_package_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -292,7 +292,7 @@ Default value: `$bareos::params::monitor_package_name`
 
 ##### <a name="-bareos--director_package_name"></a>`director_package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -300,7 +300,7 @@ Default value: `$bareos::params::director_package_name`
 
 ##### <a name="-bareos--director_service_name"></a>`director_service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -308,7 +308,7 @@ Default value: `$bareos::params::director_service_name`
 
 ##### <a name="-bareos--director_managed_dirs"></a>`director_managed_dirs`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -316,7 +316,7 @@ Default value: `$bareos::params::director_managed_dirs`
 
 ##### <a name="-bareos--client_package_name"></a>`client_package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -324,7 +324,7 @@ Default value: `$bareos::params::client_package_name`
 
 ##### <a name="-bareos--client_service_name"></a>`client_service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -332,7 +332,7 @@ Default value: `$bareos::params::client_service_name`
 
 ##### <a name="-bareos--storage_package_name"></a>`storage_package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -340,7 +340,7 @@ Default value: `$bareos::params::storage_package_name`
 
 ##### <a name="-bareos--storage_service_name"></a>`storage_service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -365,7 +365,7 @@ The following parameters are available in the `bareos::client` class:
 
 ##### <a name="-bareos--client--manage_service"></a>`manage_service`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -373,7 +373,7 @@ Default value: `$bareos::manage_service`
 
 ##### <a name="-bareos--client--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -381,7 +381,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--client--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -389,7 +389,7 @@ Default value: `$bareos::client_package_name`
 
 ##### <a name="-bareos--client--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -397,7 +397,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--client--service_name"></a>`service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -405,7 +405,7 @@ Default value: `$bareos::client_service_name`
 
 ##### <a name="-bareos--client--service_ensure"></a>`service_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -413,7 +413,7 @@ Default value: `$bareos::service_ensure`
 
 ##### <a name="-bareos--client--service_enable"></a>`service_enable`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -421,7 +421,7 @@ Default value: `$bareos::service_enable`
 
 ##### <a name="-bareos--client--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -485,7 +485,7 @@ The following parameters are available in the `bareos::client::client` class:
 
 ##### <a name="-bareos--client--client--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -493,7 +493,7 @@ Default value: `present`
 
 ##### <a name="-bareos--client--client--absolute_job_timeout"></a>`absolute_job_timeout`
 
-Data type: `Any`
+Data type: `Optional[Integer[0]]`
 
 Absolute Job Timeout
 
@@ -505,7 +505,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--allow_bandwidth_bursting"></a>`allow_bandwidth_bursting`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Allow Bandwidth Bursting
 
@@ -517,7 +517,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--allowed_job_command"></a>`allowed_job_command`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Allowed Job Command
 
@@ -530,7 +530,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--allowed_script_dir"></a>`allowed_script_dir`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Allowed Script Dir
 
@@ -543,7 +543,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--always_use_lmdb"></a>`always_use_lmdb`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Always Use Lmdb
 
@@ -555,7 +555,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--compatible"></a>`compatible`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Compatible
 
@@ -567,7 +567,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
 
@@ -579,7 +579,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--fd_address"></a>`fd_address`
 
-Data type: `Any`
+Data type: `Optional[Stdlib::Host]`
 
 Fd Address
 
@@ -603,7 +603,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--fd_port"></a>`fd_port`
 
-Data type: `Any`
+Data type: `Optional[Stdlib::Port]`
 
 Fd Port
 
@@ -615,7 +615,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--fd_source_address"></a>`fd_source_address`
 
-Data type: `Any`
+Data type: `Optional[Stdlib::Host]`
 
 Fd Source Address
 
@@ -627,7 +627,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--heartbeat_interval"></a>`heartbeat_interval`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Heartbeat Interval
 
@@ -639,7 +639,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--lmdb_threshold"></a>`lmdb_threshold`
 
-Data type: `Any`
+Data type: `Optional[Integer]`
 
 Lmdb Threshold
 
@@ -651,7 +651,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--log_timestamp_format"></a>`log_timestamp_format`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Log Timestamp Format
 
@@ -663,7 +663,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--maximum_bandwidth_per_job"></a>`maximum_bandwidth_per_job`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Maximum Bandwidth Per Job
 
@@ -675,7 +675,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--maximum_concurrent_jobs"></a>`maximum_concurrent_jobs`
 
-Data type: `Any`
+Data type: `Optional[Integer]`
 
 Maximum Concurrent Jobs
 
@@ -687,7 +687,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--maximum_connections"></a>`maximum_connections`
 
-Data type: `Any`
+Data type: `Optional[Integer]`
 
 Maximum Connections
 
@@ -699,7 +699,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--maximum_network_buffer_size"></a>`maximum_network_buffer_size`
 
-Data type: `Any`
+Data type: `Optional[Integer]`
 
 Maximum Network Buffer Size
 
@@ -711,7 +711,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--messages"></a>`messages`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Messages
 
@@ -723,7 +723,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--name_client"></a>`name_client`
 
-Data type: `Any`
+Data type: `String[1]`
 
 Name of this client.
 Note: name is usually reserved by puppet for resource titles, since this is an class and not and define use name_client.
@@ -736,7 +736,7 @@ Default value: `'bareos-fd'`
 
 ##### <a name="-bareos--client--client--pid_directory"></a>`pid_directory`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Pid Directory
 
@@ -748,7 +748,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_cipher"></a>`pki_cipher`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Pki Cipher
 
@@ -760,7 +760,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_encryption"></a>`pki_encryption`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Pki Encryption
 
@@ -772,7 +772,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_key_pair"></a>`pki_key_pair`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Pki Key Pair
 
@@ -784,7 +784,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_master_key"></a>`pki_master_key`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Pki Master Key
 
@@ -797,7 +797,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_signatures"></a>`pki_signatures`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Pki Signatures
 
@@ -809,7 +809,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--pki_signer"></a>`pki_signer`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Pki Signer
 
@@ -822,7 +822,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--plugin_directory"></a>`plugin_directory`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Plugin Directory
 
@@ -834,7 +834,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--plugin_names"></a>`plugin_names`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Plugin Names
 
@@ -846,7 +846,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--scripts_directory"></a>`scripts_directory`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Scripts Directory
 
@@ -858,7 +858,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--sd_connect_timeout"></a>`sd_connect_timeout`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Sd Connect Timeout
 
@@ -870,7 +870,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--secure_erase_command"></a>`secure_erase_command`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Secure Erase Command: Specify command that will be called when bareos unlinks files.
 
@@ -882,7 +882,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_allowed_cn"></a>`tls_allowed_cn`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Tls Allowed Cn: "Common Name"s (CNs) of the allowed peer certificates.
 
@@ -895,7 +895,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_authenticate"></a>`tls_authenticate`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Authenticate: Use TLS only to authenticate, not for encryption.
 
@@ -907,7 +907,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_ca_certificate_dir"></a>`tls_ca_certificate_dir`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate Dir: Path of a TLS CA certificate directory.
 
@@ -919,7 +919,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_ca_certificate_file"></a>`tls_ca_certificate_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate File: Path of a PEM encoded TLS CA certificate(s) file.
 
@@ -931,7 +931,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_certificate"></a>`tls_certificate`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate: Path of a PEM encoded TLS certificate.
 
@@ -943,7 +943,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_certificate_revocation_list"></a>`tls_certificate_revocation_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate Revocation List: Path of a Certificate Revocation List file.
 
@@ -955,7 +955,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_cipher_list"></a>`tls_cipher_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Cipher List: List of valid TLS Ciphers.
 
@@ -967,7 +967,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_dh_file"></a>`tls_dh_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Dh File: Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.
 
@@ -979,7 +979,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_enable"></a>`tls_enable`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Enable: Enable TLS support.
 
@@ -991,7 +991,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_key"></a>`tls_key`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Key: Path of a PEM encoded private key. It must correspond to the specified "TLS Certificate".
 
@@ -1003,7 +1003,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_require"></a>`tls_require`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Require: Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicietly sets "TLS Enable = yes".
 
@@ -1015,7 +1015,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--tls_verify_peer"></a>`tls_verify_peer`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Verify Peer: If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the "TLS Allowed CN" list.
 
@@ -1027,7 +1027,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--ver_id"></a>`ver_id`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Ver Id
 
@@ -1039,7 +1039,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--client--working_directory"></a>`working_directory`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Working Directory
 
@@ -1064,7 +1064,7 @@ The following parameters are available in the `bareos::console` class:
 
 ##### <a name="-bareos--console--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1072,7 +1072,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--console--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1080,7 +1080,7 @@ Default value: `$bareos::console_package_name`
 
 ##### <a name="-bareos--console--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1088,7 +1088,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--console--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -1129,7 +1129,7 @@ The following parameters are available in the `bareos::director` class:
 
 ##### <a name="-bareos--director--manage_service"></a>`manage_service`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1137,7 +1137,7 @@ Default value: `$bareos::manage_service`
 
 ##### <a name="-bareos--director--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1145,7 +1145,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--director--manage_database"></a>`manage_database`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1153,7 +1153,7 @@ Default value: `$bareos::manage_database`
 
 ##### <a name="-bareos--director--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -1161,7 +1161,7 @@ Default value: `$bareos::director_package_name`
 
 ##### <a name="-bareos--director--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1169,7 +1169,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--director--service_name"></a>`service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1177,7 +1177,7 @@ Default value: `$bareos::director_service_name`
 
 ##### <a name="-bareos--director--service_allow_restart"></a>`service_allow_restart`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1185,7 +1185,7 @@ Default value: `$bareos::director_service_allow_restart`
 
 ##### <a name="-bareos--director--service_ensure"></a>`service_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1193,7 +1193,7 @@ Default value: `$bareos::service_ensure`
 
 ##### <a name="-bareos--director--service_enable"></a>`service_enable`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1201,7 +1201,7 @@ Default value: `$bareos::service_enable`
 
 ##### <a name="-bareos--director--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -1371,7 +1371,7 @@ The following parameters are available in the `bareos::director::director` class
 
 ##### <a name="-bareos--director--director--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -1585,7 +1585,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--director--director--name_director"></a>`name_director`
 
-Data type: `Any`
+Data type: `String[1]`
 
 Name of this director.
 Note: name is usually reserved by puppet for resource titles, since this is an class and not and define use name_director.
@@ -1658,7 +1658,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--director--director--password"></a>`password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 Password
 
@@ -1706,7 +1706,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--director--director--query_file"></a>`query_file`
 
-Data type: `Any`
+Data type: `String[1]`
 
 Query File
 
@@ -1973,7 +1973,7 @@ The following parameters are available in the `bareos::monitor` class:
 
 ##### <a name="-bareos--monitor--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -1981,7 +1981,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--monitor--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1989,7 +1989,7 @@ Default value: `$bareos::monitor_package_name`
 
 ##### <a name="-bareos--monitor--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -1997,7 +1997,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--monitor--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -2021,7 +2021,7 @@ The following parameters are available in the `bareos::profile::client` class:
 
 ##### <a name="-bareos--profile--client--name_client"></a>`name_client`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2029,7 +2029,7 @@ Default value: `$facts['networking']['fqdn']`
 
 ##### <a name="-bareos--profile--client--name_dir"></a>`name_dir`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2037,7 +2037,7 @@ Default value: `'bareos-dir'`
 
 ##### <a name="-bareos--profile--client--password"></a>`password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2059,7 +2059,7 @@ The following parameters are available in the `bareos::profile::director` class:
 
 ##### <a name="-bareos--profile--director--password"></a>`password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2067,7 +2067,7 @@ Default value: `'MyDirectorPasswordPleaseChange'`
 
 ##### <a name="-bareos--profile--director--name_dir"></a>`name_dir`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2075,7 +2075,7 @@ Default value: `'bareos-dir'`
 
 ##### <a name="-bareos--profile--director--catalog_conf"></a>`catalog_conf`
 
-Data type: `Any`
+Data type: `Hash`
 
 
 
@@ -2090,7 +2090,7 @@ Default value:
 
 ##### <a name="-bareos--profile--director--storage_address"></a>`storage_address`
 
-Data type: `Any`
+Data type: `Stdlib::Host`
 
 
 
@@ -2098,7 +2098,7 @@ Default value: `'localhost'`
 
 ##### <a name="-bareos--profile--director--storage_password"></a>`storage_password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2106,27 +2106,22 @@ Default value: `'BareosStoragePleaseChangeMe'`
 
 ### <a name="bareos--profile--director--client"></a>`bareos::profile::director::client`
 
-== Class: bareos::profile::director::client
 Default client, backup bareos director itself
 
 ### <a name="bareos--profile--director--fileset"></a>`bareos::profile::director::fileset`
 
-== Class: bareos::profile::director::fileset
 Default filesets
 
 ### <a name="bareos--profile--director--jobdefs"></a>`bareos::profile::director::jobdefs`
 
-== Class: bareos::profile::director::jobdefs
 Default jobdefs
 
 ### <a name="bareos--profile--director--messages"></a>`bareos::profile::director::messages`
 
-== Class: bareos::profile::director::messages
 Default messages
 
 ### <a name="bareos--profile--director--pool"></a>`bareos::profile::director::pool`
 
-== Class: bareos::profile::director::pool
 Some default pools
 
 ### <a name="bareos--profile--director--profile"></a>`bareos::profile::director::profile`
@@ -2135,7 +2130,6 @@ Some default pools
 
 ### <a name="bareos--profile--director--schedule"></a>`bareos::profile::director::schedule`
 
-== Class: bareos::profile::director::schedule
 Default schedules
 
 ### <a name="bareos--profile--director--storage"></a>`bareos::profile::director::storage`
@@ -2151,7 +2145,7 @@ The following parameters are available in the `bareos::profile::director::storag
 
 ##### <a name="-bareos--profile--director--storage--address"></a>`address`
 
-Data type: `Any`
+Data type: `Stdlib::Host`
 
 
 
@@ -2159,7 +2153,7 @@ Default value: `'localhost'`
 
 ##### <a name="-bareos--profile--director--storage--password"></a>`password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2180,7 +2174,7 @@ The following parameters are available in the `bareos::profile::storage` class:
 
 ##### <a name="-bareos--profile--storage--name_storage"></a>`name_storage`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2188,7 +2182,7 @@ Default value: `'bareos-sd'`
 
 ##### <a name="-bareos--profile--storage--name_dir"></a>`name_dir`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2196,7 +2190,7 @@ Default value: `'bareos-dir'`
 
 ##### <a name="-bareos--profile--storage--password"></a>`password`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2204,7 +2198,7 @@ Default value: `'BareosStoragePleaseChangeMe'`
 
 ##### <a name="-bareos--profile--storage--archive_device"></a>`archive_device`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -2298,7 +2292,7 @@ The following parameters are available in the `bareos::storage` class:
 
 ##### <a name="-bareos--storage--manage_service"></a>`manage_service`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -2306,7 +2300,7 @@ Default value: `$bareos::manage_service`
 
 ##### <a name="-bareos--storage--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -2314,7 +2308,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--storage--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `Array[String[1]]`
 
 
 
@@ -2322,7 +2316,7 @@ Default value: `$bareos::storage_package_name`
 
 ##### <a name="-bareos--storage--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2330,7 +2324,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--storage--service_name"></a>`service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2338,7 +2332,7 @@ Default value: `$bareos::storage_service_name`
 
 ##### <a name="-bareos--storage--service_ensure"></a>`service_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -2346,7 +2340,7 @@ Default value: `$bareos::service_ensure`
 
 ##### <a name="-bareos--storage--service_enable"></a>`service_enable`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -2354,7 +2348,7 @@ Default value: `$bareos::service_enable`
 
 ##### <a name="-bareos--storage--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -2464,7 +2458,7 @@ The following parameters are available in the `bareos::storage::storage` class:
 
 ##### <a name="-bareos--storage--storage--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -2701,7 +2695,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--storage--storage--name_storage"></a>`name_storage`
 
-Data type: `Any`
+Data type: `String[1]`
 
 Name of this storage.
 Note: name is usually reserved by puppet for resource titles, since this is an class and not and define use name_storage.
@@ -2955,7 +2949,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--storage--storage--tls_ca_certificate_dir"></a>`tls_ca_certificate_dir`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate Dir: Path of a TLS CA certificate directory.
 
@@ -3087,7 +3081,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--storage--storage--working_directory"></a>`working_directory`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Working Directory
 
@@ -3123,7 +3117,7 @@ The following parameters are available in the `bareos::webui` class:
 
 ##### <a name="-bareos--webui--manage_service"></a>`manage_service`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -3131,7 +3125,7 @@ Default value: `$bareos::manage_service`
 
 ##### <a name="-bareos--webui--manage_package"></a>`manage_package`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -3139,7 +3133,7 @@ Default value: `$bareos::manage_package`
 
 ##### <a name="-bareos--webui--package_name"></a>`package_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -3147,7 +3141,7 @@ Default value: `$bareos::webui_package_name`
 
 ##### <a name="-bareos--webui--package_ensure"></a>`package_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -3155,7 +3149,7 @@ Default value: `$bareos::package_ensure`
 
 ##### <a name="-bareos--webui--service_name"></a>`service_name`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -3163,7 +3157,7 @@ Default value: `$bareos::webui_service_name`
 
 ##### <a name="-bareos--webui--service_ensure"></a>`service_ensure`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -3171,7 +3165,7 @@ Default value: `$bareos::service_ensure`
 
 ##### <a name="-bareos--webui--service_enable"></a>`service_enable`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -3179,7 +3173,7 @@ Default value: `$bareos::service_enable`
 
 ##### <a name="-bareos--webui--config_dir"></a>`config_dir`
 
-Data type: `Any`
+Data type: `Stdlib::Absolutepath`
 
 
 
@@ -3187,7 +3181,7 @@ Default value: `$bareos::config_dir_webui`
 
 ##### <a name="-bareos--webui--manage_local_dir"></a>`manage_local_dir`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -3195,7 +3189,7 @@ Default value: `true`
 
 ##### <a name="-bareos--webui--session_timeout"></a>`session_timeout`
 
-Data type: `Any`
+Data type: `Integer[0]`
 
 
 
@@ -3203,7 +3197,7 @@ Default value: `3600`
 
 ##### <a name="-bareos--webui--pagination_values"></a>`pagination_values`
 
-Data type: `Any`
+Data type: `String[1]`
 
 
 
@@ -3211,7 +3205,7 @@ Default value: `'10,25,50,100'`
 
 ##### <a name="-bareos--webui--pagination_default_value"></a>`pagination_default_value`
 
-Data type: `Any`
+Data type: `Integer[0]`
 
 
 
@@ -3219,7 +3213,7 @@ Default value: `25`
 
 ##### <a name="-bareos--webui--save_previous_state"></a>`save_previous_state`
 
-Data type: `Any`
+Data type: `Boolean`
 
 
 
@@ -3227,7 +3221,7 @@ Default value: `false`
 
 ##### <a name="-bareos--webui--label_pooltype"></a>`label_pooltype`
 
-Data type: `Any`
+Data type: `String`
 
 
 
@@ -3235,7 +3229,7 @@ Default value: `''`
 
 ##### <a name="-bareos--webui--directors"></a>`directors`
 
-Data type: `Any`
+Data type: `Hash`
 
 
 
@@ -3277,7 +3271,7 @@ The following parameters are available in the `bareos::client::director` defined
 
 ##### <a name="-bareos--client--director--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -3285,7 +3279,7 @@ Default value: `present`
 
 ##### <a name="-bareos--client--director--address"></a>`address`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Address: Director Network Address. Only required if "Connection From Client To Director" is enabled.
 
@@ -3297,7 +3291,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--allowed_job_command"></a>`allowed_job_command`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Allowed Job Command
 
@@ -3310,7 +3304,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--allowed_script_dir"></a>`allowed_script_dir`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Allowed Script Dir
 
@@ -3323,7 +3317,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--connection_from_client_to_director"></a>`connection_from_client_to_director`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Connection From Client To Director: Let the Filedaemon initiate network connections to the Director.
 
@@ -3335,7 +3329,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--connection_from_director_to_client"></a>`connection_from_director_to_client`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Connection From Director To Client: This Client will accept incoming network connection from this Director.
 
@@ -3347,7 +3341,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
 
@@ -3359,7 +3353,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--maximum_bandwidth_per_job"></a>`maximum_bandwidth_per_job`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Maximum Bandwidth Per Job
 
@@ -3371,7 +3365,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--monitor"></a>`monitor`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Monitor
 
@@ -3383,7 +3377,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--password"></a>`password`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Password
 
@@ -3395,7 +3389,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--port"></a>`port`
 
-Data type: `Any`
+Data type: `Optional[Stdlib::Port]`
 
 Port: Director Network Port. Only used if "Connection From Client To Director" is enabled.
 
@@ -3407,7 +3401,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_allowed_cn"></a>`tls_allowed_cn`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Tls Allowed Cn: "Common Name"s (CNs) of the allowed peer certificates.
 
@@ -3420,7 +3414,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_authenticate"></a>`tls_authenticate`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Authenticate: Use TLS only to authenticate, not for encryption.
 
@@ -3432,7 +3426,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_ca_certificate_dir"></a>`tls_ca_certificate_dir`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate Dir: Path of a TLS CA certificate directory.
 
@@ -3444,7 +3438,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_ca_certificate_file"></a>`tls_ca_certificate_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate File: Path of a PEM encoded TLS CA certificate(s) file.
 
@@ -3456,7 +3450,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_certificate"></a>`tls_certificate`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate: Path of a PEM encoded TLS certificate.
 
@@ -3468,7 +3462,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_certificate_revocation_list"></a>`tls_certificate_revocation_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate Revocation List: Path of a Certificate Revocation List file.
 
@@ -3480,7 +3474,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_cipher_list"></a>`tls_cipher_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Cipher List: List of valid TLS Ciphers.
 
@@ -3492,7 +3486,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_dh_file"></a>`tls_dh_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Dh File: Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.
 
@@ -3504,7 +3498,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_enable"></a>`tls_enable`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Enable: Enable TLS support.
 
@@ -3516,7 +3510,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_key"></a>`tls_key`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Key: Path of a PEM encoded private key. It must correspond to the specified "TLS Certificate".
 
@@ -3528,7 +3522,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_require"></a>`tls_require`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Require: Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicietly sets "TLS Enable = yes".
 
@@ -3540,7 +3534,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--director--tls_verify_peer"></a>`tls_verify_peer`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Verify Peer: If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the "TLS Allowed CN" list.
 
@@ -3578,7 +3572,7 @@ The following parameters are available in the `bareos::client::messages` defined
 
 ##### <a name="-bareos--client--messages--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -3586,7 +3580,7 @@ Default value: `present`
 
 ##### <a name="-bareos--client--messages--append"></a>`append`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Append
 
@@ -3599,7 +3593,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--catalog"></a>`catalog`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Catalog
 
@@ -3612,7 +3606,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--console"></a>`console`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Console
 
@@ -3625,7 +3619,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
 
@@ -3637,7 +3631,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--director"></a>`director`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Director
 
@@ -3650,7 +3644,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--file"></a>`file`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 File
 
@@ -3663,7 +3657,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--mail"></a>`mail`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Mail
 
@@ -3676,7 +3670,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--mail_command"></a>`mail_command`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Mail Command
 
@@ -3688,7 +3682,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--mail_on_error"></a>`mail_on_error`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Mail On Error
 
@@ -3701,7 +3695,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--mail_on_success"></a>`mail_on_success`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Mail On Success
 
@@ -3714,7 +3708,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--operator"></a>`operator`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Operator
 
@@ -3727,7 +3721,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--operator_command"></a>`operator_command`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Operator Command
 
@@ -3739,7 +3733,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--stderr"></a>`stderr`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Stderr
 
@@ -3752,7 +3746,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--stdout"></a>`stdout`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Stdout
 
@@ -3765,7 +3759,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--syslog"></a>`syslog`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Syslog
 
@@ -3778,7 +3772,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--client--messages--timestamp_format"></a>`timestamp_format`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Timestamp Format
 
@@ -3819,7 +3813,7 @@ The following parameters are available in the `bareos::console::console` defined
 
 ##### <a name="-bareos--console--console--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -3827,7 +3821,7 @@ Default value: `present`
 
 ##### <a name="-bareos--console--console--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
 
@@ -3839,7 +3833,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--director"></a>`director`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Director
 
@@ -3851,7 +3845,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--heartbeat_interval"></a>`heartbeat_interval`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Heartbeat Interval
 
@@ -3863,7 +3857,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--history_file"></a>`history_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 History File
 
@@ -3875,7 +3869,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--history_length"></a>`history_length`
 
-Data type: `Any`
+Data type: `Optional[Integer[0]]`
 
 History Length
 
@@ -3887,7 +3881,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--password"></a>`password`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Password
 
@@ -3899,7 +3893,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--rc_file"></a>`rc_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Rc File
 
@@ -3911,7 +3905,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_allowed_cn"></a>`tls_allowed_cn`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Tls Allowed Cn: "Common Name"s (CNs) of the allowed peer certificates.
 
@@ -3924,7 +3918,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_authenticate"></a>`tls_authenticate`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Authenticate: Use TLS only to authenticate, not for encryption.
 
@@ -3936,7 +3930,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_ca_certificate_dir"></a>`tls_ca_certificate_dir`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate Dir: Path of a TLS CA certificate directory.
 
@@ -3948,7 +3942,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_ca_certificate_file"></a>`tls_ca_certificate_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate File: Path of a PEM encoded TLS CA certificate(s) file.
 
@@ -3960,7 +3954,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_certificate"></a>`tls_certificate`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate: Path of a PEM encoded TLS certificate.
 
@@ -3972,7 +3966,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_certificate_revocation_list"></a>`tls_certificate_revocation_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate Revocation List: Path of a Certificate Revocation List file.
 
@@ -3984,7 +3978,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_cipher_list"></a>`tls_cipher_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Cipher List: List of valid TLS Ciphers.
 
@@ -3996,7 +3990,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_dh_file"></a>`tls_dh_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Dh File: Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.
 
@@ -4008,7 +4002,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_enable"></a>`tls_enable`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Enable: Enable TLS support.
 
@@ -4020,7 +4014,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_key"></a>`tls_key`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Key: Path of a PEM encoded private key. It must correspond to the specified "TLS Certificate".
 
@@ -4032,7 +4026,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_require"></a>`tls_require`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Require: Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicietly sets "TLS Enable = yes".
 
@@ -4044,7 +4038,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--console--tls_verify_peer"></a>`tls_verify_peer`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Verify Peer: If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the "TLS Allowed CN" list.
 
@@ -4083,7 +4077,7 @@ The following parameters are available in the `bareos::console::director` define
 
 ##### <a name="-bareos--console--director--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -4091,7 +4085,7 @@ Default value: `present`
 
 ##### <a name="-bareos--console--director--address"></a>`address`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Address
 
@@ -4103,7 +4097,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
 
@@ -4115,7 +4109,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--dir_port"></a>`dir_port`
 
-Data type: `Any`
+Data type: `Optional[Integer[0]]`
 
 Dir Port
 
@@ -4127,7 +4121,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--heartbeat_interval"></a>`heartbeat_interval`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Heartbeat Interval
 
@@ -4139,7 +4133,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--password"></a>`password`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Password
 
@@ -4151,7 +4145,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_allowed_cn"></a>`tls_allowed_cn`
 
-Data type: `Any`
+Data type: `Optional[Variant[Array[String[1]],String[1]]]`
 
 Tls Allowed Cn: "Common Name"s (CNs) of the allowed peer certificates.
 
@@ -4164,7 +4158,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_authenticate"></a>`tls_authenticate`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Authenticate: Use TLS only to authenticate, not for encryption.
 
@@ -4176,7 +4170,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_ca_certificate_dir"></a>`tls_ca_certificate_dir`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate Dir: Path of a TLS CA certificate directory.
 
@@ -4188,7 +4182,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_ca_certificate_file"></a>`tls_ca_certificate_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Ca Certificate File: Path of a PEM encoded TLS CA certificate(s) file.
 
@@ -4200,7 +4194,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_certificate"></a>`tls_certificate`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate: Path of a PEM encoded TLS certificate.
 
@@ -4212,7 +4206,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_certificate_revocation_list"></a>`tls_certificate_revocation_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Certificate Revocation List: Path of a Certificate Revocation List file.
 
@@ -4224,7 +4218,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_cipher_list"></a>`tls_cipher_list`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Cipher List: List of valid TLS Ciphers.
 
@@ -4236,7 +4230,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_dh_file"></a>`tls_dh_file`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Dh File: Path to PEM encoded Diffie-Hellman parameter file. If this directive is specified, DH key exchange will be used for the ephemeral keying, allowing for forward secrecy of communications.
 
@@ -4248,7 +4242,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_enable"></a>`tls_enable`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Enable: Enable TLS support.
 
@@ -4260,7 +4254,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_key"></a>`tls_key`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Tls Key: Path of a PEM encoded private key. It must correspond to the specified "TLS Certificate".
 
@@ -4272,7 +4266,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_require"></a>`tls_require`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Require: Without setting this to yes, Bareos can fall back to use unencryption connections. Enabling this implicietly sets "TLS Enable = yes".
 
@@ -4284,7 +4278,7 @@ Default value: `undef`
 
 ##### <a name="-bareos--console--director--tls_verify_peer"></a>`tls_verify_peer`
 
-Data type: `Any`
+Data type: `Optional[Boolean]`
 
 Tls Verify Peer: If disabled, all certificates signed by a known CA will be accepted. If enabled, the CN of a certificate must the Address or in the "TLS Allowed CN" list.
 
@@ -4323,7 +4317,7 @@ The following parameters are available in the `bareos::director::catalog` define
 
 ##### <a name="-bareos--director--catalog--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -4590,7 +4584,7 @@ The following parameters are available in the `bareos::director::client` defined
 
 ##### <a name="-bareos--director--client--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -5441,7 +5435,7 @@ The following parameters are available in the `bareos::director::counter` define
 
 ##### <a name="-bareos--director--counter--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -5525,7 +5519,7 @@ The following parameters are available in the `bareos::director::fileset` define
 
 ##### <a name="-bareos--director--fileset--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -5686,7 +5680,7 @@ The following parameters are available in the `bareos::director::job` defined ty
 
 ##### <a name="-bareos--director--job--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -6790,7 +6784,7 @@ The following parameters are available in the `bareos::director::jobdefs` define
 
 ##### <a name="-bareos--director--jobdefs--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -7826,7 +7820,7 @@ The following parameters are available in the `bareos::director::messages` defin
 
 ##### <a name="-bareos--director--messages--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -8079,7 +8073,7 @@ The following parameters are available in the `bareos::director::pool` defined t
 
 ##### <a name="-bareos--director--pool--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -8481,7 +8475,7 @@ The following parameters are available in the `bareos::director::profile` define
 
 ##### <a name="-bareos--director--profile--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -8634,7 +8628,7 @@ The following parameters are available in the `bareos::director::schedule` defin
 
 ##### <a name="-bareos--director--schedule--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -8723,7 +8717,7 @@ The following parameters are available in the `bareos::director::storage` define
 
 ##### <a name="-bareos--director--storage--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9144,7 +9138,7 @@ The following parameters are available in the `bareos::monitor::client` defined
 
 ##### <a name="-bareos--monitor--client--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9226,7 +9220,7 @@ The following parameters are available in the `bareos::monitor::director` define
 
 ##### <a name="-bareos--monitor--director--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9299,7 +9293,7 @@ The following parameters are available in the `bareos::monitor::monitor` defined
 
 ##### <a name="-bareos--monitor--monitor--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9408,7 +9402,7 @@ The following parameters are available in the `bareos::monitor::storage` defined
 
 ##### <a name="-bareos--monitor--storage--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9514,7 +9508,7 @@ The following parameters are available in the `bareos::storage::autochanger` def
 
 ##### <a name="-bareos--storage--autochanger--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -9643,7 +9637,7 @@ The following parameters are available in the `bareos::storage::device` defined
 
 ##### <a name="-bareos--storage--device--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -10422,7 +10416,7 @@ The following parameters are available in the `bareos::storage::director` define
 
 ##### <a name="-bareos--storage--director--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -10661,7 +10655,7 @@ The following parameters are available in the `bareos::storage::messages` define
 
 ##### <a name="-bareos--storage--messages--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -10888,7 +10882,7 @@ The following parameters are available in the `bareos::storage::ndmp` defined ty
 
 ##### <a name="-bareos--storage--ndmp--ensure"></a>`ensure`
 
-Data type: `Any`
+Data type: `Enum['present','absent']`
 
 present or absent the config file.
 
@@ -10896,7 +10890,7 @@ Default value: `present`
 
 ##### <a name="-bareos--storage--ndmp--auth_type"></a>`auth_type`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Auth Type
 
@@ -10908,49 +10902,37 @@ Default value: `undef`
 
 ##### <a name="-bareos--storage--ndmp--description"></a>`description`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Description
-
 Bareos Datatype: string
-Bareos Default: Not set
-Required: false
 
 Default value: `undef`
 
 ##### <a name="-bareos--storage--ndmp--log_level"></a>`log_level`
 
-Data type: `Any`
+Data type: `Optional[Integer[0]]`
 
 Log Level
-
 Bareos Datatype: pint32
-Bareos Default: 4
-Required: false
 
 Default value: `undef`
 
 ##### <a name="-bareos--storage--ndmp--password"></a>`password`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Password
-
 Bareos Datatype: autopassword
-Bareos Default: Not set
-Required: true
 
 Default value: `undef`
 
 ##### <a name="-bareos--storage--ndmp--username"></a>`username`
 
-Data type: `Any`
+Data type: `Optional[String[1]]`
 
 Username
-
 Bareos Datatype: string
-Bareos Default: Not set
-Required: true
 
 Default value: `undef`
 
diff --git a/manifests/client.pp b/manifests/client.pp
index 1189e3f..59e188f 100644
--- a/manifests/client.pp
+++ b/manifests/client.pp
@@ -11,14 +11,14 @@
 # @param config_dir
 #
 class bareos::client (
-  $manage_service = $bareos::manage_service,
-  $manage_package = $bareos::manage_package,
-  $package_name   = $bareos::client_package_name,
-  $package_ensure = $bareos::package_ensure,
-  $service_name   = $bareos::client_service_name,
-  $service_ensure = $bareos::service_ensure,
-  $service_enable = $bareos::service_enable,
-  $config_dir     = "${bareos::config_dir}/bareos-fd.d"
+  Boolean $manage_service          = $bareos::manage_service,
+  Boolean $manage_package          = $bareos::manage_package,
+  Array[String[1]] $package_name   = $bareos::client_package_name,
+  String[1] $package_ensure        = $bareos::package_ensure,
+  String[1] $service_name          = $bareos::client_service_name,
+  String[1] $service_ensure        = $bareos::service_ensure,
+  Boolean $service_enable          = $bareos::service_enable,
+  Stdlib::Absolutepath $config_dir = "${bareos::config_dir}/bareos-fd.d"
 ) inherits bareos {
   include bareos::client::client
 
diff --git a/manifests/client/client.pp b/manifests/client/client.pp
index 6dda430..47f9371 100644
--- a/manifests/client/client.pp
+++ b/manifests/client/client.pp
@@ -333,63 +333,59 @@
 #   Required: false
 #
 class bareos::client::client (
-  $ensure = present,
-  $absolute_job_timeout = undef,
-  $allow_bandwidth_bursting = undef,
-  $allowed_job_command = undef,
-  $allowed_script_dir = undef,
-  $always_use_lmdb = undef,
-  $compatible = undef,
-  $description = undef,
-  $fd_address = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[Integer[0]] $absolute_job_timeout = undef,
+  Optional[Boolean] $allow_bandwidth_bursting = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $allowed_job_command = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $allowed_script_dir = undef,
+  Optional[Boolean] $always_use_lmdb = undef,
+  Optional[Boolean] $compatible = undef,
+  Optional[String[1]] $description = undef,
+  Optional[Stdlib::Host] $fd_address = undef,
   $fd_addresses = undef,
-  $fd_port = undef,
-  $fd_source_address = undef,
-  $heartbeat_interval = undef,
-  $lmdb_threshold = undef,
-  $log_timestamp_format = undef,
-  $maximum_bandwidth_per_job = undef,
-  $maximum_concurrent_jobs = undef,
-  $maximum_connections = undef,
-  $maximum_network_buffer_size = undef,
-  $messages = undef,
-  $name_client = 'bareos-fd',
-  $pid_directory = undef,
-  $pki_cipher = undef,
-  $pki_encryption = undef,
-  $pki_key_pair = undef,
-  $pki_master_key = undef,
-  $pki_signatures = undef,
-  $pki_signer = undef,
-  $plugin_directory = undef,
-  $plugin_names = undef,
-  $scripts_directory = undef,
-  $sd_connect_timeout = undef,
-  $secure_erase_command = undef,
-  $tls_allowed_cn = undef,
-  $tls_authenticate = undef,
-  $tls_ca_certificate_dir = undef,
-  $tls_ca_certificate_file = undef,
-  $tls_certificate = undef,
-  $tls_certificate_revocation_list = undef,
-  $tls_cipher_list = undef,
-  $tls_dh_file = undef,
-  $tls_enable = undef,
-  $tls_key = undef,
-  $tls_require = undef,
-  $tls_verify_peer = undef,
-  $ver_id = undef,
-  $working_directory = undef,
+  Optional[Stdlib::Port] $fd_port = undef,
+  Optional[Stdlib::Host] $fd_source_address = undef,
+  Optional[String[1]] $heartbeat_interval = undef,
+  Optional[Integer] $lmdb_threshold = undef,
+  Optional[String[1]] $log_timestamp_format = undef,
+  Optional[String[1]] $maximum_bandwidth_per_job = undef,
+  Optional[Integer] $maximum_concurrent_jobs = undef,
+  Optional[Integer] $maximum_connections = undef,
+  Optional[Integer] $maximum_network_buffer_size = undef,
+  Optional[String[1]] $messages = undef,
+  String[1] $name_client = 'bareos-fd',
+  Optional[String[1]] $pid_directory = undef,
+  Optional[String[1]] $pki_cipher = undef,
+  Optional[Boolean] $pki_encryption = undef,
+  Optional[String[1]] $pki_key_pair = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $pki_master_key = undef,
+  Optional[Boolean] $pki_signatures = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $pki_signer = undef,
+  Optional[String[1]] $plugin_directory = undef,
+  Optional[String[1]] $plugin_names = undef,
+  Optional[String[1]] $scripts_directory = undef,
+  Optional[String[1]] $sd_connect_timeout = undef,
+  Optional[String[1]] $secure_erase_command = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $tls_allowed_cn = undef,
+  Optional[Boolean] $tls_authenticate = undef,
+  Optional[String[1]] $tls_ca_certificate_dir = undef,
+  Optional[String[1]] $tls_ca_certificate_file = undef,
+  Optional[String[1]] $tls_certificate = undef,
+  Optional[String[1]] $tls_certificate_revocation_list = undef,
+  Optional[String[1]] $tls_cipher_list = undef,
+  Optional[String[1]] $tls_dh_file = undef,
+  Optional[Boolean] $tls_enable = undef,
+  Optional[String[1]] $tls_key = undef,
+  Optional[Boolean] $tls_require = undef,
+  Optional[Boolean] $tls_verify_peer = undef,
+  Optional[String[1]] $ver_id = undef,
+  Optional[String[1]] $working_directory = undef,
 ) {
   include bareos::client
 
   $_resource = 'Client'
   $_resource_dir = 'client'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_messages = $messages ? { undef => undef, default => Bareos::Client::Messages[$messages] }
 
diff --git a/manifests/client/director.pp b/manifests/client/director.pp
index 0b2195a..0734858 100644
--- a/manifests/client/director.pp
+++ b/manifests/client/director.pp
@@ -1,7 +1,9 @@
 # @summary 
 #   The Director resource defines the name and password of the Directors that are permitted to contact this Client.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address: Director Network Address. Only required if "Connection From Client To Director" is enabled.
 #
@@ -160,39 +162,35 @@
 #   Required: false
 #
 define bareos::client::director (
-  $ensure = present,
-  $address = undef,
-  $allowed_job_command = undef,
-  $allowed_script_dir = undef,
-  $connection_from_client_to_director = undef,
-  $connection_from_director_to_client = undef,
-  $description = undef,
-  $maximum_bandwidth_per_job = undef,
-  $monitor = undef,
-  $password = undef,
-  $port = undef,
-  $tls_allowed_cn = undef,
-  $tls_authenticate = undef,
-  $tls_ca_certificate_dir = undef,
-  $tls_ca_certificate_file = undef,
-  $tls_certificate = undef,
-  $tls_certificate_revocation_list = undef,
-  $tls_cipher_list = undef,
-  $tls_dh_file = undef,
-  $tls_enable = undef,
-  $tls_key = undef,
-  $tls_require = undef,
-  $tls_verify_peer = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[String[1]] $address = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $allowed_job_command = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $allowed_script_dir = undef,
+  Optional[Boolean] $connection_from_client_to_director = undef,
+  Optional[Boolean] $connection_from_director_to_client = undef,
+  Optional[String[1]] $description = undef,
+  Optional[String[1]] $maximum_bandwidth_per_job = undef,
+  Optional[Boolean] $monitor = undef,
+  Optional[String[1]] $password = undef,
+  Optional[Stdlib::Port] $port = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $tls_allowed_cn = undef,
+  Optional[Boolean] $tls_authenticate = undef,
+  Optional[String[1]] $tls_ca_certificate_dir = undef,
+  Optional[String[1]] $tls_ca_certificate_file = undef,
+  Optional[String[1]] $tls_certificate = undef,
+  Optional[String[1]] $tls_certificate_revocation_list = undef,
+  Optional[String[1]] $tls_cipher_list = undef,
+  Optional[String[1]] $tls_dh_file = undef,
+  Optional[Boolean] $tls_enable = undef,
+  Optional[String[1]] $tls_key = undef,
+  Optional[Boolean] $tls_require = undef,
+  Optional[Boolean] $tls_verify_peer = undef,
 ) {
   include bareos::client
 
   $_resource = 'Director'
   $_resource_dir = 'director'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/client/messages.pp b/manifests/client/messages.pp
index 9506077..1b3ac8e 100644
--- a/manifests/client/messages.pp
+++ b/manifests/client/messages.pp
@@ -1,7 +1,9 @@
 # @summary
 #   The Messages resource defines how messages are to be handled and destinations to which they should be sent.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param append
 #   Append
 #
@@ -127,33 +129,29 @@
 #   Required: false
 #
 define bareos::client::messages (
-  $ensure = present,
-  $append = undef,
-  $catalog = undef,
-  $console = undef,
-  $description = undef,
-  $director = undef,
-  $file = undef,
-  $mail = undef,
-  $mail_command = undef,
-  $mail_on_error = undef,
-  $mail_on_success = undef,
-  $operator = undef,
-  $operator_command = undef,
-  $stderr = undef,
-  $stdout = undef,
-  $syslog = undef,
-  $timestamp_format = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[Variant[Array[String[1]],String[1]]] $append = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $catalog = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $console = undef,
+  Optional[String[1]] $description = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $director = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $file = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $mail = undef,
+  Optional[String[1]] $mail_command = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $mail_on_error = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $mail_on_success = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $operator = undef,
+  Optional[String[1]] $operator_command = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $stderr = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $stdout = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $syslog = undef,
+  Optional[String[1]] $timestamp_format = undef,
 ) {
   include bareos::client
 
   $_resource = 'Messages'
   $_resource_dir = 'messages'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/console.pp b/manifests/console.pp
index 42d2322..01a03b1 100644
--- a/manifests/console.pp
+++ b/manifests/console.pp
@@ -6,10 +6,10 @@
 # @param config_dir
 #
 class bareos::console (
-  $manage_package = $bareos::manage_package,
-  $package_name   = $bareos::console_package_name,
-  $package_ensure = $bareos::package_ensure,
-  $config_dir     = "${bareos::config_dir}/bconsole.d"
+  Boolean $manage_package          = $bareos::manage_package,
+  String[1] $package_name          = $bareos::console_package_name,
+  String[1] $package_ensure        = $bareos::package_ensure,
+  Stdlib::Absolutepath $config_dir = "${bareos::config_dir}/bconsole.d"
 ) inherits bareos {
   if $manage_package {
     package { $package_name:
diff --git a/manifests/console/console.pp b/manifests/console/console.pp
index 29604c8..23f35f3 100644
--- a/manifests/console/console.pp
+++ b/manifests/console/console.pp
@@ -1,5 +1,6 @@
 # @param ensure
 #   present or absent the config file.
+#
 # @param description
 #   Description
 #
@@ -135,36 +136,32 @@
 #   Required: false
 #
 define bareos::console::console (
-  $ensure = present,
-  $description = undef,
-  $director = undef,
-  $heartbeat_interval = undef,
-  $history_file = undef,
-  $history_length = undef,
-  $password = undef,
-  $rc_file = undef,
-  $tls_allowed_cn = undef,
-  $tls_authenticate = undef,
-  $tls_ca_certificate_dir = undef,
-  $tls_ca_certificate_file = undef,
-  $tls_certificate = undef,
-  $tls_certificate_revocation_list = undef,
-  $tls_cipher_list = undef,
-  $tls_dh_file = undef,
-  $tls_enable = undef,
-  $tls_key = undef,
-  $tls_require = undef,
-  $tls_verify_peer = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[String[1]] $description = undef,
+  Optional[String[1]] $director = undef,
+  Optional[String[1]] $heartbeat_interval = undef,
+  Optional[String[1]] $history_file = undef,
+  Optional[Integer[0]] $history_length = undef,
+  Optional[String[1]] $password = undef,
+  Optional[String[1]] $rc_file = undef,
+  Optional[Variant[Array[String[1]],String[1]]] $tls_allowed_cn = undef,
+  Optional[Boolean] $tls_authenticate = undef,
+  Optional[String[1]] $tls_ca_certificate_dir = undef,
+  Optional[String[1]] $tls_ca_certificate_file = undef,
+  Optional[String[1]] $tls_certificate = undef,
+  Optional[String[1]] $tls_certificate_revocation_list = undef,
+  Optional[String[1]] $tls_cipher_list = undef,
+  Optional[String[1]] $tls_dh_file = undef,
+  Optional[Boolean] $tls_enable = undef,
+  Optional[String[1]] $tls_key = undef,
+  Optional[Boolean] $tls_require = undef,
+  Optional[Boolean] $tls_verify_peer = undef,
 ) {
   include bareos::console
 
   $_resource = 'Console'
   $_resource_dir = 'console'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/console/director.pp b/manifests/console/director.pp
index 5a4c376..1f91421 100644
--- a/manifests/console/director.pp
+++ b/manifests/console/director.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -124,34 +125,30 @@
 #   Required: false
 #
 define bareos::console::director (
-  $ensure = present,
-  $address = undef,
-  $description = undef,
-  $dir_port = undef,
-  $heartbeat_interval = undef,
-  $password = undef,
-  $tls_allowed_cn = undef,
-  $tls_authenticate = undef,
-  $tls_ca_certificate_dir = undef,
-  $tls_ca_certificate_file = undef,
-  $tls_certificate = undef,
-  $tls_certificate_revocation_list = undef,
-  $tls_cipher_list = undef,
-  $tls_dh_file = undef,
-  $tls_enable = undef,
-  $tls_key = undef,
-  $tls_require = undef,
-  $tls_verify_peer = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[String[1]] $address = undef,
+  Optional[String[1]] $description = undef,
+  Optional[Integer[0]] $dir_port = undef,
+  Optional[String[1]] $heartbeat_interval = undef,
+  Optional[String[1]] $password = undef,
+  Optional[Variant[Array[String[1]],String[1]]]$tls_allowed_cn = undef,
+  Optional[Boolean] $tls_authenticate = undef,
+  Optional[String[1]] $tls_ca_certificate_dir = undef,
+  Optional[String[1]] $tls_ca_certificate_file = undef,
+  Optional[String[1]] $tls_certificate = undef,
+  Optional[String[1]] $tls_certificate_revocation_list = undef,
+  Optional[String[1]] $tls_cipher_list = undef,
+  Optional[String[1]] $tls_dh_file = undef,
+  Optional[Boolean] $tls_enable = undef,
+  Optional[String[1]] $tls_key = undef,
+  Optional[Boolean] $tls_require = undef,
+  Optional[Boolean] $tls_verify_peer = undef,
 ) {
   include bareos::console
 
   $_resource = 'Director'
   $_resource_dir = 'director'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director.pp b/manifests/director.pp
index abb8837..2dc1128 100644
--- a/manifests/director.pp
+++ b/manifests/director.pp
@@ -27,29 +27,29 @@
 # This class will be automatically included when a resource is defined.
 # It is not intended to be used directly by external resources like node definitions or other modules.
 class bareos::director (
-  $manage_service             = $bareos::manage_service,
-  $manage_package             = $bareos::manage_package,
-  $manage_database            = $bareos::manage_database,
-  $package_name               = $bareos::director_package_name,
-  $package_ensure             = $bareos::package_ensure,
-  $service_name               = $bareos::director_service_name,
-  $service_allow_restart      = $bareos::director_service_allow_restart,
-  $service_ensure             = $bareos::service_ensure,
-  $service_enable             = $bareos::service_enable,
-  $config_dir                 = "${bareos::config_dir}/bareos-dir.d",
-  Array[String] $managed_dirs = $bareos::director_managed_dirs,
-  Hash $catalogs              = {},
-  Hash $clients               = {},
-  Hash $consoles              = {},
-  Hash $counters              = {},
-  Hash $filesets              = {},
-  Hash $jobs                  = {},
-  Hash $jobdefs               = {},
-  Hash $messages              = {},
-  Hash $pools                 = {},
-  Hash $profiles              = {},
-  Hash $schedules             = {},
-  Hash $storages              = {},
+  Boolean $manage_service          = $bareos::manage_service,
+  Boolean $manage_package          = $bareos::manage_package,
+  Boolean $manage_database         = $bareos::manage_database,
+  Array[String[1]] $package_name   = $bareos::director_package_name,
+  String[1] $package_ensure        = $bareos::package_ensure,
+  String[1] $service_name          = $bareos::director_service_name,
+  Boolean $service_allow_restart   = $bareos::director_service_allow_restart,
+  String[1] $service_ensure        = $bareos::service_ensure,
+  Boolean $service_enable          = $bareos::service_enable,
+  Stdlib::Absolutepath $config_dir = "${bareos::config_dir}/bareos-dir.d",
+  Array[String] $managed_dirs      = $bareos::director_managed_dirs,
+  Hash $catalogs                   = {},
+  Hash $clients                    = {},
+  Hash $consoles                   = {},
+  Hash $counters                   = {},
+  Hash $filesets                   = {},
+  Hash $jobs                       = {},
+  Hash $jobdefs                    = {},
+  Hash $messages                   = {},
+  Hash $pools                      = {},
+  Hash $profiles                   = {},
+  Hash $schedules                  = {},
+  Hash $storages                   = {},
 ) inherits bareos {
   include bareos::director::director
 
diff --git a/manifests/director/catalog.pp b/manifests/director/catalog.pp
index b680895..747c975 100644
--- a/manifests/director/catalog.pp
+++ b/manifests/director/catalog.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param db_address
 #   Db Address
 #
@@ -128,7 +129,7 @@
 #   Required: false
 #
 define bareos::director::catalog (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $db_address = undef,
   $db_driver = undef,
   $db_name = undef,
@@ -152,10 +153,6 @@
   $_resource = 'Catalog'
   $_resource_dir = 'catalog'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director/client.pp b/manifests/director/client.pp
index a601c79..6e074fa 100644
--- a/manifests/director/client.pp
+++ b/manifests/director/client.pp
@@ -2,8 +2,10 @@
 #   To define what Client is to be backed up.
 #   You will generally have multiple Client definitions.
 #   Each Job will reference only a single client.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -272,7 +274,7 @@
 #   Required: false
 #
 define bareos::director::client (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $address = undef,
   $auth_type = undef,
   $auto_prune = undef,
@@ -317,10 +319,6 @@
   $_resource = 'Client'
   $_resource_dir = 'client'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_catalog = $catalog ? { undef => undef, default => Bareos::Director::Catalog[$catalog] }
 
diff --git a/manifests/director/console.pp b/manifests/director/console.pp
index 2a5b53b..b2982eb 100644
--- a/manifests/director/console.pp
+++ b/manifests/director/console.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param catalog_acl
 #   Catalog ACL
 #
@@ -229,10 +230,6 @@
   $_resource = 'Console'
   $_resource_dir = 'console'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_profiles = $profile ? { undef => undef, default => Bareos::Director::Profile[$profile] }
 
diff --git a/manifests/director/counter.pp b/manifests/director/counter.pp
index 256be4d..280d253 100644
--- a/manifests/director/counter.pp
+++ b/manifests/director/counter.pp
@@ -40,7 +40,7 @@
 #   Required: false
 #
 define bareos::director::counter (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $catalog = undef,
   $description = undef,
   $maximum = undef,
@@ -52,10 +52,6 @@
   $_resource = 'Counter'
   $_resource_dir = 'counter'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_catalog = $catalog ? { undef => undef, default => Bareos::Director::Catalog[$catalog] }
 
diff --git a/manifests/director/director.pp b/manifests/director/director.pp
index 74f9cea..7ebeaf0 100644
--- a/manifests/director/director.pp
+++ b/manifests/director/director.pp
@@ -345,7 +345,7 @@
 #   Required: false
 #
 class bareos::director::director (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $absolute_job_timeout = undef,
   $audit_events = undef,
   $auditing = undef,
@@ -363,17 +363,17 @@
   $maximum_connections = undef,
   $maximum_console_connections = undef,
   $messages = undef,
-  $name_director = 'bareos-dir',
+  String[1] $name_director = 'bareos-dir',
   $ndmp_log_level = undef,
   $ndmp_snooping = undef,
   $omit_defaults = undef,
   $optimize_for_size = undef,
   $optimize_for_speed = undef,
-  $password = 'PleaseChangeMe',
+  String[1] $password = 'PleaseChangeMe',
   $pid_directory = undef,
   $plugin_directory = undef,
   $plugin_names = undef,
-  $query_file = '/usr/lib/bareos/scripts/query.sql',
+  String[1] $query_file = '/usr/lib/bareos/scripts/query.sql',
   $scripts_directory = undef,
   $sd_connect_timeout = undef,
   $secure_erase_command = undef,
@@ -400,10 +400,6 @@
   $_resource = 'Director'
   $_resource_dir = 'director'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_messages = $messages ? { undef => undef, default => Bareos::Director::Messages[$messages] }
 
diff --git a/manifests/director/fileset.pp b/manifests/director/fileset.pp
index e1cf21f..1b7fc56 100644
--- a/manifests/director/fileset.pp
+++ b/manifests/director/fileset.pp
@@ -1,8 +1,10 @@
 # @summary 
 #   To define the set of files to be backed up for each Client.
 #   You may have any number of FileSets but each Job will reference only one.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param description
 #   Description
 #
@@ -39,7 +41,7 @@
 #   Required: false
 #
 define bareos::director::fileset (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $description = undef,
   $enable_vss = undef,
   $exclude = undef,
@@ -51,10 +53,6 @@
   $_resource = 'FileSet'
   $_resource_dir = 'fileset'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director/job.pp b/manifests/director/job.pp
index 37da5fe..683b91e 100644
--- a/manifests/director/job.pp
+++ b/manifests/director/job.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param accurate
 #   Accurate
 #
@@ -591,7 +592,7 @@
 #   Required: false
 #
 define bareos::director::job (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $accurate = undef,
   $add_prefix = undef,
   $add_suffix = undef,
@@ -681,10 +682,6 @@
   $_resource = 'Job'
   $_resource_dir = 'job'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     # this can be specified in an jobdef or not, do not check here if jobdef is used
     if $job_defs != undef {
diff --git a/manifests/director/jobdefs.pp b/manifests/director/jobdefs.pp
index 908cefe..a1452ce 100644
--- a/manifests/director/jobdefs.pp
+++ b/manifests/director/jobdefs.pp
@@ -1,8 +1,10 @@
 # @summary 
 #   JobDefs are optional resources for providing defaults for Job resources.
 #   Almost the same like `Job`.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param accurate
 #   Accurate
 #
@@ -591,7 +593,7 @@
 #   Required: false
 #
 define bareos::director::jobdefs (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $accurate = undef,
   $add_prefix = undef,
   $add_suffix = undef,
@@ -681,10 +683,6 @@
   $_resource = 'JobDefs'
   $_resource_dir = 'jobdefs'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     # set various resource dependencies
     $_require_res_catalog = $catalog ? { undef => undef, default => Bareos::Director::Catalog[$catalog] }
diff --git a/manifests/director/messages.pp b/manifests/director/messages.pp
index a3eec3e..e876036 100644
--- a/manifests/director/messages.pp
+++ b/manifests/director/messages.pp
@@ -129,7 +129,7 @@
 #   Required: false
 #
 define bareos::director::messages (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $append = undef,
   $catalog = undef,
   $console = undef,
@@ -152,10 +152,6 @@
   $_resource = 'Messages'
   $_resource_dir = 'messages'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director/pool.pp b/manifests/director/pool.pp
index b8784d7..da101fd 100644
--- a/manifests/director/pool.pp
+++ b/manifests/director/pool.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param action_on_purge
 #   Action On Purge
 #
@@ -222,7 +223,7 @@
 #   Required: false
 #
 define bareos::director::pool (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $action_on_purge = undef,
   $auto_prune = undef,
   $catalog = undef,
@@ -260,10 +261,6 @@
   $_resource = 'Pool'
   $_resource_dir = 'pool'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     # set various resource dependencies
     $_require_res_catalog = $catalog ? { undef => undef, default => Bareos::Director::Catalog[$catalog] }
diff --git a/manifests/director/profile.pp b/manifests/director/profile.pp
index 0aa9d42..863998d 100644
--- a/manifests/director/profile.pp
+++ b/manifests/director/profile.pp
@@ -82,7 +82,7 @@
 #   Required: false
 #
 define bareos::director::profile (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $catalog_acl = undef,
   $client_acl = undef,
   $command_acl = undef,
@@ -100,10 +100,6 @@
   $_resource = 'Profile'
   $_resource_dir = 'profile'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director/schedule.pp b/manifests/director/schedule.pp
index 93e201b..db60f34 100644
--- a/manifests/director/schedule.pp
+++ b/manifests/director/schedule.pp
@@ -27,7 +27,7 @@
 #   Required: false
 #
 define bareos::director::schedule (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $description = undef,
   $enabled = undef,
   $run = undef,
@@ -37,10 +37,6 @@
   $_resource = 'Schedule'
   $_resource_dir = 'schedule'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/director/storage.pp b/manifests/director/storage.pp
index c8e4140..15e06d0 100644
--- a/manifests/director/storage.pp
+++ b/manifests/director/storage.pp
@@ -1,8 +1,10 @@
 # @summary 
 #   To define on what physical device the Volumes should be mounted.
 #   You may have one or more Storage definitions.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -237,7 +239,7 @@
 #   Required: false
 #
 define bareos::director::storage (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $address = undef,
   $allow_compression = undef,
   $auth_type = undef,
@@ -277,10 +279,6 @@
   $_resource = 'Storage'
   $_resource_dir = 'storage'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_storage = $paired_storage ? { undef => undef, default => Bareos::Director::Storage[$paired_storage] }
 
diff --git a/manifests/init.pp b/manifests/init.pp
index f253333..27dd9d6 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -32,36 +32,35 @@
 #   Whether puppet is allowed to restart the director service. If not it will reload
 #
 class bareos (
-  $config_dir                         = $bareos::params::config_dir,
-  $config_dir_webui                   = $bareos::params::config_dir_webui,
-  $file_owner                         = $bareos::params::file_owner,
-  $file_group                         = $bareos::params::file_group,
-  $file_mode                          = $bareos::params::file_mode,
-  $file_dir_mode                      = $bareos::params::file_dir_mode,
-  String  $repo_release               = '21',
-  Boolean $repo_subscription          = false,
-  Optional[String[1]]  $repo_username = undef,
-  Optional[String[1]]  $repo_password = undef,
-  Boolean $manage_package             = true,
-  Boolean $manage_service             = true,
-  Boolean $manage_database            = true,
-  String  $package_ensure             = present,
-  String  $service_ensure             = running,
-  Boolean $service_enable             = true,
-  Boolean $manage_repo                = true,
-  Boolean $manage_user                = true,
-  String  $package_name               = 'bareos-common',
-
-  $console_package_name           = $bareos::params::console_package_name,
-  $monitor_package_name           = $bareos::params::monitor_package_name,
-  $director_package_name          = $bareos::params::director_package_name,
-  $director_service_name          = $bareos::params::director_service_name,
-  $director_service_allow_restart = false,
-  $director_managed_dirs          = $bareos::params::director_managed_dirs,
-  $client_package_name            = $bareos::params::client_package_name,
-  $client_service_name            = $bareos::params::client_service_name,
-  $storage_package_name           = $bareos::params::storage_package_name,
-  $storage_service_name           = $bareos::params::storage_service_name,
+  Stdlib::Absolutepath $config_dir        = $bareos::params::config_dir,
+  Stdlib::Absolutepath $config_dir_webui  = $bareos::params::config_dir_webui,
+  String[1] $file_owner                   = $bareos::params::file_owner,
+  String[1] $file_group                   = $bareos::params::file_group,
+  String[1] $file_mode                    = $bareos::params::file_mode,
+  String[1] $file_dir_mode                = $bareos::params::file_dir_mode,
+  String[1] $repo_release                 = '21',
+  Boolean $repo_subscription              = false,
+  Optional[String[1]] $repo_username      = undef,
+  Optional[String[1]] $repo_password      = undef,
+  Boolean $manage_package                 = true,
+  Boolean $manage_service                 = true,
+  Boolean $manage_database                = true,
+  String[1] $package_ensure               = present,
+  String[1] $service_ensure               = running,
+  Boolean $service_enable                 = true,
+  Boolean $manage_repo                    = true,
+  Boolean $manage_user                    = true,
+  String[1] $package_name                 = 'bareos-common',
+  String[1] $console_package_name         = $bareos::params::console_package_name,
+  String[1] $monitor_package_name         = $bareos::params::monitor_package_name,
+  Array[String[1]] $director_package_name = $bareos::params::director_package_name,
+  String[1] $director_service_name        = $bareos::params::director_service_name,
+  Boolean $director_service_allow_restart = false,
+  Array[String[1]] $director_managed_dirs = $bareos::params::director_managed_dirs,
+  Array[String[1]] $client_package_name   = $bareos::params::client_package_name,
+  String[1] $client_service_name          = $bareos::params::client_service_name,
+  Array[String[1]] $storage_package_name  = $bareos::params::storage_package_name,
+  String[1] $storage_service_name         = $bareos::params::storage_service_name,
 ) inherits bareos::params {
   if $manage_repo {
     class { 'bareos::repository':
diff --git a/manifests/monitor.pp b/manifests/monitor.pp
index de87c8d..81981fa 100644
--- a/manifests/monitor.pp
+++ b/manifests/monitor.pp
@@ -8,10 +8,10 @@
 # This class will be automatically included when a resource is defined.
 # It is not intended to be used directly by external resources like node definitions or other modules.
 class bareos::monitor (
-  $manage_package = $bareos::manage_package,
-  $package_name   = $bareos::monitor_package_name,
-  $package_ensure = $bareos::package_ensure,
-  $config_dir     = "${bareos::config_dir}/tray-monitor.d"
+  Boolean $manage_package          = $bareos::manage_package,
+  String[1] $package_name          = $bareos::monitor_package_name,
+  String[1] $package_ensure        = $bareos::package_ensure,
+  Stdlib::Absolutepath $config_dir = "${bareos::config_dir}/tray-monitor.d"
 ) inherits bareos {
   if $manage_package {
     package { $package_name:
diff --git a/manifests/monitor/client.pp b/manifests/monitor/client.pp
index 88946b0..44049ee 100644
--- a/manifests/monitor/client.pp
+++ b/manifests/monitor/client.pp
@@ -1,7 +1,9 @@
 # @summary 
 #   The Client resource defines the attributes of the Clients that are monitored by this Monitor.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -38,7 +40,7 @@
 #   Required: true
 #
 define bareos::monitor::client (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $address = undef,
   $description = undef,
   $enable_ssl = undef,
@@ -50,10 +52,6 @@
   $_resource = 'Client'
   $_resource_dir = 'client'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/monitor/director.pp b/manifests/monitor/director.pp
index f7cc759..b0d0360 100644
--- a/manifests/monitor/director.pp
+++ b/manifests/monitor/director.pp
@@ -1,7 +1,9 @@
 # @summary 
 #   The Director resource defines the attributes of the Directors that are monitored by this Monitor.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -31,7 +33,7 @@
 #   Required: false
 #
 define bareos::monitor::director (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $address = undef,
   $description = undef,
   $dir_port = undef,
@@ -42,10 +44,6 @@
   $_resource = 'Director'
   $_resource_dir = 'director'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/monitor/monitor.pp b/manifests/monitor/monitor.pp
index 79f5767..d9d46df 100644
--- a/manifests/monitor/monitor.pp
+++ b/manifests/monitor/monitor.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param description
 #   Description
 #
@@ -53,7 +54,7 @@
 #   Required: false
 #
 define bareos::monitor::monitor (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $description = undef,
   $dir_connect_timeout = undef,
   $fd_connect_timeout = undef,
@@ -67,10 +68,6 @@
   $_resource = 'Monitor'
   $_resource_dir = 'monitor'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/monitor/storage.pp b/manifests/monitor/storage.pp
index f60b1dc..48ce248 100644
--- a/manifests/monitor/storage.pp
+++ b/manifests/monitor/storage.pp
@@ -1,7 +1,9 @@
 # @summary
 #   The Storage resource defines the attributes of the Storages that are monitored by this Monitor.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param address
 #   Address
 #
@@ -52,7 +54,7 @@
 #   Required: false
 #
 define bareos::monitor::storage (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $address = undef,
   $description = undef,
   $enable_ssl = undef,
@@ -66,10 +68,6 @@
   $_resource = 'Storage'
   $_resource_dir = 'storage'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/profile/client.pp b/manifests/profile/client.pp
index 23df4b4..deff054 100644
--- a/manifests/profile/client.pp
+++ b/manifests/profile/client.pp
@@ -4,9 +4,9 @@
 # @param name_dir
 # @param password
 class bareos::profile::client (
-  $name_client = $facts['networking']['fqdn'],
-  $name_dir = 'bareos-dir',
-  $password = 'MyClientPasswordPleaseChange',
+  String[1] $name_client = $facts['networking']['fqdn'],
+  String[1] $name_dir    = 'bareos-dir',
+  String[1] $password    = 'MyClientPasswordPleaseChange',
 ) {
   # default client
   class { 'bareos::client::client':
diff --git a/manifests/profile/director.pp b/manifests/profile/director.pp
index a1baee1..402df3f 100644
--- a/manifests/profile/director.pp
+++ b/manifests/profile/director.pp
@@ -7,14 +7,14 @@
 # @param storage_password
 #
 class bareos::profile::director (
-  $password = 'MyDirectorPasswordPleaseChange',
-  $name_dir = 'bareos-dir',
-  $catalog_conf = {
+  String[1] $password = 'MyDirectorPasswordPleaseChange',
+  String[1] $name_dir = 'bareos-dir',
+  Hash $catalog_conf = {
     'db_driver' => 'postgresql',
     'db_name'   => 'bareos_mycatalog',
   },
-  $storage_address = 'localhost',
-  $storage_password = 'BareosStoragePleaseChangeMe',
+  Stdlib::Host $storage_address = 'localhost',
+  String[1] $storage_password = 'BareosStoragePleaseChangeMe',
 ) {
   # ensure bconsole is installed and can connect to director
   bareos::console::director { $name_dir:
diff --git a/manifests/profile/director/client.pp b/manifests/profile/director/client.pp
index 98916d8..2bb6d5f 100644
--- a/manifests/profile/director/client.pp
+++ b/manifests/profile/director/client.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::client
-# Default client, backup bareos director itself
+# @summary 
+#   Default client, backup bareos director itself
+#
 class bareos::profile::director::client {
   $password = fqdn_rand_string(20,'','bareos-fd-password')
 
diff --git a/manifests/profile/director/fileset.pp b/manifests/profile/director/fileset.pp
index bfb5a4e..6f7a596 100644
--- a/manifests/profile/director/fileset.pp
+++ b/manifests/profile/director/fileset.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::fileset
-# Default filesets
+# @summary 
+#   Default filesets
+#
 class bareos::profile::director::fileset {
   bareos::director::fileset { 'BareosCatalog':
     description => 'Backup the catalog dump and Bareos configuration files.',
diff --git a/manifests/profile/director/jobdefs.pp b/manifests/profile/director/jobdefs.pp
index 1db40e9..019efed 100644
--- a/manifests/profile/director/jobdefs.pp
+++ b/manifests/profile/director/jobdefs.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::jobdefs
-# Default jobdefs
+# @summary 
+#   Default jobdefs
+#
 class bareos::profile::director::jobdefs {
   bareos::director::jobdefs { 'DefaultJob':
     type                     => 'backup',
diff --git a/manifests/profile/director/messages.pp b/manifests/profile/director/messages.pp
index d530aa6..19dad9a 100644
--- a/manifests/profile/director/messages.pp
+++ b/manifests/profile/director/messages.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::messages
-# Default messages
+# @summary 
+#   Default messages
+#
 class bareos::profile::director::messages {
   bareos::director::messages { 'Daemon':
     description  => 'Message delivery for daemon messages (no job).',
diff --git a/manifests/profile/director/pool.pp b/manifests/profile/director/pool.pp
index 75f47ad..3f22588 100644
--- a/manifests/profile/director/pool.pp
+++ b/manifests/profile/director/pool.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::pool
-# Some default pools
+# @summary 
+#   Some default pools
+#
 class bareos::profile::director::pool {
   bareos::director::pool { 'Differential':
     pool_type            => 'Backup',
diff --git a/manifests/profile/director/schedule.pp b/manifests/profile/director/schedule.pp
index c2c88cd..8a88771 100644
--- a/manifests/profile/director/schedule.pp
+++ b/manifests/profile/director/schedule.pp
@@ -1,5 +1,6 @@
-# == Class: bareos::profile::director::schedule
-# Default schedules
+# @summary 
+#   Default schedules
+#
 class bareos::profile::director::schedule {
   # Default Cycles
   bareos::director::schedule { 'WeeklyCycle':
diff --git a/manifests/profile/director/storage.pp b/manifests/profile/director/storage.pp
index 7ea597f..704d7b1 100644
--- a/manifests/profile/director/storage.pp
+++ b/manifests/profile/director/storage.pp
@@ -3,8 +3,8 @@
 # @param address
 # @param password
 class bareos::profile::director::storage (
-  $address = 'localhost',
-  $password = 'BareosStoragePleaseChangeMe',
+  Stdlib::Host $address = 'localhost',
+  String[1] $password   = 'BareosStoragePleaseChangeMe',
 ) {
   bareos::director::storage { 'File':
     address    => $address,
diff --git a/manifests/profile/storage.pp b/manifests/profile/storage.pp
index 12f1e21..a347ca1 100644
--- a/manifests/profile/storage.pp
+++ b/manifests/profile/storage.pp
@@ -4,10 +4,10 @@
 # @param archive_device
 #
 class bareos::profile::storage (
-  $name_storage = 'bareos-sd',
-  $name_dir = 'bareos-dir',
-  $password = 'BareosStoragePleaseChangeMe',
-  $archive_device = '/var/lib/bareos/storage',
+  String[1] $name_storage              = 'bareos-sd',
+  String[1] $name_dir                  = 'bareos-dir',
+  String[1] $password                  = 'BareosStoragePleaseChangeMe',
+  Stdlib::Absolutepath $archive_device = '/var/lib/bareos/storage',
 ) {
   class { 'bareos::storage::storage':
     name_storage => $name_storage,
diff --git a/manifests/storage.pp b/manifests/storage.pp
index 970436f..bfa0bbc 100644
--- a/manifests/storage.pp
+++ b/manifests/storage.pp
@@ -17,19 +17,19 @@
 # This class will be automatically included when a resource is defined.
 # It is not intended to be used directly by external resources like node definitions or other modules.
 class bareos::storage (
-  $manage_service    = $bareos::manage_service,
-  $manage_package    = $bareos::manage_package,
-  $package_name      = $bareos::storage_package_name,
-  $package_ensure    = $bareos::package_ensure,
-  $service_name      = $bareos::storage_service_name,
-  $service_ensure    = $bareos::service_ensure,
-  $service_enable    = $bareos::service_enable,
-  $config_dir        = "${bareos::config_dir}/bareos-sd.d",
-  Hash $autochangers = {},
-  Hash $devices      = {},
-  Hash $directors    = {},
-  Hash $messages     = {},
-  Hash $ndmps        = {},
+  Boolean $manage_service          = $bareos::manage_service,
+  Boolean $manage_package          = $bareos::manage_package,
+  Array[String[1]] $package_name   = $bareos::storage_package_name,
+  String[1] $package_ensure        = $bareos::package_ensure,
+  String[1] $service_name          = $bareos::storage_service_name,
+  String[1] $service_ensure        = $bareos::service_ensure,
+  Boolean $service_enable          = $bareos::service_enable,
+  Stdlib::Absolutepath $config_dir = "${bareos::config_dir}/bareos-sd.d",
+  Hash $autochangers               = {},
+  Hash $devices                    = {},
+  Hash $directors                  = {},
+  Hash $messages                   = {},
+  Hash $ndmps                      = {},
 ) inherits bareos {
   include bareos::storage::storage
 
diff --git a/manifests/storage/autochanger.pp b/manifests/storage/autochanger.pp
index fd9a526..bae2f77 100644
--- a/manifests/storage/autochanger.pp
+++ b/manifests/storage/autochanger.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param changer_command
 #   Changer Command
 #
@@ -33,7 +34,7 @@
 #   Required: true
 #
 define bareos::storage::autochanger (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $changer_command = undef,
   $changer_device = undef,
   $description = undef,
@@ -44,10 +45,6 @@
   $_resource = 'Autochanger'
   $_resource_dir = 'autochanger'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_resource = [
       Bareos::Storage::Device[$device],
diff --git a/manifests/storage/device.pp b/manifests/storage/device.pp
index a6d12c5..1ce1f23 100644
--- a/manifests/storage/device.pp
+++ b/manifests/storage/device.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param alert_command
 #   Alert Command
 #
@@ -438,7 +439,7 @@
 #   Required: false
 #
 define bareos::storage::device (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $alert_command = undef,
   $always_open = undef,
   $archive_device = undef,
@@ -507,10 +508,6 @@
   $_resource = 'Device'
   $_resource_dir = 'device'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/storage/director.pp b/manifests/storage/director.pp
index 6e84cb8..993dbc8 100644
--- a/manifests/storage/director.pp
+++ b/manifests/storage/director.pp
@@ -125,7 +125,7 @@
 #   Required: false
 #
 define bareos::storage::director (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $description = undef,
   $key_encryption_key = undef,
   $maximum_bandwidth_per_job = undef,
@@ -149,10 +149,6 @@
   $_resource = 'Director'
   $_resource_dir = 'director'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/storage/messages.pp b/manifests/storage/messages.pp
index 54a01c6..6bee4ea 100644
--- a/manifests/storage/messages.pp
+++ b/manifests/storage/messages.pp
@@ -127,7 +127,7 @@
 #   Required: false
 #
 define bareos::storage::messages (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $append = undef,
   $catalog = undef,
   $console = undef,
@@ -150,10 +150,6 @@
   $_resource = 'Messages'
   $_resource_dir = 'messages'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/storage/ndmp.pp b/manifests/storage/ndmp.pp
index 02fbc31..d9d324f 100644
--- a/manifests/storage/ndmp.pp
+++ b/manifests/storage/ndmp.pp
@@ -3,6 +3,7 @@
 #
 # @param ensure
 #   present or absent the config file.
+#
 # @param auth_type
 #   Auth Type
 #
@@ -12,49 +13,33 @@
 #
 # @param description
 #   Description
-#
 #   Bareos Datatype: string
-#   Bareos Default: Not set
-#   Required: false
 #
 # @param log_level
 #   Log Level
-#
 #   Bareos Datatype: pint32
-#   Bareos Default: 4
-#   Required: false
 #
 # @param password
 #   Password
-#
 #   Bareos Datatype: autopassword
-#   Bareos Default: Not set
-#   Required: true
 #
 # @param username
 #   Username
-#
 #   Bareos Datatype: string
-#   Bareos Default: Not set
-#   Required: true
 #
 define bareos::storage::ndmp (
-  $ensure = present,
-  $auth_type = undef,
-  $description = undef,
-  $log_level = undef,
-  $password = undef,
-  $username = undef,
+  Optional[String[1]] $auth_type   = undef,
+  Optional[String[1]] $password    = undef,
+  Optional[String[1]] $username    = undef,
+  Optional[Integer[0]] $log_level  = undef,
+  Enum['present','absent'] $ensure = present,
+  Optional[String[1]] $description = undef,
 ) {
   include bareos::storage
 
   $_resource = 'Ndmp'
   $_resource_dir = 'ndmp'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_settings = bareos_settings([$name, 'Name', 'name', true],
       [$description, 'Description', 'string', false],
diff --git a/manifests/storage/storage.pp b/manifests/storage/storage.pp
index 0ed7886..4e4b385 100644
--- a/manifests/storage/storage.pp
+++ b/manifests/storage/storage.pp
@@ -1,7 +1,9 @@
 # @summary
 #   In general, the properties specified under the Storage resource dene global properties of the Storage daemon.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param absolute_job_timeout
 #   Absolute Job Timeout
 #
@@ -370,7 +372,7 @@
 #   Required: false
 #
 class bareos::storage::storage (
-  $ensure = present,
+  Enum['present','absent'] $ensure = present,
   $absolute_job_timeout = undef,
   $allow_bandwidth_bursting = undef,
   $auto_x_flate_on_replication = undef,
@@ -390,7 +392,7 @@
   $maximum_connections = undef,
   $maximum_network_buffer_size = undef,
   $messages = undef,
-  $name_storage = 'bareos-sd',
+  String[1] $name_storage = 'bareos-sd',
   $ndmp_address = undef,
   $ndmp_addresses = undef,
   $ndmp_enable = undef,
@@ -411,7 +413,7 @@
   $sub_sys_directory = undef,
   $tls_allowed_cn = undef,
   $tls_authenticate = undef,
-  $tls_ca_certificate_dir = undef,
+  Optional[String[1]] $tls_ca_certificate_dir = undef,
   $tls_ca_certificate_file = undef,
   $tls_certificate = undef,
   $tls_certificate_revocation_list = undef,
@@ -422,17 +424,13 @@
   $tls_require = undef,
   $tls_verify_peer = undef,
   $ver_id = undef,
-  $working_directory = undef,
+  Optional[String[1]] $working_directory      = undef,
 ) {
   include bareos::storage
 
   $_resource = 'Storage'
   $_resource_dir = 'storage'
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     $_require_res_messages = $messages ? { undef => undef, default => Bareos::Storage::Messages[$messages] }
 
diff --git a/manifests/webui.pp b/manifests/webui.pp
index 18e41b7..6ce94b6 100644
--- a/manifests/webui.pp
+++ b/manifests/webui.pp
@@ -18,22 +18,21 @@
 # @param directors
 #
 class bareos::webui (
-  $manage_service = $bareos::manage_service,
-  $manage_package = $bareos::manage_package,
-  $package_name   = $bareos::webui_package_name,
-  $package_ensure = $bareos::package_ensure,
-  $service_name   = $bareos::webui_service_name,
-  $service_ensure = $bareos::service_ensure,
-  $service_enable = $bareos::service_enable,
-  $config_dir     = $bareos::config_dir_webui,
-
-  $manage_local_dir = true, # setup local bareos director
-  $session_timeout = 3600,
-  $pagination_values = '10,25,50,100',
-  $pagination_default_value = 25,
-  $save_previous_state = false,
-  $label_pooltype = '',
-  $directors = {},
+  Boolean $manage_service              = $bareos::manage_service,
+  Boolean $manage_package              = $bareos::manage_package,
+  String[1] $package_name              = $bareos::webui_package_name,
+  String[1] $package_ensure            = $bareos::package_ensure,
+  String[1] $service_name              = $bareos::webui_service_name,
+  String[1] $service_ensure            = $bareos::service_ensure,
+  Boolean $service_enable              = $bareos::service_enable,
+  Stdlib::Absolutepath $config_dir     = $bareos::config_dir_webui,
+  Boolean $manage_local_dir            = true, # setup local bareos director
+  Integer[0] $session_timeout          = 3600,
+  String[1] $pagination_values         = '10,25,50,100',
+  Integer[0] $pagination_default_value = 25,
+  Boolean $save_previous_state         = false,
+  String $label_pooltype               = '',
+  Hash $directors                      = {},
 ) inherits bareos {
   if $manage_package {
     package { $package_name:
diff --git a/manifests/webui/director.pp b/manifests/webui/director.pp
index 8424596..32402e3 100644
--- a/manifests/webui/director.pp
+++ b/manifests/webui/director.pp
@@ -1,7 +1,9 @@
 # @summary 
 #   Configures an director to use with the webui.
+#
 # @param ensure
 #   present or absent the config file.
+#
 # @param catalog
 #   Catalog
 #
@@ -50,10 +52,6 @@
 ) {
   include bareos::webui
 
-  unless $ensure in ['present', 'absent'] {
-    fail('Invalid value for ensure')
-  }
-
   if $ensure == 'present' {
     # just for validation
     $_validate = bareos_settings([$catalog, 'Catalog', 'res', false],