{
  "type": "object",
  "additionalProperties": false,
  "description": "Generated by pyang from module nsd",
  "properties": {
    "nsd-catalog": {
      "properties": {
        "schema-version": {
          "description": "Schema version for the NSD. If unspecified, it assumes v3.0",
          "pattern": "",
          "type": "string"
        },
        "nsd": {
          "items": {
            "properties": {
              "ip-profiles": {
                "items": {
                  "properties": {
                    "description": {
                      "description": "Description for IP profile",
                      "pattern": "",
                      "type": "string"
                    },
                    "ip-profile-params": {
                      "properties": {
                        "security-group": {
                          "description": "Name of the security group",
                          "pattern": "",
                          "type": "string"
                        },
                        "gateway-address": {
                          "description": "IP Address of the default gateway associated with IP Profile",
                          "oneOf": [
                            {
                              "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                              "type": "string"
                            },
                            {
                              "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                              "type": "string"
                            }
                          ]
                        },
                        "subnet-prefix-pool": {
                          "description": "VIM Specific reference to pre-created subnet prefix",
                          "pattern": "",
                          "type": "string"
                        },
                        "subnet-address": {
                          "description": "Subnet IP prefix associated with IP Profile",
                          "oneOf": [
                            {
                              "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))",
                              "type": "string"
                            },
                            {
                              "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)",
                              "type": "string"
                            }
                          ]
                        },
                        "ip-version": {
                          "description": "",
                          "properties": {
                            "type": {
                              "enum": [
                                "unknown",
                                "ipv4",
                                "ipv6"
                              ]
                            }
                          }
                        },
                        "dns-server": {
                          "items": {
                            "properties": {
                              "address": {
                                "description": "List of DNS Servers associated with IP Profile",
                                "oneOf": [
                                  {
                                    "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                                    "type": "string"
                                  },
                                  {
                                    "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "dhcp-params": {
                          "properties": {
                            "count": {
                              "description": "Size of the DHCP pool associated with DHCP domain",
                              "type": "integer"
                            },
                            "enabled": {
                              "description": "This flag indicates if DHCP is enabled or not",
                              "type": "boolean"
                            },
                            "start-address": {
                              "description": "Start IP address of the IP-Address range associated with DHCP domain",
                              "oneOf": [
                                {
                                  "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                                  "type": "string"
                                },
                                {
                                  "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "name": {
                      "description": "Name of the IP-Profile",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "ns-configuration": {
                "properties": {
                  "execution-environment-list": {
                    "items": {
                      "properties": {
                        "id": {
                          "description": "Execution environment identifier.",
                          "pattern": "",
                          "type": "string"
                        },
                        "juju": {
                          "properties": {
                            "cloud": {
                              "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "lxd",
                                    "k8s"
                                  ]
                                }
                              }
                            },
                            "charm": {
                              "description": "Juju charm to use with the VNF or VDU.",
                              "pattern": "",
                              "type": "string"
                            },
                            "proxy": {
                              "description": "Is this a proxy charm?",
                              "type": "boolean"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "connection-point-ref": {
                          "description": "String representing a leaf reference to the particular external connection point\nThis field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name\n",
                          "pattern": "",
                          "type": "string"
                        },
                        "helm-chart": {
                          "description": "Helm chart that models the execution environment, in any of the following ways:\n- <helm-repo>/<helm-chart>\n- <helm-chart folder name under helm-charts folder in the package>\n- <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>\n- <URL_where_to_fetch_chart>\n",
                          "pattern": "",
                          "type": "string"
                        },
                        "metric-service": {
                          "description": "Service name in the execution environment. For helm charts, it will be\nthe name of the kubernetes service used by the exporter to expose metrics\nto the OSM collector.\n",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "terminate-config-primitive": {
                    "items": {
                      "properties": {
                        "execution-environment-ref": {
                          "description": "Leaf reference to the particular execution environment",
                          "type": "string"
                        },
                        "user-defined-script": {
                          "description": "A user defined script.",
                          "pattern": "",
                          "type": "string"
                        },
                        "seq": {
                          "description": "Sequence number for the configuration primitive.",
                          "type": "integer"
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "data-type": {
                                "description": "Data type associated with the value.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "value": {
                                "description": "Value associated with the name.",
                                "pattern": "",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "pattern": "",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "name": {
                          "description": "Name of the configuration primitive in the execution environment.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "initial-config-primitive": {
                    "items": {
                      "properties": {
                        "execution-environment-ref": {
                          "description": "Leaf reference to the particular execution environment",
                          "type": "string"
                        },
                        "seq": {
                          "description": "Sequence number for the configuration primitive.",
                          "type": "integer"
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "data-type": {
                                "description": "Data type associated with the value.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "value": {
                                "description": "Value associated with the name.",
                                "pattern": "",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "pattern": "",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "name": {
                          "description": "Name of the configuration primitive in the execution environment.",
                          "pattern": "",
                          "type": "string"
                        },
                        "user-defined-script": {
                          "description": "A user defined script.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "config-primitive": {
                    "items": {
                      "properties": {
                        "execution-environment-ref": {
                          "description": "Leaf reference to the particular execution environment",
                          "type": "string"
                        },
                        "user-defined-script": {
                          "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                          "pattern": "",
                          "type": "string"
                        },
                        "execution-environment-primitive": {
                          "description": "Name of the primitive in the execution enviroment. If not explicit,\nthe leaf 'name' will be used as the name of the primitive.",
                          "pattern": "",
                          "type": "string"
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "data-type": {
                                "description": "Data type associated with the name.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "default-value": {
                                "description": "The default value for this field",
                                "pattern": "",
                                "type": "string"
                              },
                              "mandatory": {
                                "description": "Is this field mandatory",
                                "type": "boolean"
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "pattern": "",
                                "type": "string"
                              },
                              "read-only": {
                                "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values.",
                                "type": "boolean"
                              },
                              "hidden": {
                                "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
                                "type": "boolean"
                              },
                              "parameter-pool": {
                                "description": "NSD parameter pool name to use for this parameter",
                                "pattern": "",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "name": {
                          "description": "Name of the config primitive.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "juju": {
                    "properties": {
                      "cloud": {
                        "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                        "properties": {
                          "type": {
                            "enum": [
                              "lxd",
                              "k8s"
                            ]
                          }
                        }
                      },
                      "charm": {
                        "description": "Juju charm to use with the VNF or VDU.",
                        "pattern": "",
                        "type": "string"
                      },
                      "proxy": {
                        "description": "Is this a proxy charm?",
                        "type": "boolean"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "relation": {
                    "items": {
                      "properties": {
                        "entities": {
                          "items": {
                            "properties": {
                              "id": {
                                "description": "A string, reference to the element id in the descriptor.\nIt could be a vnfd-id or a vdu-id in a VNFD,\nor a nsd-id or member-vnf-index in a NSD.",
                                "pattern": "",
                                "type": "string"
                              },
                              "endpoint": {
                                "description": "Endpoint name defining the relation.",
                                "pattern": "",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "name": {
                          "description": "Name of the relation.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "metrics": {
                    "items": {
                      "properties": {
                        "execution-environment-ref": {
                          "description": "Leaf reference to the particular execution environment getting that metric",
                          "type": "string"
                        },
                        "execution-environment-metric": {
                          "description": "Metric in the execution environment referenced by execution-environment-ref",
                          "pattern": "",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name of the metric, as defined in the Juju charm.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "script": {
                    "properties": {
                      "script-type": {
                        "description": "Script type - currently supported - Scripts confirming to Rift CA plugin",
                        "properties": {
                          "type": {
                            "enum": [
                              "rift"
                            ]
                          }
                        }
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "vld": {
                "items": {
                  "properties": {
                    "vendor": {
                      "description": "Provider of the VLD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "short-name": {
                      "description": "Short name to appear as label in the UI",
                      "pattern": "",
                      "type": "string"
                    },
                    "ip-profile-ref": {
                      "description": "Named reference to IP-profile object",
                      "type": "string"
                    },
                    "mgmt-network": {
                      "description": "Flag indicating whether this network is a VIM management network",
                      "type": "boolean"
                    },
                    "vnfd-connection-point-ref": {
                      "items": {
                        "properties": {
                          "ip-address": {
                            "description": "IP address of the connection point",
                            "oneOf": [
                              {
                                "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                                "type": "string"
                              },
                              {
                                "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                                "type": "string"
                              }
                            ]
                          },
                          "member-vnf-index-ref": {
                            "description": "Reference to member-vnf within constituent-vnfds",
                            "type": "string"
                          },
                          "vnfd-id-ref": {
                            "description": "A reference to a VNFD",
                            "type": "string"
                          },
                          "vnfd-connection-point-ref": {
                            "description": "A reference to a connection point name",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "provider-network": {
                      "properties": {
                        "segmentation_id": {
                          "description": "ID of segregated virtual networks",
                          "type": "integer"
                        },
                        "physical-network": {
                          "description": "Name of the physical network on which the provider\nnetwork is built.",
                          "pattern": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "id": {
                      "description": "Identifier for the VLD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "ELAN",
                            "ELINE",
                            "L3"
                          ]
                        }
                      }
                    },
                    "description": {
                      "description": "Description of the VLD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "leaf-bandwidth": {
                      "description": "For ELAN this is the bandwidth of branches.",
                      "type": "integer"
                    },
                    "root-bandwidth": {
                      "description": "For ELAN this is the aggregate bandwidth.",
                      "type": "integer"
                    },
                    "vim-network-name": {
                      "description": "Name of network in VIM account. This is used to indicate\n      pre-provisioned network name in cloud account.",
                      "pattern": "",
                      "type": "string"
                    },
                    "version": {
                      "description": "Version of the VLD",
                      "pattern": "",
                      "type": "string"
                    },
                    "name": {
                      "description": "Virtual Link Descriptor (VLD) name.",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "vendor": {
                "description": "Vendor of the NSD.",
                "pattern": "",
                "type": "string"
              },
              "short-name": {
                "description": "Short name to appear as label in the UI",
                "pattern": "",
                "type": "string"
              },
              "key-pair": {
                "items": {
                  "properties": {
                    "key": {
                      "description": "Key associated with this key pair",
                      "pattern": "",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of this key pair",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "user": {
                "items": {
                  "properties": {
                    "key-pair": {
                      "items": {
                        "properties": {
                          "key": {
                            "description": "Key associated with this key pair",
                            "pattern": "",
                            "type": "string"
                          },
                          "name": {
                            "description": "Name of this key pair",
                            "pattern": "",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "user-info": {
                      "description": "The user name's real name",
                      "pattern": "",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the user ",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "scaling-group-descriptor": {
                "items": {
                  "properties": {
                    "max-instance-count": {
                      "description": "Maximum instances of this scaling group that are allowed\nin a single network service. The network service scaling\nwill fail, when the number of service group instances\nexceed the max-instance-count specified.",
                      "type": "integer"
                    },
                    "scaling-config-action": {
                      "items": {
                        "properties": {
                          "trigger": {
                            "description": "scaling trigger",
                            "properties": {
                              "type": {
                                "enum": [
                                  "pre-scale-in",
                                  "post-scale-in",
                                  "pre-scale-out",
                                  "post-scale-out"
                                ]
                              }
                            }
                          },
                          "ns-config-primitive-name-ref": {
                            "description": "Reference to the NS primitive",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "vnfd-member": {
                      "items": {
                        "properties": {
                          "count": {
                            "description": "count of this member VNF  within this scaling group.\nThe count allows to define  the number of instances\nwhen a scaling action targets this scaling group",
                            "type": "integer"
                          },
                          "member-vnf-index-ref": {
                            "description": "member VNF index of this member VNF",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "min-instance-count": {
                      "description": "Minimum instances of the scaling group which are allowed.\nThese instances are created by default when the network service\nis instantiated.",
                      "type": "integer"
                    },
                    "scaling-policy": {
                      "items": {
                        "properties": {
                          "scale-out-operation-type": {
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale out threshold condition has been met.\nDefauls to OR",
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            }
                          },
                          "threshold-time": {
                            "description": "The duration for which the criteria must hold true",
                            "type": "integer"
                          },
                          "enabled": {
                            "description": "Specifies if the scaling policy can be applied",
                            "type": "boolean"
                          },
                          "scaling-criteria": {
                            "items": {
                              "properties": {
                                "scale-in-relational-operation": {
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-in-threshold.",
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  }
                                },
                                "ns-monitoring-param-ref": {
                                  "description": "Reference to the NS level monitoring parameter\nthat is aggregated",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "",
                                  "pattern": "",
                                  "type": "string"
                                },
                                "scale-in-threshold": {
                                  "description": "Value below which scale-in requests are generated",
                                  "type": "integer"
                                },
                                "scale-out-threshold": {
                                  "description": "Value above which scale-out requests are generated",
                                  "type": "integer"
                                },
                                "scale-out-relational-operation": {
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-out-threshold.",
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  }
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array",
                            "additionalProperties": false
                          },
                          "cooldown-time": {
                            "description": "The duration after a scaling-in/scaling-out action has been\ntriggered, for which there will be no further optional",
                            "type": "integer"
                          },
                          "scaling-type": {
                            "description": "Type of scaling",
                            "properties": {
                              "type": {
                                "enum": [
                                  "manual",
                                  "automatic"
                                ]
                              }
                            }
                          },
                          "scale-in-operation-type": {
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale in threshold condition has been met.\nDefaults to AND",
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            }
                          },
                          "name": {
                            "description": "Name of the scaling policy",
                            "pattern": "",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "name": {
                      "description": "Name of this scaling group.",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "input-parameter-xpath": {
                "items": {
                  "properties": {
                    "default-value": {
                      "description": "Default Value for the Input Parameter",
                      "pattern": "",
                      "type": "string"
                    },
                    "label": {
                      "description": "A descriptive string",
                      "pattern": "",
                      "type": "string"
                    },
                    "xpath": {
                      "description": "An xpath that specifies the element in a descriptor.",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "version": {
                "description": "Version of the NSD",
                "pattern": "",
                "type": "string"
              },
              "id": {
                "description": "Identifier for the NSD.",
                "pattern": "",
                "type": "string"
              },
              "monitoring-param": {
                "items": {
                  "properties": {
                    "numeric-constraints": {
                      "properties": {
                        "max-value": {
                          "description": "Maximum value for the parameter",
                          "type": "integer"
                        },
                        "min-value": {
                          "description": "Minimum value for the parameter",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "vnfd-monitoring-param": {
                      "items": {
                        "properties": {
                          "member-vnf-index-ref": {
                            "description": "Mandatory reference to member-vnf within constituent-vnfds",
                            "type": "string"
                          },
                          "vnfd-id-ref": {
                            "description": "A reference to a VNFD. This is a leafref",
                            "type": "string"
                          },
                          "vnfd-monitoring-param-ref": {
                            "description": "A reference to the VNFD monitoring param",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "value-type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "INT",
                            "DECIMAL",
                            "STRING"
                          ]
                        }
                      }
                    },
                    "aggregation-type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "AVERAGE",
                            "MINIMUM",
                            "MAXIMUM",
                            "COUNT",
                            "SUM"
                          ]
                        }
                      }
                    },
                    "value-decimal": {
                      "description": "Current value for a decimal parameter",
                      "type": "integer"
                    },
                    "group-tag": {
                      "description": "A tag to group monitoring parameters",
                      "pattern": "",
                      "type": "string"
                    },
                    "id": {
                      "description": "",
                      "pattern": "",
                      "type": "string"
                    },
                    "value-string": {
                      "description": "Current value for a string parameter",
                      "pattern": "",
                      "type": "string"
                    },
                    "value-integer": {
                      "description": "Current value for an integer parameter",
                      "type": "integer"
                    },
                    "units": {
                      "description": "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)",
                      "pattern": "",
                      "type": "string"
                    },
                    "description": {
                      "description": "",
                      "pattern": "",
                      "type": "string"
                    },
                    "text-constraints": {
                      "properties": {
                        "max-length": {
                          "description": "Maximum string length for the parameter",
                          "type": "number"
                        },
                        "min-length": {
                          "description": "Minimum string length for the parameter",
                          "type": "number"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "widget-type": {
                      "description": "Defines the UI Display variant of measured counters.",
                      "properties": {
                        "type": {
                          "enum": [
                            "COUNTER",
                            "GAUGE",
                            "TEXTBOX",
                            "SLIDER",
                            "HISTOGRAM",
                            "BAR"
                          ]
                        }
                      }
                    },
                    "name": {
                      "description": "",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "vnf-dependency": {
                "items": {
                  "properties": {
                    "vnf-source-ref": {
                      "description": "",
                      "type": "string"
                    },
                    "vnf-depends-on-ref": {
                      "description": "Reference to VNF that sorce VNF depends.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "constituent-vnfd": {
                "items": {
                  "properties": {
                    "member-vnf-index": {
                      "description": "Identifier/index for the VNFD. This separate id\nis required to ensure that multiple VNFs can be\npart of single NS",
                      "pattern": "",
                      "type": "string"
                    },
                    "start-by-default": {
                      "description": "VNFD is started as part of the NS instantiation",
                      "type": "boolean"
                    },
                    "vnfd-id-ref": {
                      "description": "Identifier for the VNFD.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "connection-point": {
                "items": {
                  "properties": {
                    "vld-id-ref": {
                      "description": "ID reference to a VLD in the NS",
                      "type": "string"
                    },
                    "floating-ip-required": {
                      "description": "Boolean parameter to indicate whether the CP must be exposed.\nA public IP address will be allocated to this CP if exposed is true.\nThe default is false meaning a floating IP address is not required.\nIt must be explicitly asked for a floating IP address to be allocated.",
                      "type": "boolean"
                    },
                    "type": {
                      "description": "Type of the connection point.",
                      "properties": {
                        "type": {
                          "enum": [
                            "VPORT"
                          ]
                        }
                      }
                    },
                    "vnfd-id-ref": {
                      "description": "A reference to a vnfd. This is a leafref to path:\n   ../../nsd:constituent-vnfd\n   + [nsd:id = current()/../nsd:id-ref]\n   + /nsd:vnfd-id-ref",
                      "type": "string"
                    },
                    "member-vnf-index-ref": {
                      "description": "Reference to member-vnf within constituent-vnfd",
                      "type": "string"
                    },
                    "vnfd-connection-point-ref": {
                      "description": "A reference to a connection point name\n   in a vnfd. This is a leafref to path:\n       /vnfd:vnfd-catalog/vnfd:vnfd\n       + [vnfd:id = current()/../nsd:vnfd-id-ref]\n       + /vnfd:connection-point/vnfd:name",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the connection point.",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "description": {
                "description": "Description of the NSD.",
                "pattern": "",
                "type": "string"
              },
              "parameter-pool": {
                "items": {
                  "properties": {
                    "range": {
                      "properties": {
                        "start-value": {
                          "description": "Generated pool values start at this value",
                          "type": "integer"
                        },
                        "end-value": {
                          "description": "Generated pool values stop at this value",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "name": {
                      "description": "Name of the configuration value pool",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "logo": {
                "description": "File path for  the vendor specific logo. For example icons/mylogo.png.\nThe logo  should be part of the network service",
                "pattern": "",
                "type": "string"
              },
              "vnffgd": {
                "items": {
                  "properties": {
                    "id": {
                      "description": "Identifier for the FGD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "rsp": {
                      "items": {
                        "properties": {
                          "id": {
                            "description": "Identifier for the RSP.",
                            "pattern": "",
                            "type": "string"
                          },
                          "vnfd-connection-point-ref": {
                            "items": {
                              "properties": {
                                "vnfd-egress-connection-point-ref": {
                                  "description": "A reference to a connection point name\n   in a vnfd. This is a leafref to path:\n       /vnfd:vnfd-catalog/vnfd:vnfd\n       + [vnfd:id = current()/../nsd:vnfd-id-ref]\n       + /vnfd:connection-point/vnfd:name\n   NOTE: An issue with confd is preventing the\n   use of xpath. Seems to be an issue with leafref\n   to leafref, whose target is in a different module.\n   Once that is resolved this will switched to use\n   leafref",
                                  "pattern": "",
                                  "type": "string"
                                },
                                "vnfd-ingress-connection-point-ref": {
                                  "description": "A reference to a connection point name\n   in a vnfd. This is a leafref to path:\n       /vnfd:vnfd-catalog/vnfd:vnfd\n       + [vnfd:id = current()/../nsd:vnfd-id-ref]\n       + /vnfd:connection-point/vnfd:name\n   NOTE: An issue with confd is preventing the\n   use of xpath. Seems to be an issue with leafref\n   to leafref, whose target is in a different module.\n   Once that is resolved this will switched to use\n   leafref",
                                  "pattern": "",
                                  "type": "string"
                                },
                                "member-vnf-index-ref": {
                                  "description": "Reference to member-vnf within constituent-vnfds",
                                  "type": "string"
                                },
                                "vnfd-id-ref": {
                                  "description": "A reference to a vnfd. This is a\n   leafref to path:\n       ../../../../nsd:constituent-vnfd\n       + [nsd:id = current()/../nsd:id-ref]\n       + /nsd:vnfd-id-ref",
                                  "type": "string"
                                },
                                "order": {
                                  "description": "A number that denotes the order of a VNF in a chain",
                                  "type": "number"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "RSP name.",
                            "pattern": "",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "vendor": {
                      "description": "Provider of the FGD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "short-name": {
                      "description": "Short name to appear as label in the UI",
                      "pattern": "",
                      "type": "string"
                    },
                    "classifier": {
                      "items": {
                        "properties": {
                          "id": {
                            "description": "Identifier for the classifier rule.",
                            "pattern": "",
                            "type": "string"
                          },
                          "match-attributes": {
                            "items": {
                              "properties": {
                                "id": {
                                  "description": "Identifier for the classifier match attribute rule.",
                                  "pattern": "",
                                  "type": "string"
                                },
                                "source-ip-address": {
                                  "description": "Source IP address.",
                                  "oneOf": [
                                    {
                                      "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                                      "type": "string"
                                    },
                                    {
                                      "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                                      "type": "string"
                                    }
                                  ]
                                },
                                "destination-port": {
                                  "description": "Destination port number.",
                                  "type": "number"
                                },
                                "ip-proto": {
                                  "description": "IP Protocol.",
                                  "type": "number"
                                },
                                "source-port": {
                                  "description": "Source port number.",
                                  "type": "number"
                                },
                                "destination-ip-address": {
                                  "description": "Destination IP address.",
                                  "oneOf": [
                                    {
                                      "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?",
                                      "type": "string"
                                    },
                                    {
                                      "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?",
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array",
                            "additionalProperties": false
                          },
                          "vnfd-id-ref": {
                            "description": "A reference to a vnfd. This is a\n   leafref to path:\n       ../../../nsd:constituent-vnfd\n       + [nsd:id = current()/../nsd:id-ref]\n       + /nsd:vnfd-id-ref",
                            "type": "string"
                          },
                          "rsp-id-ref": {
                            "description": "A reference to the RSP.",
                            "type": "string"
                          },
                          "member-vnf-index-ref": {
                            "description": "Reference to member-vnf within constituent-vnfds",
                            "type": "string"
                          },
                          "vnfd-connection-point-ref": {
                            "description": "A reference to a connection point name\n   in a vnfd. This is a leafref to path:\n       /vnfd:vnfd-catalog/vnfd:vnfd\n       + [vnfd:id = current()/../nsd:vnfd-id-ref]\n       + /vnfd:connection-point/vnfd:name\n   NOTE: An issue with confd is preventing the\n   use of xpath. Seems to be an issue with leafref\n   to leafref, whose target is in a different module.\n   Once that is resolved this will switched to use\n   leafref",
                            "pattern": "",
                            "type": "string"
                          },
                          "name": {
                            "description": "Name of the classifier.",
                            "pattern": "",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "description": {
                      "description": "Description of the FGD.",
                      "pattern": "",
                      "type": "string"
                    },
                    "version": {
                      "description": "Version of the FGD",
                      "pattern": "",
                      "type": "string"
                    },
                    "name": {
                      "description": "FGD name.",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "placement-groups": {
                "items": {
                  "properties": {
                    "member-vnfd": {
                      "items": {
                        "properties": {
                          "member-vnf-index-ref": {
                            "description": "Member VNF index of this member VNF",
                            "type": "string"
                          },
                          "vnfd-id-ref": {
                            "description": "Identifier for the VNFD.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "requirement": {
                      "description": "This is free text space used to describe the intent/rationale\nbehind this placement group. This is for human consumption only",
                      "pattern": "",
                      "type": "string"
                    },
                    "strategy": {
                      "description": "Strategy associated with this placement group\n  Following values are possible\n    - COLOCATION: Colocation strategy imply intent to share the physical\n                  infrastructure (hypervisor/network) among all members\n                  of this group.\n    - ISOLATION: Isolation strategy imply intent to not share the physical\n                 infrastructure (hypervisor/network) among the members\n                 of this group.\n  ",
                      "properties": {
                        "type": {
                          "enum": [
                            "COLOCATION",
                            "ISOLATION"
                          ]
                        }
                      }
                    },
                    "name": {
                      "description": "Place group construct to define the compute resource placement strategy\nin cloud environment",
                      "pattern": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "name": {
                "description": "NSD name.",
                "pattern": "",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "nsd"
}