{
  "description": "This type represents configuration parameters of a VNF instance and its VNFC instances.\n",
  "type": "object",
  "required": [
    "vnfConfigurationData"
  ],
  "properties": {
    "vnfConfigurationData": {
      "description": "This type represents configuration parameters of a VNF instance.\n",
      "type": "object",
      "properties": {
        "extCpConfig": {
          "description": "This type represents configuration parameters of a CP instance.\n",
          "type": "object",
          "required": [
            "cpId",
            "cpdId",
            "addresses"
          ],
          "properties": {
            "cpId": {
              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
              "type": "string"
            },
            "cpdId": {
              "description": "An identifier that is unique within a VNF descriptor.\n",
              "type": "string"
            },
            "addresses": {
              "description": "Network address and port assigned to the CP.\n",
              "type": "array",
              "items": {
                "description": "This type represents configuration parameters of a CP instance address.   *  NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n   *  NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n",
                "type": "object",
                "properties": {
                  "address": {
                    "description": "Network address that has been configured on the CP. See NOTE 1.\n",
                    "type": "object",
                    "properties": {
                      "macAddress": {
                        "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                        "type": "string",
                        "format": "MAC"
                      },
                      "ipAddress": {
                        "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
                        "type": "string",
                        "format": "IP"
                      }
                    }
                  },
                  "useDynamicAddress": {
                    "description": "Set to true if an address shall be assigned dynamically. Otherwise set to false. The default value shall be false. See NOTE 1.\n",
                    "type": "boolean"
                  },
                  "port": {
                    "description": "The port assigned to the CP instance (e.g. IP port number, Ethernet port number, etc.).\n",
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "dhcpServer": {
          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
          "type": "string",
          "format": "IP"
        },
        "vnfSpecificData": {
          "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159.\n",
          "type": "object"
        }
      }
    },
    "vnfcConfigurationData": {
      "description": "Configuration parameters of the VNFC instances.\n",
      "type": "array",
      "items": {
        "description": "This type represents configuration parameters of a VNFC instance.\n",
        "type": "object",
        "required": [
          "vnfcInstanceId"
        ],
        "properties": {
          "vnfcInstanceId": {
            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
            "type": "string"
          },
          "intCpConfig": {
            "description": "Configuration parameters for the internal CPs of the VNFC instance.\n",
            "type": "array",
            "items": {
              "description": "This type represents configuration parameters of a CP instance.\n",
              "type": "object",
              "required": [
                "cpId",
                "cpdId",
                "addresses"
              ],
              "properties": {
                "cpId": {
                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                  "type": "string"
                },
                "cpdId": {
                  "description": "An identifier that is unique within a VNF descriptor.\n",
                  "type": "string"
                },
                "addresses": {
                  "description": "Network address and port assigned to the CP.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents configuration parameters of a CP instance address.   *  NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n   *  NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n",
                    "type": "object",
                    "properties": {
                      "address": {
                        "description": "Network address that has been configured on the CP. See NOTE 1.\n",
                        "type": "object",
                        "properties": {
                          "macAddress": {
                            "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                            "type": "string",
                            "format": "MAC"
                          },
                          "ipAddress": {
                            "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
                            "type": "string",
                            "format": "IP"
                          }
                        }
                      },
                      "useDynamicAddress": {
                        "description": "Set to true if an address shall be assigned dynamically. Otherwise set to false. The default value shall be false. See NOTE 1.\n",
                        "type": "boolean"
                      },
                      "port": {
                        "description": "The port assigned to the CP instance (e.g. IP port number, Ethernet port number, etc.).\n",
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            }
          },
          "dhcpServer": {
            "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
            "type": "string",
            "format": "IP"
          },
          "vnfcSpecificData": {
            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159.\n",
            "type": "object"
          }
        }
      }
    }
  }
}