{
  "$schema": "./keyboards.schema.json",
  "version": "1.0",
  "description": "Keyboard configuration for PRIMARY/STANDBY election",

  "keyboards": [
    {
      "id": "KB-001",
      "name": "Control Room 1",
      "location": "Main Control Room",
      "priority": 100,
      "canBePrimary": true,
      "canBeStandby": true,
      "network": {
        "address": "192.168.1.101",
        "coordinationPort": 8090
      }
    },
    {
      "id": "KB-002",
      "name": "Control Room 2",
      "location": "Main Control Room",
      "priority": 90,
      "canBePrimary": true,
      "canBeStandby": true,
      "network": {
        "address": "192.168.1.102",
        "coordinationPort": 8090
      }
    },
    {
      "id": "KB-003",
      "name": "Security Station",
      "location": "Security Office",
      "priority": 50,
      "canBePrimary": false,
      "canBeStandby": true,
      "network": {
        "address": "192.168.1.103",
        "coordinationPort": 8090
      }
    }
  ],

  "election": {
    "heartbeatIntervalMs": 2000,
    "heartbeatTimeoutMs": 6000,
    "electionTimeoutMs": 10000,
    "minKeyboardsForQuorum": 1
  },

  "coordination": {
    "primaryWebSocketPort": 8090,
    "stateSync": {
      "enabled": true,
      "intervalMs": 1000
    }
  },

  "degradedMode": {
    "description": "Features available when no PRIMARY/STANDBY is online",
    "viewerConnectLive": true,
    "ptzControl": true,
    "ptzLocking": false,
    "sequences": false,
    "sharedState": false,
    "alarmDisplay": "local"
  }
}
