{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Lobby server set",
    "description": "A set of lobby servers",
    "type": "array",
    "items": {
        "title": "Lobby server",
        "description": "A lobby server",
        "type": "object",
        "properties": {
            "version": {
                "description": "The lobby server engine version",
                "type": "string",
                "pattern": "^\\d+(\\.\\d+){1,3}$"
            },
            "host": {
                "description": "The lobby server host",
                "type": "string",
                "anyOf": [
                    {
                        "format": "host-name"
                    },
                    {
                        "format": "ipv4"
                    },
                    {
                        "format": "ipv6"
                    }
                ]
            },
            "port": {
                "description": "The TCP port on which the lobby server accepts connections",
                "type": "number",
                "minimum": 0,
                "maximum": 65535
            },
            "https_port": {
                "description": "Https lobby server port",
                "type": "number",
                "minimum": 0,
                "maximum": 65535
            },
            "message": {
                "description": "The message displayed when a user connects to an available lobby server",
                "type": [
                    "string",
                    "null"
                ]
            },
            "error_message": {
                "description": "The message displayed when a user connects to an unavailable lobby server",
                "type": [
                    "string",
                    "null"
                ]
            }
        },
        "required": [
            "version",
            "host",
            "port",
            "https_port",
            "message",
            "error_message"
        ],
        "additionalProperties": false
    }
}