{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/dentsply-sirona/main/json-schema/dentsply-sirona-device-event-data-schema.json",
  "title": "DeviceEventData",
  "description": "Describes changes to the list of devices including added, removed and changed devices. A device may change if a different sensor is connected causing the name and icon to be modified or when a device is used for a session causing the status to be modified.",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dentsply-sirona-devices-api-openapi.yml#/components/schemas/DeviceEventData",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "added",
            "removed",
            "changed"
          ]
        },
        "deviceInfo": {
          "$ref": "#/$defs/DeviceInfo"
        }
      }
    }
  },
  "$defs": {
    "BatteryInfo": {
      "description": "Contains information about the current state of the battery in the device if applicable.",
      "type": "object",
      "properties": {
        "hasBattery": {
          "description": "Flag indicating if the device is battery powered",
          "type": "boolean"
        },
        "percentRemaining": {
          "description": "A number in the range 0-100 indicating the percentage of battery power remaining",
          "type": "number",
          "format": "float"
        },
        "level": {
          "description": "A coarse description of the battery power level. May be used to update a color scheme in the user interface \n  * `Low` - The battery is low and should be recharged\n  * `Good` - The battery level is sufficient\n  * `Full` - The battery was recently recharged\n",
          "type": "string",
          "enum": [
            "Low",
            "Good",
            "Full"
          ]
        }
      }
    },
    "DeviceInfo": {
      "description": "Detailed information about an intraoral device (sensor interface)",
      "type": "object",
      "properties": {
        "deviceId": {
          "description": "Unique Id of the device",
          "type": "string"
        },
        "name": {
          "description": "Descriptive name of the device",
          "type": "string"
        },
        "iconUrl": {
          "description": "Url for an icon representing the device",
          "type": "string"
        },
        "hasSensor": {
          "description": "Flag indicating if a sensor is connected to this device",
          "type": "boolean"
        },
        "status": {
          "$ref": "#/$defs/DeviceStatus"
        },
        "interfaceType": {
          "description": "The interface used to connect the device to the system. For example, a USB device may report *usb*, while a network based device may report *network*.",
          "type": "string"
        },
        "modelName": {
          "description": "Manufacturer's model name",
          "type": "string"
        },
        "serialNumber": {
          "description": "Serial number of the device",
          "type": "string"
        },
        "version": {
          "description": "Version of software running on the device",
          "type": "string"
        },
        "battery": {
          "$ref": "#/$defs/BatteryInfo"
        }
      }
    },
    "DeviceStatus": {
      "description": "Describes the current status of the device:\n  * `Available` - Device is available for an acquisition\n  * `InUse` - Device is currently being used for an acquisition\n  * `Unavailable` - Device is not available at this time\n  * `Error` Device encountered an unspecified error\n  \n  The current status must be `Available` in order to use it for an acquisition. If the device status returns `InUse`, it indicates that the device is currently being used for an acquisition.\n",
      "type": "string",
      "enum": [
        "Available",
        "InUse",
        "Unavailable",
        "Error"
      ]
    }
  }
}