{
  "id": "@itentialopensource/adapter-etsi_sol002",
  "type": "Adapter",
  "export": "EtsiSol002",
  "title": "Etsi_sol002",
  "src": "adapter.js",
  "roles": [
    "admin"
  ],
  "methods": [
    {
      "name": "iapUpdateAdapterConfiguration",
      "summary": "Updates the adapter configuration",
      "description": "Updates the adapter configuration file with the provided changes",
      "input": [
        {
          "name": "configFile",
          "type": "string",
          "info": "The name of the file to change",
          "required": true,
          "schema": {
            "title": "configFile",
            "type": "string"
          }
        },
        {
          "name": "changes",
          "type": "object",
          "info": "JSON object containing the configuration changes",
          "required": true,
          "schema": {
            "title": "changes",
            "type": "object"
          }
        },
        {
          "name": "entity",
          "type": "string",
          "info": "The entity in which the changes are being made",
          "required": false,
          "schema": {
            "title": "entity",
            "type": "string"
          }
        },
        {
          "name": "type",
          "type": "string",
          "info": "The type of file to change - action, schema, or mock",
          "required": false,
          "schema": {
            "title": "type",
            "type": "string"
          }
        },
        {
          "name": "action",
          "type": "string",
          "info": "The action to be changed",
          "required": false,
          "schema": {
            "title": "action",
            "type": "string"
          }
        },
        {
          "name" : "replace",
          "type": "boolean",
          "info": "True to replace entire mock data, false to merge/append",
          "required": false,
          "schema": {
            "title": "replace",
            "type" : "boolean"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapUpdateAdapterConfiguration"
      },
      "task": true
    },
    {
      "name": "iapSuspendAdapter",
      "summary": "Suspends the adapter",
      "description": "Suspends the adapter",
      "input": [
        {
          "name": "mode",
          "type": "enum",
          "enumerals": [
            "pause",
            "error"
          ],
          "info": "How incoming requests are handled. Defaults to 'pause'",
          "description": "How incoming requests are handled. Defaults to 'pause'",
          "schema": {
            "title": "mode",
            "type": "string"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter suspended status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapSuspendAdapter"
      },
      "task": true
    },
    {
      "name": "iapUnsuspendAdapter",
      "summary": "Unsuspends the adapter",
      "description": "Unsuspends the adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter suspended status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapUnsuspendAdapter"
      },
      "task": true
    },
    {
      "name": "iapGetAdapterQueue",
      "summary": "Return the requests that are waiting in the queue if throttling is enabled",
      "description": "Return the requests that are waiting in the queue if throttling is enabled",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter queue",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapGetAdapterQueue"
      },
      "task": true
    },
    {
      "name": "iapFindAdapterPath",
      "summary": "Provides the ability to see if a particular API path is supported by the adapter",
      "description": "Provides the ability to see if a particular API path is supported by the adapter",
      "input": [
        {
          "name": "apiPath",
          "type": "string",
          "info": "The API Path you want to check - make sure to not include base path and version",
          "description": "The API Path you want to check - make sure to not include base path and version",
          "schema": {
            "title": "apiPath",
            "type": "string"
          },
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapFindAdapterPath"
      },
      "task": true
    },
    {
      "name": "iapTroubleshootAdapter",
      "summary": "Runs troubleshoot script for adapter",
      "description": "Runs troubleshoot script for adapter",
      "input": [
        {
          "name": "props",
          "type": "object",
          "info": "Object containing configuration, healthcheck and auth properties {'connProps':{'host': 'api.service.com', 'base_path': '/', 'protocol': 'http', 'port': 443, 'version': 'v1'},'healthCheckEndpoint': '/healthcheck', 'auth': {'auth_method': 'no authentication', 'username': 'username', 'password': 'password'}}",
          "required": true,
          "schema": {
            "title": "props",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapTroubleshootAdapter"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterHealthcheck",
      "summary": "Runs healthcheck script for adapter",
      "description": "Runs healthcheck script for adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "boolean",
        "description": "Whether healthcheck passed or failed",
        "schema": {
          "title": "result",
          "type": "boolean"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterHealthcheck"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterConnectivity",
      "summary": "Runs connectivity check script for adapter",
      "description": "Runs connectivity check script for adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterConnectivity"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterBasicGet",
      "summary": "Runs basicGet script for adapter",
      "description": "Runs basicGet script for adapter",
      "input": [
        {
          "name": "maxCalls",
          "required": false,
          "type": "number", 
          "info": "How many GET endpoints to test (defaults to 5)",
          "schema": {
            "title": "maxCalls",
            "type": "number", 
            "default": 5
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterBasicGet"
      },
      "task": true
    },
    {
      "name": "iapMoveAdapterEntitiesToDB",
      "summary": "Moves entities from an adapter into the Itential Platform database",
      "description": "Moves entities from an adapter into the Itential Platform database",
      "input": [],
      "output": {
        "name": "res",
        "type": "object",
        "description": "A JSON Object containing status, code and the response from the mongo transaction",
        "schema": {
          "title": "res",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapMoveAdapterEntitiesToDB"
      },
      "task": true
    },
    {
      "name": "iapDeactivateTasks",
      "summary": "Deactivate the inputted tasks",
      "description": "Deactivate the inputted tasks",
      "input": [
        {
          "name": "tasks",
          "type": "array",
          "description": "Tasks to deactivate",
          "schema": {
            "title": "tasks",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing success status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapDeactivateTasks"
      },
      "task": true
    },
    {
      "name": "iapActivateTasks",
      "summary": "Activate the inputted tasks",
      "description": "activate the inputted tasks",
      "input": [
        {
          "name": "tasks",
          "type": "array",
          "description": "Tasks to activate",
          "schema": {
            "title": "tasks",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing success status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapActivateTasks"
      },
      "task": true
    },
    {
      "name": "iapPopulateEntityCache",
      "summary": "Populate the cache for the given entities",
      "description": "Populate the cache for the given entities",
      "input": [
        {
          "name": "entityTypes",
          "type": "array",
          "info": "the entity type(s) to populate",
          "required": true,
          "schema": {
            "title": "entityTypes",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapPopulateEntityCache"
      },
      "task": true
    },
    {
      "name": "iapRetrieveEntitiesCache",
      "summary": "Retrieves data from cache for specified entity type",
      "description": "Retrieves data from cache for specified entity type",
      "input": [
        {
          "name": "entityType",
          "type": "string",
          "info": "entity of which to retrieve",
          "required": true,
          "schema": {
            "title": "entityType",
            "type": "string"
          }
        },
        {
          "name": "options",
          "type": "object",
          "info": "settings of which data to return and how to return it",
          "required": false,
          "schema": {
            "title": "options",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRetrieveEntitiesCache"
      },
      "task": true
    },
    {
      "name": "getDevice",
      "summary": "Get the Appliance",
      "description": "Get the Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getDevice"
      },
      "task": false
    },
    {
      "name": "getDevicesFiltered",
      "summary": "Get Appliances that match the filter",
      "description": "Get Appliances that match the filter",
      "input": [
        {
          "name": "options",
          "type": "object",
          "info": "options - e.g. { 'start': 1, 'limit': 20, 'filter': { 'name': 'abc123' } }",
          "required": true,
          "schema": {
            "title": "options",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "array",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "array"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getDevicesFiltered"
      },
      "task": false
    },
    {
      "name": "isAlive",
      "summary": "Checks the status for the provided Appliance",
      "description": "Checks the status for the provided Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "boolean",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "boolean"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/isAlive"
      },
      "task": false
    },
    {
      "name": "getConfig",
      "summary": "Gets a config for the provided Appliance",
      "description": "Gets a config for the provided Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        },
        {
          "name": "format",
          "type": "string",
          "info": "The format to be returned - this is ignored as we always return json",
          "required": false,
          "schema": {
            "title": "format",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getConfig"
      },
      "task": false
    },
    {
      "name": "iapGetDeviceCount",
      "summary": "Gets a device count from the system",
      "description": "Gets a device count from the system",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapGetDeviceCount"
      },
      "task": false
    },
    {
      "name": "iapExpandedGenericAdapterRequest",
      "summary": "Makes the requested generic call with additional options",
      "description": "Makes the requested generic call with additional options via metadata",
      "input": [
        {
          "name": "metadata",
          "type": "object",
          "info": "metadata for the call (optional)",
          "description": "metadata for the call - allows for many enhancements (optional)",
          "schema": {
            "title": "metadata",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": false
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": false
        },
        {
          "name": "pathVars",
          "type": "object",
          "info": "the parameters to be put within the url path (optional)",
          "description": "the parameters to be put within the url path (optional)",
          "schema": {
            "title": "pathVars",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapExpandedGenericAdapterRequest"
      },
      "task": true
    },
    {
      "name": "genericAdapterRequest",
      "summary": "Makes the requested generic call",
      "description": "Makes the requested generic call",
      "input": [
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/genericAdapterRequest"
      },
      "task": true
    },
    {
      "name": "genericAdapterRequestNoBasePath",
      "summary": "Makes the requested generic call",
      "description": "Makes the requested generic call",
      "input": [
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/genericAdapterRequestNoBasePath"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterLint",
      "summary": "Run the adapter lint script to return the results",
      "description": "Run the adapter lint script to return the results",
      "input": [],
      "output": {
        "name": "result",
        "type": "string",
        "description": "A string containing the run results",
        "schema": {
          "title": "result",
          "type": "string"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapRunAdapterLint"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterTests",
      "summary": "Run the adapter test scripts (baseunit and unit) to return the results",
      "description": "Run the adapter test scripts (baseunit and unit) to return the results",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapRunAdapterTests"
      },
      "task": true
    },
    {
      "name": "iapGetAdapterInventory",
      "summary": "Provide inventory information abbout the adapter",
      "description": "Provide inventory information abbout the adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapGetAdapterInventory"
      },
      "task": true
    },
    {
      "name": "getApiVersions",
      "summary": "Retrieve API version information",
      "description": "The GET method reads API version information. This method shall follow the provisions specified in table 4.6.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not supported.",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents API version information.\n",
          "type": "object",
          "required": [
            "uriPrefix",
            "apiVersions"
          ],
          "properties": {
            "uriPrefix": {
              "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n",
              "type": "string"
            },
            "apiVersions": {
              "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n",
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "version"
                ],
                "properties": {
                  "version": {
                    "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n",
                    "type": "string"
                  },
                  "isDeprecated": {
                    "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n",
                    "type": "boolean"
                  },
                  "retirementDate": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/getApiVersions"
      },
      "task": true
    },
    {
      "name": "getConfiguration",
      "summary": "Read VNF/VNFC configuration from VNF",
      "description": "The client can use this method to read configuration information about a VNF instance and/or its VNFC instances.",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "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": "Configuration parameters for the external CPs of the VNF 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.\n   *  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"
                                },
                                "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"
                                }
                              }
                            },
                            "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"
                },
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\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.\n   *  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"
                                  },
                                  "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"
                                  }
                                }
                              },
                              "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"
                  },
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/getConfiguration"
      },
      "task": true
    },
    {
      "name": "patchConfiguration",
      "summary": "Modify VNF/VNFC configuration.",
      "description": "This method sets or modifies a configuration resource.",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "The parameter for the configuration modification, as defined in clause 9.5.2.2.: {\"vnfConfigurationData\": {\"extCpConfig\": [{\"cpId\": \"string\", \"cpdId\": \"string\", \"addresses\": [{\"address\": {\"macAddress\": \"string\", \"ipAddress\": \"string\"}, \"useDynamicAddress\": \"boolean\", \"port\": 123}]}], \"dhcpServer\": \"string\", \"vnfSpecificData\": \"object\"}, \"vnfcConfigurationData\": [{\"vnfcInstanceId\": \"string\", \"intCpConfig\": [{\"cpId\": \"string\", \"cpdId\": \"string\", \"addresses\": [{\"address\": {\"macAddress\": \"string\", \"ipAddress\": \"string\"}, \"useDynamicAddress\": \"boolean\", \"port\": 123}]}], \"dhcpServer\": \"string\", \"vnfcSpecificData\": \"object\"}], \"vnfcConfigurationDataDeleteIds\": \"array\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Set Configuration\" operation.\n  * NOTE 1: At least one of \"vnfConfigurationData\" and \"vnfcConfigurationData\"\n            shall be present.\n  * NOTE 2: The VnfcConfiguration data type can only be used to modify the configuration\n            of existing VNFC instances.\n",
            "type": "object",
            "properties": {
              "vnfConfigurationData": {
                "description": "This type represents configuration parameters of a VNF instance.\n",
                "type": "object",
                "properties": {
                  "extCpConfig": {
                    "description": "Configuration parameters for the external CPs of the VNF 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.\n   *  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"
                                  },
                                  "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"
                                  }
                                }
                              },
                              "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"
                  },
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              },
              "vnfcConfigurationData": {
                "description": "Modifications to configuration data for certain VNFC instances. See NOTE 1 and NOTE 2. If present, the modifications of the \"vnfcConfigurationData\" attribute shall follow these provisions:\n  Modifying an attribute that is an array of objects of type \"VnfcConfigurationData\".\n    Assumptions:\n      1) \"oldList\" is the \"VnfcConfigurationData\" array to be modified and \"newList\"\n         is the \"VnfcConfigurationData\" array that contains the changes.\n      2) \"oldEntry\" is an entry in \"oldList\" and \"newEntry\" is an entry in \"newList\".\n      3) A \"newEntry\" has a \"corresponding entry\" if there exists an \"oldEntry\" that\n         has the same content of the \"vnfcInstanceId\" attribute as the \"newEntry\";\n         a \"newEntry\" has no corresponding entry if no such \"oldEntry\" exists.\n      4) In any array of \"VnfcConfigurationData\" structures, the content of \"vnfcInstanceId\"\n         is unique (i.e. there shall be no two entries with the same content of \"vnfcInstanceId\").\n    Provisions:\n      1) For each \"newEntry\" in \"newList\" that has no corresponding entry in \"oldList\",\n         the \"oldList\" array shall be modified by adding that \"newEntry\".\n\n      2) For each \"newEntry\" in \"newList\" that has a corresponding \"oldEntry\" in \"oldList\",\n         the value of \"oldEntry\" shall be updated with the value of \"newEntry\" according to\n        the rules of JSON Merge PATCH (see IETF RFC 7396 ).\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.\n   *  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"
                                    },
                                    "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"
                                    }
                                  }
                                },
                                "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"
                    },
                    "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    }
                  }
                }
              },
              "vnfcConfigurationDataDeleteIds": {
                "description": "List of identifiers entries to be deleted from the 'vnfcConfigurationData\" attribute array to be used as \"deleteIdList\" as defined below this table.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents request parameters for the \"Set Configuration\" operation.\n  * NOTE 1: At least one of \"vnfConfigurationData\" and \"vnfcConfigurationData\"\n            shall be present.\n  * NOTE 2: The VnfcConfiguration data type can only be used to modify the configuration\n            of existing VNFC instances.\n",
          "type": "object",
          "properties": {
            "vnfConfigurationData": {
              "description": "This type represents configuration parameters of a VNF instance.\n",
              "type": "object",
              "properties": {
                "extCpConfig": {
                  "description": "Configuration parameters for the external CPs of the VNF 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.\n   *  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"
                                },
                                "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"
                                }
                              }
                            },
                            "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"
                },
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                }
              }
            },
            "vnfcConfigurationData": {
              "description": "Modifications to configuration data for certain VNFC instances. See NOTE 1 and NOTE 2. If present, the modifications of the \"vnfcConfigurationData\" attribute shall follow these provisions:\n  Modifying an attribute that is an array of objects of type \"VnfcConfigurationData\".\n    Assumptions:\n      1) \"oldList\" is the \"VnfcConfigurationData\" array to be modified and \"newList\"\n         is the \"VnfcConfigurationData\" array that contains the changes.\n      2) \"oldEntry\" is an entry in \"oldList\" and \"newEntry\" is an entry in \"newList\".\n      3) A \"newEntry\" has a \"corresponding entry\" if there exists an \"oldEntry\" that\n         has the same content of the \"vnfcInstanceId\" attribute as the \"newEntry\";\n         a \"newEntry\" has no corresponding entry if no such \"oldEntry\" exists.\n      4) In any array of \"VnfcConfigurationData\" structures, the content of \"vnfcInstanceId\"\n         is unique (i.e. there shall be no two entries with the same content of \"vnfcInstanceId\").\n    Provisions:\n      1) For each \"newEntry\" in \"newList\" that has no corresponding entry in \"oldList\",\n         the \"oldList\" array shall be modified by adding that \"newEntry\".\n\n      2) For each \"newEntry\" in \"newList\" that has a corresponding \"oldEntry\" in \"oldList\",\n         the value of \"oldEntry\" shall be updated with the value of \"newEntry\" according to\n        the rules of JSON Merge PATCH (see IETF RFC 7396 ).\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.\n   *  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"
                                  },
                                  "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"
                                  }
                                }
                              },
                              "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"
                  },
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              }
            },
            "vnfcConfigurationDataDeleteIds": {
              "description": "List of identifiers entries to be deleted from the 'vnfcConfigurationData\" attribute array to be used as \"deleteIdList\" as defined below this table.\n",
              "type": "array",
              "items": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/patchConfiguration"
      },
      "task": true
    },
    {
      "name": "getIndicators",
      "summary": "Query multiple indicators",
      "description": "Get a list of indicators. Support of attribute based filtering via query parameters.",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a VNF indicator value.\n",
            "type": "object",
            "required": [
              "id",
              "value",
              "vnfInstanceId",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "name": {
                "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n",
                "type": "string"
              },
              "value": {
                "description": "Provides the value of the indicator. The value format is defined in the VNFD. ETSI GS NFV-SOL 001 specifies the structure and format of the  VNFD based on TOSCA specifications.\n",
                "type": "object"
              },
              "vnfInstanceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self",
                  "vnfInstance"
                ],
                "properties": {
                  "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"
                      }
                    }
                  },
                  "vnfInstance": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getIndicators"
      },
      "task": true
    },
    {
      "name": "getIndicatorsVnfInstanceId",
      "summary": "Query multiple indicators related to a VNF instance.",
      "description": "Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query\nparameters.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Service Unavailable.\nIdentifier of the VNF instance to which the VNF indicators applies.\nNOTE: This identifier can be retrieved from the resource referenced by the \"Locat...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a VNF indicator value.\n",
            "type": "object",
            "required": [
              "id",
              "value",
              "vnfInstanceId",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "name": {
                "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n",
                "type": "string"
              },
              "value": {
                "description": "Provides the value of the indicator. The value format is defined in the VNFD. ETSI GS NFV-SOL 001 specifies the structure and format of the  VNFD based on TOSCA specifications.\n",
                "type": "object"
              },
              "vnfInstanceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self",
                  "vnfInstance"
                ],
                "properties": {
                  "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"
                      }
                    }
                  },
                  "vnfInstance": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getIndicatorsVnfInstanceId"
      },
      "task": true
    },
    {
      "name": "getIndicatorsVnfInstanceIdIndicatorId",
      "summary": "Read an inidividual VNF indicator related to a VNF instance.",
      "description": "Read an individual VNF indicator related to a specific VNF instance. NOTE: This identifier can be retrieved\nfrom the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new VNF\ninstance resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Service Unavailable.\nIdentifier of the VNF instance to which the VNF indicators applies.\nNOTE: This identifier can be retrieved from the resource referenced by the \"Locat...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "indicatorId",
          "type": "string",
          "info": "Identifier of the VNF indicator.\n: string",
          "required": true,
          "schema": {
            "title": "indicatorId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF indicator value.\n",
          "type": "object",
          "required": [
            "id",
            "value",
            "vnfInstanceId",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier that is unique within a VNF descriptor.\n",
              "type": "string"
            },
            "name": {
              "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n",
              "type": "string"
            },
            "value": {
              "description": "Provides the value of the indicator. The value format is defined in the VNFD. ETSI GS NFV-SOL 001 specifies the structure and format of the  VNFD based on TOSCA specifications.\n",
              "type": "object"
            },
            "vnfInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self",
                "vnfInstance"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "vnfInstance": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getIndicatorsVnfInstanceIdIndicatorId"
      },
      "task": true
    },
    {
      "name": "getSubscriptions",
      "summary": "Query multiple subscriptions.",
      "description": "Service Unavailable\nThe GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for resynchronization after error situations.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n",
            "type": "object",
            "required": [
              "id",
              "callbackUri",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "filter": {
                "description": "This type represents a subscription filter for notifications related to VNF indicators. 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": {
                  "vnfInstanceSubscriptionFilter": {
                    "description": "This type represents subscription filter criteria to match VNF instances.\n",
                    "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. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfProductsFromProviders": {
                        "description": "If present, match VNF instances that belong to VNF products from certain providers. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "vnfProvider"
                          ],
                          "properties": {
                            "vnfProvider": {
                              "description": "Name of the VNF provider to match.\n",
                              "type": "string"
                            },
                            "vnfProducts": {
                              "description": "If present, match VNF instances that belong to 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 instances that belong to 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": "A version.\n",
                                          "type": "string"
                                        },
                                        "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.\n",
                                          "type": "array",
                                          "items": {
                                            "description": "A version.\n",
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "vnfInstanceIds": {
                        "description": "If present, match VNF instances with an instance identifier listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfInstanceNames": {
                        "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "notificationTypes": {
                    "description": "Match particular notification types. Permitted values: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification The 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": [
                      "VnfIndicatorValueChangeNotification",
                      "SupportedIndicatorsChangeNotification"
                    ]
                  },
                  "indicatorIds": {
                    "description": "Match particular VNF indicator identifiers.\n",
                    "type": "array",
                    "items": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "callbackUri": {
                "description": "The URI of the endpoint to send the notification to.\n",
                "type": "string"
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self"
                ],
                "properties": {
                  "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriptions"
      },
      "task": true
    },
    {
      "name": "postSubscriptions",
      "summary": "Create a new subscription to VNF indicator change notifications",
      "description": "This method creates a new subscription. As the result of successfully executing this method, a new \"Individual\nsubscription\" resource as defined in clause 8.4.6 shall have been created.  This method shall not trigger any\nnotification. Creation of two \"Individual subscription\" resources with the same callbackURI and the same filter\ncan result in performance degradation and will provide duplicates of notifications to the VNFM, and might make\nsense only in very rare use cases. Consequently, the API...(description truncated)",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "Details of the subscription to be created.: {\"filter\": {\"vnfInstanceSubscriptionFilter\": {\"vnfdIds\": \"array\", \"vnfProductsFromProviders\": [{\"vnfProvider\": \"string\", \"vnfProducts\": [{\"vnfProductName\": \"string\", \"versions\": [{\"vnfSoftwareVersion\": \"string\", \"vnfdVersions\": \"array\"}]}]}], \"vnfInstanceIds\": \"array\", \"vnfInstanceNames\": \"array\"}, \"notificationTypes\": \"Must be one of [VnfIndicatorValueChangeNotification, SupportedIndicatorsChangeNotification]\", \"indicatorIds\": \"array\"}, \"callbackUri\": \"string\", \"authentication\": {\"authType\": \"array\", \"paramsBasic\": {\"userName\": \"string\", \"password\": \"string\"}, \"paramsOauth2ClientCredentials\": {\"clientId\": \"string\", \"clientPassword\": \"string\", \"tokenEndpoint\": \"string\"}}}",
          "required": true,
          "schema": {
            "description": "This type represents a subscription request related to VNF indicator value change notifications.\n",
            "type": "object",
            "required": [
              "callbackUri"
            ],
            "properties": {
              "filter": {
                "description": "This type represents a subscription filter for notifications related to VNF indicators. 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": {
                  "vnfInstanceSubscriptionFilter": {
                    "description": "This type represents subscription filter criteria to match VNF instances.\n",
                    "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. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfProductsFromProviders": {
                        "description": "If present, match VNF instances that belong to VNF products from certain providers. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "vnfProvider"
                          ],
                          "properties": {
                            "vnfProvider": {
                              "description": "Name of the VNF provider to match.\n",
                              "type": "string"
                            },
                            "vnfProducts": {
                              "description": "If present, match VNF instances that belong to 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 instances that belong to 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": "A version.\n",
                                          "type": "string"
                                        },
                                        "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.\n",
                                          "type": "array",
                                          "items": {
                                            "description": "A version.\n",
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "vnfInstanceIds": {
                        "description": "If present, match VNF instances with an instance identifier listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfInstanceNames": {
                        "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "notificationTypes": {
                    "description": "Match particular notification types. Permitted values: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification The 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": [
                      "VnfIndicatorValueChangeNotification",
                      "SupportedIndicatorsChangeNotification"
                    ]
                  },
                  "indicatorIds": {
                    "description": "Match particular VNF indicator identifiers.\n",
                    "type": "array",
                    "items": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "authType"
                ],
                "properties": {
                  "authType": {
                    "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "BASIC",
                        "OAUTH2_CLIENT_CREDENTIALS",
                        "TLS_CERT"
                      ]
                    }
                  },
                  "paramsBasic": {
                    "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "userName": {
                        "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      }
                    }
                  },
                  "paramsOauth2ClientCredentials": {
                    "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "clientPassword": {
                        "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "tokenEndpoint": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n",
            "type": "object",
            "required": [
              "id",
              "callbackUri",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "filter": {
                "description": "This type represents a subscription filter for notifications related to VNF indicators. 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": {
                  "vnfInstanceSubscriptionFilter": {
                    "description": "This type represents subscription filter criteria to match VNF instances.\n",
                    "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. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfProductsFromProviders": {
                        "description": "If present, match VNF instances that belong to VNF products from certain providers. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "vnfProvider"
                          ],
                          "properties": {
                            "vnfProvider": {
                              "description": "Name of the VNF provider to match.\n",
                              "type": "string"
                            },
                            "vnfProducts": {
                              "description": "If present, match VNF instances that belong to 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 instances that belong to 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": "A version.\n",
                                          "type": "string"
                                        },
                                        "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.\n",
                                          "type": "array",
                                          "items": {
                                            "description": "A version.\n",
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "vnfInstanceIds": {
                        "description": "If present, match VNF instances with an instance identifier listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      },
                      "vnfInstanceNames": {
                        "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. 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.\n",
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "notificationTypes": {
                    "description": "Match particular notification types. Permitted values: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification The 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": [
                      "VnfIndicatorValueChangeNotification",
                      "SupportedIndicatorsChangeNotification"
                    ]
                  },
                  "indicatorIds": {
                    "description": "Match particular VNF indicator identifiers.\n",
                    "type": "array",
                    "items": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "callbackUri": {
                "description": "The URI of the endpoint to send the notification to.\n",
                "type": "string"
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self"
                ],
                "properties": {
                  "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postSubscriptions"
      },
      "task": true
    },
    {
      "name": "getSubscriptionsSubscriptionId",
      "summary": "Read an individual subscription.",
      "description": "Service Unavailable\nThis resource represents an individual subscription. The client can use this resource to read and to terminate a subscription to notifications related to VNF indicator value changes.\n",
      "input": [
        {
          "name": "subscriptionId",
          "type": "string",
          "info": "Identifier of this subscription. NOTE:\n This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header\n in the response to a POST request cre...(description truncated): string",
          "required": true,
          "schema": {
            "title": "subscriptionId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n",
          "type": "object",
          "required": [
            "id",
            "callbackUri",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "filter": {
              "description": "This type represents a subscription filter for notifications related to VNF indicators. 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": {
                "vnfInstanceSubscriptionFilter": {
                  "description": "This type represents subscription filter criteria to match VNF instances.\n",
                  "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. 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.\n",
                      "type": "array",
                      "items": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      }
                    },
                    "vnfProductsFromProviders": {
                      "description": "If present, match VNF instances that belong to VNF products from certain providers. 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.\n",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "vnfProvider"
                        ],
                        "properties": {
                          "vnfProvider": {
                            "description": "Name of the VNF provider to match.\n",
                            "type": "string"
                          },
                          "vnfProducts": {
                            "description": "If present, match VNF instances that belong to 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 instances that belong to 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": "A version.\n",
                                        "type": "string"
                                      },
                                      "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.\n",
                                        "type": "array",
                                        "items": {
                                          "description": "A version.\n",
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "vnfInstanceIds": {
                      "description": "If present, match VNF instances with an instance identifier listed in this attribute. 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.\n",
                      "type": "array",
                      "items": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      }
                    },
                    "vnfInstanceNames": {
                      "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. 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.\n",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "notificationTypes": {
                  "description": "Match particular notification types. Permitted values: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification The 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": [
                    "VnfIndicatorValueChangeNotification",
                    "SupportedIndicatorsChangeNotification"
                  ]
                },
                "indicatorIds": {
                  "description": "Match particular VNF indicator identifiers.\n",
                  "type": "array",
                  "items": {
                    "description": "An identifier that is unique within a VNF descriptor.\n",
                    "type": "string"
                  }
                }
              }
            },
            "callbackUri": {
              "description": "The URI of the endpoint to send the notification to.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriptionsSubscriptionId"
      },
      "task": true
    },
    {
      "name": "deleteSubscriptionsSubscriptionId",
      "summary": "Delete a subscription",
      "description": "This method terminates an individual subscription. As the result\nof successfully executing this method, the \"Individual  subscription\"\nresource shall not exist any longer. This means that no  notifications for\nthat subscription shall be sent to the formerly-subscribed  API consumer.\nNOTE:\\tDue to race conditions, some notifications might still be received\nby the formerly-subscribed API consumer for a certain time period after\nthe deletion.\n",
      "input": [
        {
          "name": "subscriptionId",
          "type": "string",
          "info": "Identifier of this subscription. NOTE:\n This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header\n in the response to a POST request cre...(description truncated): string",
          "required": true,
          "schema": {
            "title": "subscriptionId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/deleteSubscriptionsSubscriptionId"
      },
      "task": true
    },
    {
      "name": "getAlarms",
      "summary": "The client can use this method to retrieve information about the alarm list.\n",
      "description": "The client can use this method to retrieve information about the alarm list.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "The alarm data type encapsulates information about an alarm.\n",
          "type": "object",
          "required": [
            "id",
            "managedObjectId",
            "alarmRaisedTime",
            "ackState",
            "perceivedSeverity",
            "eventTime",
            "eventType",
            "probableCause",
            "isRootCause",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "managedObjectId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfcInstanceIds": {
              "description": "Identifiers of the affected VNFC instances. Each identifier references the \"id\" attribute in a \"VnfcInfo\" structure. Shall be present if the alarm affects at least one VNFC instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "rootCauseFaultyResource": {
              "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n",
              "type": "object",
              "required": [
                "faultyResource",
                "faultyResourceType"
              ],
              "properties": {
                "faultyResource": {
                  "required": [
                    "resourceId"
                  ],
                  "type": "object",
                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                  "properties": {
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "vimLevelResourceType": {
                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                      "type": "string"
                    }
                  }
                },
                "faultyResourceType": {
                  "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n",
                  "type": "string",
                  "enum": [
                    "COMPUTE",
                    "STORAGE",
                    "NETWORK"
                  ]
                }
              }
            },
            "alarmRaisedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmChangedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmClearedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmAcknowledgedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "ackState": {
              "description": "Acknowledgement state of the alarm.  Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n",
              "type": "string",
              "enum": [
                "UNACKNOWLEDGED",
                "ACKNOWLEDGED"
              ]
            },
            "perceivedSeverity": {
              "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n  affecting condition has occurred and an immediate corrective action\n  is required. Such a severity can be reported, for example, when a\n  managed object becomes totally out of service and its capability needs\n  to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n  condition has developed and an urgent corrective action is required.\n  Such a severity can be reported, for example, when there is a severe\n  degradation in the capability of the managed object and its full\n  capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n  non-service affecting fault condition and that corrective action\n  should be taken in order to prevent a more serious (for example,\n  service affecting) fault. Such a severity can be reported, for\n  example, when the detected alarm condition is not currently degrading\n  the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n  potential or impending service affecting fault, before any significant\n  effects have been felt. Action should be taken to further diagnose (if\n  necessary) and correct the problem in order to prevent it from\n  becoming a more serious service affecting fault (ITU-T Recommendation\n  X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n  severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n  more previously reported alarms. This alarm clears all alarms for this\n  managed object that have the same Alarm type, Probable cause and\n  Specific problems (if given) (ITU-T Recommendation X.733).\n",
              "type": "string",
              "enum": [
                "CRITICAL",
                "MAJOR",
                "MINOR",
                "WARNING",
                "INDETERMINATE",
                "CLEARED"
              ]
            },
            "eventTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "eventType": {
              "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n  procedure and/or process required conveying information from one point\n  to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n  software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n  condition related to an enclosure in which the equipment resides\n  (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n  quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n  fault (ITU-T Recommendation X.733).\n",
              "type": "string",
              "enum": [
                "COMMUNICATIONS_ALARM",
                "PROCESSING_ERROR_ALARM",
                "ENVIRONMENTAL_ALARM",
                "QOS_ALARM",
                "EQUIPMENT_ALARM"
              ]
            },
            "faultType": {
              "description": "Additional information to clarify the type of the fault.\n",
              "type": "string"
            },
            "probableCause": {
              "description": "Information about the probable cause of the fault.\n",
              "type": "string"
            },
            "isRootCause": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "correlatedAlarmIds": {
              "description": "List of identifiers of other alarms correlated to this fault.\n",
              "type": "array",
              "items": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            },
            "faultDetails": {
              "description": "Provides additional information about the fault.\n",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "objectInstance": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getAlarms"
      },
      "task": true
    },
    {
      "name": "getAlarmsAlarmId",
      "summary": "The client can use this method to read an individual alarm.\n",
      "description": "The client can use this method to read an individual alarm.\n",
      "input": [
        {
          "name": "alarmId",
          "type": "string",
          "info": "Identifier of the alarm. This identifier can be retrieved from the \"id\" attribute of the \"alarm\" attribute\nin the AlarmNotification or AlarmClearedNotification. It can al...(description truncated): string",
          "required": true,
          "schema": {
            "title": "alarmId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "The alarm data type encapsulates information about an alarm.\n",
          "type": "object",
          "required": [
            "id",
            "managedObjectId",
            "alarmRaisedTime",
            "ackState",
            "perceivedSeverity",
            "eventTime",
            "eventType",
            "probableCause",
            "isRootCause",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "managedObjectId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfcInstanceIds": {
              "description": "Identifiers of the affected VNFC instances. Each identifier references the \"id\" attribute in a \"VnfcInfo\" structure. Shall be present if the alarm affects at least one VNFC instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "rootCauseFaultyResource": {
              "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n",
              "type": "object",
              "required": [
                "faultyResource",
                "faultyResourceType"
              ],
              "properties": {
                "faultyResource": {
                  "required": [
                    "resourceId"
                  ],
                  "type": "object",
                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                  "properties": {
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "vimLevelResourceType": {
                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                      "type": "string"
                    }
                  }
                },
                "faultyResourceType": {
                  "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n",
                  "type": "string",
                  "enum": [
                    "COMPUTE",
                    "STORAGE",
                    "NETWORK"
                  ]
                }
              }
            },
            "alarmRaisedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmChangedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmClearedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "alarmAcknowledgedTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "ackState": {
              "description": "Acknowledgement state of the alarm.  Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n",
              "type": "string",
              "enum": [
                "UNACKNOWLEDGED",
                "ACKNOWLEDGED"
              ]
            },
            "perceivedSeverity": {
              "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n  affecting condition has occurred and an immediate corrective action\n  is required. Such a severity can be reported, for example, when a\n  managed object becomes totally out of service and its capability needs\n  to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n  condition has developed and an urgent corrective action is required.\n  Such a severity can be reported, for example, when there is a severe\n  degradation in the capability of the managed object and its full\n  capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n  non-service affecting fault condition and that corrective action\n  should be taken in order to prevent a more serious (for example,\n  service affecting) fault. Such a severity can be reported, for\n  example, when the detected alarm condition is not currently degrading\n  the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n  potential or impending service affecting fault, before any significant\n  effects have been felt. Action should be taken to further diagnose (if\n  necessary) and correct the problem in order to prevent it from\n  becoming a more serious service affecting fault (ITU-T Recommendation\n  X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n  severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n  more previously reported alarms. This alarm clears all alarms for this\n  managed object that have the same Alarm type, Probable cause and\n  Specific problems (if given) (ITU-T Recommendation X.733).\n",
              "type": "string",
              "enum": [
                "CRITICAL",
                "MAJOR",
                "MINOR",
                "WARNING",
                "INDETERMINATE",
                "CLEARED"
              ]
            },
            "eventTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "eventType": {
              "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n  procedure and/or process required conveying information from one point\n  to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n  software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n  condition related to an enclosure in which the equipment resides\n  (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n  quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n  fault (ITU-T Recommendation X.733).\n",
              "type": "string",
              "enum": [
                "COMMUNICATIONS_ALARM",
                "PROCESSING_ERROR_ALARM",
                "ENVIRONMENTAL_ALARM",
                "QOS_ALARM",
                "EQUIPMENT_ALARM"
              ]
            },
            "faultType": {
              "description": "Additional information to clarify the type of the fault.\n",
              "type": "string"
            },
            "probableCause": {
              "description": "Information about the probable cause of the fault.\n",
              "type": "string"
            },
            "isRootCause": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "correlatedAlarmIds": {
              "description": "List of identifiers of other alarms correlated to this fault.\n",
              "type": "array",
              "items": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            },
            "faultDetails": {
              "description": "Provides additional information about the fault.\n",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "objectInstance": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getAlarmsAlarmId"
      },
      "task": true
    },
    {
      "name": "patchAlarmsAlarmId",
      "summary": "This method modifies an individual alarm resource.\n",
      "description": "This method modifies an individual alarm resource.\n",
      "input": [
        {
          "name": "alarmId",
          "type": "string",
          "info": "Identifier of the alarm. This identifier can be retrieved from the \"id\" attribute of the \"alarm\" attribute\nin the AlarmNotification or AlarmClearedNotification. It can al...(description truncated): string",
          "required": true,
          "schema": {
            "title": "alarmId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "The parameter for the alarm modification: {\"ackState\": \"Must be one of [ACKNOWLEDGED, UNACKNOWLEDGED]\"}",
          "required": true,
          "schema": {
            "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n",
            "type": "object",
            "required": [
              "ackState"
            ],
            "properties": {
              "ackState": {
                "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED * UNACKNOWLEDGED\n",
                "type": "string",
                "enum": [
                  "ACKNOWLEDGED",
                  "UNACKNOWLEDGED"
                ]
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n",
          "type": "object",
          "required": [
            "ackState"
          ],
          "properties": {
            "ackState": {
              "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED * UNACKNOWLEDGED\n",
              "type": "string",
              "enum": [
                "ACKNOWLEDGED",
                "UNACKNOWLEDGED"
              ]
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/patchAlarmsAlarmId"
      },
      "task": true
    },
    {
      "name": "postAlarmsAlarmIdEscalate",
      "summary": "The POST method enables the consumer to escalate the perceived severity of an alarm that is represe",
      "description": "The POST method enables the consumer to escalate the perceived severity of an alarm that is represented by an\nindividual alarm resource. As the result of successfully executing this method, a new \"Individual  subscription\"\nresource as defined in clause 7.4.5 shall have been created.  This method shall not trigger any notification.\n",
      "input": [
        {
          "name": "alarmId",
          "type": "string",
          "info": "Identifier of the alarm. This identifier can be retrieved from the \"id\" attribute of the \"alarm\" attribute\nin the AlarmNotification or AlarmClearedNotification. It can al...(description truncated): string",
          "required": true,
          "schema": {
            "title": "alarmId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "The proposed \"escalated perceived severity\" value: {\"proposedPerceivedSeverity\": \"Must be one of [CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE, CLEARED]\"}",
          "required": false,
          "schema": {
            "description": "This type represents the escalated value of the perceived severity for an alarm.\n",
            "type": "object",
            "required": [
              "proposedPerceivedSeverity"
            ],
            "properties": {
              "proposedPerceivedSeverity": {
                "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n  affecting condition has occurred and an immediate corrective action\n  is required. Such a severity can be reported, for example, when a\n  managed object becomes totally out of service and its capability needs\n  to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n  condition has developed and an urgent corrective action is required.\n  Such a severity can be reported, for example, when there is a severe\n  degradation in the capability of the managed object and its full\n  capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n  non-service affecting fault condition and that corrective action\n  should be taken in order to prevent a more serious (for example,\n  service affecting) fault. Such a severity can be reported, for\n  example, when the detected alarm condition is not currently degrading\n  the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n  potential or impending service affecting fault, before any significant\n  effects have been felt. Action should be taken to further diagnose (if\n  necessary) and correct the problem in order to prevent it from\n  becoming a more serious service affecting fault (ITU-T Recommendation\n  X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n  severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n  more previously reported alarms. This alarm clears all alarms for this\n  managed object that have the same Alarm type, Probable cause and\n  Specific problems (if given) (ITU-T Recommendation X.733).\n",
                "type": "string",
                "enum": [
                  "CRITICAL",
                  "MAJOR",
                  "MINOR",
                  "WARNING",
                  "INDETERMINATE",
                  "CLEARED"
                ]
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postAlarmsAlarmIdEscalate"
      },
      "task": true
    },
    {
      "name": "getVnfInstances",
      "summary": "The GET method queries information about multiple VNF instances.\n",
      "description": "The GET method queries information about multiple VNF instances.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "allFields",
          "type": "string",
          "info": "Include all complex attributes in the response. See clause 5.3 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "allFields",
            "type": "string"
          }
        },
        {
          "name": "fields",
          "type": "string",
          "info": "Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "fields",
            "type": "string"
          }
        },
        {
          "name": "excludeFields",
          "type": "string",
          "info": "Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "excludeFields",
            "type": "string"
          }
        },
        {
          "name": "excludeDefault",
          "type": "string",
          "info": "Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity shall support t...(description truncated): string",
          "required": false,
          "schema": {
            "title": "excludeDefault",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a VNF instance.\n",
            "type": "object",
            "required": [
              "id",
              "vnfdId",
              "vnfProvider",
              "vnfProductName",
              "vnfSoftwareVersion",
              "vnfdVersion",
              "instantiationState",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfInstanceName": {
                "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
                "type": "string"
              },
              "vnfInstanceDescription": {
                "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
                "type": "string"
              },
              "vnfdId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfProvider": {
                "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
                "type": "string"
              },
              "vnfProductName": {
                "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
                "type": "string"
              },
              "vnfSoftwareVersion": {
                "description": "A version.\n",
                "type": "string"
              },
              "vnfdVersion": {
                "description": "A version.\n",
                "type": "string"
              },
              "vnfConfigurableProperties": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "instantiationState": {
                "description": "The instantiation state of the VNF.\n",
                "type": "string",
                "enum": [
                  "NOT_INSTANTIATED",
                  "INSTANTIATED"
                ]
              },
              "instantiatedVnfInfo": {
                "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
                "type": "object",
                "required": [
                  "flavourId",
                  "vnfState",
                  "extCpInfo"
                ],
                "properties": {
                  "flavourId": {
                    "description": "An identifier that is unique within a VNF descriptor.\n",
                    "type": "string"
                  },
                  "vnfState": {
                    "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                    "type": "string",
                    "enum": [
                      "STARTED",
                      "STOPPED"
                    ]
                  },
                  "scaleStatus": {
                    "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                    "type": "array",
                    "items": {
                      "required": [
                        "aspectId",
                        "scaleLevel"
                      ],
                      "type": "object",
                      "properties": {
                        "aspectId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "scaleLevel": {
                          "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "maxScaleLevels": {
                    "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                    "type": "array",
                    "items": {
                      "required": [
                        "aspectId",
                        "scaleLevel"
                      ],
                      "type": "object",
                      "properties": {
                        "aspectId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "scaleLevel": {
                          "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "extCpInfo": {
                    "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "cpdId",
                        "cpConfigId",
                        "cpProtocolInfo"
                      ],
                      "properties": {
                        "id": {
                          "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"
                        },
                        "cpConfigId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "cpProtocolInfo": {
                          "description": "Network protocol information for this CP.\n",
                          "type": "array",
                          "items": {
                            "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                            "type": "object",
                            "required": [
                              "layerProtocol"
                            ],
                            "properties": {
                              "layerProtocol": {
                                "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                "type": "string",
                                "enum": [
                                  "IP_OVER_ETHERNET"
                                ]
                              },
                              "ipOverEthernet": {
                                "description": "This type represents information about a network address that has been assigned.\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"
                                  },
                                  "segmentationId": {
                                    "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                    "type": "string"
                                  },
                                  "ipAddresses": {
                                    "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "type"
                                      ],
                                      "properties": {
                                        "type": {
                                          "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                          "type": "string",
                                          "enum": [
                                            "IPV4",
                                            "IPV6"
                                          ]
                                        },
                                        "addresses": {
                                          "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                          "type": "array",
                                          "items": {
                                            "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"
                                          }
                                        },
                                        "isDynamic": {
                                          "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                          "type": "boolean"
                                        },
                                        "addressRange": {
                                          "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                          "type": "object",
                                          "required": [
                                            "minAddress",
                                            "maxAddress"
                                          ],
                                          "properties": {
                                            "minAddress": {
                                              "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"
                                            },
                                            "maxAddress": {
                                              "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"
                                            }
                                          }
                                        },
                                        "subnetId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "extLinkPortId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "metadata": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        },
                        "associatedVnfcCpId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "associatedVnfVirtualLinkId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "extVirtualLinkInfo": {
                    "description": "Information about the external VLs the VNF instance is connected to.\n",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "resourceHandle",
                        "currentVnfExtCpData"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "resourceHandle": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "extLinkPorts": {
                          "description": "Link ports of this VL.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "resourceHandle"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceHandle": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "cpInstanceId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              }
                            }
                          }
                        },
                        "currentVnfExtCpData": {
                          "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents configuration information for external CPs created from a CPD.\n",
                            "type": "object",
                            "required": [
                              "cpdId"
                            ],
                            "properties": {
                              "cpdId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "cpConfig": {
                                "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                                "type": "object",
                                "additionalProperties": {
                                  "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                  "anyOf": [
                                    {
                                      "required": [
                                        "linkPortId"
                                      ]
                                    },
                                    {
                                      "required": [
                                        "cpProtocolData"
                                      ]
                                    }
                                  ],
                                  "type": "object",
                                  "properties": {
                                    "parentCpConfigId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "linkPortId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpProtocolData": {
                                      "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                      "type": "array",
                                      "items": {
                                        "description": "This type represents network protocol data.\n",
                                        "type": "object",
                                        "required": [
                                          "layerProtocol"
                                        ],
                                        "properties": {
                                          "layerProtocol": {
                                            "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                            "type": "string",
                                            "enum": [
                                              "IP_OVER_ETHERNET"
                                            ]
                                          },
                                          "ipOverEthernet": {
                                            "description": "This type represents network address data for IP over Ethernet.\n",
                                            "type": "object",
                                            "anyOf": [
                                              {
                                                "required": [
                                                  "macAddress"
                                                ]
                                              },
                                              {
                                                "required": [
                                                  "ipAddresses"
                                                ]
                                              }
                                            ],
                                            "oneOf": [
                                              {
                                                "required": [
                                                  "fixedAddresses"
                                                ]
                                              },
                                              {
                                                "required": [
                                                  "numDynamicAddresses"
                                                ]
                                              },
                                              {
                                                "required": [
                                                  "ipAddressRange"
                                                ]
                                              }
                                            ],
                                            "properties": {
                                              "macAddress": {
                                                "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                                "type": "string"
                                              },
                                              "segmentationId": {
                                                "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                "type": "string"
                                              },
                                              "ipAddresses": {
                                                "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "required": [
                                                    "type"
                                                  ],
                                                  "properties": {
                                                    "type": {
                                                      "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                      "type": "string",
                                                      "enum": [
                                                        "IPV4",
                                                        "IPV6"
                                                      ]
                                                    },
                                                    "fixedAddresses": {
                                                      "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                      "type": "array",
                                                      "items": {
                                                        "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"
                                                      }
                                                    },
                                                    "numDynamicAddresses": {
                                                      "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                      "type": "integer"
                                                    },
                                                    "addressRange": {
                                                      "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                      "type": "object",
                                                      "required": [
                                                        "minAddress",
                                                        "maxAddress"
                                                      ],
                                                      "properties": {
                                                        "minAddress": {
                                                          "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"
                                                        },
                                                        "maxAddress": {
                                                          "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"
                                                        }
                                                      }
                                                    },
                                                    "subnetId": {
                                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                      "type": "string"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "extManagedVirtualLinkInfo": {
                    "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "vnfVirtualLinkDescId",
                        "networkResource"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "vnfVirtualLinkDescId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "networkResource": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "vnfLinkPorts": {
                          "description": "Link ports of this VL.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "resourceHandle"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "resourceHandle": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "cpInstanceId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "cpInstanceType": {
                                "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                "type": "string",
                                "enum": [
                                  "VNFC_CP",
                                  "EXT_CP"
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "monitoringParameters": {
                    "description": "Active monitoring parameters.\n",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "id",
                        "performanceMetric"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "name": {
                          "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                          "type": "string"
                        },
                        "performanceMetric": {
                          "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "localizationLanguage": {
                    "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                    "type": "string"
                  },
                  "vnfcResourceInfo": {
                    "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "vduId",
                        "computeResource",
                        "vnfcCpInfo"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vduId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "computeResource": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "storageResourceIds": {
                          "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                          "type": "array",
                          "items": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          }
                        },
                        "reservationId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "vnfcCpInfo": {
                          "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "cpdId"
                            ],
                            "properties": {
                              "id": {
                                "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"
                              },
                              "vnfExtCpId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolInfo": {
                                "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents information about a network address that has been assigned.\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"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "addresses": {
                                                "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "isDynamic": {
                                                "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                "type": "boolean"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "vnfLinkPortId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "metadata": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  },
                  "vnfVirtualLinkResourceInfo": {
                    "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "vnfVirtualLinkDescId",
                        "networkResource",
                        "vnfLinkPorts"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfVirtualLinkDescId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "networkResource": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "reservationId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "vnfLinkPorts": {
                          "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "resourceHandle"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "resourceHandle": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "cpInstanceId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "cpInstanceType": {
                                "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                "type": "string",
                                "enum": [
                                  "VNFC_CP",
                                  "EXT_CP"
                                ]
                              }
                            }
                          }
                        },
                        "metadata": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  },
                  "vnfVirtualStorageResourceInfo": {
                    "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "virtualStorageDescId",
                        "storageResource"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "virtualStorageDescId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfdId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "storageResource": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "reservationId": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "metadata": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  },
                  "vnfcInfo": {
                    "description": "Information about the VNFC instances.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "vduId",
                        "vnfcState"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vduId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfcResourceInfoId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfcState": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "vnfcConfigurableProperties": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  }
                }
              },
              "metadata": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "extensions": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "_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 using an absolute URI.\n",
                    "type": "object",
                    "required": [
                      "href"
                    ],
                    "properties": {
                      "href": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  },
                  "indicators": {
                    "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"
                      }
                    }
                  },
                  "instantiate": {
                    "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"
                      }
                    }
                  },
                  "terminate": {
                    "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"
                      }
                    }
                  },
                  "scale": {
                    "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"
                      }
                    }
                  },
                  "scaleToLevel": {
                    "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"
                      }
                    }
                  },
                  "changeFlavour": {
                    "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"
                      }
                    }
                  },
                  "heal": {
                    "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"
                      }
                    }
                  },
                  "operate": {
                    "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"
                      }
                    }
                  },
                  "changeExtConn": {
                    "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"
                      }
                    }
                  },
                  "createSnapshot": {
                    "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"
                      }
                    }
                  },
                  "revertToSnapshot": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfInstances"
      },
      "task": true
    },
    {
      "name": "postVnfInstances",
      "summary": "The POST method creates a new VNF instance resource based on a VNF package that is onboarded and in",
      "description": "The POST method creates a new VNF instance resource based on a VNF package that is onboarded and in \"ENABLED\" state.\n",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "The VNF creation parameters, as defined in clause 5.5.2.3.\n: {\"vnfdId\": \"string\", \"vnfInstanceName\": \"string\", \"vnfInstanceDescription\": \"string\", \"metadata\": \"object\"}",
          "required": true,
          "schema": {
            "type": "object",
            "required": [
              "vnfdId"
            ],
            "properties": {
              "vnfdId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfInstanceName": {
                "description": "Human-readable name of the VNF instance to be created.\n",
                "type": "string"
              },
              "vnfInstanceDescription": {
                "description": "Human-readable description of the VNF instance to be created.\n",
                "type": "string"
              },
              "metadata": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF instance.\n",
          "type": "object",
          "required": [
            "id",
            "vnfdId",
            "vnfProvider",
            "vnfProductName",
            "vnfSoftwareVersion",
            "vnfdVersion",
            "instantiationState",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfInstanceName": {
              "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "vnfInstanceDescription": {
              "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "vnfdId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfProvider": {
              "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
              "type": "string"
            },
            "vnfProductName": {
              "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
              "type": "string"
            },
            "vnfSoftwareVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "vnfdVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "vnfConfigurableProperties": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "instantiationState": {
              "description": "The instantiation state of the VNF.\n",
              "type": "string",
              "enum": [
                "NOT_INSTANTIATED",
                "INSTANTIATED"
              ]
            },
            "instantiatedVnfInfo": {
              "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
              "type": "object",
              "required": [
                "flavourId",
                "vnfState",
                "extCpInfo"
              ],
              "properties": {
                "flavourId": {
                  "description": "An identifier that is unique within a VNF descriptor.\n",
                  "type": "string"
                },
                "vnfState": {
                  "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                  "type": "string",
                  "enum": [
                    "STARTED",
                    "STOPPED"
                  ]
                },
                "scaleStatus": {
                  "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                  "type": "array",
                  "items": {
                    "required": [
                      "aspectId",
                      "scaleLevel"
                    ],
                    "type": "object",
                    "properties": {
                      "aspectId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "scaleLevel": {
                        "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                        "type": "integer"
                      }
                    }
                  }
                },
                "maxScaleLevels": {
                  "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                  "type": "array",
                  "items": {
                    "required": [
                      "aspectId",
                      "scaleLevel"
                    ],
                    "type": "object",
                    "properties": {
                      "aspectId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "scaleLevel": {
                        "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                        "type": "integer"
                      }
                    }
                  }
                },
                "extCpInfo": {
                  "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "cpdId",
                      "cpConfigId",
                      "cpProtocolInfo"
                    ],
                    "properties": {
                      "id": {
                        "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"
                      },
                      "cpConfigId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "cpProtocolInfo": {
                        "description": "Network protocol information for this CP.\n",
                        "type": "array",
                        "items": {
                          "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                          "type": "object",
                          "required": [
                            "layerProtocol"
                          ],
                          "properties": {
                            "layerProtocol": {
                              "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                              "type": "string",
                              "enum": [
                                "IP_OVER_ETHERNET"
                              ]
                            },
                            "ipOverEthernet": {
                              "description": "This type represents information about a network address that has been assigned.\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"
                                },
                                "segmentationId": {
                                  "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                  "type": "string"
                                },
                                "ipAddresses": {
                                  "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "required": [
                                      "type"
                                    ],
                                    "properties": {
                                      "type": {
                                        "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                        "type": "string",
                                        "enum": [
                                          "IPV4",
                                          "IPV6"
                                        ]
                                      },
                                      "addresses": {
                                        "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                        "type": "array",
                                        "items": {
                                          "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"
                                        }
                                      },
                                      "isDynamic": {
                                        "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                        "type": "boolean"
                                      },
                                      "addressRange": {
                                        "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                        "type": "object",
                                        "required": [
                                          "minAddress",
                                          "maxAddress"
                                        ],
                                        "properties": {
                                          "minAddress": {
                                            "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"
                                          },
                                          "maxAddress": {
                                            "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"
                                          }
                                        }
                                      },
                                      "subnetId": {
                                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "extLinkPortId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "associatedVnfcCpId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "associatedVnfVirtualLinkId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      }
                    }
                  }
                },
                "extVirtualLinkInfo": {
                  "description": "Information about the external VLs the VNF instance is connected to.\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "resourceHandle",
                      "currentVnfExtCpData"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceHandle": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "extLinkPorts": {
                        "description": "Link ports of this VL.\n",
                        "type": "array",
                        "items": {
                          "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            }
                          }
                        }
                      },
                      "currentVnfExtCpData": {
                        "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                        "type": "array",
                        "items": {
                          "description": "This type represents configuration information for external CPs created from a CPD.\n",
                          "type": "object",
                          "required": [
                            "cpdId"
                          ],
                          "properties": {
                            "cpdId": {
                              "description": "An identifier that is unique within a VNF descriptor.\n",
                              "type": "string"
                            },
                            "cpConfig": {
                              "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                              "type": "object",
                              "additionalProperties": {
                                "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                "anyOf": [
                                  {
                                    "required": [
                                      "linkPortId"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "cpProtocolData"
                                    ]
                                  }
                                ],
                                "type": "object",
                                "properties": {
                                  "parentCpConfigId": {
                                    "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                    "type": "string"
                                  },
                                  "linkPortId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "cpProtocolData": {
                                    "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                    "type": "array",
                                    "items": {
                                      "description": "This type represents network protocol data.\n",
                                      "type": "object",
                                      "required": [
                                        "layerProtocol"
                                      ],
                                      "properties": {
                                        "layerProtocol": {
                                          "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                          "type": "string",
                                          "enum": [
                                            "IP_OVER_ETHERNET"
                                          ]
                                        },
                                        "ipOverEthernet": {
                                          "description": "This type represents network address data for IP over Ethernet.\n",
                                          "type": "object",
                                          "anyOf": [
                                            {
                                              "required": [
                                                "macAddress"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "ipAddresses"
                                              ]
                                            }
                                          ],
                                          "oneOf": [
                                            {
                                              "required": [
                                                "fixedAddresses"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "numDynamicAddresses"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "ipAddressRange"
                                              ]
                                            }
                                          ],
                                          "properties": {
                                            "macAddress": {
                                              "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                              "type": "string"
                                            },
                                            "segmentationId": {
                                              "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                              "type": "string"
                                            },
                                            "ipAddresses": {
                                              "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "type"
                                                ],
                                                "properties": {
                                                  "type": {
                                                    "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                    "type": "string",
                                                    "enum": [
                                                      "IPV4",
                                                      "IPV6"
                                                    ]
                                                  },
                                                  "fixedAddresses": {
                                                    "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                    "type": "array",
                                                    "items": {
                                                      "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"
                                                    }
                                                  },
                                                  "numDynamicAddresses": {
                                                    "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                    "type": "integer"
                                                  },
                                                  "addressRange": {
                                                    "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                    "type": "object",
                                                    "required": [
                                                      "minAddress",
                                                      "maxAddress"
                                                    ],
                                                    "properties": {
                                                      "minAddress": {
                                                        "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"
                                                      },
                                                      "maxAddress": {
                                                        "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"
                                                      }
                                                    }
                                                  },
                                                  "subnetId": {
                                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                    "type": "string"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "extManagedVirtualLinkInfo": {
                  "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "networkResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "vnfLinkPorts": {
                        "description": "Link ports of this VL.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpInstanceType": {
                              "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                              "type": "string",
                              "enum": [
                                "VNFC_CP",
                                "EXT_CP"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "monitoringParameters": {
                  "description": "Active monitoring parameters.\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "performanceMetric"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "name": {
                        "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                        "type": "string"
                      },
                      "performanceMetric": {
                        "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                        "type": "string"
                      }
                    }
                  }
                },
                "localizationLanguage": {
                  "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                  "type": "string"
                },
                "vnfcResourceInfo": {
                  "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "computeResource",
                      "vnfcCpInfo"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "computeResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "storageResourceIds": {
                        "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfcCpInfo": {
                        "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "cpdId"
                          ],
                          "properties": {
                            "id": {
                              "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"
                            },
                            "vnfExtCpId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpProtocolInfo": {
                              "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                              "type": "array",
                              "items": {
                                "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                "type": "object",
                                "required": [
                                  "layerProtocol"
                                ],
                                "properties": {
                                  "layerProtocol": {
                                    "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                    "type": "string",
                                    "enum": [
                                      "IP_OVER_ETHERNET"
                                    ]
                                  },
                                  "ipOverEthernet": {
                                    "description": "This type represents information about a network address that has been assigned.\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"
                                      },
                                      "segmentationId": {
                                        "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                        "type": "string"
                                      },
                                      "ipAddresses": {
                                        "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "type"
                                          ],
                                          "properties": {
                                            "type": {
                                              "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                              "type": "string",
                                              "enum": [
                                                "IPV4",
                                                "IPV6"
                                              ]
                                            },
                                            "addresses": {
                                              "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                              "type": "array",
                                              "items": {
                                                "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"
                                              }
                                            },
                                            "isDynamic": {
                                              "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                              "type": "boolean"
                                            },
                                            "addressRange": {
                                              "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                              "type": "object",
                                              "required": [
                                                "minAddress",
                                                "maxAddress"
                                              ],
                                              "properties": {
                                                "minAddress": {
                                                  "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"
                                                },
                                                "maxAddress": {
                                                  "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"
                                                }
                                              }
                                            },
                                            "subnetId": {
                                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "vnfLinkPortId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "metadata": {
                              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                              "type": "object"
                            }
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfVirtualLinkResourceInfo": {
                  "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "networkResource",
                      "vnfLinkPorts"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfLinkPorts": {
                        "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpInstanceType": {
                              "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                              "type": "string",
                              "enum": [
                                "VNFC_CP",
                                "EXT_CP"
                              ]
                            }
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfVirtualStorageResourceInfo": {
                  "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "virtualStorageDescId",
                      "storageResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "virtualStorageDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "storageResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfcInfo": {
                  "description": "Information about the VNFC instances.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "vnfcState"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcResourceInfoId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcState": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "metadata": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "extensions": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "_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 using an absolute URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "indicators": {
                  "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"
                    }
                  }
                },
                "instantiate": {
                  "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"
                    }
                  }
                },
                "terminate": {
                  "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"
                    }
                  }
                },
                "scale": {
                  "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"
                    }
                  }
                },
                "scaleToLevel": {
                  "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"
                    }
                  }
                },
                "changeFlavour": {
                  "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"
                    }
                  }
                },
                "heal": {
                  "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"
                    }
                  }
                },
                "operate": {
                  "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"
                    }
                  }
                },
                "changeExtConn": {
                  "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"
                    }
                  }
                },
                "createSnapshot": {
                  "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"
                    }
                  }
                },
                "revertToSnapshot": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstances"
      },
      "task": true
    },
    {
      "name": "getVnfInstancesVnfInstanceId",
      "summary": "Information about a VNF instance by reading an \"Individual VNF instance\".\n",
      "description": "Information about a VNF instance by reading an \"Individual VNF instance\".\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF instance.\n",
          "type": "object",
          "required": [
            "id",
            "vnfdId",
            "vnfProvider",
            "vnfProductName",
            "vnfSoftwareVersion",
            "vnfdVersion",
            "instantiationState",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfInstanceName": {
              "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "vnfInstanceDescription": {
              "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "vnfdId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfProvider": {
              "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
              "type": "string"
            },
            "vnfProductName": {
              "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
              "type": "string"
            },
            "vnfSoftwareVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "vnfdVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "vnfConfigurableProperties": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "instantiationState": {
              "description": "The instantiation state of the VNF.\n",
              "type": "string",
              "enum": [
                "NOT_INSTANTIATED",
                "INSTANTIATED"
              ]
            },
            "instantiatedVnfInfo": {
              "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
              "type": "object",
              "required": [
                "flavourId",
                "vnfState",
                "extCpInfo"
              ],
              "properties": {
                "flavourId": {
                  "description": "An identifier that is unique within a VNF descriptor.\n",
                  "type": "string"
                },
                "vnfState": {
                  "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                  "type": "string",
                  "enum": [
                    "STARTED",
                    "STOPPED"
                  ]
                },
                "scaleStatus": {
                  "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                  "type": "array",
                  "items": {
                    "required": [
                      "aspectId",
                      "scaleLevel"
                    ],
                    "type": "object",
                    "properties": {
                      "aspectId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "scaleLevel": {
                        "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                        "type": "integer"
                      }
                    }
                  }
                },
                "maxScaleLevels": {
                  "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                  "type": "array",
                  "items": {
                    "required": [
                      "aspectId",
                      "scaleLevel"
                    ],
                    "type": "object",
                    "properties": {
                      "aspectId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "scaleLevel": {
                        "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                        "type": "integer"
                      }
                    }
                  }
                },
                "extCpInfo": {
                  "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "cpdId",
                      "cpConfigId",
                      "cpProtocolInfo"
                    ],
                    "properties": {
                      "id": {
                        "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"
                      },
                      "cpConfigId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "cpProtocolInfo": {
                        "description": "Network protocol information for this CP.\n",
                        "type": "array",
                        "items": {
                          "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                          "type": "object",
                          "required": [
                            "layerProtocol"
                          ],
                          "properties": {
                            "layerProtocol": {
                              "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                              "type": "string",
                              "enum": [
                                "IP_OVER_ETHERNET"
                              ]
                            },
                            "ipOverEthernet": {
                              "description": "This type represents information about a network address that has been assigned.\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"
                                },
                                "segmentationId": {
                                  "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                  "type": "string"
                                },
                                "ipAddresses": {
                                  "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "required": [
                                      "type"
                                    ],
                                    "properties": {
                                      "type": {
                                        "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                        "type": "string",
                                        "enum": [
                                          "IPV4",
                                          "IPV6"
                                        ]
                                      },
                                      "addresses": {
                                        "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                        "type": "array",
                                        "items": {
                                          "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"
                                        }
                                      },
                                      "isDynamic": {
                                        "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                        "type": "boolean"
                                      },
                                      "addressRange": {
                                        "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                        "type": "object",
                                        "required": [
                                          "minAddress",
                                          "maxAddress"
                                        ],
                                        "properties": {
                                          "minAddress": {
                                            "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"
                                          },
                                          "maxAddress": {
                                            "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"
                                          }
                                        }
                                      },
                                      "subnetId": {
                                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "extLinkPortId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "associatedVnfcCpId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "associatedVnfVirtualLinkId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      }
                    }
                  }
                },
                "extVirtualLinkInfo": {
                  "description": "Information about the external VLs the VNF instance is connected to.\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "resourceHandle",
                      "currentVnfExtCpData"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceHandle": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "extLinkPorts": {
                        "description": "Link ports of this VL.\n",
                        "type": "array",
                        "items": {
                          "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            }
                          }
                        }
                      },
                      "currentVnfExtCpData": {
                        "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                        "type": "array",
                        "items": {
                          "description": "This type represents configuration information for external CPs created from a CPD.\n",
                          "type": "object",
                          "required": [
                            "cpdId"
                          ],
                          "properties": {
                            "cpdId": {
                              "description": "An identifier that is unique within a VNF descriptor.\n",
                              "type": "string"
                            },
                            "cpConfig": {
                              "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                              "type": "object",
                              "additionalProperties": {
                                "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                "anyOf": [
                                  {
                                    "required": [
                                      "linkPortId"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "cpProtocolData"
                                    ]
                                  }
                                ],
                                "type": "object",
                                "properties": {
                                  "parentCpConfigId": {
                                    "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                    "type": "string"
                                  },
                                  "linkPortId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "cpProtocolData": {
                                    "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                    "type": "array",
                                    "items": {
                                      "description": "This type represents network protocol data.\n",
                                      "type": "object",
                                      "required": [
                                        "layerProtocol"
                                      ],
                                      "properties": {
                                        "layerProtocol": {
                                          "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                          "type": "string",
                                          "enum": [
                                            "IP_OVER_ETHERNET"
                                          ]
                                        },
                                        "ipOverEthernet": {
                                          "description": "This type represents network address data for IP over Ethernet.\n",
                                          "type": "object",
                                          "anyOf": [
                                            {
                                              "required": [
                                                "macAddress"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "ipAddresses"
                                              ]
                                            }
                                          ],
                                          "oneOf": [
                                            {
                                              "required": [
                                                "fixedAddresses"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "numDynamicAddresses"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "ipAddressRange"
                                              ]
                                            }
                                          ],
                                          "properties": {
                                            "macAddress": {
                                              "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                              "type": "string"
                                            },
                                            "segmentationId": {
                                              "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                              "type": "string"
                                            },
                                            "ipAddresses": {
                                              "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "type"
                                                ],
                                                "properties": {
                                                  "type": {
                                                    "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                    "type": "string",
                                                    "enum": [
                                                      "IPV4",
                                                      "IPV6"
                                                    ]
                                                  },
                                                  "fixedAddresses": {
                                                    "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                    "type": "array",
                                                    "items": {
                                                      "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"
                                                    }
                                                  },
                                                  "numDynamicAddresses": {
                                                    "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                    "type": "integer"
                                                  },
                                                  "addressRange": {
                                                    "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                    "type": "object",
                                                    "required": [
                                                      "minAddress",
                                                      "maxAddress"
                                                    ],
                                                    "properties": {
                                                      "minAddress": {
                                                        "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"
                                                      },
                                                      "maxAddress": {
                                                        "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"
                                                      }
                                                    }
                                                  },
                                                  "subnetId": {
                                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                    "type": "string"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "extManagedVirtualLinkInfo": {
                  "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "networkResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "vnfLinkPorts": {
                        "description": "Link ports of this VL.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpInstanceType": {
                              "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                              "type": "string",
                              "enum": [
                                "VNFC_CP",
                                "EXT_CP"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "monitoringParameters": {
                  "description": "Active monitoring parameters.\n",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "id",
                      "performanceMetric"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "name": {
                        "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                        "type": "string"
                      },
                      "performanceMetric": {
                        "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                        "type": "string"
                      }
                    }
                  }
                },
                "localizationLanguage": {
                  "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                  "type": "string"
                },
                "vnfcResourceInfo": {
                  "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "computeResource",
                      "vnfcCpInfo"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "computeResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "storageResourceIds": {
                        "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfcCpInfo": {
                        "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "cpdId"
                          ],
                          "properties": {
                            "id": {
                              "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"
                            },
                            "vnfExtCpId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpProtocolInfo": {
                              "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                              "type": "array",
                              "items": {
                                "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                "type": "object",
                                "required": [
                                  "layerProtocol"
                                ],
                                "properties": {
                                  "layerProtocol": {
                                    "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                    "type": "string",
                                    "enum": [
                                      "IP_OVER_ETHERNET"
                                    ]
                                  },
                                  "ipOverEthernet": {
                                    "description": "This type represents information about a network address that has been assigned.\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"
                                      },
                                      "segmentationId": {
                                        "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                        "type": "string"
                                      },
                                      "ipAddresses": {
                                        "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "type"
                                          ],
                                          "properties": {
                                            "type": {
                                              "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                              "type": "string",
                                              "enum": [
                                                "IPV4",
                                                "IPV6"
                                              ]
                                            },
                                            "addresses": {
                                              "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                              "type": "array",
                                              "items": {
                                                "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"
                                              }
                                            },
                                            "isDynamic": {
                                              "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                              "type": "boolean"
                                            },
                                            "addressRange": {
                                              "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                              "type": "object",
                                              "required": [
                                                "minAddress",
                                                "maxAddress"
                                              ],
                                              "properties": {
                                                "minAddress": {
                                                  "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"
                                                },
                                                "maxAddress": {
                                                  "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"
                                                }
                                              }
                                            },
                                            "subnetId": {
                                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "vnfLinkPortId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "metadata": {
                              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                              "type": "object"
                            }
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfVirtualLinkResourceInfo": {
                  "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "networkResource",
                      "vnfLinkPorts"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfLinkPorts": {
                        "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "id",
                            "resourceHandle"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "resourceHandle": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            },
                            "cpInstanceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "cpInstanceType": {
                              "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                              "type": "string",
                              "enum": [
                                "VNFC_CP",
                                "EXT_CP"
                              ]
                            }
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfVirtualStorageResourceInfo": {
                  "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "virtualStorageDescId",
                      "storageResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "virtualStorageDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "storageResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "reservationId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "vnfcInfo": {
                  "description": "Information about the VNFC instances.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "vnfcState"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcResourceInfoId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcState": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "metadata": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "extensions": {
              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "_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 using an absolute URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "indicators": {
                  "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"
                    }
                  }
                },
                "instantiate": {
                  "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"
                    }
                  }
                },
                "terminate": {
                  "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"
                    }
                  }
                },
                "scale": {
                  "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"
                    }
                  }
                },
                "scaleToLevel": {
                  "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"
                    }
                  }
                },
                "changeFlavour": {
                  "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"
                    }
                  }
                },
                "heal": {
                  "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"
                    }
                  }
                },
                "operate": {
                  "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"
                    }
                  }
                },
                "changeExtConn": {
                  "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"
                    }
                  }
                },
                "createSnapshot": {
                  "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"
                    }
                  }
                },
                "revertToSnapshot": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfInstancesVnfInstanceId"
      },
      "task": true
    },
    {
      "name": "deleteVnfInstancesVnfInstanceId",
      "summary": "This method deletes an \"Individual VNF instance\" resource.\n",
      "description": "This method deletes an \"Individual VNF instance\" resource.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF identifier deletion notification, which informs the receiver of the deletion of a new \"Individual VNF instance\" resource and the associated VNF instance identifier. This notification shall be triggered by the VNFM when it has deleted an \"Individual VNF instance\" resource and the associated VNF instance identifier.\n",
          "type": "object",
          "required": [
            "id",
            "notificationType",
            "subscriptionId",
            "timeStamp",
            "vnfInstanceId",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "notificationType": {
              "description": "Discriminator for the different notification types. Shall be set to \"VnfIdentifierDeletionNotification\" for this notification type.\n",
              "type": "string",
              "enum": [
                "VnfIdentifierDeletionNotification"
              ]
            },
            "subscriptionId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "timeStamp": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "vnfInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "_links": {
              "description": "This type represents the links to resources that a notification can contain.\n",
              "type": "object",
              "required": [
                "vnfInstance",
                "subscription"
              ],
              "properties": {
                "vnfInstance": {
                  "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "subscription": {
                  "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "vnfLcmOpOcc": {
                  "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/deleteVnfInstancesVnfInstanceId"
      },
      "task": true
    },
    {
      "name": "patchVnfInstancesVnfInstanceId",
      "summary": "This method modifies an \"Individual VNF instance\" resource. Changes to the VNF configurable propert",
      "description": "This method modifies an \"Individual VNF instance\" resource. Changes to the VNF configurable properties are\napplied to the configuration in the VNF instance, and are reflected in the representation of this resource.\nOther changes are applied to the VNF instance information managed by the VNFM, and are reflected in the\nrepresentation of this resource.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Input parameters for VNF info modification: {\"vnfInstanceName\": \"string\", \"vnfInstanceDescription\": \"string\", \"vnfdId\": \"string\", \"vnfConfigurableProperties\": \"object\", \"metadata\": \"object\", \"extensions\": \"object\", \"vnfcInfoModifications\": [{\"id\": \"string\", \"vnfcConfigurableProperties\": \"object\"}], \"vnfcInfoModificationsDeleteIds\": \"array\"}",
          "required": true,
          "schema": {
            "description": "This type represents attribute modifications for an \"Individual VNF instance\" resource, i.e. modifications to a resource representation based on the \"VnfInstance\" data type. The attributes of \"VnfInstance\" that can be modified according to the provisions in clause 5.5.2.2 are included in the \"VnfInfoModificationRequest\" data type. The \"VnfInfoModificationRequest\" data type shall comply with the provisions defined in table 5.5.2.12-1.\n",
            "type": "object",
            "properties": {
              "vnfInstanceName": {
                "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
                "type": "string"
              },
              "vnfInstanceDescription": {
                "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
                "type": "string"
              },
              "vnfdId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfConfigurableProperties": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "metadata": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "extensions": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "vnfcInfoModifications": {
                "description": "Modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\".\" to be used as \"newList\" as defined below this table.\n",
                "type": "array",
                "items": {
                  "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "vnfcConfigurableProperties"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                      "type": "string"
                    },
                    "vnfcConfigurableProperties": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    }
                  }
                }
              },
              "vnfcInfoModificationsDeleteIds": {
                "description": "List of identifiers entries to be deleted from the 'vnfcInfoModifications\" attribute array to be used as \"deleteIdList\" as defined below this table.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/patchVnfInstancesVnfInstanceId"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdInstantiate",
      "summary": "The POST method instantiates a VNF instance.\n",
      "description": "The POST method instantiates a VNF instance.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the VNF instantiation.: {\"flavourId\": \"string\", \"instantiationLevelId\": \"string\", \"extVirtualLinks\": [{\"id\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"extCps\": [{\"cpdId\": \"string\", \"cpConfig\": \"object\"}], \"extLinkPorts\": [{\"id\": \"string\", \"resourceHandle\": {\"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"vimLevelResourceType\": \"string\"}}]}], \"extManagedVirtualLinks\": [{\"id\": \"string\", \"vnfVirtualLinkDescId\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\"}], \"localizationLanguage\": \"string\", \"additionalParams\": \"object\", \"extensions\": \"object\", \"vnfConfigurableProperties\": \"object\"}",
          "required": true,
          "schema": {
            "type": "object",
            "required": [
              "flavourId"
            ],
            "properties": {
              "flavourId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "instantiationLevelId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "extVirtualLinks": {
                "description": "Information about external VLs to connect the VNF to.\n",
                "type": "array",
                "items": {
                  "description": "This type represents an external VL.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "resourceId",
                    "extCps"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "extCps": {
                      "description": "External CPs of the VNF to be connected to this external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents configuration information for external CPs created from a CPD.\n",
                        "type": "object",
                        "required": [
                          "cpdId"
                        ],
                        "properties": {
                          "cpdId": {
                            "description": "An identifier that is unique within a VNF descriptor.\n",
                            "type": "string"
                          },
                          "cpConfig": {
                            "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                            "type": "object",
                            "additionalProperties": {
                              "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                              "anyOf": [
                                {
                                  "required": [
                                    "linkPortId"
                                  ]
                                },
                                {
                                  "required": [
                                    "cpProtocolData"
                                  ]
                                }
                              ],
                              "type": "object",
                              "properties": {
                                "parentCpConfigId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "linkPortId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "cpProtocolData": {
                                  "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents network protocol data.\n",
                                    "type": "object",
                                    "required": [
                                      "layerProtocol"
                                    ],
                                    "properties": {
                                      "layerProtocol": {
                                        "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                        "type": "string",
                                        "enum": [
                                          "IP_OVER_ETHERNET"
                                        ]
                                      },
                                      "ipOverEthernet": {
                                        "description": "This type represents network address data for IP over Ethernet.\n",
                                        "type": "object",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "macAddress"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddresses"
                                            ]
                                          }
                                        ],
                                        "oneOf": [
                                          {
                                            "required": [
                                              "fixedAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "numDynamicAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddressRange"
                                            ]
                                          }
                                        ],
                                        "properties": {
                                          "macAddress": {
                                            "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                            "type": "string"
                                          },
                                          "segmentationId": {
                                            "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                            "type": "string"
                                          },
                                          "ipAddresses": {
                                            "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "type"
                                              ],
                                              "properties": {
                                                "type": {
                                                  "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IPV4",
                                                    "IPV6"
                                                  ]
                                                },
                                                "fixedAddresses": {
                                                  "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "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"
                                                  }
                                                },
                                                "numDynamicAddresses": {
                                                  "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "integer"
                                                },
                                                "addressRange": {
                                                  "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "minAddress",
                                                    "maxAddress"
                                                  ],
                                                  "properties": {
                                                    "minAddress": {
                                                      "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"
                                                    },
                                                    "maxAddress": {
                                                      "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"
                                                    }
                                                  }
                                                },
                                                "subnetId": {
                                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "extLinkPorts": {
                      "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "resourceHandle"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceHandle": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "extManagedVirtualLinks": {
                "description": "Information about external VLs to connect the VNF to. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM.\n",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "virtualLinkDescId",
                    "resourceId"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfVirtualLinkDescId": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "localizationLanguage": {
                "description": "Localization language of the VNF to be instantiated. The value shall comply with the format defined in IETF RFC 5646.\n",
                "type": "string"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "extensions": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "vnfConfigurableProperties": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdInstantiate"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdScale",
      "summary": "The POST method requests to scale a VNF instance resource incrementally.\n",
      "description": "The POST method requests to scale a VNF instance resource incrementally.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the scale VNF operation.: {\"type\": \"Must be one of [SCALE_OUT, SCALE_IN]\", \"aspectId\": \"string\", \"numberOfSteps\": 123, \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "type": "object",
            "required": [
              "type",
              "aspectId"
            ],
            "properties": {
              "type": {
                "description": "Indicates the type of the scale operation requested. Permitted values: * SCALE_OUT: adding additional VNFC instances to the VNF to increase\n  capacity\n* SCALE_IN: removing VNFC instances from the VNF in order to release\n  unused capacity.\n",
                "type": "string",
                "enum": [
                  "SCALE_OUT",
                  "SCALE_IN"
                ]
              },
              "aspectId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "numberOfSteps": {
                "description": "Number of scaling steps to be executed as part of this Scale VNF operation. It shall be a positive number and the default value shall be 1.\n",
                "type": "integer",
                "default": 1
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdScale"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdScaleToLevel",
      "summary": "The POST method requests to scale a VNF instance resource to a target level.\n",
      "description": "The POST method requests to scale a VNF instance resource to a target level.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the scale VNF to Level operation.: {\"instantiationLevelId\": \"string\", \"scaleInfo\": [{\"aspectId\": \"string\", \"vnfdId\": \"string\", \"scaleLevel\": 123}], \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Scale VNF to Level\" operation.\n",
            "type": "object",
            "properties": {
              "instantiationLevelId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "scaleInfo": {
                "description": "For each scaling aspect of the current deployment flavour, indicates the target scale level to which the VNF is to be scaled. Either the instantiationLevelId attribute or the scaleInfo attribute shall be included.\n",
                "type": "array",
                "items": {
                  "required": [
                    "aspectId",
                    "scaleLevel"
                  ],
                  "type": "object",
                  "properties": {
                    "aspectId": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    },
                    "vnfdId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "scaleLevel": {
                      "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                      "type": "integer"
                    }
                  }
                }
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdScaleToLevel"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdChangeFlavour",
      "summary": "The POST method changes the deployment flavour of a VNF instance.\n",
      "description": "The POST method changes the deployment flavour of a VNF instance.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Change VNF Flavour operation.: {\"newFlavourId\": \"string\", \"instantiationLevelId\": \"string\", \"extVirtualLinks\": [{\"id\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"extCps\": [{\"cpdId\": \"string\", \"cpConfig\": \"object\"}], \"extLinkPorts\": [{\"id\": \"string\", \"resourceHandle\": {\"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"vimLevelResourceType\": \"string\"}}]}], \"extManagedVirtualLinks\": [{\"id\": \"string\", \"vnfVirtualLinkDescId\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\"}], \"additionalParams\": \"object\", \"extensions\": \"object\", \"vnfConfigurableProperties\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Change VNF flavour\" operation.\n",
            "type": "object",
            "required": [
              "newFlavourId"
            ],
            "properties": {
              "newFlavourId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "instantiationLevelId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "extVirtualLinks": {
                "description": "Information about external VLs to connect the VNF to.\n",
                "type": "array",
                "items": {
                  "description": "This type represents an external VL.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "resourceId",
                    "extCps"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "extCps": {
                      "description": "External CPs of the VNF to be connected to this external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents configuration information for external CPs created from a CPD.\n",
                        "type": "object",
                        "required": [
                          "cpdId"
                        ],
                        "properties": {
                          "cpdId": {
                            "description": "An identifier that is unique within a VNF descriptor.\n",
                            "type": "string"
                          },
                          "cpConfig": {
                            "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                            "type": "object",
                            "additionalProperties": {
                              "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                              "anyOf": [
                                {
                                  "required": [
                                    "linkPortId"
                                  ]
                                },
                                {
                                  "required": [
                                    "cpProtocolData"
                                  ]
                                }
                              ],
                              "type": "object",
                              "properties": {
                                "parentCpConfigId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "linkPortId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "cpProtocolData": {
                                  "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents network protocol data.\n",
                                    "type": "object",
                                    "required": [
                                      "layerProtocol"
                                    ],
                                    "properties": {
                                      "layerProtocol": {
                                        "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                        "type": "string",
                                        "enum": [
                                          "IP_OVER_ETHERNET"
                                        ]
                                      },
                                      "ipOverEthernet": {
                                        "description": "This type represents network address data for IP over Ethernet.\n",
                                        "type": "object",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "macAddress"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddresses"
                                            ]
                                          }
                                        ],
                                        "oneOf": [
                                          {
                                            "required": [
                                              "fixedAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "numDynamicAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddressRange"
                                            ]
                                          }
                                        ],
                                        "properties": {
                                          "macAddress": {
                                            "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                            "type": "string"
                                          },
                                          "segmentationId": {
                                            "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                            "type": "string"
                                          },
                                          "ipAddresses": {
                                            "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "type"
                                              ],
                                              "properties": {
                                                "type": {
                                                  "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IPV4",
                                                    "IPV6"
                                                  ]
                                                },
                                                "fixedAddresses": {
                                                  "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "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"
                                                  }
                                                },
                                                "numDynamicAddresses": {
                                                  "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "integer"
                                                },
                                                "addressRange": {
                                                  "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "minAddress",
                                                    "maxAddress"
                                                  ],
                                                  "properties": {
                                                    "minAddress": {
                                                      "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"
                                                    },
                                                    "maxAddress": {
                                                      "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"
                                                    }
                                                  }
                                                },
                                                "subnetId": {
                                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "extLinkPorts": {
                      "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "resourceHandle"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceHandle": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "extManagedVirtualLinks": {
                "description": "Information about external VLs to connect the VNF to. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM.\n",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "virtualLinkDescId",
                    "resourceId"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfVirtualLinkDescId": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "extensions": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "vnfConfigurableProperties": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdChangeFlavour"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdTerminate",
      "summary": "The POST method triggers the VNFM to terminate a VNF  instance and to request to the VIM the releas",
      "description": "The POST method triggers the VNFM to terminate a VNF  instance and to request to the VIM the release of its\nused virtualised resources.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the VNF termination.: {\"terminationType\": \"Must be one of [FORCEFUL, GRACEFUL]\", \"gracefulTerminationTimeout\": 123, \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "type": "object",
            "required": [
              "terminationType"
            ],
            "properties": {
              "terminationType": {
                "description": "Indicates the type of termination is requested. Permitted values: * FORCEFUL: The VNFM will shut down the VNF and release the resources immediately after accepting the request. * GRACEFUL: The VNFM will first arrange to take the VNF out of service after accepting the request. Once the\n  operation of taking the VNF out of service finishes (irrespective of whether it has succeeded or failed) or\n  once the timer value specified in the \"gracefulTerminationTimeout\" attribute expires, the VNFM will shut down\n  the VNF and release the resources.\n",
                "type": "string",
                "enum": [
                  "FORCEFUL",
                  "GRACEFUL"
                ]
              },
              "gracefulTerminationTimeout": {
                "description": "This attribute is only applicable in case of graceful termination. It defines the time to wait for the VNF to be taken out of service before shutting down the VNF and releasing the resources. The unit is seconds. If not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected that the VNFM waits for the successful taking out of service of the VNF, no matter how long it takes, before shutting down the VNF and releasing the resources.\n",
                "type": "integer"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdTerminate"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdHeal",
      "summary": "The POST method requests to heal a VNF instance.\n",
      "description": "The POST method requests to heal a VNF instance.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Heal VNF operation.: {\"vnfcInstanceId\": \"array\", \"cause\": \"string\", \"additionalParams\": \"object\", \"healScript\": \"string\"}",
          "required": true,
          "schema": {
            "type": "object",
            "properties": {
              "vnfcInstanceId": {
                "description": "List of identifiers of VNFC instances for which a healing action is requested. Each identifier references the \"id\" attribute in a \"VnfcInfo\" structure. Cardinality can be \"0\" to denote that the request applies to the whole VNF and not a specific VNFC instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "cause": {
                "description": "Indicates the reason why a healing procedure is required.\n",
                "type": "string"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "healScript": {
                "description": "Provides link to a script that should be executed as part of the healing action or a set of rules for healing procedure.\n",
                "type": "string"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdHeal"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdOperate",
      "summary": "The POST method changes the operational state of a VNF instance.\n",
      "description": "The POST method changes the operational state of a VNF instance.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Operate VNF operation.: {\"vnfcInstanceId\": \"array\", \"changeStateTo\": \"Must be one of [STARTED, STOPPED]\", \"stopType\": \"Must be one of [FORCEFUL, GRACEFUL]\", \"gracefulStopTimeout\": 123, \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Operate VNF\" operation.\n",
            "type": "object",
            "required": [
              "changeStateTo"
            ],
            "properties": {
              "vnfcInstanceId": {
                "description": "List of identifiers of VNFC instances. Each identifier references the \"id\" attribute in a \"VnfcInfo\" structure. Cardinality can be \"0\" to denote that the request applies to the whole VNF and not a specific VNFC instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "changeStateTo": {
                "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                "type": "string",
                "enum": [
                  "STARTED",
                  "STOPPED"
                ]
              },
              "stopType": {
                "description": "It signals whether forceful or graceful stop is requested. The \"stopType\" and \"gracefulStopTimeout\" attributes shall be absent, when the \"changeStateTo\" attribute is equal to \"STARTED\". The \"gracefulStopTimeout\" attribute shall be present, when the \"changeStateTo\" is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"GRACEFUL\". The \"gracefulStopTimeout\" attribute shall be absent, when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"FORCEFUL\". The request shall be treated as if the \"stopType\" attribute has been set to \"FORCEFUL\", when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is absent.\n",
                "type": "string",
                "enum": [
                  "FORCEFUL",
                  "GRACEFUL"
                ]
              },
              "gracefulStopTimeout": {
                "description": "The time interval (in seconds) to wait for the VNF to be taken out of service during graceful stop, before stopping the VNF. The \"stopType\" and \"gracefulStopTimeout\" attributes shall be absent, when the \"changeStateTo\" attribute is equal to \"STARTED\". The \"gracefulStopTimeout\" attribute shall be present, when the \"changeStateTo\" is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"GRACEFUL\". The \"gracefulStopTimeout\" attribute shall be absent, when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"FORCEFUL\". The request shall be treated as if the \"stopType\" attribute has been set to \"FORCEFUL\", when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is absent.\n",
                "type": "integer"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdOperate"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdChangeExtConn",
      "summary": "The POST method changes the external connectivity of a VNF instance.\n",
      "description": "The POST method changes the external connectivity of a VNF instance.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Change external VNF connectivity operation.\n: {\"extVirtualLinks\": [{\"id\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"extCps\": [{\"cpdId\": \"string\", \"cpConfig\": \"object\"}], \"extLinkPorts\": [{\"id\": \"string\", \"resourceHandle\": {\"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"vimLevelResourceType\": \"string\"}}]}], \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Change external VNF connectivity\" operation to modify the external connectivity of a VNF instance.\n",
            "type": "object",
            "required": [
              "extVirtualLinks"
            ],
            "properties": {
              "extVirtualLinks": {
                "description": "Information about external VLs to change (e.g. connect the VNF to).\n",
                "type": "array",
                "items": {
                  "description": "This type represents an external VL.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "resourceId",
                    "extCps"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "extCps": {
                      "description": "External CPs of the VNF to be connected to this external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents configuration information for external CPs created from a CPD.\n",
                        "type": "object",
                        "required": [
                          "cpdId"
                        ],
                        "properties": {
                          "cpdId": {
                            "description": "An identifier that is unique within a VNF descriptor.\n",
                            "type": "string"
                          },
                          "cpConfig": {
                            "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                            "type": "object",
                            "additionalProperties": {
                              "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                              "anyOf": [
                                {
                                  "required": [
                                    "linkPortId"
                                  ]
                                },
                                {
                                  "required": [
                                    "cpProtocolData"
                                  ]
                                }
                              ],
                              "type": "object",
                              "properties": {
                                "parentCpConfigId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "linkPortId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "cpProtocolData": {
                                  "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents network protocol data.\n",
                                    "type": "object",
                                    "required": [
                                      "layerProtocol"
                                    ],
                                    "properties": {
                                      "layerProtocol": {
                                        "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                        "type": "string",
                                        "enum": [
                                          "IP_OVER_ETHERNET"
                                        ]
                                      },
                                      "ipOverEthernet": {
                                        "description": "This type represents network address data for IP over Ethernet.\n",
                                        "type": "object",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "macAddress"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddresses"
                                            ]
                                          }
                                        ],
                                        "oneOf": [
                                          {
                                            "required": [
                                              "fixedAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "numDynamicAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddressRange"
                                            ]
                                          }
                                        ],
                                        "properties": {
                                          "macAddress": {
                                            "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                            "type": "string"
                                          },
                                          "segmentationId": {
                                            "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                            "type": "string"
                                          },
                                          "ipAddresses": {
                                            "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "type"
                                              ],
                                              "properties": {
                                                "type": {
                                                  "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IPV4",
                                                    "IPV6"
                                                  ]
                                                },
                                                "fixedAddresses": {
                                                  "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "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"
                                                  }
                                                },
                                                "numDynamicAddresses": {
                                                  "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "integer"
                                                },
                                                "addressRange": {
                                                  "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "minAddress",
                                                    "maxAddress"
                                                  ],
                                                  "properties": {
                                                    "minAddress": {
                                                      "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"
                                                    },
                                                    "maxAddress": {
                                                      "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"
                                                    }
                                                  }
                                                },
                                                "subnetId": {
                                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "extLinkPorts": {
                      "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "resourceHandle"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceHandle": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdChangeExtConn"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdChangeVnfpkg",
      "summary": "The POST method changes the current VNF package on which the VNF instance is based.\n",
      "description": "The POST method changes the current VNF package on which the VNF instance is based.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Change current VNF package operation.\n: {\"vnfdId\": \"string\", \"extVirtualLinks\": [{\"id\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"extCps\": [{\"cpdId\": \"string\", \"cpConfig\": \"object\"}], \"extLinkPorts\": [{\"id\": \"string\", \"resourceHandle\": {\"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\", \"vimLevelResourceType\": \"string\"}}]}], \"extManagedVirtualLinks\": [{\"id\": \"string\", \"vnfVirtualLinkDescId\": \"string\", \"vimConnectionId\": \"string\", \"resourceProviderId\": \"string\", \"resourceId\": \"string\"}], \"additionalParams\": \"object\", \"extensions\": \"object\", \"vnfConfigurableProperties\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Change current VNF package\" operation to replace the VNF package on which a VNF instance is based.\n",
            "type": "object",
            "required": [
              "vnfdId"
            ],
            "properties": {
              "vnfdId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "extVirtualLinks": {
                "description": "Information about external VLs to connect the VNF to. Entries in the list that are unchanged need not be supplied as part of this request.\n",
                "type": "array",
                "items": {
                  "description": "This type represents an external VL.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "resourceId",
                    "extCps"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    },
                    "extCps": {
                      "description": "External CPs of the VNF to be connected to this external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents configuration information for external CPs created from a CPD.\n",
                        "type": "object",
                        "required": [
                          "cpdId"
                        ],
                        "properties": {
                          "cpdId": {
                            "description": "An identifier that is unique within a VNF descriptor.\n",
                            "type": "string"
                          },
                          "cpConfig": {
                            "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                            "type": "object",
                            "additionalProperties": {
                              "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                              "anyOf": [
                                {
                                  "required": [
                                    "linkPortId"
                                  ]
                                },
                                {
                                  "required": [
                                    "cpProtocolData"
                                  ]
                                }
                              ],
                              "type": "object",
                              "properties": {
                                "parentCpConfigId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "linkPortId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "cpProtocolData": {
                                  "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents network protocol data.\n",
                                    "type": "object",
                                    "required": [
                                      "layerProtocol"
                                    ],
                                    "properties": {
                                      "layerProtocol": {
                                        "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                        "type": "string",
                                        "enum": [
                                          "IP_OVER_ETHERNET"
                                        ]
                                      },
                                      "ipOverEthernet": {
                                        "description": "This type represents network address data for IP over Ethernet.\n",
                                        "type": "object",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "macAddress"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddresses"
                                            ]
                                          }
                                        ],
                                        "oneOf": [
                                          {
                                            "required": [
                                              "fixedAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "numDynamicAddresses"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "ipAddressRange"
                                            ]
                                          }
                                        ],
                                        "properties": {
                                          "macAddress": {
                                            "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                            "type": "string"
                                          },
                                          "segmentationId": {
                                            "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                            "type": "string"
                                          },
                                          "ipAddresses": {
                                            "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "type"
                                              ],
                                              "properties": {
                                                "type": {
                                                  "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IPV4",
                                                    "IPV6"
                                                  ]
                                                },
                                                "fixedAddresses": {
                                                  "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "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"
                                                  }
                                                },
                                                "numDynamicAddresses": {
                                                  "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                  "type": "integer"
                                                },
                                                "addressRange": {
                                                  "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "minAddress",
                                                    "maxAddress"
                                                  ],
                                                  "properties": {
                                                    "minAddress": {
                                                      "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"
                                                    },
                                                    "maxAddress": {
                                                      "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"
                                                    }
                                                  }
                                                },
                                                "subnetId": {
                                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "extLinkPorts": {
                      "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
                      "type": "array",
                      "items": {
                        "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "resourceHandle"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceHandle": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "extManagedVirtualLinks": {
                "description": "Information about internal VLs that are managed by other entities than the VNFM. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM.\n",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "virtualLinkDescId",
                    "resourceId"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfVirtualLinkDescId": {
                      "description": "An identifier that is unique within a VNF descriptor.\n",
                      "type": "string"
                    },
                    "vimConnectionId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceProviderId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "resourceId": {
                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                      "type": "string"
                    }
                  }
                }
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "extensions": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "vnfConfigurableProperties": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdChangeVnfpkg"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdCreateSnapshot",
      "summary": "The POST method requests tacking a VNF instance snapshot and populating a previously created VNF sn",
      "description": "The POST method requests tacking a VNF instance snapshot and populating a previously created VNF snapshot resource\n(refer to clause 5.4.23.3.1) with the snapshot content.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the “Create VNF/VNFC Snapshot” operation.\n: {\"vnfSnapshotInfoId\": \"string\", \"vnfcInstanceId\": \"string\", \"additionalParams\": \"object\", \"userDefinedData\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Create VNF Snapshot\" operation.\n",
            "type": "object",
            "required": [
              "vnfSnapshotResId"
            ],
            "properties": {
              "vnfSnapshotInfoId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfcInstanceId": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "userDefinedData": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdCreateSnapshot"
      },
      "task": true
    },
    {
      "name": "postVnfInstancesVnfInstanceIdRevertToSnapshot",
      "summary": "The POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot.\n",
      "description": "The POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot.\n",
      "input": [
        {
          "name": "vnfInstanceId",
          "type": "string",
          "info": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a n...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfInstanceId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the Revert-to VNF/VNFC snapshot operation.\n: {\"vnfSnapshotInfoId\": \"string\", \"vnfcInstanceId\": \"string\", \"vnfcSnapshotInfoId\": \"string\", \"additionalParams\": \"object\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the \"Revert-to VNF Snapshot\" operation.\n",
            "type": "object",
            "properties": {
              "vnfSnapshotInfoId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfcInstanceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfcSnapshotInfoId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "additionalParams": {
                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfInstancesVnfInstanceIdRevertToSnapshot"
      },
      "task": true
    },
    {
      "name": "getVnfLcmOpOccs",
      "summary": "The client can use this method to query status information about multiple VNF lifecycle management",
      "description": "The client can use this method to query status information about multiple VNF lifecycle management operation occurrences.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "allFields",
          "type": "string",
          "info": "Include all complex attributes in the response. See clause 5.3 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "allFields",
            "type": "string"
          }
        },
        {
          "name": "fields",
          "type": "string",
          "info": "Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "fields",
            "type": "string"
          }
        },
        {
          "name": "excludeFields",
          "type": "string",
          "info": "Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "excludeFields",
            "type": "string"
          }
        },
        {
          "name": "excludeDefault",
          "type": "string",
          "info": "Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity shall support t...(description truncated): string",
          "required": false,
          "schema": {
            "title": "excludeDefault",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n",
          "type": "object",
          "required": [
            "id",
            "operationState",
            "stateEnteredTime",
            "startTime",
            "vnfInstanceId",
            "operation",
            "isAutomaticInvocation",
            "isCancelPending"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operationState": {
              "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
              "type": "string",
              "enum": [
                "STARTING",
                "PROCESSING",
                "COMPLETED",
                "FAILED_TEMP",
                "FAILED",
                "ROLLING_BACK",
                "ROLLED_BACK"
              ]
            },
            "stateEnteredTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "startTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "vnfInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "grantId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operation": {
              "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation.    SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n",
              "type": "string",
              "enum": [
                "INSTANTIATE",
                "SCALE",
                "SCALE_TO_LEVEL",
                "CHANGE_FLAVOUR",
                "TERMINATE",
                "HEAL",
                "OPERATE",
                "CHANGE_EXT_CONN",
                "MODIFY_INFO",
                "CREATE_SNAPSHOT",
                "REVERT_TO_SNAPSHOT",
                "CHANGE_VNFPKG"
              ]
            },
            "isAutomaticInvocation": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "operationParams": {
              "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n",
              "type": "object"
            },
            "isCancelPending": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "cancelMode": {
              "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n",
              "type": "string",
              "enum": [
                "GRACEFUL",
                "FORCEFUL"
              ]
            },
            "error": {
              "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
              "type": "object",
              "required": [
                "status",
                "detail"
              ],
              "properties": {
                "type": {
                  "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
                  "type": "string"
                },
                "title": {
                  "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
                  "type": "string"
                },
                "status": {
                  "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
                  "type": "integer"
                },
                "detail": {
                  "description": "A human-readable explanation specific to this occurrence of the problem.\n",
                  "type": "string"
                },
                "instance": {
                  "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
                  "type": "string"
                }
              }
            },
            "resourceChanges": {
              "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n",
              "type": "object",
              "properties": {
                "affectedVnfcs": {
                  "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "changeType",
                      "computeResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "computeResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "affectedVnfcCpIds": {
                        "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "addedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "removedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "affectedVirtualLinks": {
                  "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "changeType",
                      "networkResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY",
                          "LINK_PORT_ADDED",
                          "LINK_PORT_REMOVED"
                        ]
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "vnfLinkPortIds": {
                        "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "affectedExtLinkPorts": {
                  "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n",
                    "type": "object",
                    "required": [
                      "id",
                      "changeType",
                      "extCpInstanceId",
                      "resourceHandle"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED"
                        ]
                      },
                      "extCpInstanceId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "resourceHandle": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                },
                "affectedVirtualStorages": {
                  "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "virtualStorageDescId",
                      "changeType",
                      "storageResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "virtualStorageDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "storageResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedInfo": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n",
              "type": "object",
              "properties": {
                "vnfInstanceName": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfInstanceDescription": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfcInfoModifications": {
                  "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfcConfigurableProperties"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedExtConnectivity": {
              "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "resourceHandle",
                  "currentVnfExtCpData"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "resourceHandle": {
                    "required": [
                      "resourceId"
                    ],
                    "type": "object",
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                    "properties": {
                      "vimConnectionId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceProviderId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceId": {
                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                        "type": "string"
                      },
                      "vimLevelResourceType": {
                        "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                        "type": "string"
                      }
                    }
                  },
                  "extLinkPorts": {
                    "description": "Link ports of this VL.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "resourceHandle"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "resourceHandle": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "cpInstanceId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "currentVnfExtCpData": {
                    "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents configuration information for external CPs created from a CPD.\n",
                      "type": "object",
                      "required": [
                        "cpdId"
                      ],
                      "properties": {
                        "cpdId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "cpConfig": {
                          "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                          "type": "object",
                          "additionalProperties": {
                            "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                            "anyOf": [
                              {
                                "required": [
                                  "linkPortId"
                                ]
                              },
                              {
                                "required": [
                                  "cpProtocolData"
                                ]
                              }
                            ],
                            "type": "object",
                            "properties": {
                              "parentCpConfigId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "linkPortId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolData": {
                                "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents network protocol data.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents network address data for IP over Ethernet.\n",
                                      "type": "object",
                                      "anyOf": [
                                        {
                                          "required": [
                                            "macAddress"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddresses"
                                          ]
                                        }
                                      ],
                                      "oneOf": [
                                        {
                                          "required": [
                                            "fixedAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "numDynamicAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddressRange"
                                          ]
                                        }
                                      ],
                                      "properties": {
                                        "macAddress": {
                                          "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                          "type": "string"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "fixedAddresses": {
                                                "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "numDynamicAddresses": {
                                                "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "integer"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "modificationsTriggeredByVnfPkgChange": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n",
              "type": "object",
              "properties": {
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                }
              }
            },
            "vnfSnapshotInfoId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links to resources related to this resource.\n",
              "type": "object",
              "required": [
                "self",
                "vnfInstance"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "vnfInstance": {
                  "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"
                    }
                  }
                },
                "grant": {
                  "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"
                    }
                  }
                },
                "cancel": {
                  "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"
                    }
                  }
                },
                "retry": {
                  "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"
                    }
                  }
                },
                "rollback": {
                  "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"
                    }
                  }
                },
                "fail": {
                  "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"
                    }
                  }
                },
                "vnfSnapshot": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfLcmOpOccs"
      },
      "task": true
    },
    {
      "name": "getVnfLcmOpOccsVnfLcmOpOccId",
      "summary": "The client can use this method to retrieve status information about a VNF lifecycle management oper",
      "description": "The client can use this method to retrieve status information about a VNF lifecycle management operation occurrence\nby reading an \"Individual VNF LCM operation occurrence\" resource.\n",
      "input": [
        {
          "name": "vnfLcmOpOccId",
          "type": "string",
          "info": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource\nreferenced by the \"Location\" HTTP header in the response...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfLcmOpOccId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n",
          "type": "object",
          "required": [
            "id",
            "operationState",
            "stateEnteredTime",
            "startTime",
            "vnfInstanceId",
            "operation",
            "isAutomaticInvocation",
            "isCancelPending"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operationState": {
              "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
              "type": "string",
              "enum": [
                "STARTING",
                "PROCESSING",
                "COMPLETED",
                "FAILED_TEMP",
                "FAILED",
                "ROLLING_BACK",
                "ROLLED_BACK"
              ]
            },
            "stateEnteredTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "startTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "vnfInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "grantId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operation": {
              "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation.    SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n",
              "type": "string",
              "enum": [
                "INSTANTIATE",
                "SCALE",
                "SCALE_TO_LEVEL",
                "CHANGE_FLAVOUR",
                "TERMINATE",
                "HEAL",
                "OPERATE",
                "CHANGE_EXT_CONN",
                "MODIFY_INFO",
                "CREATE_SNAPSHOT",
                "REVERT_TO_SNAPSHOT",
                "CHANGE_VNFPKG"
              ]
            },
            "isAutomaticInvocation": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "operationParams": {
              "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n",
              "type": "object"
            },
            "isCancelPending": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "cancelMode": {
              "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n",
              "type": "string",
              "enum": [
                "GRACEFUL",
                "FORCEFUL"
              ]
            },
            "error": {
              "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
              "type": "object",
              "required": [
                "status",
                "detail"
              ],
              "properties": {
                "type": {
                  "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
                  "type": "string"
                },
                "title": {
                  "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
                  "type": "string"
                },
                "status": {
                  "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
                  "type": "integer"
                },
                "detail": {
                  "description": "A human-readable explanation specific to this occurrence of the problem.\n",
                  "type": "string"
                },
                "instance": {
                  "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
                  "type": "string"
                }
              }
            },
            "resourceChanges": {
              "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n",
              "type": "object",
              "properties": {
                "affectedVnfcs": {
                  "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "changeType",
                      "computeResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "computeResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "affectedVnfcCpIds": {
                        "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "addedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "removedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "affectedVirtualLinks": {
                  "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "changeType",
                      "networkResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY",
                          "LINK_PORT_ADDED",
                          "LINK_PORT_REMOVED"
                        ]
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "vnfLinkPortIds": {
                        "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "affectedExtLinkPorts": {
                  "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n",
                    "type": "object",
                    "required": [
                      "id",
                      "changeType",
                      "extCpInstanceId",
                      "resourceHandle"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED"
                        ]
                      },
                      "extCpInstanceId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "resourceHandle": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                },
                "affectedVirtualStorages": {
                  "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "virtualStorageDescId",
                      "changeType",
                      "storageResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "virtualStorageDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "storageResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedInfo": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n",
              "type": "object",
              "properties": {
                "vnfInstanceName": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfInstanceDescription": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfcInfoModifications": {
                  "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfcConfigurableProperties"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedExtConnectivity": {
              "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "resourceHandle",
                  "currentVnfExtCpData"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "resourceHandle": {
                    "required": [
                      "resourceId"
                    ],
                    "type": "object",
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                    "properties": {
                      "vimConnectionId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceProviderId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceId": {
                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                        "type": "string"
                      },
                      "vimLevelResourceType": {
                        "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                        "type": "string"
                      }
                    }
                  },
                  "extLinkPorts": {
                    "description": "Link ports of this VL.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "resourceHandle"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "resourceHandle": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "cpInstanceId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "currentVnfExtCpData": {
                    "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents configuration information for external CPs created from a CPD.\n",
                      "type": "object",
                      "required": [
                        "cpdId"
                      ],
                      "properties": {
                        "cpdId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "cpConfig": {
                          "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                          "type": "object",
                          "additionalProperties": {
                            "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                            "anyOf": [
                              {
                                "required": [
                                  "linkPortId"
                                ]
                              },
                              {
                                "required": [
                                  "cpProtocolData"
                                ]
                              }
                            ],
                            "type": "object",
                            "properties": {
                              "parentCpConfigId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "linkPortId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolData": {
                                "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents network protocol data.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents network address data for IP over Ethernet.\n",
                                      "type": "object",
                                      "anyOf": [
                                        {
                                          "required": [
                                            "macAddress"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddresses"
                                          ]
                                        }
                                      ],
                                      "oneOf": [
                                        {
                                          "required": [
                                            "fixedAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "numDynamicAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddressRange"
                                          ]
                                        }
                                      ],
                                      "properties": {
                                        "macAddress": {
                                          "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                          "type": "string"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "fixedAddresses": {
                                                "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "numDynamicAddresses": {
                                                "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "integer"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "modificationsTriggeredByVnfPkgChange": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n",
              "type": "object",
              "properties": {
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                }
              }
            },
            "vnfSnapshotInfoId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links to resources related to this resource.\n",
              "type": "object",
              "required": [
                "self",
                "vnfInstance"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "vnfInstance": {
                  "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"
                    }
                  }
                },
                "grant": {
                  "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"
                    }
                  }
                },
                "cancel": {
                  "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"
                    }
                  }
                },
                "retry": {
                  "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"
                    }
                  }
                },
                "rollback": {
                  "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"
                    }
                  }
                },
                "fail": {
                  "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"
                    }
                  }
                },
                "vnfSnapshot": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfLcmOpOccsVnfLcmOpOccId"
      },
      "task": true
    },
    {
      "name": "postVnfLcmOpOccsVnfLcmOpOccIdRetry",
      "summary": "The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a te",
      "description": "The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary\nfailure, i.e. the related \"Individual VNF LCM operation occurrence\" resource is in \"FAILED_TEMP\"  state.\n",
      "input": [
        {
          "name": "vnfLcmOpOccId",
          "type": "string",
          "info": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource\nreferenced by the \"Location\" HTTP header in the response...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfLcmOpOccId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfLcmOpOccsVnfLcmOpOccIdRetry"
      },
      "task": true
    },
    {
      "name": "postVnfLcmOpOccsVnfLcmOpOccIdRollback",
      "summary": "The POST method initiates rolling back a VNF lifecycle operation if that operation has experienced",
      "description": "The POST method initiates rolling back a VNF lifecycle operation if that operation has experienced a temporary\nfailure, i.e. the related \"Individual VNF LCM operation occurrence\" resource is in \"FAILED_TEMP\"  state.\n",
      "input": [
        {
          "name": "vnfLcmOpOccId",
          "type": "string",
          "info": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource\nreferenced by the \"Location\" HTTP header in the response...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfLcmOpOccId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfLcmOpOccsVnfLcmOpOccIdRollback"
      },
      "task": true
    },
    {
      "name": "postVnfLcmOpOccsVnfLcmOpOccIdFail",
      "summary": "The POST method marks a VNF lifecycle management operation occurrence as \"finally failed\" if that o",
      "description": "The POST method marks a VNF lifecycle management operation occurrence as \"finally failed\" if that operation\noccurrence is in \"FAILED_TEMP\" state.\n",
      "input": [
        {
          "name": "vnfLcmOpOccId",
          "type": "string",
          "info": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource\nreferenced by the \"Location\" HTTP header in the response...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfLcmOpOccId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n",
          "type": "object",
          "required": [
            "id",
            "operationState",
            "stateEnteredTime",
            "startTime",
            "vnfInstanceId",
            "operation",
            "isAutomaticInvocation",
            "isCancelPending"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operationState": {
              "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
              "type": "string",
              "enum": [
                "STARTING",
                "PROCESSING",
                "COMPLETED",
                "FAILED_TEMP",
                "FAILED",
                "ROLLING_BACK",
                "ROLLED_BACK"
              ]
            },
            "stateEnteredTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "startTime": {
              "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
              "type": "string"
            },
            "vnfInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "grantId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "operation": {
              "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation.    SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n",
              "type": "string",
              "enum": [
                "INSTANTIATE",
                "SCALE",
                "SCALE_TO_LEVEL",
                "CHANGE_FLAVOUR",
                "TERMINATE",
                "HEAL",
                "OPERATE",
                "CHANGE_EXT_CONN",
                "MODIFY_INFO",
                "CREATE_SNAPSHOT",
                "REVERT_TO_SNAPSHOT",
                "CHANGE_VNFPKG"
              ]
            },
            "isAutomaticInvocation": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "operationParams": {
              "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n",
              "type": "object"
            },
            "isCancelPending": {
              "description": "The Boolean is a data type having two values (true and false).\n",
              "type": "boolean"
            },
            "cancelMode": {
              "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n",
              "type": "string",
              "enum": [
                "GRACEFUL",
                "FORCEFUL"
              ]
            },
            "error": {
              "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
              "type": "object",
              "required": [
                "status",
                "detail"
              ],
              "properties": {
                "type": {
                  "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
                  "type": "string"
                },
                "title": {
                  "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
                  "type": "string"
                },
                "status": {
                  "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
                  "type": "integer"
                },
                "detail": {
                  "description": "A human-readable explanation specific to this occurrence of the problem.\n",
                  "type": "string"
                },
                "instance": {
                  "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
                  "type": "string"
                }
              }
            },
            "resourceChanges": {
              "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n",
              "type": "object",
              "properties": {
                "affectedVnfcs": {
                  "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vduId",
                      "changeType",
                      "computeResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vduId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "computeResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "affectedVnfcCpIds": {
                        "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "addedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      },
                      "removedStorageResourceIds": {
                        "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "affectedVirtualLinks": {
                  "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfVirtualLinkDescId",
                      "changeType",
                      "networkResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfVirtualLinkDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY",
                          "LINK_PORT_ADDED",
                          "LINK_PORT_REMOVED"
                        ]
                      },
                      "networkResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "vnfLinkPortIds": {
                        "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n",
                        "type": "array",
                        "items": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "affectedExtLinkPorts": {
                  "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n",
                    "type": "object",
                    "required": [
                      "id",
                      "changeType",
                      "extCpInstanceId",
                      "resourceHandle"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED"
                        ]
                      },
                      "extCpInstanceId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "resourceHandle": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                },
                "affectedVirtualStorages": {
                  "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
                  "type": "array",
                  "items": {
                    "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "virtualStorageDescId",
                      "changeType",
                      "storageResource"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "virtualStorageDescId": {
                        "description": "An identifier that is unique within a VNF descriptor.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "changeType": {
                        "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n",
                        "type": "string",
                        "enum": [
                          "ADDED",
                          "REMOVED",
                          "MODIFIED",
                          "TEMPORARY"
                        ]
                      },
                      "storageResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedInfo": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n",
              "type": "object",
              "properties": {
                "vnfInstanceName": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfInstanceDescription": {
                  "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n",
                  "type": "string"
                },
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfcInfoModifications": {
                  "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfcConfigurableProperties"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "vnfcConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                }
              }
            },
            "changedExtConnectivity": {
              "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "resourceHandle",
                  "currentVnfExtCpData"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "resourceHandle": {
                    "required": [
                      "resourceId"
                    ],
                    "type": "object",
                    "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                    "properties": {
                      "vimConnectionId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceProviderId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "resourceId": {
                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                        "type": "string"
                      },
                      "vimLevelResourceType": {
                        "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                        "type": "string"
                      }
                    }
                  },
                  "extLinkPorts": {
                    "description": "Link ports of this VL.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "resourceHandle"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "resourceHandle": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "cpInstanceId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "currentVnfExtCpData": {
                    "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents configuration information for external CPs created from a CPD.\n",
                      "type": "object",
                      "required": [
                        "cpdId"
                      ],
                      "properties": {
                        "cpdId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "cpConfig": {
                          "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                          "type": "object",
                          "additionalProperties": {
                            "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                            "anyOf": [
                              {
                                "required": [
                                  "linkPortId"
                                ]
                              },
                              {
                                "required": [
                                  "cpProtocolData"
                                ]
                              }
                            ],
                            "type": "object",
                            "properties": {
                              "parentCpConfigId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "linkPortId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolData": {
                                "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents network protocol data.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents network address data for IP over Ethernet.\n",
                                      "type": "object",
                                      "anyOf": [
                                        {
                                          "required": [
                                            "macAddress"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddresses"
                                          ]
                                        }
                                      ],
                                      "oneOf": [
                                        {
                                          "required": [
                                            "fixedAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "numDynamicAddresses"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "ipAddressRange"
                                          ]
                                        }
                                      ],
                                      "properties": {
                                        "macAddress": {
                                          "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                          "type": "string"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "fixedAddresses": {
                                                "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "numDynamicAddresses": {
                                                "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                "type": "integer"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "modificationsTriggeredByVnfPkgChange": {
              "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n",
              "type": "object",
              "properties": {
                "vnfConfigurableProperties": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "metadata": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "extensions": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfProvider": {
                  "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfProductName": {
                  "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of  the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n",
                  "type": "string"
                },
                "vnfSoftwareVersion": {
                  "description": "A version.\n",
                  "type": "string"
                },
                "vnfdVersion": {
                  "description": "A version.\n",
                  "type": "string"
                }
              }
            },
            "vnfSnapshotInfoId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links to resources related to this resource.\n",
              "type": "object",
              "required": [
                "self",
                "vnfInstance"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "vnfInstance": {
                  "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"
                    }
                  }
                },
                "grant": {
                  "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"
                    }
                  }
                },
                "cancel": {
                  "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"
                    }
                  }
                },
                "retry": {
                  "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"
                    }
                  }
                },
                "rollback": {
                  "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"
                    }
                  }
                },
                "fail": {
                  "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"
                    }
                  }
                },
                "vnfSnapshot": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfLcmOpOccsVnfLcmOpOccIdFail"
      },
      "task": true
    },
    {
      "name": "postVnfLcmOpOccsVnfLcmOpOccIdCancel",
      "summary": "The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed",
      "description": "The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled\nback, i.e. the related \"Individual VNF LCM operation occurrence\" is either in \"PROCESSING\" or \"ROLLING_BACK\" state.\n",
      "input": [
        {
          "name": "vnfLcmOpOccId",
          "type": "string",
          "info": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource\nreferenced by the \"Location\" HTTP header in the response...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfLcmOpOccId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfLcmOpOccsVnfLcmOpOccIdCancel"
      },
      "task": true
    },
    {
      "name": "postVnfSnapshots",
      "summary": "The POST method creates a new individual VNF snapshot resource.\n",
      "description": "The POST method creates a new individual VNF snapshot resource.\n",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "The VNF snapshot resource creation parameters.\n: {\"vnfSnapshotPkgId\": \"string\"}",
          "required": true,
          "schema": {
            "description": "This type represents request parameters for the creation of an \"Individual VNF snapshot\" resource which can be\npopulated with content obtained by invoking the \"Create VNF snapshot\" LCM operation or extracted from a VNF\nsnapshot package. It shall comply with the provisions defined in table 5.5.2.20-1.\n",
            "type": "object",
            "properties": {
              "vnfSnapshotPkgId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents an individual VNF snapshot resource.\n",
          "type": "object",
          "required": [
            "id"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfSnapshotPkgId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfSnapshot": {
              "description": "This type represents a VNF snapshot.\n",
              "type": "object",
              "required": [
                "id",
                "vnfInstanceId",
                "triggeredAt",
                "vnfdId",
                "vnfInfo",
                "vnfcSnapshots"
              ],
              "properties": {
                "id": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfInstanceId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "creationStartedAt": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "creationFinishedAt": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfInstance": {
                  "description": "This type represents a VNF instance.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "vnfdId",
                    "vnfProvider",
                    "vnfProductName",
                    "vnfSoftwareVersion",
                    "vnfdVersion",
                    "instantiationState",
                    "_links"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfInstanceName": {
                      "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
                      "type": "string"
                    },
                    "vnfInstanceDescription": {
                      "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
                      "type": "string"
                    },
                    "vnfdId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfProvider": {
                      "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
                      "type": "string"
                    },
                    "vnfProductName": {
                      "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
                      "type": "string"
                    },
                    "vnfSoftwareVersion": {
                      "description": "A version.\n",
                      "type": "string"
                    },
                    "vnfdVersion": {
                      "description": "A version.\n",
                      "type": "string"
                    },
                    "vnfConfigurableProperties": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "instantiationState": {
                      "description": "The instantiation state of the VNF.\n",
                      "type": "string",
                      "enum": [
                        "NOT_INSTANTIATED",
                        "INSTANTIATED"
                      ]
                    },
                    "instantiatedVnfInfo": {
                      "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
                      "type": "object",
                      "required": [
                        "flavourId",
                        "vnfState",
                        "extCpInfo"
                      ],
                      "properties": {
                        "flavourId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfState": {
                          "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                          "type": "string",
                          "enum": [
                            "STARTED",
                            "STOPPED"
                          ]
                        },
                        "scaleStatus": {
                          "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                          "type": "array",
                          "items": {
                            "required": [
                              "aspectId",
                              "scaleLevel"
                            ],
                            "type": "object",
                            "properties": {
                              "aspectId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "scaleLevel": {
                                "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                "type": "integer"
                              }
                            }
                          }
                        },
                        "maxScaleLevels": {
                          "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                          "type": "array",
                          "items": {
                            "required": [
                              "aspectId",
                              "scaleLevel"
                            ],
                            "type": "object",
                            "properties": {
                              "aspectId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "scaleLevel": {
                                "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                "type": "integer"
                              }
                            }
                          }
                        },
                        "extCpInfo": {
                          "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                          "type": "array",
                          "minItems": 1,
                          "items": {
                            "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "cpdId",
                              "cpConfigId",
                              "cpProtocolInfo"
                            ],
                            "properties": {
                              "id": {
                                "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"
                              },
                              "cpConfigId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolInfo": {
                                "description": "Network protocol information for this CP.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents information about a network address that has been assigned.\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"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "addresses": {
                                                "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "isDynamic": {
                                                "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                "type": "boolean"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "extLinkPortId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              },
                              "associatedVnfcCpId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "associatedVnfVirtualLinkId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              }
                            }
                          }
                        },
                        "extVirtualLinkInfo": {
                          "description": "Information about the external VLs the VNF instance is connected to.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "resourceHandle",
                              "currentVnfExtCpData"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceHandle": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "extLinkPorts": {
                                "description": "Link ports of this VL.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "currentVnfExtCpData": {
                                "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents configuration information for external CPs created from a CPD.\n",
                                  "type": "object",
                                  "required": [
                                    "cpdId"
                                  ],
                                  "properties": {
                                    "cpdId": {
                                      "description": "An identifier that is unique within a VNF descriptor.\n",
                                      "type": "string"
                                    },
                                    "cpConfig": {
                                      "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                                      "type": "object",
                                      "additionalProperties": {
                                        "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "linkPortId"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "cpProtocolData"
                                            ]
                                          }
                                        ],
                                        "type": "object",
                                        "properties": {
                                          "parentCpConfigId": {
                                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                            "type": "string"
                                          },
                                          "linkPortId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "cpProtocolData": {
                                            "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                            "type": "array",
                                            "items": {
                                              "description": "This type represents network protocol data.\n",
                                              "type": "object",
                                              "required": [
                                                "layerProtocol"
                                              ],
                                              "properties": {
                                                "layerProtocol": {
                                                  "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IP_OVER_ETHERNET"
                                                  ]
                                                },
                                                "ipOverEthernet": {
                                                  "description": "This type represents network address data for IP over Ethernet.\n",
                                                  "type": "object",
                                                  "anyOf": [
                                                    {
                                                      "required": [
                                                        "macAddress"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "ipAddresses"
                                                      ]
                                                    }
                                                  ],
                                                  "oneOf": [
                                                    {
                                                      "required": [
                                                        "fixedAddresses"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "numDynamicAddresses"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "ipAddressRange"
                                                      ]
                                                    }
                                                  ],
                                                  "properties": {
                                                    "macAddress": {
                                                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                                      "type": "string"
                                                    },
                                                    "segmentationId": {
                                                      "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                      "type": "string"
                                                    },
                                                    "ipAddresses": {
                                                      "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "required": [
                                                          "type"
                                                        ],
                                                        "properties": {
                                                          "type": {
                                                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                            "type": "string",
                                                            "enum": [
                                                              "IPV4",
                                                              "IPV6"
                                                            ]
                                                          },
                                                          "fixedAddresses": {
                                                            "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                            "type": "array",
                                                            "items": {
                                                              "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"
                                                            }
                                                          },
                                                          "numDynamicAddresses": {
                                                            "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                            "type": "integer"
                                                          },
                                                          "addressRange": {
                                                            "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                            "type": "object",
                                                            "required": [
                                                              "minAddress",
                                                              "maxAddress"
                                                            ],
                                                            "properties": {
                                                              "minAddress": {
                                                                "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"
                                                              },
                                                              "maxAddress": {
                                                                "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"
                                                              }
                                                            }
                                                          },
                                                          "subnetId": {
                                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                            "type": "string"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "extManagedVirtualLinkInfo": {
                          "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "vnfVirtualLinkDescId",
                              "networkResource"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfVirtualLinkDescId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "networkResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "vnfLinkPorts": {
                                "description": "Link ports of this VL.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpInstanceType": {
                                      "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                      "type": "string",
                                      "enum": [
                                        "VNFC_CP",
                                        "EXT_CP"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "monitoringParameters": {
                          "description": "Active monitoring parameters.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "performanceMetric"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "name": {
                                "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                                "type": "string"
                              },
                              "performanceMetric": {
                                "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                                "type": "string"
                              }
                            }
                          }
                        },
                        "localizationLanguage": {
                          "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                          "type": "string"
                        },
                        "vnfcResourceInfo": {
                          "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vduId",
                              "computeResource",
                              "vnfcCpInfo"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vduId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "computeResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "storageResourceIds": {
                                "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                                "type": "array",
                                "items": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfcCpInfo": {
                                "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "cpdId"
                                  ],
                                  "properties": {
                                    "id": {
                                      "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"
                                    },
                                    "vnfExtCpId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpProtocolInfo": {
                                      "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                                      "type": "array",
                                      "items": {
                                        "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                        "type": "object",
                                        "required": [
                                          "layerProtocol"
                                        ],
                                        "properties": {
                                          "layerProtocol": {
                                            "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                            "type": "string",
                                            "enum": [
                                              "IP_OVER_ETHERNET"
                                            ]
                                          },
                                          "ipOverEthernet": {
                                            "description": "This type represents information about a network address that has been assigned.\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"
                                              },
                                              "segmentationId": {
                                                "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                "type": "string"
                                              },
                                              "ipAddresses": {
                                                "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "required": [
                                                    "type"
                                                  ],
                                                  "properties": {
                                                    "type": {
                                                      "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                      "type": "string",
                                                      "enum": [
                                                        "IPV4",
                                                        "IPV6"
                                                      ]
                                                    },
                                                    "addresses": {
                                                      "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                      "type": "array",
                                                      "items": {
                                                        "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"
                                                      }
                                                    },
                                                    "isDynamic": {
                                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                      "type": "boolean"
                                                    },
                                                    "addressRange": {
                                                      "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                      "type": "object",
                                                      "required": [
                                                        "minAddress",
                                                        "maxAddress"
                                                      ],
                                                      "properties": {
                                                        "minAddress": {
                                                          "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"
                                                        },
                                                        "maxAddress": {
                                                          "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"
                                                        }
                                                      }
                                                    },
                                                    "subnetId": {
                                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                      "type": "string"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    },
                                    "vnfLinkPortId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "metadata": {
                                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                      "type": "object"
                                    }
                                  }
                                }
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfVirtualLinkResourceInfo": {
                          "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vnfVirtualLinkDescId",
                              "networkResource",
                              "vnfLinkPorts"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfVirtualLinkDescId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "networkResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfLinkPorts": {
                                "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpInstanceType": {
                                      "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                      "type": "string",
                                      "enum": [
                                        "VNFC_CP",
                                        "EXT_CP"
                                      ]
                                    }
                                  }
                                }
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfVirtualStorageResourceInfo": {
                          "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "virtualStorageDescId",
                              "storageResource"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "virtualStorageDescId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "storageResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfcInfo": {
                          "description": "Information about the VNFC instances.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vduId",
                              "vnfcState"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vduId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcResourceInfoId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcState": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcConfigurableProperties": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        }
                      }
                    },
                    "metadata": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "extensions": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "_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 using an absolute URI.\n",
                          "type": "object",
                          "required": [
                            "href"
                          ],
                          "properties": {
                            "href": {
                              "description": "String formatted according to IETF RFC 3986.\n",
                              "type": "string"
                            }
                          }
                        },
                        "indicators": {
                          "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"
                            }
                          }
                        },
                        "instantiate": {
                          "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"
                            }
                          }
                        },
                        "terminate": {
                          "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"
                            }
                          }
                        },
                        "scale": {
                          "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"
                            }
                          }
                        },
                        "scaleToLevel": {
                          "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"
                            }
                          }
                        },
                        "changeFlavour": {
                          "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"
                            }
                          }
                        },
                        "heal": {
                          "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"
                            }
                          }
                        },
                        "operate": {
                          "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"
                            }
                          }
                        },
                        "changeExtConn": {
                          "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"
                            }
                          }
                        },
                        "createSnapshot": {
                          "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"
                            }
                          }
                        },
                        "revertToSnapshot": {
                          "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"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "vnfcSnapshots": {
                  "description": "Information about VNFC snapshots constituting this VNF snapshot.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents a VNFC snapshot.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfcInstanceId",
                      "triggeredAt",
                      "vnfcInfo"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfcInstanceId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "creationStartedAt": {
                        "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                        "type": "string"
                      },
                      "creationFinishedAt": {
                        "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                        "type": "string"
                      },
                      "vnfcResourceInfoId": {
                        "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "vduId",
                          "vnfcState"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vduId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcResourceInfoId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcState": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcConfigurableProperties": {
                            "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                            "type": "object"
                          }
                        }
                      },
                      "computeSnapshotResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "storageSnapshotResources": {
                        "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n",
                        "type": "object",
                        "required": [
                          "storageResourceId"
                        ],
                        "properties": {
                          "storageResourceId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "storageSnapshotResource": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "userDefinedData": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "userDefinedData": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                }
              }
            },
            "_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 using an absolute URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "takenFrom": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postVnfSnapshots"
      },
      "task": true
    },
    {
      "name": "getVnfSnapshots",
      "summary": "The GET method queries information about multiple VNF/VNFC snapshots.\n",
      "description": "The GET method queries information about multiple VNF/VNFC snapshots.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "allFields",
          "type": "string",
          "info": "Include all complex attributes in the response. See clause 5.3 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "allFields",
            "type": "string"
          }
        },
        {
          "name": "fields",
          "type": "string",
          "info": "Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "fields",
            "type": "string"
          }
        },
        {
          "name": "excludeFields",
          "type": "string",
          "info": "Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "excludeFields",
            "type": "string"
          }
        },
        {
          "name": "excludeDefault",
          "type": "string",
          "info": "Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity shall support t...(description truncated): string",
          "required": false,
          "schema": {
            "title": "excludeDefault",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents an individual VNF snapshot resource.\n",
            "type": "object",
            "required": [
              "id"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfSnapshotPkgId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "vnfSnapshot": {
                "description": "This type represents a VNF snapshot.\n",
                "type": "object",
                "required": [
                  "id",
                  "vnfInstanceId",
                  "triggeredAt",
                  "vnfdId",
                  "vnfInfo",
                  "vnfcSnapshots"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "vnfInstanceId": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "creationStartedAt": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  },
                  "creationFinishedAt": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  },
                  "vnfdId": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "vnfInstance": {
                    "description": "This type represents a VNF instance.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfdId",
                      "vnfProvider",
                      "vnfProductName",
                      "vnfSoftwareVersion",
                      "vnfdVersion",
                      "instantiationState",
                      "_links"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfInstanceName": {
                        "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
                        "type": "string"
                      },
                      "vnfInstanceDescription": {
                        "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
                        "type": "string"
                      },
                      "vnfdId": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfProvider": {
                        "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
                        "type": "string"
                      },
                      "vnfProductName": {
                        "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
                        "type": "string"
                      },
                      "vnfSoftwareVersion": {
                        "description": "A version.\n",
                        "type": "string"
                      },
                      "vnfdVersion": {
                        "description": "A version.\n",
                        "type": "string"
                      },
                      "vnfConfigurableProperties": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "instantiationState": {
                        "description": "The instantiation state of the VNF.\n",
                        "type": "string",
                        "enum": [
                          "NOT_INSTANTIATED",
                          "INSTANTIATED"
                        ]
                      },
                      "instantiatedVnfInfo": {
                        "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
                        "type": "object",
                        "required": [
                          "flavourId",
                          "vnfState",
                          "extCpInfo"
                        ],
                        "properties": {
                          "flavourId": {
                            "description": "An identifier that is unique within a VNF descriptor.\n",
                            "type": "string"
                          },
                          "vnfState": {
                            "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                            "type": "string",
                            "enum": [
                              "STARTED",
                              "STOPPED"
                            ]
                          },
                          "scaleStatus": {
                            "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                            "type": "array",
                            "items": {
                              "required": [
                                "aspectId",
                                "scaleLevel"
                              ],
                              "type": "object",
                              "properties": {
                                "aspectId": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "scaleLevel": {
                                  "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                  "type": "integer"
                                }
                              }
                            }
                          },
                          "maxScaleLevels": {
                            "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                            "type": "array",
                            "items": {
                              "required": [
                                "aspectId",
                                "scaleLevel"
                              ],
                              "type": "object",
                              "properties": {
                                "aspectId": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "scaleLevel": {
                                  "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                  "type": "integer"
                                }
                              }
                            }
                          },
                          "extCpInfo": {
                            "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                            "type": "array",
                            "minItems": 1,
                            "items": {
                              "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                              "type": "object",
                              "required": [
                                "id",
                                "cpdId",
                                "cpConfigId",
                                "cpProtocolInfo"
                              ],
                              "properties": {
                                "id": {
                                  "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"
                                },
                                "cpConfigId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "cpProtocolInfo": {
                                  "description": "Network protocol information for this CP.\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                    "type": "object",
                                    "required": [
                                      "layerProtocol"
                                    ],
                                    "properties": {
                                      "layerProtocol": {
                                        "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                        "type": "string",
                                        "enum": [
                                          "IP_OVER_ETHERNET"
                                        ]
                                      },
                                      "ipOverEthernet": {
                                        "description": "This type represents information about a network address that has been assigned.\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"
                                          },
                                          "segmentationId": {
                                            "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                            "type": "string"
                                          },
                                          "ipAddresses": {
                                            "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "type"
                                              ],
                                              "properties": {
                                                "type": {
                                                  "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IPV4",
                                                    "IPV6"
                                                  ]
                                                },
                                                "addresses": {
                                                  "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "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"
                                                  }
                                                },
                                                "isDynamic": {
                                                  "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                  "type": "boolean"
                                                },
                                                "addressRange": {
                                                  "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "minAddress",
                                                    "maxAddress"
                                                  ],
                                                  "properties": {
                                                    "minAddress": {
                                                      "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"
                                                    },
                                                    "maxAddress": {
                                                      "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"
                                                    }
                                                  }
                                                },
                                                "subnetId": {
                                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "extLinkPortId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "metadata": {
                                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                  "type": "object"
                                },
                                "associatedVnfcCpId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "associatedVnfVirtualLinkId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "extVirtualLinkInfo": {
                            "description": "Information about the external VLs the VNF instance is connected to.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "id",
                                "resourceHandle",
                                "currentVnfExtCpData"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceHandle": {
                                  "required": [
                                    "resourceId"
                                  ],
                                  "type": "object",
                                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                  "properties": {
                                    "vimConnectionId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceProviderId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceId": {
                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                      "type": "string"
                                    },
                                    "vimLevelResourceType": {
                                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                      "type": "string"
                                    }
                                  }
                                },
                                "extLinkPorts": {
                                  "description": "Link ports of this VL.\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                                    "type": "object",
                                    "required": [
                                      "id",
                                      "resourceHandle"
                                    ],
                                    "properties": {
                                      "id": {
                                        "description": "An identifier with the intention of being globally unique.\n",
                                        "type": "string"
                                      },
                                      "resourceHandle": {
                                        "required": [
                                          "resourceId"
                                        ],
                                        "type": "object",
                                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                        "properties": {
                                          "vimConnectionId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceProviderId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceId": {
                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                            "type": "string"
                                          },
                                          "vimLevelResourceType": {
                                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                            "type": "string"
                                          }
                                        }
                                      },
                                      "cpInstanceId": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      }
                                    }
                                  }
                                },
                                "currentVnfExtCpData": {
                                  "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                                  "type": "array",
                                  "items": {
                                    "description": "This type represents configuration information for external CPs created from a CPD.\n",
                                    "type": "object",
                                    "required": [
                                      "cpdId"
                                    ],
                                    "properties": {
                                      "cpdId": {
                                        "description": "An identifier that is unique within a VNF descriptor.\n",
                                        "type": "string"
                                      },
                                      "cpConfig": {
                                        "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                                        "type": "object",
                                        "additionalProperties": {
                                          "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                          "anyOf": [
                                            {
                                              "required": [
                                                "linkPortId"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "cpProtocolData"
                                              ]
                                            }
                                          ],
                                          "type": "object",
                                          "properties": {
                                            "parentCpConfigId": {
                                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                              "type": "string"
                                            },
                                            "linkPortId": {
                                              "description": "An identifier with the intention of being globally unique.\n",
                                              "type": "string"
                                            },
                                            "cpProtocolData": {
                                              "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                              "type": "array",
                                              "items": {
                                                "description": "This type represents network protocol data.\n",
                                                "type": "object",
                                                "required": [
                                                  "layerProtocol"
                                                ],
                                                "properties": {
                                                  "layerProtocol": {
                                                    "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                                    "type": "string",
                                                    "enum": [
                                                      "IP_OVER_ETHERNET"
                                                    ]
                                                  },
                                                  "ipOverEthernet": {
                                                    "description": "This type represents network address data for IP over Ethernet.\n",
                                                    "type": "object",
                                                    "anyOf": [
                                                      {
                                                        "required": [
                                                          "macAddress"
                                                        ]
                                                      },
                                                      {
                                                        "required": [
                                                          "ipAddresses"
                                                        ]
                                                      }
                                                    ],
                                                    "oneOf": [
                                                      {
                                                        "required": [
                                                          "fixedAddresses"
                                                        ]
                                                      },
                                                      {
                                                        "required": [
                                                          "numDynamicAddresses"
                                                        ]
                                                      },
                                                      {
                                                        "required": [
                                                          "ipAddressRange"
                                                        ]
                                                      }
                                                    ],
                                                    "properties": {
                                                      "macAddress": {
                                                        "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                                        "type": "string"
                                                      },
                                                      "segmentationId": {
                                                        "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                        "type": "string"
                                                      },
                                                      "ipAddresses": {
                                                        "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                                        "type": "array",
                                                        "items": {
                                                          "type": "object",
                                                          "required": [
                                                            "type"
                                                          ],
                                                          "properties": {
                                                            "type": {
                                                              "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                              "type": "string",
                                                              "enum": [
                                                                "IPV4",
                                                                "IPV6"
                                                              ]
                                                            },
                                                            "fixedAddresses": {
                                                              "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                              "type": "array",
                                                              "items": {
                                                                "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"
                                                              }
                                                            },
                                                            "numDynamicAddresses": {
                                                              "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                              "type": "integer"
                                                            },
                                                            "addressRange": {
                                                              "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                              "type": "object",
                                                              "required": [
                                                                "minAddress",
                                                                "maxAddress"
                                                              ],
                                                              "properties": {
                                                                "minAddress": {
                                                                  "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"
                                                                },
                                                                "maxAddress": {
                                                                  "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"
                                                                }
                                                              }
                                                            },
                                                            "subnetId": {
                                                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                              "type": "string"
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "extManagedVirtualLinkInfo": {
                            "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "id",
                                "vnfVirtualLinkDescId",
                                "networkResource"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "vnfVirtualLinkDescId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "networkResource": {
                                  "required": [
                                    "resourceId"
                                  ],
                                  "type": "object",
                                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                  "properties": {
                                    "vimConnectionId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceProviderId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceId": {
                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                      "type": "string"
                                    },
                                    "vimLevelResourceType": {
                                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                      "type": "string"
                                    }
                                  }
                                },
                                "vnfLinkPorts": {
                                  "description": "Link ports of this VL.\n",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "required": [
                                      "id",
                                      "resourceHandle"
                                    ],
                                    "properties": {
                                      "id": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "resourceHandle": {
                                        "required": [
                                          "resourceId"
                                        ],
                                        "type": "object",
                                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                        "properties": {
                                          "vimConnectionId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceProviderId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceId": {
                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                            "type": "string"
                                          },
                                          "vimLevelResourceType": {
                                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                            "type": "string"
                                          }
                                        }
                                      },
                                      "cpInstanceId": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "cpInstanceType": {
                                        "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                        "type": "string",
                                        "enum": [
                                          "VNFC_CP",
                                          "EXT_CP"
                                        ]
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "monitoringParameters": {
                            "description": "Active monitoring parameters.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "id",
                                "performanceMetric"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                                  "type": "string"
                                },
                                "performanceMetric": {
                                  "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "localizationLanguage": {
                            "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                            "type": "string"
                          },
                          "vnfcResourceInfo": {
                            "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                            "type": "array",
                            "items": {
                              "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                              "type": "object",
                              "required": [
                                "id",
                                "vduId",
                                "computeResource",
                                "vnfcCpInfo"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vduId": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "computeResource": {
                                  "required": [
                                    "resourceId"
                                  ],
                                  "type": "object",
                                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                  "properties": {
                                    "vimConnectionId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceProviderId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceId": {
                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                      "type": "string"
                                    },
                                    "vimLevelResourceType": {
                                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                      "type": "string"
                                    }
                                  }
                                },
                                "storageResourceIds": {
                                  "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                                  "type": "array",
                                  "items": {
                                    "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                    "type": "string"
                                  }
                                },
                                "reservationId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "vnfcCpInfo": {
                                  "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "required": [
                                      "id",
                                      "cpdId"
                                    ],
                                    "properties": {
                                      "id": {
                                        "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"
                                      },
                                      "vnfExtCpId": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "cpProtocolInfo": {
                                        "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                                        "type": "array",
                                        "items": {
                                          "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                          "type": "object",
                                          "required": [
                                            "layerProtocol"
                                          ],
                                          "properties": {
                                            "layerProtocol": {
                                              "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                              "type": "string",
                                              "enum": [
                                                "IP_OVER_ETHERNET"
                                              ]
                                            },
                                            "ipOverEthernet": {
                                              "description": "This type represents information about a network address that has been assigned.\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"
                                                },
                                                "segmentationId": {
                                                  "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                  "type": "string"
                                                },
                                                "ipAddresses": {
                                                  "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                                  "type": "array",
                                                  "items": {
                                                    "type": "object",
                                                    "required": [
                                                      "type"
                                                    ],
                                                    "properties": {
                                                      "type": {
                                                        "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                        "type": "string",
                                                        "enum": [
                                                          "IPV4",
                                                          "IPV6"
                                                        ]
                                                      },
                                                      "addresses": {
                                                        "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                        "type": "array",
                                                        "items": {
                                                          "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"
                                                        }
                                                      },
                                                      "isDynamic": {
                                                        "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                        "type": "boolean"
                                                      },
                                                      "addressRange": {
                                                        "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                        "type": "object",
                                                        "required": [
                                                          "minAddress",
                                                          "maxAddress"
                                                        ],
                                                        "properties": {
                                                          "minAddress": {
                                                            "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"
                                                          },
                                                          "maxAddress": {
                                                            "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"
                                                          }
                                                        }
                                                      },
                                                      "subnetId": {
                                                        "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                        "type": "string"
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "vnfLinkPortId": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "metadata": {
                                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                        "type": "object"
                                      }
                                    }
                                  }
                                },
                                "metadata": {
                                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                  "type": "object"
                                }
                              }
                            }
                          },
                          "vnfVirtualLinkResourceInfo": {
                            "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                            "type": "array",
                            "items": {
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                              "type": "object",
                              "required": [
                                "id",
                                "vnfVirtualLinkDescId",
                                "networkResource",
                                "vnfLinkPorts"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfVirtualLinkDescId": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "networkResource": {
                                  "required": [
                                    "resourceId"
                                  ],
                                  "type": "object",
                                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                  "properties": {
                                    "vimConnectionId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceProviderId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceId": {
                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                      "type": "string"
                                    },
                                    "vimLevelResourceType": {
                                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                      "type": "string"
                                    }
                                  }
                                },
                                "reservationId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "vnfLinkPorts": {
                                  "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "required": [
                                      "id",
                                      "resourceHandle"
                                    ],
                                    "properties": {
                                      "id": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "resourceHandle": {
                                        "required": [
                                          "resourceId"
                                        ],
                                        "type": "object",
                                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                        "properties": {
                                          "vimConnectionId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceProviderId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "resourceId": {
                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                            "type": "string"
                                          },
                                          "vimLevelResourceType": {
                                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                            "type": "string"
                                          }
                                        }
                                      },
                                      "cpInstanceId": {
                                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                        "type": "string"
                                      },
                                      "cpInstanceType": {
                                        "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                        "type": "string",
                                        "enum": [
                                          "VNFC_CP",
                                          "EXT_CP"
                                        ]
                                      }
                                    }
                                  }
                                },
                                "metadata": {
                                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                  "type": "object"
                                }
                              }
                            }
                          },
                          "vnfVirtualStorageResourceInfo": {
                            "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                            "type": "array",
                            "items": {
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                              "type": "object",
                              "required": [
                                "id",
                                "virtualStorageDescId",
                                "storageResource"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "virtualStorageDescId": {
                                  "description": "An identifier that is unique within a VNF descriptor.\n",
                                  "type": "string"
                                },
                                "vnfdId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "storageResource": {
                                  "required": [
                                    "resourceId"
                                  ],
                                  "type": "object",
                                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                  "properties": {
                                    "vimConnectionId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceProviderId": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceId": {
                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                      "type": "string"
                                    },
                                    "vimLevelResourceType": {
                                      "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                      "type": "string"
                                    }
                                  }
                                },
                                "reservationId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "metadata": {
                                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                  "type": "object"
                                }
                              }
                            }
                          },
                          "vnfcInfo": {
                            "description": "Information about the VNFC instances.\n",
                            "type": "array",
                            "items": {
                              "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                              "type": "object",
                              "required": [
                                "id",
                                "vduId",
                                "vnfcState"
                              ],
                              "properties": {
                                "id": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vduId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfcResourceInfoId": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfcState": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                },
                                "vnfcConfigurableProperties": {
                                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                  "type": "object"
                                }
                              }
                            }
                          }
                        }
                      },
                      "metadata": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "extensions": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      },
                      "_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 using an absolute URI.\n",
                            "type": "object",
                            "required": [
                              "href"
                            ],
                            "properties": {
                              "href": {
                                "description": "String formatted according to IETF RFC 3986.\n",
                                "type": "string"
                              }
                            }
                          },
                          "indicators": {
                            "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"
                              }
                            }
                          },
                          "instantiate": {
                            "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"
                              }
                            }
                          },
                          "terminate": {
                            "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"
                              }
                            }
                          },
                          "scale": {
                            "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"
                              }
                            }
                          },
                          "scaleToLevel": {
                            "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"
                              }
                            }
                          },
                          "changeFlavour": {
                            "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"
                              }
                            }
                          },
                          "heal": {
                            "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"
                              }
                            }
                          },
                          "operate": {
                            "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"
                              }
                            }
                          },
                          "changeExtConn": {
                            "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"
                              }
                            }
                          },
                          "createSnapshot": {
                            "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"
                              }
                            }
                          },
                          "revertToSnapshot": {
                            "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"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "vnfcSnapshots": {
                    "description": "Information about VNFC snapshots constituting this VNF snapshot.\n",
                    "type": "array",
                    "items": {
                      "description": "This type represents a VNFC snapshot.\n",
                      "type": "object",
                      "required": [
                        "id",
                        "vnfcInstanceId",
                        "triggeredAt",
                        "vnfcInfo"
                      ],
                      "properties": {
                        "id": {
                          "description": "An identifier with the intention of being globally unique.\n",
                          "type": "string"
                        },
                        "vnfcInstanceId": {
                          "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                          "type": "string"
                        },
                        "creationStartedAt": {
                          "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                          "type": "string"
                        },
                        "creationFinishedAt": {
                          "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                          "type": "string"
                        },
                        "vnfcResourceInfoId": {
                          "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                          "type": "object",
                          "required": [
                            "id",
                            "vduId",
                            "vnfcState"
                          ],
                          "properties": {
                            "id": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "vduId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "vnfcResourceInfoId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "vnfcState": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "vnfcConfigurableProperties": {
                              "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                              "type": "object"
                            }
                          }
                        },
                        "computeSnapshotResource": {
                          "required": [
                            "resourceId"
                          ],
                          "type": "object",
                          "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                          "properties": {
                            "vimConnectionId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceProviderId": {
                              "description": "An identifier with the intention of being globally unique.\n",
                              "type": "string"
                            },
                            "resourceId": {
                              "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                              "type": "string"
                            },
                            "vimLevelResourceType": {
                              "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                              "type": "string"
                            }
                          }
                        },
                        "storageSnapshotResources": {
                          "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n",
                          "type": "object",
                          "required": [
                            "storageResourceId"
                          ],
                          "properties": {
                            "storageResourceId": {
                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                              "type": "string"
                            },
                            "storageSnapshotResource": {
                              "required": [
                                "resourceId"
                              ],
                              "type": "object",
                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                              "properties": {
                                "vimConnectionId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceProviderId": {
                                  "description": "An identifier with the intention of being globally unique.\n",
                                  "type": "string"
                                },
                                "resourceId": {
                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                  "type": "string"
                                },
                                "vimLevelResourceType": {
                                  "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                  "type": "string"
                                }
                              }
                            }
                          }
                        },
                        "userDefinedData": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  },
                  "userDefinedData": {
                    "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              },
              "_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 using an absolute URI.\n",
                    "type": "object",
                    "required": [
                      "href"
                    ],
                    "properties": {
                      "href": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  },
                  "takenFrom": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfSnapshots"
      },
      "task": true
    },
    {
      "name": "getVnfSnapshotsVnfSnapshotInfoId",
      "summary": "The GET method retrieves information about a VNF /VNFC snapshot by reading an individual VNF snapsh",
      "description": "The GET method retrieves information about a VNF /VNFC snapshot by reading an individual VNF snapshot resource.\n",
      "input": [
        {
          "name": "vnfSnapshotInfoId",
          "type": "string",
          "info": "Identifier of the individual VNF snapshot resource. This identifier can be retrieved from the resource referenced by the\n\"Location\" HTTP header in the response to a POST ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfSnapshotInfoId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents an individual VNF snapshot resource.\n",
          "type": "object",
          "required": [
            "id"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfSnapshotPkgId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "vnfSnapshot": {
              "description": "This type represents a VNF snapshot.\n",
              "type": "object",
              "required": [
                "id",
                "vnfInstanceId",
                "triggeredAt",
                "vnfdId",
                "vnfInfo",
                "vnfcSnapshots"
              ],
              "properties": {
                "id": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfInstanceId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "creationStartedAt": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "creationFinishedAt": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "vnfdId": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "vnfInstance": {
                  "description": "This type represents a VNF instance.\n",
                  "type": "object",
                  "required": [
                    "id",
                    "vnfdId",
                    "vnfProvider",
                    "vnfProductName",
                    "vnfSoftwareVersion",
                    "vnfdVersion",
                    "instantiationState",
                    "_links"
                  ],
                  "properties": {
                    "id": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfInstanceName": {
                      "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
                      "type": "string"
                    },
                    "vnfInstanceDescription": {
                      "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
                      "type": "string"
                    },
                    "vnfdId": {
                      "description": "An identifier with the intention of being globally unique.\n",
                      "type": "string"
                    },
                    "vnfProvider": {
                      "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
                      "type": "string"
                    },
                    "vnfProductName": {
                      "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
                      "type": "string"
                    },
                    "vnfSoftwareVersion": {
                      "description": "A version.\n",
                      "type": "string"
                    },
                    "vnfdVersion": {
                      "description": "A version.\n",
                      "type": "string"
                    },
                    "vnfConfigurableProperties": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "instantiationState": {
                      "description": "The instantiation state of the VNF.\n",
                      "type": "string",
                      "enum": [
                        "NOT_INSTANTIATED",
                        "INSTANTIATED"
                      ]
                    },
                    "instantiatedVnfInfo": {
                      "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
                      "type": "object",
                      "required": [
                        "flavourId",
                        "vnfState",
                        "extCpInfo"
                      ],
                      "properties": {
                        "flavourId": {
                          "description": "An identifier that is unique within a VNF descriptor.\n",
                          "type": "string"
                        },
                        "vnfState": {
                          "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n",
                          "type": "string",
                          "enum": [
                            "STARTED",
                            "STOPPED"
                          ]
                        },
                        "scaleStatus": {
                          "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
                          "type": "array",
                          "items": {
                            "required": [
                              "aspectId",
                              "scaleLevel"
                            ],
                            "type": "object",
                            "properties": {
                              "aspectId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "scaleLevel": {
                                "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                "type": "integer"
                              }
                            }
                          }
                        },
                        "maxScaleLevels": {
                          "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
                          "type": "array",
                          "items": {
                            "required": [
                              "aspectId",
                              "scaleLevel"
                            ],
                            "type": "object",
                            "properties": {
                              "aspectId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "scaleLevel": {
                                "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
                                "type": "integer"
                              }
                            }
                          }
                        },
                        "extCpInfo": {
                          "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
                          "type": "array",
                          "minItems": 1,
                          "items": {
                            "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "cpdId",
                              "cpConfigId",
                              "cpProtocolInfo"
                            ],
                            "properties": {
                              "id": {
                                "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"
                              },
                              "cpConfigId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "cpProtocolInfo": {
                                "description": "Network protocol information for this CP.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                  "type": "object",
                                  "required": [
                                    "layerProtocol"
                                  ],
                                  "properties": {
                                    "layerProtocol": {
                                      "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                      "type": "string",
                                      "enum": [
                                        "IP_OVER_ETHERNET"
                                      ]
                                    },
                                    "ipOverEthernet": {
                                      "description": "This type represents information about a network address that has been assigned.\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"
                                        },
                                        "segmentationId": {
                                          "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                          "type": "string"
                                        },
                                        "ipAddresses": {
                                          "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "properties": {
                                              "type": {
                                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                "type": "string",
                                                "enum": [
                                                  "IPV4",
                                                  "IPV6"
                                                ]
                                              },
                                              "addresses": {
                                                "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "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"
                                                }
                                              },
                                              "isDynamic": {
                                                "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                "type": "boolean"
                                              },
                                              "addressRange": {
                                                "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                "type": "object",
                                                "required": [
                                                  "minAddress",
                                                  "maxAddress"
                                                ],
                                                "properties": {
                                                  "minAddress": {
                                                    "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"
                                                  },
                                                  "maxAddress": {
                                                    "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"
                                                  }
                                                }
                                              },
                                              "subnetId": {
                                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "extLinkPortId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              },
                              "associatedVnfcCpId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "associatedVnfVirtualLinkId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              }
                            }
                          }
                        },
                        "extVirtualLinkInfo": {
                          "description": "Information about the external VLs the VNF instance is connected to.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "resourceHandle",
                              "currentVnfExtCpData"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceHandle": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "extLinkPorts": {
                                "description": "Link ports of this VL.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier with the intention of being globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "currentVnfExtCpData": {
                                "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n",
                                "type": "array",
                                "items": {
                                  "description": "This type represents configuration information for external CPs created from a CPD.\n",
                                  "type": "object",
                                  "required": [
                                    "cpdId"
                                  ],
                                  "properties": {
                                    "cpdId": {
                                      "description": "An identifier that is unique within a VNF descriptor.\n",
                                      "type": "string"
                                    },
                                    "cpConfig": {
                                      "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n",
                                      "type": "object",
                                      "additionalProperties": {
                                        "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
                                        "anyOf": [
                                          {
                                            "required": [
                                              "linkPortId"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "cpProtocolData"
                                            ]
                                          }
                                        ],
                                        "type": "object",
                                        "properties": {
                                          "parentCpConfigId": {
                                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                            "type": "string"
                                          },
                                          "linkPortId": {
                                            "description": "An identifier with the intention of being globally unique.\n",
                                            "type": "string"
                                          },
                                          "cpProtocolData": {
                                            "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n   shall be present for an external CP instance representing a subport \n   that is to be created, or an external CP instance that is to be created \n   by creating the corresponding VNFC or VNF instance during the current or \n   a subsequent LCM operation, or for an existing external CP instance \n   that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n   link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n   attribute shall be provided referencing a pre-created link port,\n   and the VNFM can use means outside the scope of the present\n   document to obtain the pre-configured address information for the\n   connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n   consumer shall ensure that the cpProtocolData can be used with the\n   pre-created link port referenced by \"linkPortId\".\n",
                                            "type": "array",
                                            "items": {
                                              "description": "This type represents network protocol data.\n",
                                              "type": "object",
                                              "required": [
                                                "layerProtocol"
                                              ],
                                              "properties": {
                                                "layerProtocol": {
                                                  "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "IP_OVER_ETHERNET"
                                                  ]
                                                },
                                                "ipOverEthernet": {
                                                  "description": "This type represents network address data for IP over Ethernet.\n",
                                                  "type": "object",
                                                  "anyOf": [
                                                    {
                                                      "required": [
                                                        "macAddress"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "ipAddresses"
                                                      ]
                                                    }
                                                  ],
                                                  "oneOf": [
                                                    {
                                                      "required": [
                                                        "fixedAddresses"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "numDynamicAddresses"
                                                      ]
                                                    },
                                                    {
                                                      "required": [
                                                        "ipAddressRange"
                                                      ]
                                                    }
                                                  ],
                                                  "properties": {
                                                    "macAddress": {
                                                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
                                                      "type": "string"
                                                    },
                                                    "segmentationId": {
                                                      "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                      "type": "string"
                                                    },
                                                    "ipAddresses": {
                                                      "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "required": [
                                                          "type"
                                                        ],
                                                        "properties": {
                                                          "type": {
                                                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                            "type": "string",
                                                            "enum": [
                                                              "IPV4",
                                                              "IPV6"
                                                            ]
                                                          },
                                                          "fixedAddresses": {
                                                            "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                            "type": "array",
                                                            "items": {
                                                              "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"
                                                            }
                                                          },
                                                          "numDynamicAddresses": {
                                                            "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
                                                            "type": "integer"
                                                          },
                                                          "addressRange": {
                                                            "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
                                                            "type": "object",
                                                            "required": [
                                                              "minAddress",
                                                              "maxAddress"
                                                            ],
                                                            "properties": {
                                                              "minAddress": {
                                                                "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"
                                                              },
                                                              "maxAddress": {
                                                                "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"
                                                              }
                                                            }
                                                          },
                                                          "subnetId": {
                                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                            "type": "string"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "extManagedVirtualLinkInfo": {
                          "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "vnfVirtualLinkDescId",
                              "networkResource"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfVirtualLinkDescId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "networkResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "vnfLinkPorts": {
                                "description": "Link ports of this VL.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpInstanceType": {
                                      "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                      "type": "string",
                                      "enum": [
                                        "VNFC_CP",
                                        "EXT_CP"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "monitoringParameters": {
                          "description": "Active monitoring parameters.\n",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "performanceMetric"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "name": {
                                "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
                                "type": "string"
                              },
                              "performanceMetric": {
                                "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                                "type": "string"
                              }
                            }
                          }
                        },
                        "localizationLanguage": {
                          "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
                          "type": "string"
                        },
                        "vnfcResourceInfo": {
                          "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vduId",
                              "computeResource",
                              "vnfcCpInfo"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vduId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "computeResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "storageResourceIds": {
                                "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
                                "type": "array",
                                "items": {
                                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                  "type": "string"
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfcCpInfo": {
                                "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "cpdId"
                                  ],
                                  "properties": {
                                    "id": {
                                      "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"
                                    },
                                    "vnfExtCpId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpProtocolInfo": {
                                      "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n",
                                      "type": "array",
                                      "items": {
                                        "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
                                        "type": "object",
                                        "required": [
                                          "layerProtocol"
                                        ],
                                        "properties": {
                                          "layerProtocol": {
                                            "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
                                            "type": "string",
                                            "enum": [
                                              "IP_OVER_ETHERNET"
                                            ]
                                          },
                                          "ipOverEthernet": {
                                            "description": "This type represents information about a network address that has been assigned.\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"
                                              },
                                              "segmentationId": {
                                                "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present.  Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n",
                                                "type": "string"
                                              },
                                              "ipAddresses": {
                                                "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n",
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "required": [
                                                    "type"
                                                  ],
                                                  "properties": {
                                                    "type": {
                                                      "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
                                                      "type": "string",
                                                      "enum": [
                                                        "IPV4",
                                                        "IPV6"
                                                      ]
                                                    },
                                                    "addresses": {
                                                      "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                      "type": "array",
                                                      "items": {
                                                        "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"
                                                      }
                                                    },
                                                    "isDynamic": {
                                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
                                                      "type": "boolean"
                                                    },
                                                    "addressRange": {
                                                      "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
                                                      "type": "object",
                                                      "required": [
                                                        "minAddress",
                                                        "maxAddress"
                                                      ],
                                                      "properties": {
                                                        "minAddress": {
                                                          "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"
                                                        },
                                                        "maxAddress": {
                                                          "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"
                                                        }
                                                      }
                                                    },
                                                    "subnetId": {
                                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                                      "type": "string"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    },
                                    "vnfLinkPortId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "metadata": {
                                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                      "type": "object"
                                    }
                                  }
                                }
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfVirtualLinkResourceInfo": {
                          "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vnfVirtualLinkDescId",
                              "networkResource",
                              "vnfLinkPorts"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfVirtualLinkDescId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "networkResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "vnfLinkPorts": {
                                "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "resourceHandle"
                                  ],
                                  "properties": {
                                    "id": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "resourceHandle": {
                                      "required": [
                                        "resourceId"
                                      ],
                                      "type": "object",
                                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                      "properties": {
                                        "vimConnectionId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceProviderId": {
                                          "description": "An identifier with the intention of being globally unique.\n",
                                          "type": "string"
                                        },
                                        "resourceId": {
                                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                          "type": "string"
                                        },
                                        "vimLevelResourceType": {
                                          "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "cpInstanceId": {
                                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                      "type": "string"
                                    },
                                    "cpInstanceType": {
                                      "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n",
                                      "type": "string",
                                      "enum": [
                                        "VNFC_CP",
                                        "EXT_CP"
                                      ]
                                    }
                                  }
                                }
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfVirtualStorageResourceInfo": {
                          "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "virtualStorageDescId",
                              "storageResource"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "virtualStorageDescId": {
                                "description": "An identifier that is unique within a VNF descriptor.\n",
                                "type": "string"
                              },
                              "vnfdId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "storageResource": {
                                "required": [
                                  "resourceId"
                                ],
                                "type": "object",
                                "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                                "properties": {
                                  "vimConnectionId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceProviderId": {
                                    "description": "An identifier with the intention of being globally unique.\n",
                                    "type": "string"
                                  },
                                  "resourceId": {
                                    "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                    "type": "string"
                                  },
                                  "vimLevelResourceType": {
                                    "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                    "type": "string"
                                  }
                                }
                              },
                              "reservationId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "metadata": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        },
                        "vnfcInfo": {
                          "description": "Information about the VNFC instances.\n",
                          "type": "array",
                          "items": {
                            "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                            "type": "object",
                            "required": [
                              "id",
                              "vduId",
                              "vnfcState"
                            ],
                            "properties": {
                              "id": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vduId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcResourceInfoId": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcState": {
                                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                                "type": "string"
                              },
                              "vnfcConfigurableProperties": {
                                "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                                "type": "object"
                              }
                            }
                          }
                        }
                      }
                    },
                    "metadata": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "extensions": {
                      "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                      "type": "object"
                    },
                    "_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 using an absolute URI.\n",
                          "type": "object",
                          "required": [
                            "href"
                          ],
                          "properties": {
                            "href": {
                              "description": "String formatted according to IETF RFC 3986.\n",
                              "type": "string"
                            }
                          }
                        },
                        "indicators": {
                          "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"
                            }
                          }
                        },
                        "instantiate": {
                          "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"
                            }
                          }
                        },
                        "terminate": {
                          "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"
                            }
                          }
                        },
                        "scale": {
                          "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"
                            }
                          }
                        },
                        "scaleToLevel": {
                          "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"
                            }
                          }
                        },
                        "changeFlavour": {
                          "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"
                            }
                          }
                        },
                        "heal": {
                          "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"
                            }
                          }
                        },
                        "operate": {
                          "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"
                            }
                          }
                        },
                        "changeExtConn": {
                          "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"
                            }
                          }
                        },
                        "createSnapshot": {
                          "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"
                            }
                          }
                        },
                        "revertToSnapshot": {
                          "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"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "vnfcSnapshots": {
                  "description": "Information about VNFC snapshots constituting this VNF snapshot.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents a VNFC snapshot.\n",
                    "type": "object",
                    "required": [
                      "id",
                      "vnfcInstanceId",
                      "triggeredAt",
                      "vnfcInfo"
                    ],
                    "properties": {
                      "id": {
                        "description": "An identifier with the intention of being globally unique.\n",
                        "type": "string"
                      },
                      "vnfcInstanceId": {
                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                        "type": "string"
                      },
                      "creationStartedAt": {
                        "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                        "type": "string"
                      },
                      "creationFinishedAt": {
                        "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                        "type": "string"
                      },
                      "vnfcResourceInfoId": {
                        "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n",
                        "type": "object",
                        "required": [
                          "id",
                          "vduId",
                          "vnfcState"
                        ],
                        "properties": {
                          "id": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vduId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcResourceInfoId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcState": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "vnfcConfigurableProperties": {
                            "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                            "type": "object"
                          }
                        }
                      },
                      "computeSnapshotResource": {
                        "required": [
                          "resourceId"
                        ],
                        "type": "object",
                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                        "properties": {
                          "vimConnectionId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceProviderId": {
                            "description": "An identifier with the intention of being globally unique.\n",
                            "type": "string"
                          },
                          "resourceId": {
                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                            "type": "string"
                          },
                          "vimLevelResourceType": {
                            "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                            "type": "string"
                          }
                        }
                      },
                      "storageSnapshotResources": {
                        "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n",
                        "type": "object",
                        "required": [
                          "storageResourceId"
                        ],
                        "properties": {
                          "storageResourceId": {
                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                            "type": "string"
                          },
                          "storageSnapshotResource": {
                            "required": [
                              "resourceId"
                            ],
                            "type": "object",
                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
                            "properties": {
                              "vimConnectionId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceProviderId": {
                                "description": "An identifier with the intention of being globally unique.\n",
                                "type": "string"
                              },
                              "resourceId": {
                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
                                "type": "string"
                              },
                              "vimLevelResourceType": {
                                "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n",
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "userDefinedData": {
                        "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                        "type": "object"
                      }
                    }
                  }
                },
                "userDefinedData": {
                  "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                  "type": "object"
                }
              }
            },
            "_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 using an absolute URI.\n",
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                },
                "takenFrom": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getVnfSnapshotsVnfSnapshotInfoId"
      },
      "task": true
    },
    {
      "name": "deleteVnfSnapshotsVnfSnapshotInfoId",
      "summary": "This method deletes an individual VNF snapshot resource and the associated VNF snapshot information",
      "description": "This method deletes an individual VNF snapshot resource and the associated VNF snapshot information managed by\nthe VNFM, and any resource associated to the VNF/VNFC snapshot managed by the VIM.\n",
      "input": [
        {
          "name": "vnfSnapshotInfoId",
          "type": "string",
          "info": "Identifier of the individual VNF snapshot resource. This identifier can be retrieved from the resource referenced by the\n\"Location\" HTTP header in the response to a POST ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "vnfSnapshotInfoId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/deleteVnfSnapshotsVnfSnapshotInfoId"
      },
      "task": true
    },
    {
      "name": "getPmJobs",
      "summary": "The client can use this method to retrieve information about PM jobs.\n",
      "description": "The client can use this method to retrieve information about PM jobs.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "allFields",
          "type": "string",
          "info": "Include all complex attributes in the response. See clause 5.3 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "allFields",
            "type": "string"
          }
        },
        {
          "name": "fields",
          "type": "string",
          "info": "Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "fields",
            "type": "string"
          }
        },
        {
          "name": "excludeFields",
          "type": "string",
          "info": "Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity should support this parameter.\n: string",
          "required": false,
          "schema": {
            "title": "excludeFields",
            "type": "string"
          }
        },
        {
          "name": "excludeDefault",
          "type": "string",
          "info": "Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity shall support t...(description truncated): string",
          "required": false,
          "schema": {
            "title": "excludeDefault",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a PM job.\n",
            "type": "object",
            "required": [
              "id",
              "objectType",
              "objectInstanceIds",
              "criteria",
              "callbackUri",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "objectType": {
                "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                "type": "string"
              },
              "objectInstanceIds": {
                "description": "Identifiers of the VNF instances for which performance information is collected.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "subObjectInstanceIds": {
                "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                  "type": "string"
                }
              },
              "criteria": {
                "description": "Criteria of the collection of performance information.\n",
                "type": "object",
                "required": [
                  "collectionPeriod",
                  "reportingPeriod"
                ],
                "properties": {
                  "performanceMetric": {
                    "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "performanceMetricGroup": {
                    "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "collectionPeriod": {
                    "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1024
                  },
                  "reportingPeriod": {
                    "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1024
                  },
                  "reportingBoundary": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  }
                }
              },
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "reports": {
                "description": "Information about available reports collected by this PM job.\n",
                "type": "object",
                "required": [
                  "href",
                  "readyTime"
                ],
                "properties": {
                  "href": {
                    "description": "The URI where the report can be obtained.\n",
                    "type": "string"
                  },
                  "readyTime": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  },
                  "expiryTime": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  },
                  "fileSize": {
                    "description": "The size of the report file in bytes, if known.\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1024
                  }
                }
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self"
                ],
                "properties": {
                  "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"
                      }
                    }
                  },
                  "objects": {
                    "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n",
                    "type": "array",
                    "items": {
                      "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"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getPmJobs"
      },
      "task": true
    },
    {
      "name": "postPmJobs",
      "summary": "The POST method creates a PM job. As the result of successful executing this method, a new  \"Indivi",
      "description": "The POST method creates a PM job. As the result of successful executing this method, a new  \"Individual PM job\"\nresource as defined in clause 6.4.3 shall  have been created.\n",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "The VNF creation parameters: {\"objectType\": \"string\", \"objectInstanceIds\": \"array\", \"subObjectInstanceIds\": \"array\", \"criteria\": {\"performanceMetric\": \"array\", \"performanceMetricGroup\": \"array\", \"collectionPeriod\": 123, \"reportingPeriod\": 123, \"reportingBoundary\": \"string\"}, \"callbackUri\": \"string\", \"authentication\": {\"authType\": \"array\", \"paramsBasic\": {\"userName\": \"string\", \"password\": \"string\"}, \"paramsOauth2ClientCredentials\": {\"clientId\": \"string\", \"clientPassword\": \"string\", \"tokenEndpoint\": \"string\"}}}",
          "required": true,
          "schema": {
            "description": "This type represents a request to create a PM job.\n",
            "type": "object",
            "required": [
              "objectType",
              "objectInstanceIds",
              "criteria",
              "callbackUri"
            ],
            "properties": {
              "objectType": {
                "description": "Type of the measured object. The applicable measured object type for a measurement\n is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                "type": "string"
              },
              "objectInstanceIds": {
                "description": "Identifiers of the measured object instances for which performance information is requested to be collected.\n",
                "type": "array",
                "items": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "subObjectInstanceIds": {
                "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                  "type": "string"
                }
              },
              "criteria": {
                "description": "Criteria of the collection of performance information.\n",
                "type": "object",
                "required": [
                  "collectionPeriod",
                  "reportingPeriod"
                ],
                "properties": {
                  "performanceMetric": {
                    "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "performanceMetricGroup": {
                    "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "collectionPeriod": {
                    "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1024
                  },
                  "reportingPeriod": {
                    "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1024
                  },
                  "reportingBoundary": {
                    "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                    "type": "string"
                  }
                }
              },
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "authType"
                ],
                "properties": {
                  "authType": {
                    "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "BASIC",
                        "OAUTH2_CLIENT_CREDENTIALS",
                        "TLS_CERT"
                      ]
                    }
                  },
                  "paramsBasic": {
                    "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "userName": {
                        "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      }
                    }
                  },
                  "paramsOauth2ClientCredentials": {
                    "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "clientPassword": {
                        "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "tokenEndpoint": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a PM job.\n",
          "type": "object",
          "required": [
            "id",
            "objectType",
            "objectInstanceIds",
            "criteria",
            "callbackUri",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "objectType": {
              "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
              "type": "string"
            },
            "objectInstanceIds": {
              "description": "Identifiers of the VNF instances for which performance information is collected.\n",
              "type": "array",
              "items": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            },
            "subObjectInstanceIds": {
              "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "criteria": {
              "description": "Criteria of the collection of performance information.\n",
              "type": "object",
              "required": [
                "collectionPeriod",
                "reportingPeriod"
              ],
              "properties": {
                "performanceMetric": {
                  "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "performanceMetricGroup": {
                  "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "collectionPeriod": {
                  "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                },
                "reportingPeriod": {
                  "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                },
                "reportingBoundary": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                }
              }
            },
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "reports": {
              "description": "Information about available reports collected by this PM job.\n",
              "type": "object",
              "required": [
                "href",
                "readyTime"
              ],
              "properties": {
                "href": {
                  "description": "The URI where the report can be obtained.\n",
                  "type": "string"
                },
                "readyTime": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "expiryTime": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "fileSize": {
                  "description": "The size of the report file in bytes, if known.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                }
              }
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "objects": {
                  "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n",
                  "type": "array",
                  "items": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postPmJobs"
      },
      "task": true
    },
    {
      "name": "getPmJobsPmJobId",
      "summary": "The client can use this method for reading an individual PM job.\n",
      "description": "The client can use this method for reading an individual PM job.\n",
      "input": [
        {
          "name": "pmJobId",
          "type": "string",
          "info": "Identifier of the PM job. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP\nheader in the response to a POST request creating a new PM ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "pmJobId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a PM job.\n",
          "type": "object",
          "required": [
            "id",
            "objectType",
            "objectInstanceIds",
            "criteria",
            "callbackUri",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "objectType": {
              "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
              "type": "string"
            },
            "objectInstanceIds": {
              "description": "Identifiers of the VNF instances for which performance information is collected.\n",
              "type": "array",
              "items": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            },
            "subObjectInstanceIds": {
              "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "criteria": {
              "description": "Criteria of the collection of performance information.\n",
              "type": "object",
              "required": [
                "collectionPeriod",
                "reportingPeriod"
              ],
              "properties": {
                "performanceMetric": {
                  "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "performanceMetricGroup": {
                  "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "collectionPeriod": {
                  "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                },
                "reportingPeriod": {
                  "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the API producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                },
                "reportingBoundary": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                }
              }
            },
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "reports": {
              "description": "Information about available reports collected by this PM job.\n",
              "type": "object",
              "required": [
                "href",
                "readyTime"
              ],
              "properties": {
                "href": {
                  "description": "The URI where the report can be obtained.\n",
                  "type": "string"
                },
                "readyTime": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "expiryTime": {
                  "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                  "type": "string"
                },
                "fileSize": {
                  "description": "The size of the report file in bytes, if known.\n",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1024
                }
              }
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "objects": {
                  "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n",
                  "type": "array",
                  "items": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getPmJobsPmJobId"
      },
      "task": true
    },
    {
      "name": "deletePmJobsPmJobId",
      "summary": "This method terminates an individual PM job. As the result of successfully executing this method, t",
      "description": "This method terminates an individual PM job. As the result of successfully executing this method, the\n\"Individual PM job\"  resource shall not exist any longer.\n",
      "input": [
        {
          "name": "pmJobId",
          "type": "string",
          "info": "Identifier of the PM job. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP\nheader in the response to a POST request creating a new PM ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "pmJobId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/deletePmJobsPmJobId"
      },
      "task": true
    },
    {
      "name": "patchPmJobsPmJobId",
      "summary": "This method allows to modify an \"individual PM job\" resource. This method shall follow the provisio",
      "description": "This method allows to modify an \"individual PM job\" resource. This method shall follow the provisions specified\nin the tables 6.4.3.3.4-1 and 6.4.3.3.4-2 for URI query parameters, request and response data structures,\nand response codes.\n",
      "input": [
        {
          "name": "pmJobId",
          "type": "string",
          "info": "Identifier of the PM job. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP\nheader in the response to a POST request creating a new PM ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "pmJobId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the PM job modification: {\"callbackUri\": \"string\", \"authentication\": {\"authType\": \"array\", \"paramsBasic\": {\"userName\": \"string\", \"password\": \"string\"}, \"paramsOauth2ClientCredentials\": {\"clientId\": \"string\", \"clientPassword\": \"string\", \"tokenEndpoint\": \"string\"}}}",
          "required": true,
          "schema": {
            "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1.\n",
            "type": "object",
            "properties": {
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "authType"
                ],
                "properties": {
                  "authType": {
                    "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "BASIC",
                        "OAUTH2_CLIENT_CREDENTIALS",
                        "TLS_CERT"
                      ]
                    }
                  },
                  "paramsBasic": {
                    "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "userName": {
                        "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      }
                    }
                  },
                  "paramsOauth2ClientCredentials": {
                    "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "clientPassword": {
                        "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "tokenEndpoint": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1.\n",
          "type": "object",
          "properties": {
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "authentication": {
              "type": "object",
              "required": [
                "authType"
              ],
              "properties": {
                "authType": {
                  "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "BASIC",
                      "OAUTH2_CLIENT_CREDENTIALS",
                      "TLS_CERT"
                    ]
                  }
                },
                "paramsBasic": {
                  "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                  "type": "object",
                  "properties": {
                    "userName": {
                      "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                      "type": "string"
                    },
                    "password": {
                      "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                      "type": "string"
                    }
                  }
                },
                "paramsOauth2ClientCredentials": {
                  "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                  "type": "object",
                  "properties": {
                    "clientId": {
                      "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                      "type": "string"
                    },
                    "clientPassword": {
                      "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                      "type": "string"
                    },
                    "tokenEndpoint": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/patchPmJobsPmJobId"
      },
      "task": true
    },
    {
      "name": "getPmJobsPmJobIdReportsReportId",
      "summary": "The client can use this method for reading an individual performance report.\n",
      "description": "The client can use this method for reading an individual performance report.\n",
      "input": [
        {
          "name": "pmJobId",
          "type": "string",
          "info": "Identifier of the PM job. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP\nheader in the response to a POST request creating a new PM ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "pmJobId",
            "type": "string"
          }
        },
        {
          "name": "reportId",
          "type": "string",
          "info": "Identifier of the performance report.\n: string",
          "required": true,
          "schema": {
            "title": "reportId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type defines the format of a performance report provided by the VNFM to the EM as a result of collecting performance information as part of a PM job. The type shall comply with the provisions defined in table 6.5.2.10-1.\n",
          "type": "object",
          "required": [
            "entries"
          ],
          "properties": {
            "entries": {
              "description": "List of performance information entries. Each performance report entry is for a given metric of a given object (i.e. VNF instance), but can include multiple collected values.\n",
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "objectType",
                  "objectInstanceId",
                  "performanceMetric",
                  "performanceValue"
                ],
                "properties": {
                  "objectType": {
                    "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                    "type": "string"
                  },
                  "objectInstanceId": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "subObjectInstanceId": {
                    "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                    "type": "string"
                  },
                  "performanceMetric": {
                    "description": "Name of the metric collected. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                    "type": "string"
                  },
                  "performanceValues": {
                    "description": "List of performance values with associated timestamp.\n",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "timeStamp",
                        "value"
                      ],
                      "properties": {
                        "timeStamp": {
                          "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                          "type": "string"
                        },
                        "value": {
                          "description": "Value of the metric collected. The type of this attribute shall correspond to the related \"Measurement Unit\" as defined in clause 7.2. of ETSI GS NFV-IFA 027.\n",
                          "type": "object"
                        },
                        "context": {
                          "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 keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                          "type": "object"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getPmJobsPmJobIdReportsReportId"
      },
      "task": true
    },
    {
      "name": "getThresholds",
      "summary": "The client can use this method to query information about thresholds.\n",
      "description": "The client can use this method to query information about thresholds.\n",
      "input": [
        {
          "name": "filter",
          "type": "string",
          "info": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the ...(description truncated): string",
          "required": false,
          "schema": {
            "title": "filter",
            "type": "string"
          }
        },
        {
          "name": "nextpageOpaqueMarker",
          "type": "string",
          "info": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause...(description truncated): string",
          "required": false,
          "schema": {
            "title": "nextpageOpaqueMarker",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "description": "This type represents a threshold.\n",
            "type": "object",
            "required": [
              "id",
              "objectType",
              "objectInstanceId",
              "criteria",
              "callbackUri",
              "_links"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "objectType": {
                "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                "type": "string"
              },
              "objectInstanceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "subObjectInstanceIds": {
                "description": "Identifiers of the sub-object instances of the measured object instance associated with the threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measurement type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                  "type": "string"
                }
              },
              "criteria": {
                "description": "This type represents criteria that define a threshold.\n",
                "type": "object",
                "required": [
                  "performanceMetric",
                  "thresholdType"
                ],
                "properties": {
                  "performanceMetric": {
                    "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                    "type": "string"
                  },
                  "thresholdType": {
                    "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n",
                    "type": "string",
                    "enum": [
                      "SIMPLE"
                    ]
                  },
                  "simpleThresholdDetails": {
                    "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n",
                    "type": "object",
                    "required": [
                      "thresholdValue",
                      "hysteresis"
                    ],
                    "properties": {
                      "thresholdValue": {
                        "description": "The threshold value. Shall be represented as a floating point number.\n",
                        "type": "number"
                      },
                      "hysteresis": {
                        "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1024
                      }
                    }
                  }
                }
              },
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "_links": {
                "description": "Links for this resource.\n",
                "type": "object",
                "required": [
                  "self"
                ],
                "properties": {
                  "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"
                      }
                    }
                  },
                  "object": {
                    "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getThresholds"
      },
      "task": true
    },
    {
      "name": "postThresholds",
      "summary": "The POST method can be used by the client to create a threshold. As the result of successfully exec",
      "description": "The POST method can be used by the client to create a threshold. As the result of successfully executing this method, a new  \"Individual threshold\" resource as defined in clause 6.4.6 shall  have been created.\n",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": "Request parameters to create a new \"Individual threshold\" resource.\n: {\"objectType\": \"string\", \"objectInstanceId\": \"string\", \"subObjectInstanceIds\": \"array\", \"criteria\": {\"performanceMetric\": \"string\", \"thresholdType\": \"Must be one of [SIMPLE]\", \"simpleThresholdDetails\": {\"thresholdValue\": 123, \"hysteresis\": 123}}, \"callbackUri\": \"string\", \"authentication\": {\"authType\": \"array\", \"paramsBasic\": {\"userName\": \"string\", \"password\": \"string\"}, \"paramsOauth2ClientCredentials\": {\"clientId\": \"string\", \"clientPassword\": \"string\", \"tokenEndpoint\": \"string\"}}}",
          "required": true,
          "schema": {
            "description": "This type represents a request to create a threshold.\n",
            "type": "object",
            "required": [
              "objectType",
              "objectInstanceId",
              "criteria",
              "callbackUri"
            ],
            "properties": {
              "objectType": {
                "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                "type": "string"
              },
              "objectInstanceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "subObjectInstanceIds": {
                "description": "Identifiers of the sub-object instances of the measured object instance associated with this threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
                "type": "array",
                "items": {
                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                  "type": "string"
                }
              },
              "criteria": {
                "description": "This type represents criteria that define a threshold.\n",
                "type": "object",
                "required": [
                  "performanceMetric",
                  "thresholdType"
                ],
                "properties": {
                  "performanceMetric": {
                    "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                    "type": "string"
                  },
                  "thresholdType": {
                    "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n",
                    "type": "string",
                    "enum": [
                      "SIMPLE"
                    ]
                  },
                  "simpleThresholdDetails": {
                    "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n",
                    "type": "object",
                    "required": [
                      "thresholdValue",
                      "hysteresis"
                    ],
                    "properties": {
                      "thresholdValue": {
                        "description": "The threshold value. Shall be represented as a floating point number.\n",
                        "type": "number"
                      },
                      "hysteresis": {
                        "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1024
                      }
                    }
                  }
                }
              },
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "authType"
                ],
                "properties": {
                  "authType": {
                    "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "BASIC",
                        "OAUTH2_CLIENT_CREDENTIALS",
                        "TLS_CERT"
                      ]
                    }
                  },
                  "paramsBasic": {
                    "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "userName": {
                        "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      }
                    }
                  },
                  "paramsOauth2ClientCredentials": {
                    "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "clientPassword": {
                        "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "tokenEndpoint": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a threshold.\n",
          "type": "object",
          "required": [
            "id",
            "objectType",
            "objectInstanceId",
            "criteria",
            "callbackUri",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "objectType": {
              "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
              "type": "string"
            },
            "objectInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "subObjectInstanceIds": {
              "description": "Identifiers of the sub-object instances of the measured object instance associated with the threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measurement type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "criteria": {
              "description": "This type represents criteria that define a threshold.\n",
              "type": "object",
              "required": [
                "performanceMetric",
                "thresholdType"
              ],
              "properties": {
                "performanceMetric": {
                  "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                  "type": "string"
                },
                "thresholdType": {
                  "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n",
                  "type": "string",
                  "enum": [
                    "SIMPLE"
                  ]
                },
                "simpleThresholdDetails": {
                  "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n",
                  "type": "object",
                  "required": [
                    "thresholdValue",
                    "hysteresis"
                  ],
                  "properties": {
                    "thresholdValue": {
                      "description": "The threshold value. Shall be represented as a floating point number.\n",
                      "type": "number"
                    },
                    "hysteresis": {
                      "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n",
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1024
                    }
                  }
                }
              }
            },
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "object": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/postThresholds"
      },
      "task": true
    },
    {
      "name": "getThresholdsThresholdId",
      "summary": "The client can use this method for reading an individual threshold.\n",
      "description": "The client can use this method for reading an individual threshold.\n",
      "input": [
        {
          "name": "thresholdId",
          "type": "string",
          "info": "Identifier of the threshold. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a new ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "thresholdId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents a threshold.\n",
          "type": "object",
          "required": [
            "id",
            "objectType",
            "objectInstanceId",
            "criteria",
            "callbackUri",
            "_links"
          ],
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "objectType": {
              "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
              "type": "string"
            },
            "objectInstanceId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "subObjectInstanceIds": {
              "description": "Identifiers of the sub-object instances of the measured object instance associated with the threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measurement type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
                "type": "string"
              }
            },
            "criteria": {
              "description": "This type represents criteria that define a threshold.\n",
              "type": "object",
              "required": [
                "performanceMetric",
                "thresholdType"
              ],
              "properties": {
                "performanceMetric": {
                  "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n",
                  "type": "string"
                },
                "thresholdType": {
                  "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n",
                  "type": "string",
                  "enum": [
                    "SIMPLE"
                  ]
                },
                "simpleThresholdDetails": {
                  "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n",
                  "type": "object",
                  "required": [
                    "thresholdValue",
                    "hysteresis"
                  ],
                  "properties": {
                    "thresholdValue": {
                      "description": "The threshold value. Shall be represented as a floating point number.\n",
                      "type": "number"
                    },
                    "hysteresis": {
                      "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n",
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1024
                    }
                  }
                }
              }
            },
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "_links": {
              "description": "Links for this resource.\n",
              "type": "object",
              "required": [
                "self"
              ],
              "properties": {
                "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"
                    }
                  }
                },
                "object": {
                  "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"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getThresholdsThresholdId"
      },
      "task": true
    },
    {
      "name": "deleteThresholdsThresholdId",
      "summary": "This method allows to delete a threshold. As the result of successfully executing this method, the\n",
      "description": "This method allows to delete a threshold. As the result of successfully executing this method, the\n\"Individual threshold\" resource shall not exist any longer.\n",
      "input": [
        {
          "name": "thresholdId",
          "type": "string",
          "info": "Identifier of the threshold. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a new ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "thresholdId",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/deleteThresholdsThresholdId"
      },
      "task": true
    },
    {
      "name": "patchThresholdsThresholdId",
      "summary": "This method allows to modify an \"Individual threshold\" resource. This method shall follow the provi",
      "description": "This method allows to modify an \"Individual threshold\" resource. This method shall follow the provisions\nspecified in the tables 6.4.6.3.4-1 and 6.4.6.3.4-2 for URI query parameters, request and response data\nstructures, and response codes.\n",
      "input": [
        {
          "name": "thresholdId",
          "type": "string",
          "info": "Identifier of the threshold. This identifier can be retrieved from the resource referenced by the \"Location\"\nHTTP header in the response to a POST request creating a new ...(description truncated): string",
          "required": true,
          "schema": {
            "title": "thresholdId",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": "Parameters for the threshold modification.: {\"callbackUri\": \"string\", \"authentication\": {\"authType\": \"array\", \"paramsBasic\": {\"userName\": \"string\", \"password\": \"string\"}, \"paramsOauth2ClientCredentials\": {\"clientId\": \"string\", \"clientPassword\": \"string\", \"tokenEndpoint\": \"string\"}}}",
          "required": true,
          "schema": {
            "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1.\n",
            "type": "object",
            "properties": {
              "callbackUri": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "authType"
                ],
                "properties": {
                  "authType": {
                    "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "BASIC",
                        "OAUTH2_CLIENT_CREDENTIALS",
                        "TLS_CERT"
                      ]
                    }
                  },
                  "paramsBasic": {
                    "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "userName": {
                        "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                        "type": "string"
                      }
                    }
                  },
                  "paramsOauth2ClientCredentials": {
                    "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "clientPassword": {
                        "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                        "type": "string"
                      },
                      "tokenEndpoint": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1.\n",
          "type": "object",
          "properties": {
            "callbackUri": {
              "description": "String formatted according to IETF RFC 3986.\n",
              "type": "string"
            },
            "authentication": {
              "type": "object",
              "required": [
                "authType"
              ],
              "properties": {
                "authType": {
                  "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "BASIC",
                      "OAUTH2_CLIENT_CREDENTIALS",
                      "TLS_CERT"
                    ]
                  }
                },
                "paramsBasic": {
                  "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                  "type": "object",
                  "properties": {
                    "userName": {
                      "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                      "type": "string"
                    },
                    "password": {
                      "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
                      "type": "string"
                    }
                  }
                },
                "paramsOauth2ClientCredentials": {
                  "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
                  "type": "object",
                  "properties": {
                    "clientId": {
                      "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                      "type": "string"
                    },
                    "clientPassword": {
                      "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.  Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
                      "type": "string"
                    },
                    "tokenEndpoint": {
                      "description": "String formatted according to IETF RFC 3986.\n",
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/patchThresholdsThresholdId"
      },
      "task": true
    }
  ],
  "views": []
}