definitions:

  VnfInstanceSubscriptionFilter:
    description: >
      This type represents subscription filter criteria to match VNF instances.
        * NOTE 1:
           The attributes "vnfdIds" and "vnfProductsFromProviders" are alternatives to reference to 
           VNF instances that are based on certain VNFDs in a filter. They should not be used both
           in the same filter instance, but one alternative should be chosen.
        * NOTE 2:
           The attributes "vnfInstanceIds" and "vnfInstanceNames" are alternatives to reference to
          particular VNF instances in a filter. They should not be used both in the same filter instance,
          but one alternative should be chosen.
    type: object
    properties:
      vnfdIds:
        description: >
          If present, match VNF instances that were created based on a VNFD identified by one of the
          vnfdId values listed in this attribute. See NOTE 1.
        type: array
        items:
          $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
      vnfProductsFromProviders:
        description: >
          If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1.
        type: array
        items:
          type: object
          required:
            - vnfProvider
          properties:
            vnfProvider:
              description: >
                Name of the VNF provider to match.
              type: string
            vnfProducts:
              description: >
                If present, match VNF instances that belong to VNF products with certain product names,
                from one particular provider.
              type: array
              items:
                type: object
                required:
                  - vnfProductName
                properties:
                  vnfProductName:
                    description: >
                      Name of the VNF product to match.
                    type: string
                  versions:
                    description: >
                      If present, match VNF instances that belong to VNF products with certain versions
                      and a certain product name, from one particular provider.
                    type: array
                    items:
                      type: object
                      required:
                        - vnfSoftwareVersions
                      properties:
                        vnfSoftwareVersions:
                          description: >
                            Software version to match.
                          $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version'
                        vnfdVersions:
                          description: >
                            If present, match VNF instances that belong to VNF products with certain VNFD versions,
                            a certain software version and a certain product name, from one particular provider.
                          type: array
                          items:
                            $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version'
      vnfInstanceIds:
        description: >
          If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2.
        type: array
        items:
          $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
      vnfInstanceNames:
        description: >
          If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2
        type: array
        items:
          type: string

