{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "self": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "object",
                    "properties": {
                        "id": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "icon": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "id",
                        "name"
                    ]
                },
                "module": {
                    "type": "string"
                },
                "extra": {
                    "type": "object"
                }
            },
            "required": [
                "type",
                "module"
            ]
        },
        "zookeeper": {
            "type": "object",
            "properties": {
                "host": {
                    "type": "string"
                },
                "port": {
                    "type": "integer"
                }
            },
            "required": [
                "host",
                "port"
            ]
        },
        "meshblu_server": {
            "type": "object",
            "properties": {
                "db_url": {
                    "type": "string"
                },
                "host": {
                    "type": "string"
                },
                "port": {
                    "type": "integer"
                },
                "message_timeout": {
                    "type": "integer"
                }
            },
            "required": [
                "db_url",
                "host",
                "port",
                "message_timeout"
            ]
        }
    },
    "required": [
        "self",
        "zookeeper"
    ]
}