You have to define a configuration template which defines which config paths are valid and which are the default values of them.
The template is a JSON file containing a map for all config paths.
Each path is a property containing a map with the property "defaultValue". The map might be extended with more properties in future versions.
The "defaultValue" property is optional. But either a default value or a user defined value in the configuration file must be set, otherwise an UnsetConfigValueException will be thrown on call of the getValue() method.
Example structure
Note: Trying to retrieve or set a value with a path not defined in the template will fail with an UnknownConfigValueException.