{
    "type": "record",
    "name": "AlarmClass",
    "namespace": "org.jlab.jaws.entity",
    "doc": "An alarm class",
    "fields": [
        {
            "name": "category",
            "type": {
                "type": "string",
                "avro.java.string": "String"
            },
            "doc": "The alarm category"
        },
        {
            "name": "priority",
            "type": "AlarmPriority",
            "doc": "The alarm priority"
        },
        {
            "name": "rationale",
            "type": {
                "type": "string",
                "avro.java.string": "String"
            },
            "doc": "Markdown formatted text describing the reason this alarm is necessary"
        },
        {
            "name": "correctiveaction",
            "type": {
                "type": "string",
                "avro.java.string": "String"
            },
            "doc": "Markdown formatted text describing the corrective action to take when the alarm becomes active"
        },
        {
            "name": "pointofcontactusername",
            "type": {
                "type": "string",
                "avro.java.string": "String"
            },
            "doc": "Username (identifier) of point of contact.  Full contact info should be obtained from user database (LDAP for example)"
        },
        {
            "name": "latching",
            "type": "boolean",
            "doc": "Indicates whether this alarm latches when activated and can only be cleared after an explicit acknowledgement",
            "default": false
        },
        {
            "name": "filterable",
            "type": "boolean",
            "doc": "Indicates whether this alarm can be filtered out of view (typically done when a portion of the machine is turned off).  Some alarms must always be monitored, regardless of program.",
            "default": true
        },
        {
            "name": "ondelayseconds",
            "type": [
                "null",
                "long"
            ],
            "doc": "The number of seconds of on-delay"
        },
        {
            "name": "offdelayseconds",
            "type": [
                "null",
                "long"
            ],
            "doc": "The number of seconds of off-delay"
        },
        {
            "name": "screenpath",
            "type": {
                "type": "string",
                "avro.java.string": "String"
            },
            "doc": "The path the alarm screen display"
        }
    ]
}
