{
  "schema": {
    "uniqueItems": "true",
    "format": "tabs-top",
    "type": "array",
    "title": "TCA Policy JSON",
    "items": {
      "type": "object",
      "title": "TCA Policy JSON",
      "required": [
        "domain",
        "metricsPerEventName"
      ],
      "properties": {
        "domain": {
          "propertyOrder": 1001,
          "default": "measurementsForVfScaling",
          "title": "Domain name to which TCA needs to be applied",
          "type": "string"
        },
        "metricsPerEventName": {
          "propertyOrder": 1002,
          "uniqueItems": "true",
          "format": "tabs-top",
          "title": "Contains eventName and threshold details that need to be applied to given eventName",
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "controlLoopSchemaType",
              "eventName",
              "policyName",
              "policyScope",
              "policyVersion",
              "thresholds"
            ],
            "properties": {
              "policyVersion": {
                "propertyOrder": 1007,
                "title": "TCA Policy Scope Version",
                "type": "string"
              },
              "thresholds": {
                "propertyOrder": 1008,
                "uniqueItems": "true",
                "format": "tabs-top",
                "title": "Thresholds associated with eventName",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "closedLoopControlName",
                    "closedLoopEventStatus",
                    "direction",
                    "fieldPath",
                    "severity",
                    "thresholdValue",
                    "version"
                  ],
                  "properties": {
                    "severity": {
                      "propertyOrder": 1013,
                      "title": "Threshold Event Severity",
                      "type": "string",
                      "enum": [
                        "CRITICAL",
                        "MAJOR",
                        "MINOR",
                        "WARNING",
                        "NORMAL"
                      ]
                    },
                    "fieldPath": {
                      "propertyOrder": 1012,
                      "title": "Json field Path as per CEF message which needs to be analyzed for TCA",
                      "type": "string",
                      "enum": [
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",
                        "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",
                        "$.event.measurementsForVfScalingFields.meanRequestLatency",
                        "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",
                        "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",
                        "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",
                        "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",
                        "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",
                        "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"
                      ]
                    },
                    "thresholdValue": {
                      "propertyOrder": 1014,
                      "title": "Threshold value for the field Path inside CEF message",
                      "type": "integer"
                    },
                    "closedLoopEventStatus": {
                      "propertyOrder": 1010,
                      "title": "Closed Loop Event Status of the threshold",
                      "type": "string",
                      "enum": [
                        "ONSET",
                        "ABATED"
                      ]
                    },
                    "closedLoopControlName": {
                      "propertyOrder": 1009,
                      "title": "Closed Loop Control Name associated with the threshold",
                      "type": "string"
                    },
                    "version": {
                      "propertyOrder": 1015,
                      "title": "Version number associated with the threshold",
                      "type": "string"
                    },
                    "direction": {
                      "propertyOrder": 1011,
                      "title": "Direction of the threshold",
                      "type": "string",
                      "enum": [
                        "LESS",
                        "LESS_OR_EQUAL",
                        "GREATER",
                        "GREATER_OR_EQUAL",
                        "EQUAL"
                      ]
                    }
                  }
                }
              },
              "policyName": {
                "propertyOrder": 1005,
                "title": "TCA Policy Scope Name",
                "type": "string"
              },
              "controlLoopSchemaType": {
                "propertyOrder": 1003,
                "title": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
                "type": "string",
                "enum": [
                  "VM",
                  "VNF"
                ]
              },
              "policyScope": {
                "propertyOrder": 1006,
                "title": "TCA Policy Scope",
                "type": "string"
              },
              "eventName": {
                "propertyOrder": 1004,
                "title": "Event name to which thresholds need to be applied",
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}