{
  "description": "This type represents a subscription related to notifications about VNF package management.\n",
  "type": "object",
  "required": [
    "id",
    "callbackUri",
    "_links"
  ],
  "properties": {
    "id": {
      "description": "String formatted according to IETF RFC 3986.\n",
      "type": "string"
    },
    "filter": {
      "description": "This type represents a subscription filter related to notifications related to VNF package management. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
      "type": "object",
      "properties": {
        "notificationTypes": {
          "description": "Match particular notification types. Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification\n",
          "type": "string",
          "enum": [
            "VnfPackageOnboardingNotification",
            "VnfPackageChangeNotification"
          ]
        },
        "vnfProductsFromProviders": {
          "description": "If present, match VNF packages that contain VNF products from certain providers.\n",
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "vnfProvider"
            ],
            "properties": {
              "vnfProvider": {
                "description": "Name of the VNFprovider to match.\n",
                "type": "string"
              },
              "vnfProducts": {
                "description": "If present, match VNF packages that contain VNF products with certain product names, from one particular provider.\n",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "vnfProductName"
                  ],
                  "properties": {
                    "vnfProductName": {
                      "description": "Name of the VNF product to match.\n",
                      "type": "string"
                    },
                    "versions": {
                      "description": "If present, match VNF packages that contain VNF products with certain versions and a certain product name, from one particular provider.\n",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "vnfSoftwareVersion"
                        ],
                        "properties": {
                          "vnfSoftwareVersion": {
                            "description": "Software version of the VNF. This is changed when there is any change to the software included in the VNF package. This information is copied from the VNFD. It shall be present after the VNF package content has been on-boarded and absent otherwise.\n",
                            "type": "string"
                          },
                          "vnfdVersions": {
                            "description": "If present, match VNF packages that contain VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
                            "type": "array",
                            "items": {
                              "description": "Software version of the VNF. This is changed when there is any change to the software included in the VNF package. This information is copied from the VNFD. It shall be present after the VNF package content has been on-boarded and absent otherwise.\n",
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "vnfdId": {
                "description": "Match VNF packages with a VNFD identifier listed in the attribute.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "vnfPkgId": {
                "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "operationalState": {
                "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise.\n",
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "\"The enumeration PackageOperationalStateType shall  comply with the provisions defined in Table 9.5.4.4-1.\" Acceptable values are: -ENABLED - The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances. -DISABLED - The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package is re-enabled).\n",
                  "enum": [
                    "ENABLED",
                    "DISABLED"
                  ]
                }
              },
              "usageState": {
                "description": "Match particular usage state of the on-boarded VNF package. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise.\n",
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "\"The enumeration PackageUsageStateType shall comply with the provisions. Acceptable values are: -IN_USE - VNF instances instantiated from this VNF package exist. -NOT_IN_USE - No existing VNF instance is instantiated from this VNF package\"      \n",
                  "enum": [
                    "IN_USE",
                    "NOT_IN_USE"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "callbackUri": {
      "description": "String formatted according to IETF RFC 3986.\n",
      "type": "string"
    },
    "_links": {
      "description": "Links to resources related to 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"
            }
          }
        }
      }
    }
  }
}