{
    "$schema": "http://json-schema.org/schema#",
    "$id": "https://www.fourmilab.ch/hotbits/json/hotbits.schema.json",
    "title": "HotBits Server Reply",
    "type": "object",
    "required": [
        "version",
        "schema",
        "status"
    ],
    "properties": {
        "version": {
            "type": "string",
            "description": "HotBits JSON output version"
        },
        "schema": {
            "type": "string",
            "description": "JSON schema describing data format",
            "format": "uri"
        },
        "status": {
            "type": "integer",
            "description": "Request status",
            "enum": [ 200, 201, 404, 500, 501, 503 ]
        },
        "statusMessage": {
            "type": "string",
            "description": "Text explanation of status"
        },
        "requestInformation": {
            "type": "object",
            "description": "Request information from server",
            "required": [
                "serverVersion",
                "generationTime",
                "bytesRequested",
                "bytesReturned",
                "quotaRequestsRemaining",
                "quotaBytesRemaining",
                "generatorType"
            ],
            "properties": {
                "serverVersion": {
                    "type": "string"
                },
                "generationTime": {
                    "type": "string",
                    "format": "date-time"
                },
                "bytesRequested": {
                    "type": "integer"
                },
                "bytesReturned": {
                    "type": "integer"
                },
                "quotaRequestsRemaining": {
                    "type": "integer"
                },
                "quotaBytesRemaining": {
                    "type": "integer"
                },
                "generatorType": {
                    "type": "string",
                    "enum": [ "random", "pseudorandom", "secondary" ]
                }
            }
        },
        "data": {
            "type": "array",
            "description": "Data from HotBits server",
            "items": {
                "type": "integer",
                "minumum": 0,
                "maximum": 255
            }
        },
        "retirementNotice": {
            "type": "array",
            "description": "Optional retirement notice",
            "items": {
                "type": "string"
            }
        }
    }
}
