From DcConfiguration and commands in BIND10

Specification files
-------------------

There is only 1 real mandatory element in the specification, and that is the name of the module.

The simplest specification file therefore looks like this:
{
  "module_spec": {
    "module_name": "my_module"
  }
}

This is the specification for a module that has no commands and no configuration options.

my_module is the name of the module, and also the name of the command channel it will automatically subscribe to.

To add a simple configuration option, let's say an int, we make it the following:
{
  "module_spec": {
    "module_name": "my_module"
    "config_data": [
      { "item_name": "some_number",
        "item_type": "integer",
        "item_optional": False,
        "item_default": 123
      }
    ]
  }
}

"config_data" contains a list of elements of the form
{ "item_name": "name"
  "item_type": "integer|real|boolean|string|list|map"
  "item_optional": True|False
  "item_default": <depends on type>
}

You can provide as much options as you need, and can also make compound elements
through "list_item_spec" for lists and "map_item_spec" for maps. See [link] for the
full documentation on specification files.
