{
  "$id": "sevone_device",
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ph_request_type": {
      "type": "string",
      "description": "type of request (internal to adapter)",
      "default": "getDevices",
      "enum": [
        "getDevices",
        "getDevicesFiltered",
        "createDevice",
        "updateDevice",
        "deleteDevice",
        "partiallyUpdateDeviceById"
      ],
      "external_name": "ph_request_type"
    },
    "id": {
      "type": "integer",
      "description": "id of the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "id"
    },
    "name": {
      "type": "string",
      "description": "name of the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "name"
    },
    "ipAddress": {
      "type": "string",
      "description": "ip address of the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "ipAddress"
    },
    "description": {
      "type": "string",
      "description": "description of the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "description"
    },
    "allowDelete": {
      "type": "boolean",
      "description": "whether the device can be deleted",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "allowDelete"
    },
    "alternateName": {
      "type": "string",
      "description": "an alternate name of the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "alternateName"
    },
    "dateAdded": {
      "type": "integer",
      "description": "date the device was added",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999999,
      "external_name": "dateAdded"
    },
    "disableConcurrentPolling": {
      "type": "boolean",
      "description": "whether to disable concurrent polling",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "disableConcurrentPolling"
    },
    "disablePolling": {
      "type": "boolean",
      "description": "whether to disable polling",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "disablePolling"
    },
    "disableThresholding": {
      "type": "boolean",
      "description": "whether to disable thresholding",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "disableThresholding"
    },
    "isDeleted": {
      "type": "boolean",
      "description": "whether the device has been deleted",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "isDeleted"
    },
    "isNew": {
      "type": "boolean",
      "description": "whether the device is new",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "isNew"
    },
    "lastDiscovery": {
      "type": "integer",
      "description": "date the device was last discovered",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999999,
      "external_name": "lastDiscovery"
    },
    "numElements": {
      "type": "integer",
      "description": "number of elements on the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "numElements"
    },
    "peerId": {
      "type": "integer",
      "description": "the id of a peer device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "peerId"
    },
    "pluginInfo": {
      "type": "object",
      "dynamicfields": true,
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "pluginInfo"
    },
    "pluginManagerId": {
      "type": "integer",
      "description": "the id of the plugin manager",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "pluginManagerId"
    },
    "pollFrequency": {
      "type": "integer",
      "description": "how often this device should be polled",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "pollFrequency"
    },
    "timezone": {
      "type": "string",
      "description": "the timezone the device is in",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "timezone"
    },
    "workhoursGroupId": {
      "type": "integer",
      "description": "id of a group that defines the work hours",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "workhoursGroupId"
    },
    "deleted": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "deleted"
    },
    "components": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "id of the component",
            "minimum": 0,
            "maximum": 999999999999,
            "external_name": "id"
          },
          "name": {
            "type": "string",
            "description": "name of the component",
            "examples": [
              "gigethernet 0/1/1"
            ],
            "external_name": "name"
          },
          "deviceId": {
            "type": "integer",
            "description": "id of the device this component is on",
            "minimum": 0,
            "maximum": 999999999999,
            "external_name": "deviceId"
          },
          "description": {
            "type": "string",
            "description": "description of the component",
            "examples": [
              "Interface for Blah"
            ],
            "external_name": "description"
          },
          "extendedInfo": {
            "type": "object",
            "dynamicfields": true,
            "external_name": "extendedInfo"
          },
          "isDeleted": {
            "type": "boolean",
            "description": "whether the component has been deleted",
            "external_name": "isDeleted"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "whether the component is enabled",
            "external_name": "isEnabled"
          },
          "isVisable": {
            "type": "boolean",
            "description": "whether the component is visable",
            "external_name": "isVisable"
          },
          "pluginId": {
            "type": "integer",
            "description": "id of a plugin for this component",
            "minimum": 0,
            "maximum": 999999999999,
            "external_name": "pluginId"
          },
          "pluginObjectTypeId": {
            "type": "integer",
            "description": "id of a plugin object type for this component",
            "minimum": 0,
            "maximum": 999999999999,
            "external_name": "pluginObjectTypeId"
          },
          "subtypeId": {
            "type": "integer",
            "description": "id of the sub type of this component",
            "minimum": 0,
            "maximum": 999999999999,
            "external_name": "subtypeId"
          },
          "indicators": {
            "type": "array",
            "description": "array containing the indicators for the device component",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "id of the indicator",
                  "minimum": 0,
                  "external_name": "id"
                },
                "deviceId": {
                  "type": "integer",
                  "description": "id of the device for the indicator",
                  "minimum": 0,
                  "external_name": "deviceId"
                },
                "componentId": {
                  "type": "integer",
                  "description": "id of the component for the indicator",
                  "minimum": 0,
                  "external_name": "objectId"
                },
                "evaluationOrder": {
                  "type": "integer",
                  "description": "order of evaluation for the indicator",
                  "minimum": 0,
                  "external_name": "evaluationOrder"
                },
                "format": {
                  "type": "string",
                  "description": "format to display the indicator",
                  "examples": [
                    "GAUGE"
                  ],
                  "external_name": "format"
                },
                "isBaselining": {
                  "type": "boolean",
                  "description": "whether the indicator is baselined",
                  "external_name": "isBaselining"
                },
                "isDeleted": {
                  "type": "boolean",
                  "description": "whether the indicator has been deleted",
                  "external_name": "isDeleted"
                },
                "isEnabled": {
                  "type": "boolean",
                  "description": "whether the indicator is enabled",
                  "external_name": "isEnabled"
                },
                "lastInvalidationTime": {
                  "type": "integer",
                  "description": "time the indicator was last invalid",
                  "minimum": 0,
                  "external_name": "lastInvalidationTime"
                },
                "maxValue": {
                  "type": "integer",
                  "description": "maximum value of hte indicator",
                  "minimum": 0,
                  "external_name": "maxValue"
                },
                "pluginId": {
                  "type": "integer",
                  "description": "the id of the lugin for the indicator",
                  "minimum": 0,
                  "external_name": "pluginId"
                },
                "pluginIndicatorTypeId": {
                  "type": "integer",
                  "description": "the id of the plugin indicator type",
                  "minimum": 0,
                  "external_name": "pluginIndicatorTypeId"
                },
                "syntheticExpression": {
                  "type": "string",
                  "description": "the synthetic expression of the indicator",
                  "examples": [
                    "string"
                  ],
                  "external_name": "syntheticExpression"
                },
                "extendedInfo": {
                  "type": "object",
                  "dynamicfields": true,
                  "external_name": "extendedInfo"
                }
              }
            },
            "external_name": "indicators"
          }
        }
      },
      "description": "array containing the components for the device",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "objects"
    },
    "ids": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "ids"
    },
    "inDeviceGroupIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "inDeviceGroupIds"
    },
    "NotInDeviceGroupIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "NotInDeviceGroupIds"
    },
    "peerIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "peerIds"
    },
    "snmpVersion": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "snmpVersion"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "ph_request_type": {
            "enum": [
              "createDevice"
            ]
          }
        }
      },
      "then": {
        "required": [
          "name"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "ph_request_type": {
            "enum": [
              "updateDevice"
            ]
          }
        }
      },
      "then": {
        "required": [
          "name"
        ]
      }
    }
  ],
  "definitions": {}
}