{
  "module_spec": {
    "module_name": "Auth",
    "module_description": "Authoritative service",
    "config_data": [
      { "item_name": "database_file",
        "item_type": "string",
        "item_optional": true,
        "item_default": "@@LOCALSTATEDIR@@/@PACKAGE@/zone.sqlite3"
      },
      { "item_name": "datasources",
        "item_type": "list",
        "item_optional": true,
        "item_default": [],
        "list_item_spec":
        { "item_name": "list_element",
          "item_type": "map",
          "item_optional": false,
          "item_default": {},
          "map_item_spec": [
          { "item_name": "type",
            "item_type": "string",
            "item_optional": false,
            "item_default": ""
          },
          { "item_name": "class",
            "item_type": "string",
            "item_optional": false,
            "item_default": "IN"
          },
          { "item_name": "zones",
            "item_type": "list",
            "item_optional": false,
            "item_default": [],
            "list_item_spec":
            { "item_name": "list_element",
              "item_type": "map",
              "item_optional": true,
              "item_default": { "origin": "", "file": "" },
              "map_item_spec": [
              { "item_name": "origin",
                "item_type": "string",
                "item_optional": false,
                "item_default": ""
              },
              { "item_name": "file",
                "item_type": "string",
                "item_optional": false,
                "item_default": ""
              },
              { "item_name": "filetype",
                "item_type": "string",
                "item_optional": true
              }]
            }
          }]
        }
      },
      { "item_name": "statistics-interval",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 60
      },
      {
        "item_name": "listen_on",
        "item_type": "list",
        "item_optional": false,
        "item_default": [
          {
            "address": "::",
            "port": 53
          },
          {
            "address": "0.0.0.0",
            "port": 53
          }
        ],
        "list_item_spec": {
          "item_name": "address",
          "item_type": "map",
          "item_optional": false,
          "item_default": {},
          "map_item_spec": [
            {
              "item_name": "address",
              "item_type": "string",
              "item_optional": false,
              "item_default": "::1"
            },
            {
              "item_name": "port",
              "item_type": "integer",
              "item_optional": false,
              "item_default": 53
            }
          ]
        }
      }
    ],
    "commands": [
      {
        "command_name": "shutdown",
        "command_description": "Shut down authoritative DNS server",
        "command_args": [
          {
            "item_name": "pid",
            "item_type": "integer",
            "item_optional": true
          }
        ]
      },
      {
        "command_name": "sendstats",
        "command_description": "Send data to a statistics module at once",
        "command_args": []
      },
      {
        "command_name": "loadzone",
        "command_description": "(Re)load a specified zone",
        "command_args": [
          {
            "item_name": "class", "item_type": "string",
            "item_optional": true, "item_default": "IN"
          },
	  {
            "item_name": "origin", "item_type": "string",
            "item_optional": false, "item_default": ""
          }
        ]
      },
      {
        "command_name": "start_ddns_forwarder",
        "command_description": "(Re)start internal forwarding of DDNS Update messages. This is automatically called if b10-ddns is started, and is not expected to be called by administrators; it will be removed as a public command in the future.",
        "command_args": []
      },
      {
        "command_name": "stop_ddns_forwarder",
        "command_description": "Stop internal forwarding of DDNS Update messages. This is automatically called if b10-ddns is stopped, and is not expected to be called by administrators; it will be removed as a public command in the future.",
        "command_args": []
      }
    ],
    "statistics": [
      {
        "item_name": "queries.tcp",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 0,
        "item_title": "Queries TCP ",
        "item_description": "A number of total query counts which all auth servers receive over TCP since they started initially"
      },
      {
        "item_name": "queries.udp",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 0,
        "item_title": "Queries UDP",
        "item_description": "A number of total query counts which all auth servers receive over UDP since they started initially"
      },
      {
        "item_name": "opcode.query",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received query requests",
        "item_description": "The number of total request counts whose opcode is query"
      },
      {
        "item_name": "opcode.iquery",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received inverse query requests",
        "item_description": "The number of total request counts whose opcode is inverse query"
      },
      {
        "item_name": "opcode.status",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received status requests",
        "item_description": "The number of total request counts whose opcode is status"
      },
      {
        "item_name": "opcode.reserved3",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 3",
        "item_description": "The number of total request counts whose opcode is 3 (reserved)"
      },
      {
        "item_name": "opcode.notify",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received notify requests",
        "item_description": "The number of total request counts whose opcode is notify"
      },
      {
        "item_name": "opcode.update",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received update requests",
        "item_description": "The number of total request counts whose opcode is update"
      },
      {
        "item_name": "opcode.reserved6",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 6",
        "item_description": "The number of total request counts whose opcode is 6 (reserved)"
      },
      {
        "item_name": "opcode.reserved7",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 7",
        "item_description": "The number of total request counts whose opcode is 7 (reserved)"
      },
      {
        "item_name": "opcode.reserved8",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 8",
        "item_description": "The number of total request counts whose opcode is 8 (reserved)"
      },
      {
        "item_name": "opcode.reserved9",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 9",
        "item_description": "The number of total request counts whose opcode is 9 (reserved)"
      },
      {
        "item_name": "opcode.reserved10",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 10",
        "item_description": "The number of total request counts whose opcode is 10 (reserved)"
      },
      {
        "item_name": "opcode.reserved11",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 11",
        "item_description": "The number of total request counts whose opcode is 11 (reserved)"
      },
      {
        "item_name": "opcode.reserved12",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 12",
        "item_description": "The number of total request counts whose opcode is 12 (reserved)"
      },
      {
        "item_name": "opcode.reserved13",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 13",
        "item_description": "The number of total request counts whose opcode is 13 (reserved)"
      },
      {
        "item_name": "opcode.reserved14",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 14",
        "item_description": "The number of total request counts whose opcode is 14 (reserved)"
      },
      {
        "item_name": "opcode.reserved15",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Received requests opcode 15",
        "item_description": "The number of total request counts whose opcode is 15 (reserved)"
      },
      {
        "item_name": "rcode.noerror",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent success response",
        "item_description": "The number of total responses with rcode 0 (NOERROR)"
      },
      {
        "item_name": "rcode.formerr",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'format error' response",
        "item_description": "The number of total responses with rcode 1 (FORMERR)"
      },
      {
        "item_name": "rcode.servfail",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'server failure' response",
        "item_description": "The number of total responses with rcode 2 (SERVFAIL)"
      },
      {
        "item_name": "rcode.nxdomain",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'name error' response",
        "item_description": "The number of total responses with rcode 3 (NXDOMAIN)"
      },
      {
        "item_name": "rcode.notimp",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'not implemented' response",
        "item_description": "The number of total responses with rcode 4 (NOTIMP)"
      },
      {
        "item_name": "rcode.refused",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'refused' response",
        "item_description": "The number of total responses with rcode 5 (REFUSED)"
      },
      {
        "item_name": "rcode.yxdomain",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'name unexpectedly exists' response",
        "item_description": "The number of total responses with rcode 6 (YXDOMAIN)"
      },
      {
        "item_name": "rcode.yxrrset",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'rrset unexpectedly exists' response",
        "item_description": "The number of total responses with rcode 7 (YXRRSET)"
      },
      {
        "item_name": "rcode.nxrrset",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'no such rrset' response",
        "item_description": "The number of total responses with rcode 8 (NXRRSET)"
      },
      {
        "item_name": "rcode.notauth",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'not authoritative' response",
        "item_description": "The number of total responses with rcode 9 (NOTAUTH)"
      },
      {
        "item_name": "rcode.notzone",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'name not in zone' response",
        "item_description": "The number of total responses with rcode 10 (NOTZONE)"
      },
      {
        "item_name": "rcode.reserved11",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent response with rcode 11",
        "item_description": "The number of total responses with rcode 11 (reserved)"
      },
      {
        "item_name": "rcode.reserved12",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent response with rcode 12",
        "item_description": "The number of total responses with rcode 12 (reserved)"
      },
      {
        "item_name": "rcode.reserved13",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent response with rcode 13",
        "item_description": "The number of total responses with rcode 13 (reserved)"
      },
      {
        "item_name": "rcode.reserved14",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent response with rcode 14",
        "item_description": "The number of total responses with rcode 14 (reserved)"
      },
      {
        "item_name": "rcode.reserved15",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent response with rcode 15",
        "item_description": "The number of total responses with rcode 15 (reserved)"
      },
      {
        "item_name": "rcode.badvers",
        "item_type": "integer",
        "item_optional": true,
        "item_default": 0,
        "item_title": "Sent 'EDNS version not implemented' response",
        "item_description": "The number of total responses with rcode 16 (BADVERS)"
      }
    ]
  }
}
