{
  "$id": "sevone_device_component",
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ph_request_type": {
      "type": "string",
      "description": "type of request (internal to adapter)",
      "default": "getDeviceComponents",
      "enum": [
        "getDeviceComponents",
        "getDeviceComponentsFiltered",
        "createDeviceComponent",
        "updateDeviceComponent",
        "deleteDeviceComponent"
      ],
      "external_name": "ph_request_type"
    },
    "id": {
      "type": "integer",
      "description": "id of the component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "id"
    },
    "name": {
      "type": "string",
      "description": "name of the component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "name"
    },
    "deviceId": {
      "type": "integer",
      "description": "id of the device this component is on",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "deviceId"
    },
    "description": {
      "type": "string",
      "description": "description of the component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "description"
    },
    "extendedInfo": {
      "type": "object",
      "dynamicfields": true,
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "extendedInfo"
    },
    "isDeleted": {
      "type": "boolean",
      "description": "whether the component has been deleted",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "isDeleted"
    },
    "isEnabled": {
      "type": "boolean",
      "description": "whether the component is enabled",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "isEnabled"
    },
    "isVisable": {
      "type": "boolean",
      "description": "whether the component is visable",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "isVisable"
    },
    "pluginId": {
      "type": "integer",
      "description": "id of a plugin for this component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "pluginId"
    },
    "pluginObjectTypeId": {
      "type": "integer",
      "description": "id of a plugin object type for this component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "pluginObjectTypeId"
    },
    "subtypeId": {
      "type": "integer",
      "description": "id of the sub type of this component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "minimum": 0,
      "maximum": 999999999999,
      "external_name": "subtypeId"
    },
    "indicators": {
      "type": "array",
      "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"
          }
        }
      },
      "description": "array containing the indicators for the device component",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "indicators"
    },
    "deviceIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "deviceIds"
    },
    "deviceGroupIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "deviceGroupIds"
    },
    "objectIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "objectIds"
    },
    "objectGroupIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "objectGroupIds"
    },
    "peerIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "peerIds"
    },
    "pluginIds": {
      "type": "array",
      "description": "",
      "parse": false,
      "encode": false,
      "encrypt": {
        "type": "AES",
        "key": ""
      },
      "external_name": "pluginIds"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "ph_request_type": {
            "enum": [
              "createDeviceComponent"
            ]
          }
        }
      },
      "then": {
        "required": [
          "name",
          "description",
          "pluginId",
          "pluginObjectTypeId"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "ph_request_type": {
            "enum": [
              "updateDeviceComponent"
            ]
          }
        }
      },
      "then": {
        "required": [
          "name",
          "description",
          "pluginId",
          "pluginObjectTypeId"
        ]
      }
    }
  ],
  "definitions": {}
}