{
    "description": "This type represents a subscription. \n",
    "type": "object",
    "properties": {
      "id": {
        "description": "An identifier with the intention of being globally unique.\n",
        "type": "string"
      },
      "filter": {
        "description": "This type represents a filter that can be used to subscribe for notifications  related to performance management events.  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": {
          "pmSubscriptionFilter": {
            "description": "This type represents subscription filter criteria to match NFV-MANO functional  entities and their associated managed objects. \n",
            "type": "object",
            "properties": {
              "manoEntityId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "manoServiceIds": {
                "description": "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO  services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives  to reference to NFV-MANO services in a filter. They should not be used  together in the same filter instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
                  "type": "string"
                }
              },
              "manoServiceNames": {
                "description": "If present, match NFV-MANO services with an NFV-MANO service name listed  in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives  to reference to NFV-MANO services in a filter. They should not be used  together in the same filter instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "manoServiceInterfaceIds": {
                "description": "If present, match NFV-MANO functional entity produced interfaces with an  instance identifier listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\"  are alternatives to reference to NFV-MANO functional entity produced  interfaces in a filter. They should not be used both in the same filter  instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
                  "type": "string"
                }
              },
              "manoServiceInterfaceNames": {
                "description": "If present, match NFV-MANO functional entity produced interfaces with an  instance Name listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\"  are alternatives to reference to NFV-MANO functional entity produced  interfaces in a filter. They should not be used both in the same filter  instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "consumedManoInterfaceIds": {
                "description": "If present, match NFV-MANO functional entity consumed interfaces with an  instance identifier listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\"  are alternatives to reference to NFV-MANO functional entity consumed  interfaces in a filter. They should not be used both in the same filter  instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "consumedManoInterfaceNames": {
                "description": "If present, match NFV-MANO functional entity consumed interfaces with an  instance Name listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\"  are alternatives to reference to NFV-MANO functional entity consumed  interfaces in a filter. They should not be used both in the same filter  instance, but one alternative should be chosen.\n",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "notificationTypes": {
            "description": "Match particular notification types.  Permitted values:\n  - ThresholdCrossedNotification\n  - PerformanceInformationAvailableNotification\n\nThe permitted values of the \"notificationTypes\" attribute are spelled exactly  as the names of the notification types to facilitate automated code generation  systems.\n",
            "type": "string",
            "enum": [
              "ThresholdCrossedNotification",
              "PerformanceInformationAvailableNotification"
            ]
          }
        }
      },
      "callbackUri": {
        "description": "The URI of the endpoint to send the notification to.\n",
        "type": "object",
        "properties": {
          "links": {
            "description": "String formatted according to IETF RFC 3986.\n",
            "type": "string"
          },
          "self": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          }
        },
        "required": [
          "links",
          "self"
        ]
      }
    },
    "required": [
      "id",
      "callbackUri"
    ]
  }