{
  "type": "array",
  "items": {
    "description": "This type represents a PM job.\n",
    "type": "object",
    "required": [
      "id",
      "objectInstanceIds",
      "criteria"
    ],
    "properties": {
      "id": {
        "description": "An identifier with the intention of being globally unique.\n",
        "type": "string"
      },
      "objectInstanceIds": {
        "description": "Identifiers of the NS instances for which performance information is collected.\n",
        "type": "array",
        "items": {
          "description": "An identifier with the intention of being globally unique.\n",
          "type": "string"
        }
      },
      "criteria": {
        "description": "This type represents collection criteria for PM jobs.  It shall comply with the provisions defined in Table 7.5.3.3-1.\n",
        "type": "object",
        "required": [
          "collectionPeriod",
          "reportingPeriod"
        ],
        "properties": {
          "performanceMetric": {
            "description": "This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.\n",
            "type": "array",
            "items": {
              "description": "This type represents stack of string values\n",
              "type": "string"
            }
          },
          "performanceMetricGroup": {
            "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n",
            "type": "array",
            "items": {
              "description": "This type represents stack of string values\n",
              "type": "string"
            }
          },
          "collectionPeriod": {
            "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.     In particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.\n",
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "reportingPeriod": {
            "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.     In particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.          \n",
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "reportingBoundary": {
            "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "reports": {
        "description": "Information about available reports collected by this PM job.\n",
        "type": "object",
        "required": [
          "href",
          "readyTime",
          "_links"
        ],
        "properties": {
          "href": {
            "description": "String formatted according to IETF RFC 3986.\n",
            "type": "string"
          },
          "readyTime": {
            "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
            "type": "string",
            "format": "date-time"
          },
          "expiryTime": {
            "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
            "type": "string",
            "format": "date-time"
          },
          "fileSize": {
            "description": "The size of the report file in bytes, if known.\n",
            "type": "integer"
          },
          "_links": {
            "description": "Links for this resource.\n",
            "type": "object",
            "required": [
              "self"
            ],
            "properties": {
              "self": {
                "description": "This type represents a link to a resource.\n",
                "type": "object",
                "required": [
                  "href"
                ],
                "properties": {
                  "href": {
                    "description": "URI of the referenced resource.\n",
                    "type": "string",
                    "format": "url"
                  }
                }
              },
              "objects": {
                "description": "Links to resources representing the NS instances for which performance information is collected. Shall be present if the NS instance information is accessible as a resource.\n",
                "type": "array",
                "items": {
                  "description": "This type represents a link to a resource.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "URI of the referenced resource.\n",
                      "type": "string",
                      "format": "url"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}